From 1ebbc7876f9a3f87dd2c510d6200fec80eb21e06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Moln=C3=A1r?= Date: Sun, 23 Jun 2013 19:42:49 +0200 Subject: [PATCH 01/20] Moving docs to the root folder and removing everything else. --- LICENSE | 23 - README.md | 38 -- doc/docco.css => docco.css | 0 doc/framer.html => framer.html | 0 lib/framer.js | 582 ------------------ package.json | 32 - {doc/public => public}/fonts/aller-bold.eot | Bin {doc/public => public}/fonts/aller-bold.ttf | Bin {doc/public => public}/fonts/aller-bold.woff | Bin {doc/public => public}/fonts/aller-light.eot | Bin {doc/public => public}/fonts/aller-light.ttf | Bin {doc/public => public}/fonts/aller-light.woff | Bin .../fonts/novecento-bold.eot | Bin .../fonts/novecento-bold.ttf | Bin .../fonts/novecento-bold.woff | Bin .../stylesheets/normalize.css | 0 test/framer.js | 268 -------- 17 files changed, 943 deletions(-) delete mode 100644 LICENSE delete mode 100644 README.md rename doc/docco.css => docco.css (100%) rename doc/framer.html => framer.html (100%) delete mode 100644 lib/framer.js delete mode 100644 package.json rename {doc/public => public}/fonts/aller-bold.eot (100%) rename {doc/public => public}/fonts/aller-bold.ttf (100%) rename {doc/public => public}/fonts/aller-bold.woff (100%) rename {doc/public => public}/fonts/aller-light.eot (100%) rename {doc/public => public}/fonts/aller-light.ttf (100%) rename {doc/public => public}/fonts/aller-light.woff (100%) rename {doc/public => public}/fonts/novecento-bold.eot (100%) rename {doc/public => public}/fonts/novecento-bold.ttf (100%) rename {doc/public => public}/fonts/novecento-bold.woff (100%) rename {doc/public => public}/stylesheets/normalize.css (100%) delete mode 100644 test/framer.js diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 55c4878c..00000000 --- a/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -The MIT License - -Copyright (C) 2013 Gábor Molnár - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - diff --git a/README.md b/README.md deleted file mode 100644 index ad74da09..00000000 --- a/README.md +++ /dev/null @@ -1,38 +0,0 @@ -node-http2 -========== - -An HTTP/2 server implementation for node.js, developed as a [Google Summer of Code project](https://google-melange.appspot.com/gsoc/project/google/gsoc2013/molnarg/5001). - -Status -====== - -I post weekly status updates [on my blog](http://gabor.molnar.es/blog/categories/google-summer-of-code/). Short version: framing layer 70% ready. - -Installation -============ - -Using npm: - -``` -npm install http2 -``` - -Documentation -============= - -The developer documentation is generated using [docco](http://jashkenas.github.io/docco/), and is located in the `doc` directory. API documentation is coming later. - -Running the tests -================= - -To run the tests, first install [mocha](http://visionmedia.github.io/mocha/) and [chai](http://visionmedia.github.io/mocha/) (`npm install mocha chai`) and then run `npm test`. - -The tests are written in BDD style, so they are a good starting point to understand the code. - -License -======= - -The MIT License - -Copyright (C) 2013 Gábor Molnár - diff --git a/doc/docco.css b/docco.css similarity index 100% rename from doc/docco.css rename to docco.css diff --git a/doc/framer.html b/framer.html similarity index 100% rename from doc/framer.html rename to framer.html diff --git a/lib/framer.js b/lib/framer.js deleted file mode 100644 index c5f468b8..00000000 --- a/lib/framer.js +++ /dev/null @@ -1,582 +0,0 @@ -// The framer consists of two [Transform Stream][1] subclasses that operate in [object mode][2]: -// the Serializer and the Deserializer -// [1]: http://nodejs.org/api/stream.html#stream_class_stream_transform -// [2]: http://nodejs.org/api/stream.html#stream_new_stream_readable_options -var Transform = require('stream').Transform - -exports.Serializer = Serializer -exports.Deserializer = Deserializer - -// Serializer -// ---------- -// -// Frame Objects +-----------------------------+ Buffers -// * * * * * * * ---> | Serializer Transform Stream | ---> * * * * -// +-----------------------------+ - -function Serializer() { - Transform.call(this, { objectMode: true }) -} -Serializer.prototype = Object.create(Transform.prototype, { constructor: { value: Serializer } }) - -// When there's an incoming frame object, it first generates the frame type specific part of the -// frame (payload), and then then header part which holds fields that are common to all frame types -// (like the length of the payload). -Serializer.prototype._transform = function _transform(frame, encoding, done) { - var payload = Serializer[frame.type](frame) - frame.length = payload.length - var header = Serializer.commonHeader(frame) - - this.push(header) - this.push(payload) - done() -} - -// Deserializer -// ------------ -// -// Buffers +-------------------------------+ Frame Objects -// * * * * ---> | Deserializer Transform Stream | ---> * * * * * * * -// +-------------------------------+ - -function Deserializer() { - Transform.call(this, { objectMode: true }) - this._next(8) -} -Deserializer.prototype = Object.create(Transform.prototype, { constructor: { value: Deserializer } }) - -// The Deserializer is stateful, and it's two main alternating states are: *waiting for header* and -// *waiting for payload*. The state is stored in the boolean property `_waiting_for_header`. -// -// When entering a new state, a `_buffer` is created that will hold the accumulated data (header or -// payload). The `_cursor` is used to track the progress. -Deserializer.prototype._next = function(size) { - this._cursor = 0 - this._buffer = new Buffer(size) - this._waiting_for_header = !this._waiting_for_header -} - -// Parsing an incoming buffer is an iterative process because it can hold multiple frames if it's -// large enough. A `cursor` is used to track the progress in parsing the incoming `chunk`. -Deserializer.prototype._transform = function _transform(chunk, encoding, done) { - var cursor = 0 - - while(cursor < chunk.length) { - // The content of an incoming buffer is first copied to `_buffer`. If it can't hold the full - // chunk, then only a part of it is copied. - var to_copy = Math.min(chunk.length - cursor, this._buffer.length - this._cursor) - chunk.copy(this._buffer, this._cursor, cursor, cursor + to_copy) - this._cursor += to_copy - cursor += to_copy - - // When `_buffer` is full, it's content gets parsed either as header or payload depending on - // the actual state. - if (this._cursor === this._buffer.length) { - if (this._waiting_for_header) { - // If it's header then the parsed data is stored in a temporary variable and then the - // deserializer waits for the specified length payload. - this._header = Deserializer.commonHeader(this._buffer) - this._next(this._header.length) - - } else { - // If it's payload then the the frame object is assembled and then gets pushed out. - // Unknown frame types are ignored. - if (this._header.type) { - var frame = Deserializer[this._header.type](this._buffer) - frame.type = this._header.type - frame.flags = this._header.flags - frame.stream = this._header.stream - this.push(frame) - } - this._next(8) - } - } - } - - done() -} - -// [Frame Header](http://http2.github.io/http2-spec/#FrameHeader) -// -------------------------------------------------------------- -// -// HTTP/2.0 frames share a common base format consisting of an 8-byte header followed by 0 to 65535 -// bytes of data. -// -// 0 1 2 3 -// 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 -// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -// | Length (16) | Type (8) | Flags (8) | -// +-+-------------+---------------+-------------------------------+ -// |R| Stream Identifier (31) | -// +-+-------------------------------------------------------------+ -// | Frame Data (0...) ... -// +---------------------------------------------------------------+ -// -// The fields of the frame header are defined as: -// -// * Length: -// The length of the frame data expressed as an unsigned 16-bit integer. The 8 bytes of the frame -// header are not included in this value. -// -// * Type: -// The 8-bit type of the frame. The frame type determines how the remainder of the frame header -// and data are interpreted. Implementations MUST ignore unsupported and unrecognized frame types. -// -// * Flags: -// An 8-bit field reserved for frame-type specific boolean flags. -// -// Flags are assigned semantics specific to the indicated frame type. Flags that have no defined -// semantics for a particular frame type MUST be ignored, and MUST be left unset (0) when sending. -// -// * R: -// A reserved 1-bit field. The semantics of this bit are undefined and the bit MUST remain unset -// (0) when sending and MUST be ignored when receiving. -// -// * Stream Identifier: -// A 31-bit stream identifier (see Section 3.4.1). A value 0 is reserved for frames that are -// associated with the connection as a whole as opposed to an individual stream. -// -// The structure and content of the remaining frame data is dependent entirely on the frame type. - -var frame_types = [] - -var frame_flags = {} - -Serializer.commonHeader = function writeCommonHeader(frame) { - var data = new Buffer(8) - - if (frame.length > 65535) throw new Error('Too large frame: ' + frame.length + ' bytes') - data.writeUInt16BE(frame.length, 0) - - var type_id = frame_types.indexOf(frame.type) - if (type_id === -1) throw new Error('Unknown frame type: ' + frame.type) - data.writeUInt8(type_id, 2) - - var flag_byte = 0 - for (var flag in frame.flags) { - var position = frame_flags[frame.type].indexOf(flag) - if (position === -1) throw new Error('Unknown flag for frame type ' + frame.type + ': ' + flag) - if (frame.flags[flag]) flag_byte |= (1 << position) - } - data.writeUInt8(flag_byte, 3) - - if (frame.stream > 0x7fffffff) throw new Error('Too large stream ID: ' + frame.stream) - data.writeUInt32BE(frame.stream || 0, 4) - - return data -} - -Deserializer.commonHeader = function readCommonHeader(buffer) { - var frame = {} - - frame.length = buffer.readUInt16BE(0) - - frame.type = frame_types[buffer.readUInt8(2)] - - frame.flags = {} - var flag_byte = buffer.readUInt8(3) - var defined_flags = frame_flags[frame.type] - for (var i = 0; i < defined_flags.length; i++) { - frame.flags[defined_flags[i]] = Boolean(flag_byte & (1 << i)) - } - - frame.stream = buffer.readUInt32BE(4) & 0x7fffffff - - return frame -} - -// Frame types -// =========== - -// [DATA Frames](http://http2.github.io/http2-spec/#DataFrames) -// ------------------------------------------------------------ -// -// DATA frames (type=0x0) convey arbitrary, variable-length sequences of octets associated with a -// stream. -// -// The DATA frame does not define any type-specific flags. - -frame_types[0x0] = 'DATA' - -frame_flags['DATA'] = [] - -Serializer['DATA'] = function writeData(frame) { - return frame.data -} - -Deserializer['DATA'] = function readData(buffer) { - return { data: buffer } -} - -// [HEADERS+PRIORITY](http://http2.github.io/http2-spec/#HEADERS) -// -------------------------------------------------------------- -// -// The HEADERS+PRIORITY frame (type=0x1) allows the sender to set header fields and stream priority -// at the same time. -// -// HEADERS+PRIORITY uses the same flags as the HEADERS frame. - -frame_types[0x1] = 'HEADERS+PRIORITY' - -frame_flags['HEADERS+PRIORITY'] = ['CONTINUES'] - -// 0 1 2 3 -// 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 -// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -// |X| Priority (31) | -// +-+-------------------------------------------------------------+ -// | Header Block (*) ... -// +---------------------------------------------------------------+ -// -// The HEADERS+PRIORITY frame is identical to the HEADERS frame, preceded by a -// single reserved bit and a 31-bit priority. - -Serializer['HEADERS+PRIORITY'] = function writeHeadersPriority(frame) { - var data = new Buffer(4 + frame.data.length) - data.writeUInt32BE(frame.priority & 0x7fffffff, 0) - frame.data.copy(data, 4) - return data -} - -Deserializer['HEADERS+PRIORITY'] = function readHeadersPriority(buffer) { - return { - priority: buffer.readUInt32BE(0) & 0x7fffffff, - data: buffer.slice(4) - } -} - -// [PRIORITY](http://http2.github.io/http2-spec/#PRIORITY) -// ------------------------------------------------------- -// -// The PRIORITY frame (type=0x2) specifies the sender-advised priority of a stream. -// -// The PRIORITY frame does not define any flags. - -frame_types[0x2] = 'PRIORITY' - -frame_flags['PRIORITY'] = [] - -// 0 1 2 3 -// 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 -// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -// |X| Priority (31) | -// +-+-------------------------------------------------------------+ -// -// The payload of a PRIORITY frame contains a single reserved bit and a 31-bit priority. - -Serializer['PRIORITY'] = function writePriority(frame) { - var data = new Buffer(4) - data.writeUInt32BE(frame.priority, 0) - return data -} - -Deserializer['PRIORITY'] = function readPriority(buffer) { - return { - priority: buffer.readUInt32BE(0) - } -} - -// [RST_STREAM](http://http2.github.io/http2-spec/#RST_STREAM) -// ----------------------------------------------------------- -// -// The RST_STREAM frame (type=0x3) allows for abnormal termination of a stream. -// -// No type-flags are defined. - -frame_types[0x3] = 'RST_STREAM' - -frame_flags['RST_STREAM'] = [] - -// 0 1 2 3 -// 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 -// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -// | Error Code (32) | -// +---------------------------------------------------------------+ -// -// The RST_STREAM frame contains a single unsigned, 32-bit integer identifying the error -// code (see Error Codes). The error code indicates why the stream is being terminated. - -Serializer['RST_STREAM'] = function writeRstStream(frame) { - var data = new Buffer(4) - data.writeUInt32BE(error_codes.indexOf(frame.error), 0) - return data -} - -Deserializer['RST_STREAM'] = function readRstStream(buffer) { - return { - error: error_codes[buffer.readUInt32BE(0)] - } -} - -// [SETTINGS](http://http2.github.io/http2-spec/#SETTINGS) -// ------------------------------------------------------- -// -// The SETTINGS frame (type=0x4) conveys configuration parameters that affect how endpoints -// communicate. -// -// The SETTINGS frame defines the following flag: -// -// * CLEAR_PERSISTED (0x2): -// Bit 2 being set indicates a request to clear any previously persisted settings before -// processing the settings. - -frame_types[0x4] = 'SETTINGS' - -frame_flags['SETTINGS'] = ['CLEAR_PERSISTED'] - -// The payload of a SETTINGS frame consists of zero or more settings. Each setting consists of an -// 8-bit reserved field, an unsigned 24-bit setting identifier, and an unsigned 32-bit value. -// -// 0 1 2 3 -// 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 -// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -// | Reserved(8) | Setting Identifier (24) | -// +---------------+-----------------------------------------------+ -// | Value (32) | -// +---------------------------------------------------------------+ -// -// A SETTINGS frame is not required to include every defined setting; senders can include only those -// parameters for which it has accurate values and a need to convey. When multiple parameters are -// sent, they SHOULD be sent in order of numerically lowest ID to highest ID. A single SETTINGS -// frame MUST NOT contain multiple values for the same ID. If the receiver of a SETTINGS frame -// discovers multiple values for the same ID, it MUST ignore all values for that ID except the first -// one. - -Serializer['SETTINGS'] = function writeSettings(frame) { - var settings = [] - defined_settings.forEach(function(setting, id) { - if (setting.name in frame.settings) { - var value = frame.settings[setting.name] - settings.push({ id: id, value: setting.flag ? value & 0x1 : value }) - } - }) - - var buffer = new Buffer(settings.length * 8) - for (var i = 0; i < settings.length; i++) { - buffer.writeUInt32BE(settings[i].id & 0xffffff, i*8) - buffer.writeUInt32BE(settings[i].value, i*8 + 4) - } - - return buffer -} - -Deserializer['SETTINGS'] = function readSettings(buffer) { - var settings = {} - - for (var i = 0; i < buffer.length / 8; i++) { - var id = buffer.readUInt32BE(i*8) & 0xffffff - var setting = defined_settings[id] - var value = buffer.readUInt32BE(i*8 + 4) - if (setting.name in settings) continue - settings[setting.name] = setting.flag ? Boolean(value & 0x1) : value - } - - return { - settings: settings - } -} - -// The following settings are defined: -var defined_settings = [] - -// * SETTINGS_MAX_CONCURRENT_STREAMS (4): -// indicates the maximum number of concurrent streams that the sender will allow. -defined_settings[4] = { name: 'SETTINGS_MAX_CONCURRENT_STREAMS', flag: false } - -// * SETTINGS_INITIAL_WINDOW_SIZE (7): -// indicates the sender's initial stream window size (in bytes) for new streams. -defined_settings[7] = { name: 'SETTINGS_INITIAL_WINDOW_SIZE', flag: false } - -// * SETTINGS_FLOW_CONTROL_OPTIONS (10): -// indicates that streams directed to the sender will not be subject to flow control. The least -// significant bit (0x1) is set to indicate that new streams are not flow controlled. All other -// bits are reserved. -defined_settings[10] = { name: 'SETTINGS_FLOW_CONTROL_OPTIONS', flag: true } - -// [PUSH_PROMISE](http://http2.github.io/http2-spec/#PUSH_PROMISE) -// --------------------------------------------------------------- -// -// The PUSH_PROMISE frame (type=0x5) is used to notify the peer endpoint in advance of streams the -// sender intends to initiate. -// -// PUSH_PROMISE uses the same flags as the HEADERS frame. - -frame_types[0x5] = 'PUSH_PROMISE' - -frame_flags['PUSH_PROMISE'] = ['CONTINUES'] - -// 0 1 2 3 -// 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 -// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -// |X| Promised-Stream-ID (31) | -// +-+-------------------------------------------------------------+ -// | Header Block (*) ... -// +---------------------------------------------------------------+ -// -// The PUSH_PROMISE frame includes the unsigned 31-bit identifier of -// the stream the endpoint plans to create along with a minimal set of headers that provide -// additional context for the stream. - -Serializer['PUSH_PROMISE'] = function writePushPromise(frame) { - var data = new Buffer(4 + frame.data.length) - data.writeUInt32BE(frame.promised_stream & 0x7fffffff, 0) - frame.data.copy(data, 4) - return data -} - -Deserializer['PUSH_PROMISE'] = function readPushPromise(buffer) { - return { - promised_stream: buffer.readUInt32BE(0) & 0x7fffffff, - data: buffer.slice(4) - } -} - -// [PING](http://http2.github.io/http2-spec/#PING) -// ----------------------------------------------- -// -// The PING frame (type=0x6) is a mechanism for measuring a minimal round-trip time from the -// sender, as well as determining whether an idle connection is still functional. -// -// The PING frame defines one type-specific flag: -// -// * PONG (0x2): -// Bit 2 being set indicates that this PING frame is a PING response. - -frame_types[0x6] = 'PING' - -frame_flags['PING'] = ['PONG'] - -// In addition to the frame header, PING frames MUST contain 8 additional octets of opaque data. - -Serializer['PING'] = function writePing(frame) { - var payload = frame.data - if (!payload || payload.length !== 8) throw new Error('PING frames must carry an 8 byte payload.') - return payload -} - -Deserializer['PING'] = function readPing(buffer) { - return { - data: buffer - } -} - -// [GOAWAY](http://http2.github.io/http2-spec/#GOAWAY) -// --------------------------------------------------- -// -// The GOAWAY frame (type=0x7) informs the remote peer to stop creating streams on this connection. -// -// The GOAWAY frame does not define any type-specific flags. - -frame_types[0x7] = 'GOAWAY' - -frame_flags['GOAWAY'] = [] - -// 0 1 2 3 -// 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 -// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -// |X| Last-Stream-ID (31) | -// +-+-------------------------------------------------------------+ -// | Error Code (32) | -// +---------------------------------------------------------------+ -// -// The last stream identifier in the GOAWAY frame contains the highest numbered stream identifier -// for which the sender of the GOAWAY frame has received frames on and might have taken some action -// on. -// -// The GOAWAY frame also contains a 32-bit error code (see Error Codes) that contains the reason for -// closing the connection. - -Serializer['GOAWAY'] = function writeGoaway(frame) { - var data = new Buffer(8) - data.writeUInt32BE(frame.last_stream & 0x7fffffff, 0) - data.writeUInt32BE(error_codes.indexOf(frame.error), 4) - return data -} - -Deserializer['GOAWAY'] = function readGoaway(buffer) { - return { - last_stream: buffer.readUInt32BE(0) & 0x7fffffff, - error: error_codes[buffer.readUInt32BE(4)] - } -} - -// [HEADERS](http://http2.github.io/http2-spec/#HEADERS) -// ----------------------------------------------------- -// -// The HEADERS frame (type=0x8) provides header fields for a stream. -// -// Additional type-specific flags for the HEADERS frame are: -// -// * CONTINUES (0x2): -// The CONTINUES bit indicates that this frame does not contain the entire payload necessary to -// provide a complete set of headers. - -frame_types[0x8] = 'HEADERS' - -frame_flags['HEADERS'] = ['CONTINUES'] - -// The payload of a HEADERS frame contains a Headers Block (Section 3.7). - -Serializer['HEADERS'] = function writeHeaders(frame) { - return frame.data -} - -Deserializer['HEADERS'] = function readHeaders(buffer) { - return { data: buffer } -} - -// [WINDOW_UPDATE](http://http2.github.io/http2-spec/#WINDOW_UPDATE) -// ----------------------------------------------------------------- -// -// The WINDOW_UPDATE frame (type=0x9) is used to implement flow control. -// -// The following additional flags are defined for the WINDOW_UPDATE frame: -// -// * END_FLOW_CONTROL (0x2): -// Bit 2 being set indicates that flow control for the identified stream -// or connection has been ended; subsequent frames do not need to be flow controlled. - -frame_types[0x9] = 'WINDOW_UPDATE' - -frame_flags['WINDOW_UPDATE'] = ['END_FLOW_CONTROL'] - -// The payload of a WINDOW_UPDATE frame is a 32-bit value indicating the additional number of bytes -// that the sender can transmit in addition to the existing flow control window. The legal range -// for this field is 1 to 2^31 - 1 (0x7fffffff) bytes; the most significant bit of this value is -// reserved. - -Serializer['WINDOW_UPDATE'] = function writeWindowUpdate(frame) { - var data = new Buffer(4) - data.writeUInt32BE(frame.window_size & 0x7fffffff, 0) - return data -} - -Deserializer['WINDOW_UPDATE'] = function readWindowUpdate(buffer) { - return { - window_size: buffer.readUInt32BE(0) & 0x7fffffff - } -} - -// Common Flags -// ------------ -// -// The least significant bit (0x1) - the FINAL bit - is defined for all frame types as an indication -// that this frame is the last the endpoint will send for the identified stream. - -for (var type in frame_flags) frame_flags[type].unshift('FINAL') - -// [Error Codes](http://http2.github.io/http2-spec/#ErrorCodes) -// ------------------------------------------------------------ - -var error_codes = [ - 'NO_ERROR', - 'PROTOCOL_ERROR', - 'INTERNAL_ERROR', - 'FLOW_CONTROL_ERROR', - , - 'STREAM_CLOSED', - 'FRAME_TOO_LARGE', - 'REFUSED_STREAM', - 'CANCEL', - 'COMPRESSION_ERROR' -] diff --git a/package.json b/package.json deleted file mode 100644 index ee7c8497..00000000 --- a/package.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "name": "http2", - "version": "0.0.1", - "description": "An HTTP/2 server implementation", - "main": "index.js", - "engines" : { - "node" : ">=0.10.0" - }, - "devDependencies": { - "chai": "*", - "mocha": "*", - "docco": "*" - }, - "scripts": { - "test": "mocha --reporter spec", - "prepublish": "docco lib/* --output doc --layout parallel --css doc/docco.css" - }, - "repository": { - "type": "git", - "url": "git://github.com/molnarg/node-http2.git" - }, - "homepage": "https://github.com/molnarg/node-http2", - "bugs": { - "url": "https://github.com/molnarg/node-http2/issues" - }, - "keywords": [ - "http2" - ], - "author": "Gábor Molnár (http://gabor.molnar.es)", - "license": "MIT", - "readmeFilename": "README.md" -} diff --git a/doc/public/fonts/aller-bold.eot b/public/fonts/aller-bold.eot similarity index 100% rename from doc/public/fonts/aller-bold.eot rename to public/fonts/aller-bold.eot diff --git a/doc/public/fonts/aller-bold.ttf b/public/fonts/aller-bold.ttf similarity index 100% rename from doc/public/fonts/aller-bold.ttf rename to public/fonts/aller-bold.ttf diff --git a/doc/public/fonts/aller-bold.woff b/public/fonts/aller-bold.woff similarity index 100% rename from doc/public/fonts/aller-bold.woff rename to public/fonts/aller-bold.woff diff --git a/doc/public/fonts/aller-light.eot b/public/fonts/aller-light.eot similarity index 100% rename from doc/public/fonts/aller-light.eot rename to public/fonts/aller-light.eot diff --git a/doc/public/fonts/aller-light.ttf b/public/fonts/aller-light.ttf similarity index 100% rename from doc/public/fonts/aller-light.ttf rename to public/fonts/aller-light.ttf diff --git a/doc/public/fonts/aller-light.woff b/public/fonts/aller-light.woff similarity index 100% rename from doc/public/fonts/aller-light.woff rename to public/fonts/aller-light.woff diff --git a/doc/public/fonts/novecento-bold.eot b/public/fonts/novecento-bold.eot similarity index 100% rename from doc/public/fonts/novecento-bold.eot rename to public/fonts/novecento-bold.eot diff --git a/doc/public/fonts/novecento-bold.ttf b/public/fonts/novecento-bold.ttf similarity index 100% rename from doc/public/fonts/novecento-bold.ttf rename to public/fonts/novecento-bold.ttf diff --git a/doc/public/fonts/novecento-bold.woff b/public/fonts/novecento-bold.woff similarity index 100% rename from doc/public/fonts/novecento-bold.woff rename to public/fonts/novecento-bold.woff diff --git a/doc/public/stylesheets/normalize.css b/public/stylesheets/normalize.css similarity index 100% rename from doc/public/stylesheets/normalize.css rename to public/stylesheets/normalize.css diff --git a/test/framer.js b/test/framer.js deleted file mode 100644 index 06c3cb83..00000000 --- a/test/framer.js +++ /dev/null @@ -1,268 +0,0 @@ -var expect = require('chai').expect - -var framer = require('../lib/framer') - , Serializer = framer.Serializer - , Deserializer = framer.Deserializer - -var frame_types = { - 'DATA': ['data'], - 'HEADERS+PRIORITY': ['priority', 'data'], - 'PRIORITY': ['priority'], - 'RST_STREAM': ['error'], - 'SETTINGS': ['settings'], - 'PUSH_PROMISE': ['promised_stream', 'data'], - 'PING': ['data'], - 'GOAWAY': ['last_stream', 'error'], - 'HEADERS': ['data'], - 'WINDOW_UPDATE': ['window_size'] -} - -var test_frames = [{ - frame: { - type: 'DATA', - flags: { 'FINAL': false }, - stream: 10, - length: 4, - - data: new Buffer('12345678', 'hex') - }, - // length + type + flags + stream + content - buffer: new Buffer('0004' + '00' + '00' + '0000000A' + '12345678', 'hex') -}, { - frame: { - type: 'HEADERS+PRIORITY', - flags: { 'FINAL': false, 'CONTINUES': false }, - stream: 15, - length: 8, - - priority: 3, - data: new Buffer('12345678', 'hex') - }, - buffer: new Buffer('0008' + '01' + '00' + '0000000F' + '00000003' + '12345678', 'hex') -}, { - frame: { - type: 'PRIORITY', - flags: { 'FINAL': false }, - stream: 10, - length: 4, - - priority: 3 - }, - buffer: new Buffer('0004' + '02' + '00' + '0000000A' + '00000003', 'hex') -}, { - frame: { - type: 'RST_STREAM', - flags: { 'FINAL': false }, - stream: 10, - length: 4, - - error: 'INTERNAL_ERROR' - }, - buffer: new Buffer('0004' + '03' + '00' + '0000000A' + '00000002', 'hex') -}, { - frame: { - type: 'SETTINGS', - flags: { 'FINAL': false, 'CLEAR_PERSISTED': false }, - stream: 10, - length: 24, - - settings: { - SETTINGS_MAX_CONCURRENT_STREAMS: 0x01234567, - SETTINGS_INITIAL_WINDOW_SIZE: 0x89ABCDEF, - SETTINGS_FLOW_CONTROL_OPTIONS: true - } - }, - buffer: new Buffer('0018' + '04' + '00' + '0000000A' + '00' + '000004' + '01234567' + - '00' + '000007' + '89ABCDEF' + - '00' + '00000A' + '00000001', 'hex') -}, { - frame: { - type: 'PUSH_PROMISE', - flags: { 'FINAL': false, 'CONTINUES': false }, - stream: 15, - length: 8, - - promised_stream: 3, - data: new Buffer('12345678', 'hex') - }, - buffer: new Buffer('0008' + '05' + '00' + '0000000F' + '00000003' + '12345678', 'hex') -}, { - frame: { - type: 'PING', - flags: { 'FINAL': false, 'PONG': false }, - stream: 15, - length: 8, - - data: new Buffer('1234567887654321', 'hex') - }, - buffer: new Buffer('0008' + '06' + '00' + '0000000F' + '1234567887654321', 'hex') -}, { - frame: { - type: 'GOAWAY', - flags: { 'FINAL': false }, - stream: 10, - length: 8, - - last_stream: 0x12345678, - error: 'PROTOCOL_ERROR' - }, - buffer: new Buffer('0008' + '07' + '00' + '0000000A' + '12345678' + '00000001', 'hex') -}, { - frame: { - type: 'HEADERS', - flags: { 'FINAL': false, 'CONTINUES': false }, - stream: 10, - length: 4, - - data: new Buffer('12345678', 'hex') - }, - buffer: new Buffer('0004' + '08' + '00' + '0000000A' + '12345678', 'hex') -}, { - frame: { - type: 'WINDOW_UPDATE', - flags: { 'FINAL': false, 'END_FLOW_CONTROL': false }, - stream: 10, - length: 4, - - window_size: 0x12345678 - }, - buffer: new Buffer('0004' + '09' + '00' + '0000000A' + '12345678', 'hex') -}] - -// Concatenate two buffer into a new buffer -function concat(buffer1, buffer2) { - var concatenated = new Buffer(buffer1.length + buffer2.length) - buffer1.copy(concatenated) - buffer2.copy(concatenated, buffer1.length) - return concatenated -} - -// Concatenate an array of buffers and then cut them into random size buffers -function shuffle_buffers(buffers) { - var concatenated = new Buffer(0) - for (var i = 0; i < buffers.length; i++) concatenated = concat(concatenated, buffers[i]) - - var output = [] - var written = 0 - while (written < concatenated.length) { - var chunk_size = Math.min(concatenated.length - written, Math.ceil(Math.random()*20)) - output.push(concatenated.slice(written, written + chunk_size)) - written += chunk_size - } - - return output -} - -describe('Framer', function() { - describe('Serializer', function() { - describe('static method .commonHeader({ length, type, flags, stream })', function() { - it('should return the appropriate 8 byte header buffer', function() { - for (var i = 0; i < test_frames.length; i++) { - var test = test_frames[i] - expect(Serializer.commonHeader(test.frame)).to.deep.equal(test.buffer.slice(0,8)) - } - }) - }) - - Object.keys(frame_types).forEach(function(type) { - var tests = test_frames.filter(function(test) { return test.frame.type === type }) - var frame_shape = '{ ' + frame_types[type].join(', ') + ' }' - describe('static method [\'' + type + '\'](' + frame_shape + ')', function() { - it('should return a ' + type + ' type payload buffer', function() { - for (var i = 0; i < tests.length; i++) { - var test = tests[i] - expect(Serializer[type](test.frame)).to.deep.equal(test.buffer.slice(8)) - } - }) - }) - }) - - describe('transform stream', function() { - it('should transform frame objects to appropriate buffers', function() { - var stream = new Serializer() - for (var i = 0; i < test_frames.length; i++) { - var test = test_frames[i] - stream.write(test.frame) - var chunk, buffer = new Buffer(0) - while (chunk = stream.read()) buffer = concat(buffer, chunk) - expect(buffer).to.be.deep.equal(test.buffer) - } - }) - }) - }) - - describe('Deserializer', function() { - describe('static method .commonHeader(header_buffer)', function() { - it('should return the appropriate header object', function() { - for (var i = 0; i < test_frames.length; i++) { - var test = test_frames[i] - expect(Deserializer.commonHeader(test.buffer.slice(0,8))).to.deep.equal({ - length: test.frame.length, - type: test.frame.type, - flags: test.frame.flags, - stream: test.frame.stream - }) - } - }) - }) - - Object.keys(frame_types).forEach(function(type) { - var tests = test_frames.filter(function(test) { return test.frame.type === type }) - var frame_shape = '{ ' + frame_types[type].join(', ') + ' }' - describe('static method [\'' + type + '\'](payload_buffer)', function() { - it('should return the parsed frame object with these properties: ' + frame_shape, function() { - for (var i = 0; i < tests.length; i++) { - var test = tests[i] - var parsed = Deserializer[type](test.buffer.slice(8)) - parsed.length = test.frame.length - parsed.type = test.frame.type - parsed.flags = test.frame.flags - parsed.stream = test.frame.stream - expect(parsed).to.deep.equal(test.frame) - } - }) - }) - }) - - describe('transform stream', function() { - it('should transform buffers to appropriate frame object', function() { - var stream = new Deserializer() - - shuffle_buffers(test_frames.map(function(test) { return test.buffer })) - .forEach(stream.write.bind(stream)) - - for (var j = 0; j < test_frames.length; j++) { - var parsed_frame = stream.read() - parsed_frame.length = test_frames[j].frame.length - expect(parsed_frame).to.be.deep.equal(test_frames[j].frame) - } - }) - }) - }) - - describe('invariant', function() { - describe('header === Deserializer.commonHeader(Serializer.commonHeader(header))', function() { - it('should always be true for well formed header objects', function() { - for (var i = 0; i < test_frames.length; i++) { - var frame = test_frames[i].frame - var header = { - length: frame.length, - type: frame.type, - flags: frame.flags, - stream: frame.stream - } - expect(Deserializer.commonHeader(Serializer.commonHeader(header))).to.deep.equal(header) - } - }) - }) - - describe('buffer === Serializer.commonHeader(Deserializer.commonHeader(buffer))', function() { - it('should always be true for well formed header buffers', function() { - for (var i = 0; i < test_frames.length; i++) { - var buffer = test_frames[i].buffer.slice(0,8) - expect(Serializer.commonHeader(Deserializer.commonHeader(buffer))).to.deep.equal(buffer) - } - }) - }) - }) -}) From d4ba48da59d04dffd95fe7d43ee3659347b825a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Moln=C3=A1r?= Date: Wed, 3 Jul 2013 22:39:55 +0200 Subject: [PATCH 02/20] Dummy change to trigger GitHub Pages rebuild. --- compressor.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compressor.html b/compressor.html index a33c6924..94c0aa62 100644 --- a/compressor.html +++ b/compressor.html @@ -1,5 +1,5 @@ - + compressor.js From fe149085c3c71385d961f7e5d2e1bb4baa9f2835 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Moln=C3=A1r?= Date: Fri, 19 Jul 2013 18:48:48 +0200 Subject: [PATCH 03/20] Adding coverage report. --- coverage/coverage.json | 1 + coverage/lcov-report/index.html | 333 +++ coverage/lcov-report/lib/compressor.js.html | 2726 +++++++++++++++++++ coverage/lcov-report/lib/connection.js.html | 1190 ++++++++ coverage/lcov-report/lib/endpoint.js.html | 809 ++++++ coverage/lcov-report/lib/framer.js.html | 2330 ++++++++++++++++ coverage/lcov-report/lib/index.html | 411 +++ coverage/lcov-report/lib/logging.js.html | 389 +++ coverage/lcov-report/lib/stream.js.html | 1628 +++++++++++ coverage/lcov-report/lib/utils.js.html | 422 +++ coverage/lcov-report/prettify.css | 1 + coverage/lcov-report/prettify.js | 1 + coverage/lcov.info | 1441 ++++++++++ 13 files changed, 11682 insertions(+) create mode 100644 coverage/coverage.json create mode 100644 coverage/lcov-report/index.html create mode 100644 coverage/lcov-report/lib/compressor.js.html create mode 100644 coverage/lcov-report/lib/connection.js.html create mode 100644 coverage/lcov-report/lib/endpoint.js.html create mode 100644 coverage/lcov-report/lib/framer.js.html create mode 100644 coverage/lcov-report/lib/index.html create mode 100644 coverage/lcov-report/lib/logging.js.html create mode 100644 coverage/lcov-report/lib/stream.js.html create mode 100644 coverage/lcov-report/lib/utils.js.html create mode 100644 coverage/lcov-report/prettify.css create mode 100644 coverage/lcov-report/prettify.js create mode 100644 coverage/lcov.info diff --git a/coverage/coverage.json b/coverage/coverage.json new file mode 100644 index 00000000..1207c919 --- /dev/null +++ b/coverage/coverage.json @@ -0,0 +1 @@ +{"/data/upstream/node-http2/lib/utils.js":{"path":"/data/upstream/node-http2/lib/utils.js","s":{"1":1,"2":77,"3":77,"4":411,"5":77,"6":77,"7":411,"8":77,"9":1,"10":14,"11":14,"12":14,"13":16,"14":16,"15":16,"16":14,"17":1,"18":12,"19":12,"20":0,"21":12,"22":1,"23":1},"b":{},"f":{"1":77,"2":14,"3":12,"4":372},"fnMap":{"1":{"name":"concat","line":2,"loc":{"start":{"line":2,"column":17},"end":{"line":2,"column":42}}},"2":{"name":"cut","line":17,"loc":{"start":{"line":17,"column":14},"end":{"line":17,"column":41}}},"3":{"name":"shallow_copy","line":29,"loc":{"start":{"line":29,"column":23},"end":{"line":29,"column":53}}},"4":{"name":"noop","line":38,"loc":{"start":{"line":38,"column":0},"end":{"line":38,"column":16}}}},"statementMap":{"1":{"start":{"line":2,"column":0},"end":{"line":14,"column":2}},"2":{"start":{"line":3,"column":2},"end":{"line":3,"column":15}},"3":{"start":{"line":4,"column":2},"end":{"line":6,"column":3}},"4":{"start":{"line":5,"column":4},"end":{"line":5,"column":30}},"5":{"start":{"line":8,"column":2},"end":{"line":8,"column":38}},"6":{"start":{"line":9,"column":2},"end":{"line":11,"column":3}},"7":{"start":{"line":10,"column":4},"end":{"line":10,"column":42}},"8":{"start":{"line":13,"column":2},"end":{"line":13,"column":22}},"9":{"start":{"line":17,"column":0},"end":{"line":26,"column":2}},"10":{"start":{"line":18,"column":2},"end":{"line":18,"column":18}},"11":{"start":{"line":19,"column":2},"end":{"line":19,"column":17}},"12":{"start":{"line":20,"column":2},"end":{"line":24,"column":34}},"13":{"start":{"line":21,"column":4},"end":{"line":21,"column":60}},"14":{"start":{"line":22,"column":4},"end":{"line":22,"column":59}},"15":{"start":{"line":23,"column":4},"end":{"line":23,"column":25}},"16":{"start":{"line":25,"column":2},"end":{"line":25,"column":16}},"17":{"start":{"line":29,"column":0},"end":{"line":35,"column":2}},"18":{"start":{"line":30,"column":2},"end":{"line":30,"column":17}},"19":{"start":{"line":31,"column":2},"end":{"line":33,"column":3}},"20":{"start":{"line":32,"column":4},"end":{"line":32,"column":29}},"21":{"start":{"line":34,"column":2},"end":{"line":34,"column":15}},"22":{"start":{"line":38,"column":0},"end":{"line":38,"column":18}},"23":{"start":{"line":39,"column":0},"end":{"line":39,"column":20}}},"branchMap":{}},"/data/upstream/node-http2/lib/compressor.js":{"path":"/data/upstream/node-http2/lib/compressor.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":10,"10":10,"11":10,"12":10,"13":1,"14":1421,"15":1,"16":43,"17":136,"18":1,"19":43,"20":43,"21":154,"22":98,"23":43,"24":98,"25":98,"26":1,"27":172,"28":172,"29":52,"30":52,"31":139,"32":52,"33":2,"34":2,"35":50,"36":120,"37":35,"38":85,"39":120,"40":119,"41":88,"42":31,"43":119,"44":119,"45":120,"46":1,"47":36,"48":90,"49":1,"50":58,"51":58,"52":58,"53":5,"54":5,"55":1,"56":57,"57":57,"58":1029,"59":57,"60":31,"61":31,"62":15,"63":42,"64":1,"65":24,"66":24,"67":42,"68":24,"69":24,"70":24,"71":1,"72":119,"73":119,"74":119,"75":2345,"76":192,"77":2345,"78":119,"79":218,"80":218,"81":1,"82":6,"83":6,"84":6,"85":6,"86":1,"87":1,"88":23,"89":23,"90":23,"91":23,"92":90,"93":23,"94":23,"95":23,"96":90,"97":90,"98":90,"99":17,"100":8,"101":9,"102":73,"103":23,"104":23,"105":1,"106":4,"107":4,"108":4,"109":4,"110":1,"111":1,"112":20,"113":20,"114":20,"115":20,"116":64,"117":64,"118":8,"119":24,"120":56,"121":20,"122":20,"123":20,"124":46,"125":24,"126":24,"127":24,"128":20,"129":80,"130":58,"131":58,"132":58,"133":20,"134":20,"135":82,"136":20,"137":20,"138":20,"139":1,"140":216,"141":216,"142":88,"143":128,"144":128,"145":2,"146":128,"147":128,"148":128,"149":136,"150":136,"151":136,"152":8,"153":136,"154":136,"155":128,"156":1,"157":234,"158":234,"159":234,"160":100,"161":234,"162":139,"163":139,"164":149,"165":149,"166":149,"167":234,"168":1,"169":110,"170":110,"171":110,"172":1,"173":115,"174":115,"175":115,"176":115,"177":1,"178":1,"179":90,"180":90,"181":27,"182":63,"183":1,"184":62,"185":46,"186":16,"187":90,"188":27,"189":63,"190":20,"191":43,"192":43,"193":63,"194":16,"195":63,"196":90,"197":90,"198":1,"199":98,"200":98,"201":98,"202":29,"203":69,"204":52,"205":2,"206":50,"207":17,"208":98,"209":29,"210":29,"211":69,"212":69,"213":44,"214":69,"215":17,"216":52,"217":50,"218":2,"219":69,"220":98,"221":1,"222":1,"223":4,"224":1,"225":14,"226":10,"227":10,"228":10,"229":12,"230":12,"231":10,"232":2,"233":2,"234":12,"235":4,"236":14,"237":1,"238":6,"239":6,"240":6,"241":6,"242":6,"243":1,"244":18,"245":3,"246":1,"247":3,"248":15,"249":11,"250":11,"251":11,"252":11,"253":4,"254":18,"255":10,"256":12,"257":10,"258":10,"259":10,"260":18,"261":1,"262":1},"b":{"1":[10,10],"2":[1421,121],"3":[52,120],"4":[2,50],"5":[35,85],"6":[119,1],"7":[88,31],"8":[5,53],"9":[1,4],"10":[31,26],"11":[15,16],"12":[24,18],"13":[192,2153],"14":[6,4],"15":[4,2],"16":[17,73],"17":[8,9],"18":[4,2],"19":[2,2],"20":[8,56],"21":[24,22],"22":[58,22],"23":[88,128],"24":[2,126],"25":[8,128],"26":[100,134],"27":[139,95],"28":[27,63],"29":[1,62],"30":[46,16],"31":[27,63],"32":[20,43],"33":[16,47],"34":[29,69],"35":[52,17],"36":[2,50],"37":[29,69],"38":[44,25],"39":[17,52],"40":[50,2],"41":[10,4],"42":[14,9],"43":[10,2],"44":[3,15],"45":[1,2],"46":[3,2],"47":[11,4],"48":[15,9],"49":[10,8],"50":[18,14,9]},"f":{"1":10,"2":1421,"3":43,"4":136,"5":43,"6":154,"7":98,"8":98,"9":172,"10":139,"11":36,"12":90,"13":58,"14":1029,"15":24,"16":119,"17":6,"18":23,"19":4,"20":20,"21":216,"22":234,"23":110,"24":115,"25":90,"26":98,"27":4,"28":14,"29":6,"30":18,"31":12},"fnMap":{"1":{"name":"CompressionContext","line":40,"loc":{"start":{"line":40,"column":0},"end":{"line":40,"column":42}}},"2":{"name":"(anonymous_2)","line":49,"loc":{"start":{"line":49,"column":27},"end":{"line":49,"column":50}}},"3":{"name":"getWorkingSet","line":54,"loc":{"start":{"line":54,"column":45},"end":{"line":54,"column":70}}},"4":{"name":"(anonymous_4)","line":55,"loc":{"start":{"line":55,"column":27},"end":{"line":55,"column":43}}},"5":{"name":"reinitialize","line":61,"loc":{"start":{"line":61,"column":44},"end":{"line":61,"column":68}}},"6":{"name":"(anonymous_6)","line":67,"loc":{"start":{"line":67,"column":41},"end":{"line":67,"column":57}}},"7":{"name":"(anonymous_7)","line":69,"loc":{"start":{"line":69,"column":9},"end":{"line":69,"column":25}}},"8":{"name":"(anonymous_8)","line":77,"loc":{"start":{"line":77,"column":38},"end":{"line":77,"column":53}}},"9":{"name":"execute","line":106,"loc":{"start":{"line":106,"column":39},"end":{"line":106,"column":65}}},"10":{"name":"(anonymous_10)","line":116,"loc":{"start":{"line":116,"column":40},"end":{"line":116,"column":56}}},"11":{"name":"(anonymous_11)","line":154,"loc":{"start":{"line":154,"column":43},"end":{"line":154,"column":59}}},"12":{"name":"(anonymous_12)","line":155,"loc":{"start":{"line":155,"column":28},"end":{"line":155,"column":44}}},"13":{"name":"(anonymous_13)","line":162,"loc":{"start":{"line":162,"column":50},"end":{"line":162,"column":65}}},"14":{"name":"(anonymous_14)","line":178,"loc":{"start":{"line":178,"column":38},"end":{"line":178,"column":54}}},"15":{"name":"(anonymous_15)","line":201,"loc":{"start":{"line":201,"column":53},"end":{"line":201,"column":68}}},"16":{"name":"(anonymous_16)","line":225,"loc":{"start":{"line":225,"column":49},"end":{"line":225,"column":60}}},"17":{"name":"Decompressor","line":247,"loc":{"start":{"line":247,"column":0},"end":{"line":247,"column":33}}},"18":{"name":"decompress","line":262,"loc":{"start":{"line":262,"column":36},"end":{"line":262,"column":64}}},"19":{"name":"Compressor","line":308,"loc":{"start":{"line":308,"column":0},"end":{"line":308,"column":31}}},"20":{"name":"compress","line":323,"loc":{"start":{"line":323,"column":32},"end":{"line":323,"column":59}}},"21":{"name":"writeInteger","line":393,"loc":{"start":{"line":393,"column":21},"end":{"line":393,"column":49}}},"22":{"name":"readInteger","line":434,"loc":{"start":{"line":434,"column":23},"end":{"line":434,"column":55}}},"23":{"name":"writeString","line":464,"loc":{"start":{"line":464,"column":20},"end":{"line":464,"column":46}}},"24":{"name":"readString","line":470,"loc":{"start":{"line":470,"column":22},"end":{"line":470,"column":50}}},"25":{"name":"writeString","line":523,"loc":{"start":{"line":523,"column":20},"end":{"line":523,"column":49}}},"26":{"name":"readString","line":559,"loc":{"start":{"line":559,"column":22},"end":{"line":559,"column":50}}},"27":{"name":"_initializeStream","line":624,"loc":{"start":{"line":624,"column":41},"end":{"line":624,"column":70}}},"28":{"name":"_transform","line":628,"loc":{"start":{"line":628,"column":34},"end":{"line":628,"column":77}}},"29":{"name":"_initializeStream","line":673,"loc":{"start":{"line":673,"column":43},"end":{"line":673,"column":72}}},"30":{"name":"_transform","line":682,"loc":{"start":{"line":682,"column":36},"end":{"line":682,"column":79}}},"31":{"name":"(anonymous_31)","line":710,"loc":{"start":{"line":710,"column":47},"end":{"line":710,"column":63}}}},"statementMap":{"1":{"start":{"line":16,"column":0},"end":{"line":16,"column":36}},"2":{"start":{"line":17,"column":0},"end":{"line":17,"column":35}},"3":{"start":{"line":18,"column":0},"end":{"line":18,"column":44}},"4":{"start":{"line":20,"column":0},"end":{"line":20,"column":48}},"5":{"start":{"line":21,"column":0},"end":{"line":21,"column":36}},"6":{"start":{"line":22,"column":0},"end":{"line":22,"column":32}},"7":{"start":{"line":38,"column":0},"end":{"line":38,"column":38}},"8":{"start":{"line":40,"column":0},"end":{"line":45,"column":1}},"9":{"start":{"line":41,"column":2},"end":{"line":41,"column":30}},"10":{"start":{"line":42,"column":2},"end":{"line":42,"column":52}},"11":{"start":{"line":43,"column":2},"end":{"line":43,"column":23}},"12":{"start":{"line":44,"column":2},"end":{"line":44,"column":21}},"13":{"start":{"line":49,"column":0},"end":{"line":51,"column":2}},"14":{"start":{"line":50,"column":2},"end":{"line":50,"column":88}},"15":{"start":{"line":54,"column":0},"end":{"line":58,"column":2}},"16":{"start":{"line":55,"column":2},"end":{"line":57,"column":5}},"17":{"start":{"line":56,"column":4},"end":{"line":56,"column":22}},"18":{"start":{"line":61,"column":0},"end":{"line":81,"column":2}},"19":{"start":{"line":62,"column":2},"end":{"line":62,"column":18}},"20":{"start":{"line":67,"column":2},"end":{"line":71,"column":5}},"21":{"start":{"line":68,"column":4},"end":{"line":68,"column":50}},"22":{"start":{"line":70,"column":4},"end":{"line":70,"column":22}},"23":{"start":{"line":77,"column":2},"end":{"line":80,"column":5}},"24":{"start":{"line":78,"column":4},"end":{"line":78,"column":42}},"25":{"start":{"line":79,"column":4},"end":{"line":79,"column":40}},"26":{"start":{"line":106,"column":0},"end":{"line":150,"column":2}},"27":{"start":{"line":107,"column":2},"end":{"line":107,"column":18}},"28":{"start":{"line":114,"column":2},"end":{"line":149,"column":3}},"29":{"start":{"line":115,"column":4},"end":{"line":115,"column":26}},"30":{"start":{"line":116,"column":4},"end":{"line":118,"column":7}},"31":{"start":{"line":117,"column":6},"end":{"line":117,"column":35}},"32":{"start":{"line":119,"column":4},"end":{"line":124,"column":5}},"33":{"start":{"line":120,"column":6},"end":{"line":120,"column":32}},"34":{"start":{"line":121,"column":6},"end":{"line":121,"column":55}},"35":{"start":{"line":123,"column":6},"end":{"line":123,"column":31}},"36":{"start":{"line":132,"column":4},"end":{"line":136,"column":5}},"37":{"start":{"line":133,"column":6},"end":{"line":133,"column":59}},"38":{"start":{"line":135,"column":6},"end":{"line":135,"column":43}},"39":{"start":{"line":138,"column":4},"end":{"line":146,"column":5}},"40":{"start":{"line":139,"column":6},"end":{"line":143,"column":7}},"41":{"start":{"line":140,"column":8},"end":{"line":140,"column":31}},"42":{"start":{"line":142,"column":8},"end":{"line":142,"column":51}},"43":{"start":{"line":144,"column":6},"end":{"line":144,"column":31}},"44":{"start":{"line":145,"column":6},"end":{"line":145,"column":40}},"45":{"start":{"line":148,"column":4},"end":{"line":148,"column":53}},"46":{"start":{"line":154,"column":0},"end":{"line":158,"column":2}},"47":{"start":{"line":155,"column":2},"end":{"line":157,"column":5}},"48":{"start":{"line":156,"column":4},"end":{"line":156,"column":33}},"49":{"start":{"line":162,"column":0},"end":{"line":197,"column":2}},"50":{"start":{"line":163,"column":2},"end":{"line":163,"column":56}},"51":{"start":{"line":165,"column":2},"end":{"line":165,"column":45}},"52":{"start":{"line":166,"column":2},"end":{"line":175,"column":3}},"53":{"start":{"line":167,"column":4},"end":{"line":167,"column":56}},"54":{"start":{"line":168,"column":4},"end":{"line":174,"column":5}},"55":{"start":{"line":169,"column":6},"end":{"line":173,"column":8}},"56":{"start":{"line":177,"column":2},"end":{"line":177,"column":35}},"57":{"start":{"line":178,"column":2},"end":{"line":180,"column":5}},"58":{"start":{"line":179,"column":4},"end":{"line":179,"column":43}},"59":{"start":{"line":181,"column":2},"end":{"line":190,"column":3}},"60":{"start":{"line":182,"column":4},"end":{"line":182,"column":56}},"61":{"start":{"line":183,"column":4},"end":{"line":189,"column":5}},"62":{"start":{"line":184,"column":6},"end":{"line":188,"column":8}},"63":{"start":{"line":192,"column":2},"end":{"line":196,"column":4}},"64":{"start":{"line":201,"column":0},"end":{"line":216,"column":2}},"65":{"start":{"line":202,"column":2},"end":{"line":202,"column":12}},"66":{"start":{"line":204,"column":2},"end":{"line":209,"column":3}},"67":{"start":{"line":205,"column":4},"end":{"line":208,"column":5}},"68":{"start":{"line":206,"column":6},"end":{"line":206,"column":31}},"69":{"start":{"line":207,"column":6},"end":{"line":207,"column":12}},"70":{"start":{"line":211,"column":2},"end":{"line":215,"column":4}},"71":{"start":{"line":225,"column":0},"end":{"line":238,"column":2}},"72":{"start":{"line":226,"column":2},"end":{"line":226,"column":26}},"73":{"start":{"line":227,"column":2},"end":{"line":227,"column":15}},"74":{"start":{"line":228,"column":2},"end":{"line":233,"column":3}},"75":{"start":{"line":229,"column":4},"end":{"line":231,"column":5}},"76":{"start":{"line":230,"column":6},"end":{"line":230,"column":80}},"77":{"start":{"line":232,"column":4},"end":{"line":232,"column":26}},"78":{"start":{"line":234,"column":2},"end":{"line":237,"column":3}},"79":{"start":{"line":235,"column":4},"end":{"line":235,"column":32}},"80":{"start":{"line":236,"column":4},"end":{"line":236,"column":25}},"81":{"start":{"line":247,"column":0},"end":{"line":255,"column":1}},"82":{"start":{"line":248,"column":2},"end":{"line":248,"column":73}},"83":{"start":{"line":250,"column":2},"end":{"line":251,"column":85}},"84":{"start":{"line":252,"column":2},"end":{"line":252,"column":56}},"85":{"start":{"line":254,"column":2},"end":{"line":254,"column":27}},"86":{"start":{"line":256,"column":0},"end":{"line":256,"column":102}},"87":{"start":{"line":262,"column":0},"end":{"line":299,"column":2}},"88":{"start":{"line":263,"column":2},"end":{"line":263,"column":69}},"89":{"start":{"line":267,"column":2},"end":{"line":267,"column":31}},"90":{"start":{"line":272,"column":2},"end":{"line":272,"column":20}},"91":{"start":{"line":273,"column":2},"end":{"line":275,"column":3}},"92":{"start":{"line":274,"column":4},"end":{"line":274,"column":55}},"93":{"start":{"line":279,"column":2},"end":{"line":279,"column":44}},"94":{"start":{"line":283,"column":2},"end":{"line":283,"column":19}},"95":{"start":{"line":284,"column":2},"end":{"line":296,"column":3}},"96":{"start":{"line":285,"column":4},"end":{"line":285,"column":27}},"97":{"start":{"line":286,"column":4},"end":{"line":286,"column":28}},"98":{"start":{"line":287,"column":4},"end":{"line":295,"column":5}},"99":{"start":{"line":288,"column":6},"end":{"line":292,"column":7}},"100":{"start":{"line":289,"column":8},"end":{"line":289,"column":34}},"101":{"start":{"line":291,"column":8},"end":{"line":291,"column":47}},"102":{"start":{"line":294,"column":6},"end":{"line":294,"column":28}},"103":{"start":{"line":297,"column":2},"end":{"line":297,"column":72}},"104":{"start":{"line":298,"column":2},"end":{"line":298,"column":17}},"105":{"start":{"line":308,"column":0},"end":{"line":316,"column":1}},"106":{"start":{"line":309,"column":2},"end":{"line":309,"column":71}},"107":{"start":{"line":311,"column":2},"end":{"line":312,"column":85}},"108":{"start":{"line":313,"column":2},"end":{"line":313,"column":56}},"109":{"start":{"line":315,"column":2},"end":{"line":315,"column":27}},"110":{"start":{"line":317,"column":0},"end":{"line":317,"column":98}},"111":{"start":{"line":323,"column":0},"end":{"line":374,"column":2}},"112":{"start":{"line":324,"column":2},"end":{"line":324,"column":71}},"113":{"start":{"line":325,"column":2},"end":{"line":325,"column":8}},"114":{"start":{"line":329,"column":2},"end":{"line":329,"column":17}},"115":{"start":{"line":330,"column":2},"end":{"line":339,"column":3}},"116":{"start":{"line":331,"column":4},"end":{"line":331,"column":30}},"117":{"start":{"line":332,"column":4},"end":{"line":338,"column":5}},"118":{"start":{"line":333,"column":6},"end":{"line":335,"column":7}},"119":{"start":{"line":334,"column":8},"end":{"line":334,"column":37}},"120":{"start":{"line":337,"column":6},"end":{"line":337,"column":32}},"121":{"start":{"line":343,"column":2},"end":{"line":343,"column":31}},"122":{"start":{"line":344,"column":2},"end":{"line":344,"column":70}},"123":{"start":{"line":347,"column":2},"end":{"line":353,"column":3}},"124":{"start":{"line":348,"column":4},"end":{"line":352,"column":5}},"125":{"start":{"line":349,"column":6},"end":{"line":349,"column":64}},"126":{"start":{"line":350,"column":6},"end":{"line":350,"column":37}},"127":{"start":{"line":351,"column":6},"end":{"line":351,"column":29}},"128":{"start":{"line":356,"column":2},"end":{"line":362,"column":3}},"129":{"start":{"line":357,"column":4},"end":{"line":361,"column":5}},"130":{"start":{"line":358,"column":6},"end":{"line":358,"column":59}},"131":{"start":{"line":359,"column":6},"end":{"line":359,"column":37}},"132":{"start":{"line":360,"column":6},"end":{"line":360,"column":29}},"133":{"start":{"line":365,"column":2},"end":{"line":365,"column":19}},"134":{"start":{"line":366,"column":2},"end":{"line":368,"column":3}},"135":{"start":{"line":367,"column":4},"end":{"line":367,"column":49}},"136":{"start":{"line":370,"column":2},"end":{"line":370,"column":71}},"137":{"start":{"line":372,"column":2},"end":{"line":372,"column":66}},"138":{"start":{"line":373,"column":2},"end":{"line":373,"column":16}},"139":{"start":{"line":393,"column":0},"end":{"line":419,"column":2}},"140":{"start":{"line":394,"column":2},"end":{"line":394,"column":32}},"141":{"start":{"line":395,"column":2},"end":{"line":397,"column":3}},"142":{"start":{"line":396,"column":4},"end":{"line":396,"column":29}},"143":{"start":{"line":399,"column":2},"end":{"line":399,"column":17}},"144":{"start":{"line":400,"column":2},"end":{"line":402,"column":3}},"145":{"start":{"line":401,"column":4},"end":{"line":401,"column":22}},"146":{"start":{"line":403,"column":2},"end":{"line":403,"column":13}},"147":{"start":{"line":405,"column":2},"end":{"line":405,"column":15}},"148":{"start":{"line":406,"column":2},"end":{"line":416,"column":3}},"149":{"start":{"line":407,"column":4},"end":{"line":407,"column":28}},"150":{"start":{"line":408,"column":4},"end":{"line":408,"column":16}},"151":{"start":{"line":410,"column":4},"end":{"line":412,"column":5}},"152":{"start":{"line":411,"column":6},"end":{"line":411,"column":15}},"153":{"start":{"line":413,"column":4},"end":{"line":413,"column":18}},"154":{"start":{"line":415,"column":4},"end":{"line":415,"column":10}},"155":{"start":{"line":418,"column":2},"end":{"line":418,"column":29}},"156":{"start":{"line":434,"column":0},"end":{"line":452,"column":2}},"157":{"start":{"line":435,"column":2},"end":{"line":435,"column":32}},"158":{"start":{"line":437,"column":2},"end":{"line":437,"column":40}},"159":{"start":{"line":438,"column":2},"end":{"line":440,"column":3}},"160":{"start":{"line":439,"column":4},"end":{"line":439,"column":23}},"161":{"start":{"line":442,"column":2},"end":{"line":449,"column":3}},"162":{"start":{"line":443,"column":4},"end":{"line":443,"column":14}},"163":{"start":{"line":444,"column":4},"end":{"line":448,"column":46}},"164":{"start":{"line":445,"column":6},"end":{"line":445,"column":46}},"165":{"start":{"line":446,"column":6},"end":{"line":446,"column":13}},"166":{"start":{"line":447,"column":6},"end":{"line":447,"column":25}},"167":{"start":{"line":451,"column":2},"end":{"line":451,"column":11}},"168":{"start":{"line":464,"column":0},"end":{"line":468,"column":2}},"169":{"start":{"line":465,"column":2},"end":{"line":465,"column":47}},"170":{"start":{"line":466,"column":2},"end":{"line":466,"column":68}},"171":{"start":{"line":467,"column":2},"end":{"line":467,"column":47}},"172":{"start":{"line":470,"column":0},"end":{"line":475,"column":2}},"173":{"start":{"line":471,"column":2},"end":{"line":471,"column":47}},"174":{"start":{"line":472,"column":2},"end":{"line":472,"column":75}},"175":{"start":{"line":473,"column":2},"end":{"line":473,"column":26}},"176":{"start":{"line":474,"column":2},"end":{"line":474,"column":13}},"177":{"start":{"line":516,"column":0},"end":{"line":521,"column":2}},"178":{"start":{"line":523,"column":0},"end":{"line":557,"column":2}},"179":{"start":{"line":524,"column":2},"end":{"line":524,"column":35}},"180":{"start":{"line":526,"column":2},"end":{"line":534,"column":3}},"181":{"start":{"line":527,"column":4},"end":{"line":527,"column":45}},"182":{"start":{"line":528,"column":9},"end":{"line":534,"column":3}},"183":{"start":{"line":529,"column":4},"end":{"line":529,"column":45}},"184":{"start":{"line":530,"column":9},"end":{"line":534,"column":3}},"185":{"start":{"line":531,"column":4},"end":{"line":531,"column":57}},"186":{"start":{"line":533,"column":4},"end":{"line":533,"column":58}},"187":{"start":{"line":536,"column":2},"end":{"line":552,"column":3}},"188":{"start":{"line":537,"column":4},"end":{"line":537,"column":74}},"189":{"start":{"line":540,"column":4},"end":{"line":545,"column":5}},"190":{"start":{"line":541,"column":6},"end":{"line":541,"column":79}},"191":{"start":{"line":543,"column":6},"end":{"line":543,"column":65}},"192":{"start":{"line":544,"column":6},"end":{"line":544,"column":51}},"193":{"start":{"line":547,"column":4},"end":{"line":549,"column":5}},"194":{"start":{"line":548,"column":6},"end":{"line":548,"column":56}},"195":{"start":{"line":551,"column":4},"end":{"line":551,"column":50}},"196":{"start":{"line":554,"column":2},"end":{"line":554,"column":45}},"197":{"start":{"line":556,"column":2},"end":{"line":556,"column":51}},"198":{"start":{"line":559,"column":0},"end":{"line":597,"column":2}},"199":{"start":{"line":560,"column":2},"end":{"line":560,"column":34}},"200":{"start":{"line":562,"column":2},"end":{"line":562,"column":41}},"201":{"start":{"line":563,"column":2},"end":{"line":573,"column":3}},"202":{"start":{"line":564,"column":4},"end":{"line":564,"column":45}},"203":{"start":{"line":565,"column":9},"end":{"line":573,"column":3}},"204":{"start":{"line":566,"column":4},"end":{"line":570,"column":5}},"205":{"start":{"line":567,"column":6},"end":{"line":567,"column":47}},"206":{"start":{"line":569,"column":6},"end":{"line":569,"column":59}},"207":{"start":{"line":572,"column":4},"end":{"line":572,"column":58}},"208":{"start":{"line":575,"column":2},"end":{"line":594,"column":3}},"209":{"start":{"line":576,"column":4},"end":{"line":576,"column":85}},"210":{"start":{"line":577,"column":4},"end":{"line":577,"column":22}},"211":{"start":{"line":580,"column":4},"end":{"line":580,"column":74}},"212":{"start":{"line":581,"column":4},"end":{"line":583,"column":5}},"213":{"start":{"line":582,"column":6},"end":{"line":582,"column":48}},"214":{"start":{"line":585,"column":4},"end":{"line":591,"column":5}},"215":{"start":{"line":586,"column":6},"end":{"line":586,"column":53}},"216":{"start":{"line":587,"column":11},"end":{"line":591,"column":5}},"217":{"start":{"line":588,"column":6},"end":{"line":588,"column":30}},"218":{"start":{"line":590,"column":6},"end":{"line":590,"column":24}},"219":{"start":{"line":593,"column":4},"end":{"line":593,"column":47}},"220":{"start":{"line":596,"column":2},"end":{"line":596,"column":16}},"221":{"start":{"line":621,"column":0},"end":{"line":621,"column":34}},"222":{"start":{"line":624,"column":0},"end":{"line":626,"column":2}},"223":{"start":{"line":625,"column":2},"end":{"line":625,"column":45}},"224":{"start":{"line":628,"column":0},"end":{"line":665,"column":2}},"225":{"start":{"line":630,"column":2},"end":{"line":662,"column":3}},"226":{"start":{"line":632,"column":4},"end":{"line":632,"column":46}},"227":{"start":{"line":635,"column":4},"end":{"line":635,"column":58}},"228":{"start":{"line":640,"column":4},"end":{"line":656,"column":5}},"229":{"start":{"line":641,"column":6},"end":{"line":641,"column":50}},"230":{"start":{"line":642,"column":6},"end":{"line":647,"column":7}},"231":{"start":{"line":643,"column":8},"end":{"line":643,"column":42}},"232":{"start":{"line":645,"column":8},"end":{"line":645,"column":43}},"233":{"start":{"line":646,"column":8},"end":{"line":646,"column":36}},"234":{"start":{"line":649,"column":6},"end":{"line":655,"column":9}},"235":{"start":{"line":661,"column":4},"end":{"line":661,"column":21}},"236":{"start":{"line":664,"column":2},"end":{"line":664,"column":9}},"237":{"start":{"line":673,"column":0},"end":{"line":679,"column":2}},"238":{"start":{"line":674,"column":2},"end":{"line":674,"column":45}},"239":{"start":{"line":675,"column":2},"end":{"line":675,"column":28}},"240":{"start":{"line":676,"column":2},"end":{"line":676,"column":25}},"241":{"start":{"line":677,"column":2},"end":{"line":677,"column":27}},"242":{"start":{"line":678,"column":2},"end":{"line":678,"column":27}},"243":{"start":{"line":682,"column":0},"end":{"line":725,"column":2}},"244":{"start":{"line":685,"column":2},"end":{"line":704,"column":3}},"245":{"start":{"line":686,"column":4},"end":{"line":688,"column":5}},"246":{"start":{"line":687,"column":6},"end":{"line":687,"column":97}},"247":{"start":{"line":689,"column":4},"end":{"line":689,"column":29}},"248":{"start":{"line":694,"column":7},"end":{"line":704,"column":3}},"249":{"start":{"line":695,"column":4},"end":{"line":695,"column":29}},"250":{"start":{"line":696,"column":4},"end":{"line":696,"column":28}},"251":{"start":{"line":697,"column":4},"end":{"line":697,"column":32}},"252":{"start":{"line":698,"column":4},"end":{"line":698,"column":27}},"253":{"start":{"line":703,"column":4},"end":{"line":703,"column":21}},"254":{"start":{"line":709,"column":2},"end":{"line":722,"column":3}},"255":{"start":{"line":710,"column":4},"end":{"line":712,"column":8}},"256":{"start":{"line":711,"column":6},"end":{"line":711,"column":24}},"257":{"start":{"line":713,"column":4},"end":{"line":713,"column":42}},"258":{"start":{"line":714,"column":4},"end":{"line":720,"column":7}},"259":{"start":{"line":721,"column":4},"end":{"line":721,"column":30}},"260":{"start":{"line":724,"column":2},"end":{"line":724,"column":9}},"261":{"start":{"line":730,"column":0},"end":{"line":769,"column":2}},"262":{"start":{"line":771,"column":0},"end":{"line":807,"column":2}}},"branchMap":{"1":{"line":42,"type":"binary-expr","locations":[{"start":{"line":42,"column":16},"end":{"line":42,"column":21}},{"start":{"line":42,"column":25},"end":{"line":42,"column":51}}]},"2":{"line":50,"type":"binary-expr","locations":[{"start":{"line":50,"column":10},"end":{"line":50,"column":59}},{"start":{"line":50,"column":65},"end":{"line":50,"column":86}}]},"3":{"line":114,"type":"if","locations":[{"start":{"line":114,"column":2},"end":{"line":114,"column":2}},{"start":{"line":114,"column":2},"end":{"line":114,"column":2}}]},"4":{"line":119,"type":"if","locations":[{"start":{"line":119,"column":4},"end":{"line":119,"column":4}},{"start":{"line":119,"column":4},"end":{"line":119,"column":4}}]},"5":{"line":132,"type":"if","locations":[{"start":{"line":132,"column":4},"end":{"line":132,"column":4}},{"start":{"line":132,"column":4},"end":{"line":132,"column":4}}]},"6":{"line":138,"type":"if","locations":[{"start":{"line":138,"column":4},"end":{"line":138,"column":4}},{"start":{"line":138,"column":4},"end":{"line":138,"column":4}}]},"7":{"line":139,"type":"if","locations":[{"start":{"line":139,"column":6},"end":{"line":139,"column":6}},{"start":{"line":139,"column":6},"end":{"line":139,"column":6}}]},"8":{"line":166,"type":"if","locations":[{"start":{"line":166,"column":2},"end":{"line":166,"column":2}},{"start":{"line":166,"column":2},"end":{"line":166,"column":2}}]},"9":{"line":168,"type":"if","locations":[{"start":{"line":168,"column":4},"end":{"line":168,"column":4}},{"start":{"line":168,"column":4},"end":{"line":168,"column":4}}]},"10":{"line":181,"type":"if","locations":[{"start":{"line":181,"column":2},"end":{"line":181,"column":2}},{"start":{"line":181,"column":2},"end":{"line":181,"column":2}}]},"11":{"line":183,"type":"if","locations":[{"start":{"line":183,"column":4},"end":{"line":183,"column":4}},{"start":{"line":183,"column":4},"end":{"line":183,"column":4}}]},"12":{"line":205,"type":"if","locations":[{"start":{"line":205,"column":4},"end":{"line":205,"column":4}},{"start":{"line":205,"column":4},"end":{"line":205,"column":4}}]},"13":{"line":229,"type":"if","locations":[{"start":{"line":229,"column":4},"end":{"line":229,"column":4}},{"start":{"line":229,"column":4},"end":{"line":229,"column":4}}]},"14":{"line":248,"type":"binary-expr","locations":[{"start":{"line":248,"column":15},"end":{"line":248,"column":18}},{"start":{"line":248,"column":22},"end":{"line":248,"column":34}}]},"15":{"line":250,"type":"cond-expr","locations":[{"start":{"line":250,"column":45},"end":{"line":250,"column":83}},{"start":{"line":251,"column":45},"end":{"line":251,"column":84}}]},"16":{"line":287,"type":"if","locations":[{"start":{"line":287,"column":4},"end":{"line":287,"column":4}},{"start":{"line":287,"column":4},"end":{"line":287,"column":4}}]},"17":{"line":288,"type":"if","locations":[{"start":{"line":288,"column":6},"end":{"line":288,"column":6}},{"start":{"line":288,"column":6},"end":{"line":288,"column":6}}]},"18":{"line":309,"type":"binary-expr","locations":[{"start":{"line":309,"column":15},"end":{"line":309,"column":18}},{"start":{"line":309,"column":22},"end":{"line":309,"column":34}}]},"19":{"line":311,"type":"cond-expr","locations":[{"start":{"line":311,"column":45},"end":{"line":311,"column":83}},{"start":{"line":312,"column":45},"end":{"line":312,"column":84}}]},"20":{"line":332,"type":"if","locations":[{"start":{"line":332,"column":4},"end":{"line":332,"column":4}},{"start":{"line":332,"column":4},"end":{"line":332,"column":4}}]},"21":{"line":348,"type":"if","locations":[{"start":{"line":348,"column":4},"end":{"line":348,"column":4}},{"start":{"line":348,"column":4},"end":{"line":348,"column":4}}]},"22":{"line":357,"type":"if","locations":[{"start":{"line":357,"column":4},"end":{"line":357,"column":4}},{"start":{"line":357,"column":4},"end":{"line":357,"column":4}}]},"23":{"line":395,"type":"if","locations":[{"start":{"line":395,"column":2},"end":{"line":395,"column":2}},{"start":{"line":395,"column":2},"end":{"line":395,"column":2}}]},"24":{"line":400,"type":"if","locations":[{"start":{"line":400,"column":2},"end":{"line":400,"column":2}},{"start":{"line":400,"column":2},"end":{"line":400,"column":2}}]},"25":{"line":410,"type":"if","locations":[{"start":{"line":410,"column":4},"end":{"line":410,"column":4}},{"start":{"line":410,"column":4},"end":{"line":410,"column":4}}]},"26":{"line":438,"type":"if","locations":[{"start":{"line":438,"column":2},"end":{"line":438,"column":2}},{"start":{"line":438,"column":2},"end":{"line":438,"column":2}}]},"27":{"line":442,"type":"if","locations":[{"start":{"line":442,"column":2},"end":{"line":442,"column":2}},{"start":{"line":442,"column":2},"end":{"line":442,"column":2}}]},"28":{"line":526,"type":"if","locations":[{"start":{"line":526,"column":2},"end":{"line":526,"column":2}},{"start":{"line":526,"column":2},"end":{"line":526,"column":2}}]},"29":{"line":528,"type":"if","locations":[{"start":{"line":528,"column":9},"end":{"line":528,"column":9}},{"start":{"line":528,"column":9},"end":{"line":528,"column":9}}]},"30":{"line":530,"type":"if","locations":[{"start":{"line":530,"column":9},"end":{"line":530,"column":9}},{"start":{"line":530,"column":9},"end":{"line":530,"column":9}}]},"31":{"line":536,"type":"if","locations":[{"start":{"line":536,"column":2},"end":{"line":536,"column":2}},{"start":{"line":536,"column":2},"end":{"line":536,"column":2}}]},"32":{"line":540,"type":"if","locations":[{"start":{"line":540,"column":4},"end":{"line":540,"column":4}},{"start":{"line":540,"column":4},"end":{"line":540,"column":4}}]},"33":{"line":547,"type":"if","locations":[{"start":{"line":547,"column":4},"end":{"line":547,"column":4}},{"start":{"line":547,"column":4},"end":{"line":547,"column":4}}]},"34":{"line":563,"type":"if","locations":[{"start":{"line":563,"column":2},"end":{"line":563,"column":2}},{"start":{"line":563,"column":2},"end":{"line":563,"column":2}}]},"35":{"line":565,"type":"if","locations":[{"start":{"line":565,"column":9},"end":{"line":565,"column":9}},{"start":{"line":565,"column":9},"end":{"line":565,"column":9}}]},"36":{"line":566,"type":"if","locations":[{"start":{"line":566,"column":4},"end":{"line":566,"column":4}},{"start":{"line":566,"column":4},"end":{"line":566,"column":4}}]},"37":{"line":575,"type":"if","locations":[{"start":{"line":575,"column":2},"end":{"line":575,"column":2}},{"start":{"line":575,"column":2},"end":{"line":575,"column":2}}]},"38":{"line":581,"type":"if","locations":[{"start":{"line":581,"column":4},"end":{"line":581,"column":4}},{"start":{"line":581,"column":4},"end":{"line":581,"column":4}}]},"39":{"line":585,"type":"if","locations":[{"start":{"line":585,"column":4},"end":{"line":585,"column":4}},{"start":{"line":585,"column":4},"end":{"line":585,"column":4}}]},"40":{"line":587,"type":"if","locations":[{"start":{"line":587,"column":11},"end":{"line":587,"column":11}},{"start":{"line":587,"column":11},"end":{"line":587,"column":11}}]},"41":{"line":630,"type":"if","locations":[{"start":{"line":630,"column":2},"end":{"line":630,"column":2}},{"start":{"line":630,"column":2},"end":{"line":630,"column":2}}]},"42":{"line":630,"type":"binary-expr","locations":[{"start":{"line":630,"column":6},"end":{"line":630,"column":30}},{"start":{"line":630,"column":34},"end":{"line":630,"column":63}}]},"43":{"line":642,"type":"if","locations":[{"start":{"line":642,"column":6},"end":{"line":642,"column":6}},{"start":{"line":642,"column":6},"end":{"line":642,"column":6}}]},"44":{"line":685,"type":"if","locations":[{"start":{"line":685,"column":2},"end":{"line":685,"column":2}},{"start":{"line":685,"column":2},"end":{"line":685,"column":2}}]},"45":{"line":686,"type":"if","locations":[{"start":{"line":686,"column":4},"end":{"line":686,"column":4}},{"start":{"line":686,"column":4},"end":{"line":686,"column":4}}]},"46":{"line":686,"type":"binary-expr","locations":[{"start":{"line":686,"column":8},"end":{"line":686,"column":33}},{"start":{"line":686,"column":37},"end":{"line":686,"column":66}}]},"47":{"line":694,"type":"if","locations":[{"start":{"line":694,"column":7},"end":{"line":694,"column":7}},{"start":{"line":694,"column":7},"end":{"line":694,"column":7}}]},"48":{"line":694,"type":"binary-expr","locations":[{"start":{"line":694,"column":11},"end":{"line":694,"column":35}},{"start":{"line":694,"column":39},"end":{"line":694,"column":68}}]},"49":{"line":709,"type":"if","locations":[{"start":{"line":709,"column":2},"end":{"line":709,"column":2}},{"start":{"line":709,"column":2},"end":{"line":709,"column":2}}]},"50":{"line":709,"type":"binary-expr","locations":[{"start":{"line":709,"column":6},"end":{"line":709,"column":23}},{"start":{"line":709,"column":28},"end":{"line":709,"column":51}},{"start":{"line":709,"column":55},"end":{"line":709,"column":83}}]}}},"/data/upstream/node-http2/lib/logging.js":{"path":"/data/upstream/node-http2/lib/logging.js","s":{"1":1,"2":1,"3":1,"4":0,"5":0,"6":0,"7":1,"8":53,"9":1},"b":{"1":[0,1]},"f":{"1":53},"fnMap":{"1":{"name":"(anonymous_1)","line":24,"loc":{"start":{"line":24,"column":11},"end":{"line":24,"column":22}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":31}},"2":{"start":{"line":2,"column":0},"end":{"line":2,"column":22}},"3":{"start":{"line":4,"column":0},"end":{"line":28,"column":1}},"4":{"start":{"line":5,"column":2},"end":{"line":5,"column":33}},"5":{"start":{"line":7,"column":2},"end":{"line":11,"column":5}},"6":{"start":{"line":13,"column":2},"end":{"line":13,"column":49}},"7":{"start":{"line":16,"column":2},"end":{"line":25,"column":4}},"8":{"start":{"line":24,"column":24},"end":{"line":24,"column":36}},"9":{"start":{"line":27,"column":2},"end":{"line":27,"column":27}}},"branchMap":{"1":{"line":4,"type":"if","locations":[{"start":{"line":4,"column":0},"end":{"line":4,"column":0}},{"start":{"line":4,"column":0},"end":{"line":4,"column":0}}]}}},"/data/upstream/node-http2/lib/connection.js":{"path":"/data/upstream/node-http2/lib/connection.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":6,"8":6,"9":6,"10":6,"11":6,"12":6,"13":1,"14":1,"15":6,"16":6,"17":12,"18":12,"19":6,"20":6,"21":6,"22":6,"23":1,"24":2,"25":2,"26":2,"27":2,"28":2,"29":1,"30":1,"31":1,"32":1,"33":1,"34":26,"35":26,"36":26,"37":41,"38":41,"39":41,"40":16,"41":16,"42":26,"43":26,"44":26,"45":0,"46":0,"47":0,"48":0,"49":1,"50":16,"51":16,"52":1,"53":1,"54":1,"55":16,"56":16,"57":16,"58":1,"59":6,"60":6,"61":6,"62":6,"63":6,"64":6,"65":0,"66":6,"67":1,"68":1,"69":6,"70":6,"71":6,"72":1,"73":0,"74":0,"75":0,"76":0,"77":0,"78":1,"79":0,"80":0,"81":0,"82":0,"83":0,"84":1,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":1,"95":1,"96":1,"97":6,"98":6,"99":6,"100":1,"101":1,"102":0,"103":0,"104":1,"105":6,"106":1,"107":6,"108":6,"109":0,"110":6,"111":1,"112":16,"113":2,"114":0,"115":2,"116":16},"b":{"1":[6,2],"2":[67,41],"3":[41,0],"4":[26,0],"5":[0,0],"6":[1,15],"7":[6,0],"8":[6,6],"9":[0,0],"10":[0,0],"11":[6,0],"12":[2,14],"13":[16,16],"14":[0,2]},"f":{"1":6,"2":6,"3":12,"4":2,"5":1,"6":26,"7":16,"8":6,"9":6,"10":6,"11":6,"12":0,"13":0,"14":0,"15":0,"16":0,"17":6,"18":0,"19":6,"20":6,"21":16},"fnMap":{"1":{"name":"Connection","line":43,"loc":{"start":{"line":43,"column":0},"end":{"line":43,"column":50}}},"2":{"name":"_initializeStreamManagement","line":67,"loc":{"start":{"line":67,"column":51},"end":{"line":67,"column":103}}},"3":{"name":"(anonymous_3)","line":69,"loc":{"start":{"line":69,"column":25},"end":{"line":69,"column":57}}},"4":{"name":"_newStream","line":80,"loc":{"start":{"line":80,"column":34},"end":{"line":80,"column":58}}},"5":{"name":"createStream","line":88,"loc":{"start":{"line":88,"column":36},"end":{"line":88,"column":60}}},"6":{"name":"_read","line":97,"loc":{"start":{"line":97,"column":29},"end":{"line":97,"column":46}}},"7":{"name":"write","line":126,"loc":{"start":{"line":126,"column":30},"end":{"line":126,"column":68}}},"8":{"name":"_initializeSettingsManagement","line":145,"loc":{"start":{"line":145,"column":53},"end":{"line":145,"column":102}}},"9":{"name":"(anonymous_9)","line":154,"loc":{"start":{"line":154,"column":25},"end":{"line":154,"column":41}}},"10":{"name":"_receiveSettings","line":165,"loc":{"start":{"line":165,"column":40},"end":{"line":165,"column":73}}},"11":{"name":"_initializeLifecycleManagement","line":171,"loc":{"start":{"line":171,"column":54},"end":{"line":171,"column":96}}},"12":{"name":"_generatePingId","line":177,"loc":{"start":{"line":177,"column":39},"end":{"line":177,"column":66}}},"13":{"name":"ping","line":187,"loc":{"start":{"line":187,"column":28},"end":{"line":187,"column":52}}},"14":{"name":"_receivePing","line":202,"loc":{"start":{"line":202,"column":36},"end":{"line":202,"column":65}}},"15":{"name":"reset","line":225,"loc":{"start":{"line":225,"column":29},"end":{"line":225,"column":46}}},"16":{"name":"_receiveGoaway","line":228,"loc":{"start":{"line":228,"column":38},"end":{"line":228,"column":69}}},"17":{"name":"_initializeFlowControl","line":234,"loc":{"start":{"line":234,"column":46},"end":{"line":234,"column":80}}},"18":{"name":"setInitialWindowSize","line":257,"loc":{"start":{"line":257,"column":44},"end":{"line":257,"column":93}}},"19":{"name":"disableFlowControl","line":265,"loc":{"start":{"line":265,"column":42},"end":{"line":265,"column":72}}},"20":{"name":"_updateWindow","line":277,"loc":{"start":{"line":277,"column":37},"end":{"line":277,"column":67}}},"21":{"name":"_send","line":286,"loc":{"start":{"line":286,"column":29},"end":{"line":286,"column":51}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":33}},"2":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"3":{"start":{"line":3,"column":0},"end":{"line":3,"column":41}},"4":{"start":{"line":4,"column":0},"end":{"line":4,"column":39}},"5":{"start":{"line":40,"column":0},"end":{"line":40,"column":32}},"6":{"start":{"line":43,"column":0},"end":{"line":61,"column":1}},"7":{"start":{"line":45,"column":2},"end":{"line":45,"column":42}},"8":{"start":{"line":48,"column":2},"end":{"line":48,"column":71}},"9":{"start":{"line":51,"column":2},"end":{"line":51,"column":50}},"10":{"start":{"line":54,"column":2},"end":{"line":54,"column":47}},"11":{"start":{"line":57,"column":2},"end":{"line":57,"column":40}},"12":{"start":{"line":60,"column":2},"end":{"line":60,"column":32}},"13":{"start":{"line":62,"column":0},"end":{"line":62,"column":95}},"14":{"start":{"line":67,"column":0},"end":{"line":78,"column":2}},"15":{"start":{"line":68,"column":2},"end":{"line":68,"column":51}},"16":{"start":{"line":69,"column":2},"end":{"line":72,"column":4}},"17":{"start":{"line":70,"column":4},"end":{"line":70,"column":33}},"18":{"start":{"line":71,"column":4},"end":{"line":71,"column":11}},"19":{"start":{"line":73,"column":2},"end":{"line":73,"column":35}},"20":{"start":{"line":74,"column":2},"end":{"line":74,"column":72}},"21":{"start":{"line":76,"column":2},"end":{"line":76,"column":47}},"22":{"start":{"line":77,"column":2},"end":{"line":77,"column":39}},"23":{"start":{"line":80,"column":0},"end":{"line":86,"column":2}},"24":{"start":{"line":81,"column":2},"end":{"line":81,"column":59}},"25":{"start":{"line":82,"column":2},"end":{"line":82,"column":52}},"26":{"start":{"line":83,"column":2},"end":{"line":83,"column":28}},"27":{"start":{"line":84,"column":2},"end":{"line":84,"column":74}},"28":{"start":{"line":85,"column":2},"end":{"line":85,"column":16}},"29":{"start":{"line":88,"column":0},"end":{"line":92,"column":2}},"30":{"start":{"line":89,"column":2},"end":{"line":89,"column":32}},"31":{"start":{"line":90,"column":2},"end":{"line":90,"column":28}},"32":{"start":{"line":91,"column":2},"end":{"line":91,"column":29}},"33":{"start":{"line":97,"column":0},"end":{"line":124,"column":2}},"34":{"start":{"line":98,"column":2},"end":{"line":98,"column":62}},"35":{"start":{"line":100,"column":2},"end":{"line":100,"column":40}},"36":{"start":{"line":101,"column":2},"end":{"line":109,"column":3}},"37":{"start":{"line":102,"column":4},"end":{"line":102,"column":30}},"38":{"start":{"line":103,"column":4},"end":{"line":108,"column":5}},"39":{"start":{"line":104,"column":6},"end":{"line":107,"column":7}},"40":{"start":{"line":105,"column":8},"end":{"line":105,"column":26}},"41":{"start":{"line":106,"column":8},"end":{"line":106,"column":40}},"42":{"start":{"line":111,"column":2},"end":{"line":123,"column":3}},"43":{"start":{"line":112,"column":4},"end":{"line":112,"column":76}},"44":{"start":{"line":113,"column":4},"end":{"line":113,"column":56}},"45":{"start":{"line":116,"column":7},"end":{"line":123,"column":3}},"46":{"start":{"line":117,"column":4},"end":{"line":117,"column":91}},"47":{"start":{"line":118,"column":4},"end":{"line":118,"column":54}},"48":{"start":{"line":122,"column":4},"end":{"line":122,"column":66}},"49":{"start":{"line":126,"column":0},"end":{"line":140,"column":2}},"50":{"start":{"line":127,"column":2},"end":{"line":127,"column":42}},"51":{"start":{"line":129,"column":2},"end":{"line":133,"column":3}},"52":{"start":{"line":130,"column":4},"end":{"line":130,"column":43}},"53":{"start":{"line":131,"column":4},"end":{"line":131,"column":41}},"54":{"start":{"line":132,"column":4},"end":{"line":132,"column":66}},"55":{"start":{"line":135,"column":2},"end":{"line":135,"column":32}},"56":{"start":{"line":137,"column":2},"end":{"line":137,"column":31}},"57":{"start":{"line":139,"column":2},"end":{"line":139,"column":9}},"58":{"start":{"line":145,"column":0},"end":{"line":163,"column":2}},"59":{"start":{"line":146,"column":2},"end":{"line":146,"column":28}},"60":{"start":{"line":148,"column":2},"end":{"line":148,"column":87}},"61":{"start":{"line":149,"column":2},"end":{"line":152,"column":5}},"62":{"start":{"line":154,"column":2},"end":{"line":160,"column":5}},"63":{"start":{"line":155,"column":4},"end":{"line":159,"column":5}},"64":{"start":{"line":156,"column":6},"end":{"line":156,"column":93}},"65":{"start":{"line":158,"column":6},"end":{"line":158,"column":19}},"66":{"start":{"line":162,"column":2},"end":{"line":162,"column":65}},"67":{"start":{"line":165,"column":0},"end":{"line":166,"column":2}},"68":{"start":{"line":171,"column":0},"end":{"line":175,"column":2}},"69":{"start":{"line":172,"column":2},"end":{"line":172,"column":19}},"70":{"start":{"line":173,"column":2},"end":{"line":173,"column":57}},"71":{"start":{"line":174,"column":2},"end":{"line":174,"column":61}},"72":{"start":{"line":177,"column":0},"end":{"line":185,"column":2}},"73":{"start":{"line":178,"column":2},"end":{"line":183,"column":32}},"74":{"start":{"line":179,"column":4},"end":{"line":179,"column":16}},"75":{"start":{"line":180,"column":4},"end":{"line":182,"column":5}},"76":{"start":{"line":181,"column":6},"end":{"line":181,"column":54}},"77":{"start":{"line":184,"column":2},"end":{"line":184,"column":12}},"78":{"start":{"line":187,"column":0},"end":{"line":200,"column":2}},"79":{"start":{"line":188,"column":2},"end":{"line":188,"column":34}},"80":{"start":{"line":189,"column":2},"end":{"line":189,"column":35}},"81":{"start":{"line":190,"column":2},"end":{"line":190,"column":29}},"82":{"start":{"line":192,"column":2},"end":{"line":193,"column":2}},"83":{"start":{"line":193,"column":2},"end":{"line":199,"column":5}},"84":{"start":{"line":202,"column":0},"end":{"line":223,"column":2}},"85":{"start":{"line":203,"column":2},"end":{"line":222,"column":3}},"86":{"start":{"line":204,"column":4},"end":{"line":204,"column":40}},"87":{"start":{"line":205,"column":4},"end":{"line":211,"column":5}},"88":{"start":{"line":206,"column":6},"end":{"line":206,"column":76}},"89":{"start":{"line":207,"column":6},"end":{"line":207,"column":24}},"90":{"start":{"line":208,"column":6},"end":{"line":208,"column":29}},"91":{"start":{"line":210,"column":6},"end":{"line":210,"column":74}},"92":{"start":{"line":214,"column":4},"end":{"line":215,"column":4}},"93":{"start":{"line":215,"column":4},"end":{"line":221,"column":7}},"94":{"start":{"line":225,"column":0},"end":{"line":226,"column":2}},"95":{"start":{"line":228,"column":0},"end":{"line":229,"column":2}},"96":{"start":{"line":234,"column":0},"end":{"line":247,"column":2}},"97":{"start":{"line":236,"column":2},"end":{"line":242,"column":5}},"98":{"start":{"line":245,"column":2},"end":{"line":245,"column":37}},"99":{"start":{"line":246,"column":2},"end":{"line":246,"column":67}},"100":{"start":{"line":251,"column":0},"end":{"line":251,"column":32}},"101":{"start":{"line":257,"column":0},"end":{"line":260,"column":2}},"102":{"start":{"line":258,"column":2},"end":{"line":258,"column":76}},"103":{"start":{"line":259,"column":2},"end":{"line":259,"column":46}},"104":{"start":{"line":265,"column":0},"end":{"line":267,"column":2}},"105":{"start":{"line":266,"column":2},"end":{"line":266,"column":26}},"106":{"start":{"line":277,"column":0},"end":{"line":284,"column":2}},"107":{"start":{"line":278,"column":2},"end":{"line":282,"column":3}},"108":{"start":{"line":279,"column":4},"end":{"line":279,"column":30}},"109":{"start":{"line":281,"column":4},"end":{"line":281,"column":38}},"110":{"start":{"line":283,"column":2},"end":{"line":283,"column":29}},"111":{"start":{"line":286,"column":0},"end":{"line":295,"column":2}},"112":{"start":{"line":287,"column":2},"end":{"line":292,"column":3}},"113":{"start":{"line":288,"column":4},"end":{"line":290,"column":5}},"114":{"start":{"line":289,"column":6},"end":{"line":289,"column":18}},"115":{"start":{"line":291,"column":4},"end":{"line":291,"column":38}},"116":{"start":{"line":294,"column":2},"end":{"line":294,"column":26}}},"branchMap":{"1":{"line":48,"type":"binary-expr","locations":[{"start":{"line":48,"column":15},"end":{"line":48,"column":18}},{"start":{"line":48,"column":22},"end":{"line":48,"column":34}}]},"2":{"line":101,"type":"binary-expr","locations":[{"start":{"line":101,"column":19},"end":{"line":101,"column":43}},{"start":{"line":101,"column":47},"end":{"line":101,"column":58}}]},"3":{"line":103,"type":"if","locations":[{"start":{"line":103,"column":4},"end":{"line":103,"column":4}},{"start":{"line":103,"column":4},"end":{"line":103,"column":4}}]},"4":{"line":111,"type":"if","locations":[{"start":{"line":111,"column":2},"end":{"line":111,"column":2}},{"start":{"line":111,"column":2},"end":{"line":111,"column":2}}]},"5":{"line":116,"type":"if","locations":[{"start":{"line":116,"column":7},"end":{"line":116,"column":7}},{"start":{"line":116,"column":7},"end":{"line":116,"column":7}}]},"6":{"line":129,"type":"if","locations":[{"start":{"line":129,"column":2},"end":{"line":129,"column":2}},{"start":{"line":129,"column":2},"end":{"line":129,"column":2}}]},"7":{"line":155,"type":"if","locations":[{"start":{"line":155,"column":4},"end":{"line":155,"column":4}},{"start":{"line":155,"column":4},"end":{"line":155,"column":4}}]},"8":{"line":155,"type":"binary-expr","locations":[{"start":{"line":155,"column":8},"end":{"line":155,"column":26}},{"start":{"line":155,"column":30},"end":{"line":155,"column":55}}]},"9":{"line":203,"type":"if","locations":[{"start":{"line":203,"column":2},"end":{"line":203,"column":2}},{"start":{"line":203,"column":2},"end":{"line":203,"column":2}}]},"10":{"line":205,"type":"if","locations":[{"start":{"line":205,"column":4},"end":{"line":205,"column":4}},{"start":{"line":205,"column":4},"end":{"line":205,"column":4}}]},"11":{"line":278,"type":"if","locations":[{"start":{"line":278,"column":2},"end":{"line":278,"column":2}},{"start":{"line":278,"column":2},"end":{"line":278,"column":2}}]},"12":{"line":287,"type":"if","locations":[{"start":{"line":287,"column":2},"end":{"line":287,"column":2}},{"start":{"line":287,"column":2},"end":{"line":287,"column":2}}]},"13":{"line":287,"type":"binary-expr","locations":[{"start":{"line":287,"column":6},"end":{"line":287,"column":11}},{"start":{"line":287,"column":15},"end":{"line":287,"column":36}}]},"14":{"line":288,"type":"if","locations":[{"start":{"line":288,"column":4},"end":{"line":288,"column":4}},{"start":{"line":288,"column":4},"end":{"line":288,"column":4}}]}}},"/data/upstream/node-http2/lib/stream.js":{"path":"/data/upstream/node-http2/lib/stream.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":23,"8":23,"9":23,"10":23,"11":23,"12":23,"13":1,"14":1,"15":23,"16":29,"17":4,"18":25,"19":7,"20":7,"21":23,"22":0,"23":1,"24":1,"25":1,"26":5,"27":5,"28":1,"29":17,"30":1,"31":23,"32":23,"33":23,"34":23,"35":23,"36":23,"37":23,"38":29,"39":29,"40":29,"41":1,"42":27,"43":27,"44":27,"45":23,"46":1,"47":23,"48":23,"49":27,"50":27,"51":27,"52":23,"53":1,"54":1,"55":5,"56":5,"57":0,"58":5,"59":5,"60":1,"61":23,"62":23,"63":23,"64":1,"65":18,"66":18,"67":18,"68":18,"69":1,"70":56,"71":56,"72":56,"73":9,"74":4,"75":4,"76":1,"77":5,"78":2,"79":3,"80":9,"81":6,"82":1,"83":5,"84":0,"85":5,"86":6,"87":5,"88":0,"89":5,"90":1,"91":4,"92":5,"93":4,"94":3,"95":1,"96":0,"97":4,"98":5,"99":3,"100":2,"101":0,"102":5,"103":10,"104":3,"105":7,"106":5,"107":10,"108":17,"109":0,"110":17,"111":0,"112":17,"113":56,"114":17,"115":17,"116":0,"117":0,"118":17,"119":17,"120":17,"121":1,"122":23,"123":23,"124":23,"125":23,"126":1,"127":1,"128":0,"129":0,"130":1,"131":0,"132":1,"133":29,"134":4,"135":0,"136":4,"137":4,"138":1,"139":4,"140":4,"141":4,"142":4,"143":4,"144":4,"145":4,"146":4,"147":4,"148":0,"149":1,"150":29,"151":10,"152":29,"153":5},"b":{"1":[23,21],"2":[4,25],"3":[7,18],"4":[27,23],"5":[23,4],"6":[0,5],"7":[18,0],"8":[9,6,5,4,5,10,17],"9":[4,5],"10":[1,3],"11":[1,0],"12":[2,3],"13":[1,1],"14":[1,5],"15":[6,1],"16":[0,5],"17":[5,0],"18":[0,5],"19":[1,4],"20":[5,5],"21":[3,1],"22":[1,2],"23":[0,1],"24":[3,2],"25":[5,5,5],"26":[0,2],"27":[3,7],"28":[10,10,5],"29":[5,2],"30":[0,17],"31":[17,0],"32":[0,17],"33":[17,17],"34":[17,39],"35":[0,17],"36":[4,25],"37":[0,4],"38":[8,4],"39":[4,0],"40":[10,19],"41":[5,24]},"f":{"1":23,"2":23,"3":29,"4":0,"5":1,"6":5,"7":17,"8":23,"9":29,"10":27,"11":23,"12":5,"13":23,"14":18,"15":56,"16":23,"17":0,"18":0,"19":29,"20":4,"21":29},"fnMap":{"1":{"name":"Stream","line":15,"loc":{"start":{"line":15,"column":0},"end":{"line":15,"column":21}}},"2":{"name":"_initializeManagement","line":42,"loc":{"start":{"line":42,"column":41},"end":{"line":42,"column":74}}},"3":{"name":"(anonymous_3)","line":43,"loc":{"start":{"line":43,"column":32},"end":{"line":43,"column":48}}},"4":{"name":"(anonymous_4)","line":51,"loc":{"start":{"line":51,"column":19},"end":{"line":51,"column":30}}},"5":{"name":"promise","line":59,"loc":{"start":{"line":59,"column":27},"end":{"line":59,"column":53}}},"6":{"name":"open","line":66,"loc":{"start":{"line":66,"column":24},"end":{"line":66,"column":57}}},"7":{"name":"reset","line":75,"loc":{"start":{"line":75,"column":25},"end":{"line":75,"column":47}}},"8":{"name":"_initializeUpstream","line":89,"loc":{"start":{"line":89,"column":39},"end":{"line":89,"column":70}}},"9":{"name":"(anonymous_9)","line":99,"loc":{"start":{"line":99,"column":25},"end":{"line":99,"column":57}}},"10":{"name":"_send","line":108,"loc":{"start":{"line":108,"column":25},"end":{"line":108,"column":47}}},"11":{"name":"_flush","line":116,"loc":{"start":{"line":116,"column":26},"end":{"line":116,"column":44}}},"12":{"name":"_finishing","line":132,"loc":{"start":{"line":132,"column":30},"end":{"line":132,"column":52}}},"13":{"name":"_initializeState","line":176,"loc":{"start":{"line":176,"column":36},"end":{"line":176,"column":64}}},"14":{"name":"transition","line":184,"loc":{"start":{"line":184,"column":29},"end":{"line":184,"column":56}}},"15":{"name":"transition","line":195,"loc":{"start":{"line":195,"column":31},"end":{"line":195,"column":67}}},"16":{"name":"_initializeFlowControl","line":351,"loc":{"start":{"line":351,"column":42},"end":{"line":351,"column":76}}},"17":{"name":"setInitialWindowSize","line":367,"loc":{"start":{"line":367,"column":40},"end":{"line":367,"column":89}}},"18":{"name":"disableFlowControl","line":375,"loc":{"start":{"line":375,"column":38},"end":{"line":375,"column":68}}},"19":{"name":"_updateWindow","line":387,"loc":{"start":{"line":387,"column":33},"end":{"line":387,"column":63}}},"20":{"name":"_write","line":399,"loc":{"start":{"line":399,"column":26},"end":{"line":399,"column":66}}},"21":{"name":"_receiveData","line":433,"loc":{"start":{"line":433,"column":32},"end":{"line":433,"column":61}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":33}},"2":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":34}},"4":{"start":{"line":10,"column":0},"end":{"line":10,"column":38}},"5":{"start":{"line":12,"column":0},"end":{"line":12,"column":24}},"6":{"start":{"line":15,"column":0},"end":{"line":33,"column":1}},"7":{"start":{"line":16,"column":2},"end":{"line":16,"column":20}},"8":{"start":{"line":19,"column":2},"end":{"line":19,"column":67}},"9":{"start":{"line":22,"column":2},"end":{"line":22,"column":29}},"10":{"start":{"line":25,"column":2},"end":{"line":25,"column":31}},"11":{"start":{"line":28,"column":2},"end":{"line":28,"column":26}},"12":{"start":{"line":32,"column":2},"end":{"line":32,"column":32}},"13":{"start":{"line":35,"column":0},"end":{"line":35,"column":87}},"14":{"start":{"line":42,"column":0},"end":{"line":54,"column":2}},"15":{"start":{"line":43,"column":2},"end":{"line":50,"column":16}},"16":{"start":{"line":44,"column":4},"end":{"line":49,"column":5}},"17":{"start":{"line":45,"column":6},"end":{"line":45,"column":42}},"18":{"start":{"line":46,"column":11},"end":{"line":49,"column":5}},"19":{"start":{"line":47,"column":6},"end":{"line":47,"column":37}},"20":{"start":{"line":48,"column":6},"end":{"line":48,"column":42}},"21":{"start":{"line":51,"column":2},"end":{"line":53,"column":5}},"22":{"start":{"line":52,"column":4},"end":{"line":52,"column":20}},"23":{"start":{"line":59,"column":0},"end":{"line":64,"column":2}},"24":{"start":{"line":60,"column":2},"end":{"line":63,"column":5}},"25":{"start":{"line":66,"column":0},"end":{"line":73,"column":2}},"26":{"start":{"line":67,"column":2},"end":{"line":71,"column":5}},"27":{"start":{"line":72,"column":2},"end":{"line":72,"column":27}},"28":{"start":{"line":75,"column":0},"end":{"line":80,"column":2}},"29":{"start":{"line":76,"column":2},"end":{"line":79,"column":5}},"30":{"start":{"line":89,"column":0},"end":{"line":104,"column":2}},"31":{"start":{"line":90,"column":2},"end":{"line":90,"column":32}},"32":{"start":{"line":91,"column":2},"end":{"line":91,"column":48}},"33":{"start":{"line":93,"column":2},"end":{"line":93,"column":51}},"34":{"start":{"line":94,"column":2},"end":{"line":94,"column":28}},"35":{"start":{"line":95,"column":2},"end":{"line":95,"column":35}},"36":{"start":{"line":98,"column":2},"end":{"line":98,"column":22}},"37":{"start":{"line":99,"column":2},"end":{"line":103,"column":4}},"38":{"start":{"line":100,"column":4},"end":{"line":100,"column":51}},"39":{"start":{"line":101,"column":4},"end":{"line":101,"column":34}},"40":{"start":{"line":102,"column":4},"end":{"line":102,"column":11}},"41":{"start":{"line":108,"column":0},"end":{"line":114,"column":2}},"42":{"start":{"line":109,"column":2},"end":{"line":109,"column":34}},"43":{"start":{"line":110,"column":2},"end":{"line":110,"column":35}},"44":{"start":{"line":111,"column":2},"end":{"line":113,"column":3}},"45":{"start":{"line":112,"column":4},"end":{"line":112,"column":61}},"46":{"start":{"line":116,"column":0},"end":{"line":124,"column":2}},"47":{"start":{"line":117,"column":2},"end":{"line":117,"column":12}},"48":{"start":{"line":118,"column":2},"end":{"line":122,"column":3}},"49":{"start":{"line":119,"column":4},"end":{"line":119,"column":41}},"50":{"start":{"line":120,"column":4},"end":{"line":120,"column":55}},"51":{"start":{"line":121,"column":4},"end":{"line":121,"column":30}},"52":{"start":{"line":123,"column":2},"end":{"line":123,"column":32}},"53":{"start":{"line":131,"column":0},"end":{"line":131,"column":33}},"54":{"start":{"line":132,"column":0},"end":{"line":144,"column":2}},"55":{"start":{"line":133,"column":2},"end":{"line":133,"column":43}},"56":{"start":{"line":134,"column":2},"end":{"line":143,"column":3}},"57":{"start":{"line":135,"column":4},"end":{"line":139,"column":7}},"58":{"start":{"line":141,"column":4},"end":{"line":141,"column":54}},"59":{"start":{"line":142,"column":4},"end":{"line":142,"column":39}},"60":{"start":{"line":176,"column":0},"end":{"line":180,"column":2}},"61":{"start":{"line":177,"column":2},"end":{"line":177,"column":22}},"62":{"start":{"line":178,"column":2},"end":{"line":178,"column":65}},"63":{"start":{"line":179,"column":2},"end":{"line":179,"column":68}},"64":{"start":{"line":184,"column":0},"end":{"line":190,"column":2}},"65":{"start":{"line":185,"column":2},"end":{"line":189,"column":3}},"66":{"start":{"line":186,"column":4},"end":{"line":186,"column":73}},"67":{"start":{"line":187,"column":4},"end":{"line":187,"column":30}},"68":{"start":{"line":188,"column":4},"end":{"line":188,"column":23}},"69":{"start":{"line":195,"column":0},"end":{"line":342,"column":2}},"70":{"start":{"line":196,"column":2},"end":{"line":196,"column":27}},"71":{"start":{"line":197,"column":2},"end":{"line":197,"column":24}},"72":{"start":{"line":199,"column":2},"end":{"line":322,"column":3}},"73":{"start":{"line":210,"column":6},"end":{"line":219,"column":7}},"74":{"start":{"line":211,"column":8},"end":{"line":211,"column":31}},"75":{"start":{"line":212,"column":8},"end":{"line":214,"column":9}},"76":{"start":{"line":213,"column":10},"end":{"line":213,"column":79}},"77":{"start":{"line":215,"column":13},"end":{"line":219,"column":7}},"78":{"start":{"line":216,"column":8},"end":{"line":216,"column":71}},"79":{"start":{"line":218,"column":8},"end":{"line":218,"column":33}},"80":{"start":{"line":220,"column":6},"end":{"line":220,"column":12}},"81":{"start":{"line":231,"column":6},"end":{"line":237,"column":7}},"82":{"start":{"line":232,"column":8},"end":{"line":232,"column":45}},"83":{"start":{"line":233,"column":13},"end":{"line":237,"column":7}},"84":{"start":{"line":234,"column":8},"end":{"line":234,"column":33}},"85":{"start":{"line":236,"column":8},"end":{"line":236,"column":33}},"86":{"start":{"line":238,"column":6},"end":{"line":238,"column":12}},"87":{"start":{"line":247,"column":6},"end":{"line":253,"column":7}},"88":{"start":{"line":248,"column":8},"end":{"line":248,"column":33}},"89":{"start":{"line":249,"column":13},"end":{"line":253,"column":7}},"90":{"start":{"line":250,"column":8},"end":{"line":250,"column":44}},"91":{"start":{"line":252,"column":8},"end":{"line":252,"column":33}},"92":{"start":{"line":254,"column":6},"end":{"line":254,"column":12}},"93":{"start":{"line":266,"column":6},"end":{"line":270,"column":7}},"94":{"start":{"line":267,"column":8},"end":{"line":267,"column":77}},"95":{"start":{"line":268,"column":13},"end":{"line":270,"column":7}},"96":{"start":{"line":269,"column":8},"end":{"line":269,"column":33}},"97":{"start":{"line":271,"column":6},"end":{"line":271,"column":12}},"98":{"start":{"line":278,"column":6},"end":{"line":282,"column":7}},"99":{"start":{"line":279,"column":8},"end":{"line":279,"column":33}},"100":{"start":{"line":280,"column":13},"end":{"line":282,"column":7}},"101":{"start":{"line":281,"column":8},"end":{"line":281,"column":33}},"102":{"start":{"line":283,"column":6},"end":{"line":283,"column":12}},"103":{"start":{"line":294,"column":6},"end":{"line":298,"column":7}},"104":{"start":{"line":295,"column":8},"end":{"line":295,"column":33}},"105":{"start":{"line":296,"column":13},"end":{"line":298,"column":7}},"106":{"start":{"line":297,"column":8},"end":{"line":297,"column":33}},"107":{"start":{"line":299,"column":6},"end":{"line":299,"column":12}},"108":{"start":{"line":316,"column":6},"end":{"line":320,"column":7}},"109":{"start":{"line":317,"column":8},"end":{"line":317,"column":42}},"110":{"start":{"line":318,"column":13},"end":{"line":320,"column":7}},"111":{"start":{"line":319,"column":8},"end":{"line":319,"column":33}},"112":{"start":{"line":321,"column":6},"end":{"line":321,"column":12}},"113":{"start":{"line":325,"column":2},"end":{"line":341,"column":3}},"114":{"start":{"line":326,"column":4},"end":{"line":326,"column":65}},"115":{"start":{"line":329,"column":4},"end":{"line":340,"column":5}},"116":{"start":{"line":330,"column":6},"end":{"line":330,"column":68}},"117":{"start":{"line":331,"column":6},"end":{"line":331,"column":97}},"118":{"start":{"line":337,"column":6},"end":{"line":337,"column":69}},"119":{"start":{"line":338,"column":6},"end":{"line":338,"column":28}},"120":{"start":{"line":339,"column":6},"end":{"line":339,"column":24}},"121":{"start":{"line":351,"column":0},"end":{"line":357,"column":2}},"122":{"start":{"line":352,"column":2},"end":{"line":352,"column":26}},"123":{"start":{"line":353,"column":2},"end":{"line":353,"column":62}},"124":{"start":{"line":355,"column":2},"end":{"line":355,"column":37}},"125":{"start":{"line":356,"column":2},"end":{"line":356,"column":63}},"126":{"start":{"line":361,"column":0},"end":{"line":361,"column":32}},"127":{"start":{"line":367,"column":0},"end":{"line":370,"column":2}},"128":{"start":{"line":368,"column":2},"end":{"line":368,"column":76}},"129":{"start":{"line":369,"column":2},"end":{"line":369,"column":46}},"130":{"start":{"line":375,"column":0},"end":{"line":377,"column":2}},"131":{"start":{"line":376,"column":2},"end":{"line":376,"column":26}},"132":{"start":{"line":387,"column":0},"end":{"line":396,"column":2}},"133":{"start":{"line":388,"column":2},"end":{"line":395,"column":3}},"134":{"start":{"line":389,"column":4},"end":{"line":393,"column":5}},"135":{"start":{"line":390,"column":6},"end":{"line":390,"column":32}},"136":{"start":{"line":392,"column":6},"end":{"line":392,"column":40}},"137":{"start":{"line":394,"column":4},"end":{"line":394,"column":31}},"138":{"start":{"line":399,"column":0},"end":{"line":431,"column":2}},"139":{"start":{"line":401,"column":2},"end":{"line":401,"column":56}},"140":{"start":{"line":402,"column":2},"end":{"line":402,"column":15}},"141":{"start":{"line":406,"column":2},"end":{"line":419,"column":3}},"142":{"start":{"line":407,"column":4},"end":{"line":407,"column":31}},"143":{"start":{"line":408,"column":4},"end":{"line":408,"column":25}},"144":{"start":{"line":409,"column":4},"end":{"line":413,"column":7}},"145":{"start":{"line":418,"column":4},"end":{"line":418,"column":33}},"146":{"start":{"line":422,"column":2},"end":{"line":430,"column":3}},"147":{"start":{"line":423,"column":4},"end":{"line":423,"column":11}},"148":{"start":{"line":429,"column":4},"end":{"line":429,"column":91}},"149":{"start":{"line":433,"column":0},"end":{"line":441,"column":2}},"150":{"start":{"line":434,"column":2},"end":{"line":436,"column":3}},"151":{"start":{"line":435,"column":4},"end":{"line":435,"column":26}},"152":{"start":{"line":438,"column":2},"end":{"line":440,"column":3}},"153":{"start":{"line":439,"column":4},"end":{"line":439,"column":20}}},"branchMap":{"1":{"line":19,"type":"binary-expr","locations":[{"start":{"line":19,"column":15},"end":{"line":19,"column":18}},{"start":{"line":19,"column":22},"end":{"line":19,"column":34}}]},"2":{"line":44,"type":"if","locations":[{"start":{"line":44,"column":4},"end":{"line":44,"column":4}},{"start":{"line":44,"column":4},"end":{"line":44,"column":4}}]},"3":{"line":46,"type":"if","locations":[{"start":{"line":46,"column":11},"end":{"line":46,"column":11}},{"start":{"line":46,"column":11},"end":{"line":46,"column":11}}]},"4":{"line":109,"type":"binary-expr","locations":[{"start":{"line":109,"column":16},"end":{"line":109,"column":27}},{"start":{"line":109,"column":31},"end":{"line":109,"column":33}}]},"5":{"line":111,"type":"if","locations":[{"start":{"line":111,"column":2},"end":{"line":111,"column":2}},{"start":{"line":111,"column":2},"end":{"line":111,"column":2}}]},"6":{"line":134,"type":"if","locations":[{"start":{"line":134,"column":2},"end":{"line":134,"column":2}},{"start":{"line":134,"column":2},"end":{"line":134,"column":2}}]},"7":{"line":185,"type":"if","locations":[{"start":{"line":185,"column":2},"end":{"line":185,"column":2}},{"start":{"line":185,"column":2},"end":{"line":185,"column":2}}]},"8":{"line":199,"type":"switch","locations":[{"start":{"line":209,"column":4},"end":{"line":220,"column":12}},{"start":{"line":230,"column":4},"end":{"line":238,"column":12}},{"start":{"line":246,"column":4},"end":{"line":254,"column":12}},{"start":{"line":265,"column":4},"end":{"line":271,"column":12}},{"start":{"line":277,"column":4},"end":{"line":283,"column":12}},{"start":{"line":293,"column":4},"end":{"line":299,"column":12}},{"start":{"line":315,"column":4},"end":{"line":321,"column":12}}]},"9":{"line":210,"type":"if","locations":[{"start":{"line":210,"column":6},"end":{"line":210,"column":6}},{"start":{"line":210,"column":6},"end":{"line":210,"column":6}}]},"10":{"line":212,"type":"if","locations":[{"start":{"line":212,"column":8},"end":{"line":212,"column":8}},{"start":{"line":212,"column":8},"end":{"line":212,"column":8}}]},"11":{"line":213,"type":"cond-expr","locations":[{"start":{"line":213,"column":35},"end":{"line":213,"column":54}},{"start":{"line":213,"column":57},"end":{"line":213,"column":77}}]},"12":{"line":215,"type":"if","locations":[{"start":{"line":215,"column":13},"end":{"line":215,"column":13}},{"start":{"line":215,"column":13},"end":{"line":215,"column":13}}]},"13":{"line":216,"type":"cond-expr","locations":[{"start":{"line":216,"column":33},"end":{"line":216,"column":49}},{"start":{"line":216,"column":52},"end":{"line":216,"column":69}}]},"14":{"line":231,"type":"if","locations":[{"start":{"line":231,"column":6},"end":{"line":231,"column":6}},{"start":{"line":231,"column":6},"end":{"line":231,"column":6}}]},"15":{"line":231,"type":"binary-expr","locations":[{"start":{"line":231,"column":10},"end":{"line":231,"column":17}},{"start":{"line":231,"column":21},"end":{"line":231,"column":45}}]},"16":{"line":233,"type":"if","locations":[{"start":{"line":233,"column":13},"end":{"line":233,"column":13}},{"start":{"line":233,"column":13},"end":{"line":233,"column":13}}]},"17":{"line":233,"type":"binary-expr","locations":[{"start":{"line":233,"column":17},"end":{"line":233,"column":24}},{"start":{"line":233,"column":28},"end":{"line":233,"column":55}}]},"18":{"line":247,"type":"if","locations":[{"start":{"line":247,"column":6},"end":{"line":247,"column":6}},{"start":{"line":247,"column":6},"end":{"line":247,"column":6}}]},"19":{"line":249,"type":"if","locations":[{"start":{"line":249,"column":13},"end":{"line":249,"column":13}},{"start":{"line":249,"column":13},"end":{"line":249,"column":13}}]},"20":{"line":249,"type":"binary-expr","locations":[{"start":{"line":249,"column":17},"end":{"line":249,"column":26}},{"start":{"line":249,"column":30},"end":{"line":249,"column":54}}]},"21":{"line":266,"type":"if","locations":[{"start":{"line":266,"column":6},"end":{"line":266,"column":6}},{"start":{"line":266,"column":6},"end":{"line":266,"column":6}}]},"22":{"line":267,"type":"cond-expr","locations":[{"start":{"line":267,"column":33},"end":{"line":267,"column":52}},{"start":{"line":267,"column":55},"end":{"line":267,"column":75}}]},"23":{"line":268,"type":"if","locations":[{"start":{"line":268,"column":13},"end":{"line":268,"column":13}},{"start":{"line":268,"column":13},"end":{"line":268,"column":13}}]},"24":{"line":278,"type":"if","locations":[{"start":{"line":278,"column":6},"end":{"line":278,"column":6}},{"start":{"line":278,"column":6},"end":{"line":278,"column":6}}]},"25":{"line":278,"type":"binary-expr","locations":[{"start":{"line":278,"column":10},"end":{"line":278,"column":37}},{"start":{"line":278,"column":42},"end":{"line":278,"column":51}},{"start":{"line":278,"column":55},"end":{"line":278,"column":77}}]},"26":{"line":280,"type":"if","locations":[{"start":{"line":280,"column":13},"end":{"line":280,"column":13}},{"start":{"line":280,"column":13},"end":{"line":280,"column":13}}]},"27":{"line":294,"type":"if","locations":[{"start":{"line":294,"column":6},"end":{"line":294,"column":6}},{"start":{"line":294,"column":6},"end":{"line":294,"column":6}}]},"28":{"line":294,"type":"binary-expr","locations":[{"start":{"line":294,"column":10},"end":{"line":294,"column":37}},{"start":{"line":294,"column":42},"end":{"line":294,"column":49}},{"start":{"line":294,"column":53},"end":{"line":294,"column":75}}]},"29":{"line":296,"type":"if","locations":[{"start":{"line":296,"column":13},"end":{"line":296,"column":13}},{"start":{"line":296,"column":13},"end":{"line":296,"column":13}}]},"30":{"line":316,"type":"if","locations":[{"start":{"line":316,"column":6},"end":{"line":316,"column":6}},{"start":{"line":316,"column":6},"end":{"line":316,"column":6}}]},"31":{"line":316,"type":"binary-expr","locations":[{"start":{"line":316,"column":10},"end":{"line":316,"column":19}},{"start":{"line":316,"column":23},"end":{"line":316,"column":52}}]},"32":{"line":318,"type":"if","locations":[{"start":{"line":318,"column":13},"end":{"line":318,"column":13}},{"start":{"line":318,"column":13},"end":{"line":318,"column":13}}]},"33":{"line":318,"type":"binary-expr","locations":[{"start":{"line":318,"column":19},"end":{"line":318,"column":26}},{"start":{"line":318,"column":30},"end":{"line":318,"column":57}}]},"34":{"line":325,"type":"if","locations":[{"start":{"line":325,"column":2},"end":{"line":325,"column":2}},{"start":{"line":325,"column":2},"end":{"line":325,"column":2}}]},"35":{"line":329,"type":"if","locations":[{"start":{"line":329,"column":4},"end":{"line":329,"column":4}},{"start":{"line":329,"column":4},"end":{"line":329,"column":4}}]},"36":{"line":388,"type":"if","locations":[{"start":{"line":388,"column":2},"end":{"line":388,"column":2}},{"start":{"line":388,"column":2},"end":{"line":388,"column":2}}]},"37":{"line":389,"type":"if","locations":[{"start":{"line":389,"column":4},"end":{"line":389,"column":4}},{"start":{"line":389,"column":4},"end":{"line":389,"column":4}}]},"38":{"line":406,"type":"binary-expr","locations":[{"start":{"line":406,"column":9},"end":{"line":406,"column":26}},{"start":{"line":406,"column":30},"end":{"line":406,"column":62}}]},"39":{"line":422,"type":"if","locations":[{"start":{"line":422,"column":2},"end":{"line":422,"column":2}},{"start":{"line":422,"column":2},"end":{"line":422,"column":2}}]},"40":{"line":434,"type":"if","locations":[{"start":{"line":434,"column":2},"end":{"line":434,"column":2}},{"start":{"line":434,"column":2},"end":{"line":434,"column":2}}]},"41":{"line":438,"type":"if","locations":[{"start":{"line":438,"column":2},"end":{"line":438,"column":2}},{"start":{"line":438,"column":2},"end":{"line":438,"column":2}}]}}},"/data/upstream/node-http2/lib/endpoint.js":{"path":"/data/upstream/node-http2/lib/endpoint.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":2,"11":2,"12":2,"13":1,"14":1,"15":1,"16":0,"17":2,"18":2,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":24,"30":0,"31":0,"32":0,"33":24,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":2,"41":2,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":2,"49":2,"50":2,"51":2,"52":2,"53":2,"54":2,"55":1,"56":12,"57":12,"58":8,"59":12,"60":12,"61":1,"62":7,"63":1,"64":2,"65":2,"66":2,"67":2,"68":2,"69":1,"70":0,"71":0,"72":0},"b":{"1":[2,0],"2":[1,1],"3":[1,0],"4":[25,24],"5":[0,24],"6":[1,0],"7":[1,1],"8":[20,20],"9":[12,0]},"f":{"1":2,"2":1,"3":1,"4":1,"5":2,"6":12,"7":7,"8":2,"9":0},"fnMap":{"1":{"name":"Endpoint","line":15,"loc":{"start":{"line":15,"column":0},"end":{"line":15,"column":39}}},"2":{"name":"_writePrelude","line":47,"loc":{"start":{"line":47,"column":35},"end":{"line":47,"column":60}}},"3":{"name":"_readPrelude","line":53,"loc":{"start":{"line":53,"column":34},"end":{"line":53,"column":58}}},"4":{"name":"_temporalWrite","line":58,"loc":{"start":{"line":58,"column":16},"end":{"line":58,"column":63}}},"5":{"name":"_initializeDataFlow","line":116,"loc":{"start":{"line":116,"column":41},"end":{"line":116,"column":86}}},"6":{"name":"_read","line":138,"loc":{"start":{"line":138,"column":27},"end":{"line":138,"column":48}}},"7":{"name":"_write","line":149,"loc":{"start":{"line":149,"column":28},"end":{"line":149,"column":67}}},"8":{"name":"_initializeErrorHandling","line":156,"loc":{"start":{"line":156,"column":46},"end":{"line":156,"column":82}}},"9":{"name":"_error","line":164,"loc":{"start":{"line":164,"column":28},"end":{"line":164,"column":64}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":40}},"2":{"start":{"line":2,"column":0},"end":{"line":2,"column":50}},"3":{"start":{"line":3,"column":0},"end":{"line":3,"column":52}},"4":{"start":{"line":4,"column":0},"end":{"line":4,"column":54}},"5":{"start":{"line":5,"column":0},"end":{"line":5,"column":56}},"6":{"start":{"line":6,"column":0},"end":{"line":6,"column":54}},"7":{"start":{"line":7,"column":0},"end":{"line":7,"column":44}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":28}},"9":{"start":{"line":15,"column":0},"end":{"line":38,"column":1}},"10":{"start":{"line":16,"column":2},"end":{"line":16,"column":20}},"11":{"start":{"line":19,"column":2},"end":{"line":19,"column":69}},"12":{"start":{"line":23,"column":2},"end":{"line":29,"column":3}},"13":{"start":{"line":24,"column":4},"end":{"line":24,"column":25}},"14":{"start":{"line":25,"column":9},"end":{"line":29,"column":3}},"15":{"start":{"line":26,"column":4},"end":{"line":26,"column":24}},"16":{"start":{"line":28,"column":4},"end":{"line":28,"column":45}},"17":{"start":{"line":34,"column":2},"end":{"line":34,"column":43}},"18":{"start":{"line":37,"column":2},"end":{"line":37,"column":34}},"19":{"start":{"line":39,"column":0},"end":{"line":39,"column":91}},"20":{"start":{"line":44,"column":0},"end":{"line":44,"column":68}},"21":{"start":{"line":47,"column":0},"end":{"line":50,"column":2}},"22":{"start":{"line":48,"column":2},"end":{"line":48,"column":66}},"23":{"start":{"line":49,"column":2},"end":{"line":49,"column":28}},"24":{"start":{"line":53,"column":0},"end":{"line":81,"column":2}},"25":{"start":{"line":55,"column":2},"end":{"line":55,"column":17}},"26":{"start":{"line":58,"column":2},"end":{"line":80,"column":4}},"27":{"start":{"line":61,"column":4},"end":{"line":61,"column":24}},"28":{"start":{"line":62,"column":4},"end":{"line":70,"column":5}},"29":{"start":{"line":63,"column":6},"end":{"line":68,"column":7}},"30":{"start":{"line":64,"column":8},"end":{"line":65,"column":76}},"31":{"start":{"line":66,"column":8},"end":{"line":66,"column":85}},"32":{"start":{"line":67,"column":8},"end":{"line":67,"column":15}},"33":{"start":{"line":69,"column":6},"end":{"line":69,"column":18}},"34":{"start":{"line":74,"column":4},"end":{"line":79,"column":5}},"35":{"start":{"line":75,"column":6},"end":{"line":75,"column":84}},"36":{"start":{"line":76,"column":6},"end":{"line":76,"column":25}},"37":{"start":{"line":77,"column":6},"end":{"line":77,"column":43}},"38":{"start":{"line":78,"column":6},"end":{"line":78,"column":41}},"39":{"start":{"line":116,"column":0},"end":{"line":136,"column":2}},"40":{"start":{"line":117,"column":2},"end":{"line":117,"column":54}},"41":{"start":{"line":118,"column":2},"end":{"line":126,"column":3}},"42":{"start":{"line":119,"column":4},"end":{"line":119,"column":22}},"43":{"start":{"line":120,"column":4},"end":{"line":120,"column":31}},"44":{"start":{"line":121,"column":4},"end":{"line":121,"column":34}},"45":{"start":{"line":123,"column":4},"end":{"line":123,"column":22}},"46":{"start":{"line":124,"column":4},"end":{"line":124,"column":32}},"47":{"start":{"line":125,"column":4},"end":{"line":125,"column":33}},"48":{"start":{"line":128,"column":2},"end":{"line":128,"column":49}},"49":{"start":{"line":129,"column":2},"end":{"line":129,"column":51}},"50":{"start":{"line":130,"column":2},"end":{"line":130,"column":65}},"51":{"start":{"line":131,"column":2},"end":{"line":131,"column":69}},"52":{"start":{"line":132,"column":2},"end":{"line":132,"column":74}},"53":{"start":{"line":134,"column":2},"end":{"line":134,"column":65}},"54":{"start":{"line":135,"column":2},"end":{"line":135,"column":69}},"55":{"start":{"line":138,"column":0},"end":{"line":147,"column":2}},"56":{"start":{"line":139,"column":2},"end":{"line":139,"column":32}},"57":{"start":{"line":140,"column":2},"end":{"line":142,"column":3}},"58":{"start":{"line":141,"column":4},"end":{"line":141,"column":35}},"59":{"start":{"line":144,"column":2},"end":{"line":146,"column":3}},"60":{"start":{"line":145,"column":4},"end":{"line":145,"column":61}},"61":{"start":{"line":149,"column":0},"end":{"line":151,"column":2}},"62":{"start":{"line":150,"column":2},"end":{"line":150,"column":50}},"63":{"start":{"line":156,"column":0},"end":{"line":162,"column":2}},"64":{"start":{"line":157,"column":2},"end":{"line":157,"column":69}},"65":{"start":{"line":158,"column":2},"end":{"line":158,"column":73}},"66":{"start":{"line":159,"column":2},"end":{"line":159,"column":69}},"67":{"start":{"line":160,"column":2},"end":{"line":160,"column":73}},"68":{"start":{"line":161,"column":2},"end":{"line":161,"column":69}},"69":{"start":{"line":164,"column":0},"end":{"line":168,"column":2}},"70":{"start":{"line":165,"column":2},"end":{"line":165,"column":97}},"71":{"start":{"line":166,"column":2},"end":{"line":166,"column":18}},"72":{"start":{"line":167,"column":2},"end":{"line":167,"column":41}}},"branchMap":{"1":{"line":19,"type":"binary-expr","locations":[{"start":{"line":19,"column":15},"end":{"line":19,"column":18}},{"start":{"line":19,"column":22},"end":{"line":19,"column":34}}]},"2":{"line":23,"type":"if","locations":[{"start":{"line":23,"column":2},"end":{"line":23,"column":2}},{"start":{"line":23,"column":2},"end":{"line":23,"column":2}}]},"3":{"line":25,"type":"if","locations":[{"start":{"line":25,"column":9},"end":{"line":25,"column":9}},{"start":{"line":25,"column":9},"end":{"line":25,"column":9}}]},"4":{"line":62,"type":"binary-expr","locations":[{"start":{"line":62,"column":10},"end":{"line":62,"column":40}},{"start":{"line":62,"column":44},"end":{"line":62,"column":76}}]},"5":{"line":63,"type":"if","locations":[{"start":{"line":63,"column":6},"end":{"line":63,"column":6}},{"start":{"line":63,"column":6},"end":{"line":63,"column":6}}]},"6":{"line":74,"type":"if","locations":[{"start":{"line":74,"column":4},"end":{"line":74,"column":4}},{"start":{"line":74,"column":4},"end":{"line":74,"column":4}}]},"7":{"line":118,"type":"if","locations":[{"start":{"line":118,"column":2},"end":{"line":118,"column":2}},{"start":{"line":118,"column":2},"end":{"line":118,"column":2}}]},"8":{"line":140,"type":"binary-expr","locations":[{"start":{"line":140,"column":9},"end":{"line":140,"column":20}},{"start":{"line":140,"column":25},"end":{"line":140,"column":60}}]},"9":{"line":144,"type":"if","locations":[{"start":{"line":144,"column":2},"end":{"line":144,"column":2}},{"start":{"line":144,"column":2},"end":{"line":144,"column":2}}]}}},"/data/upstream/node-http2/lib/framer.js":{"path":"/data/upstream/node-http2/lib/framer.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":3,"7":3,"8":1,"9":1,"10":14,"11":14,"12":0,"13":14,"14":14,"15":14,"16":14,"17":30,"18":30,"19":14,"20":1,"21":3,"22":3,"23":3,"24":1,"25":1,"26":31,"27":31,"28":31,"29":31,"30":17,"31":1,"32":22,"33":22,"34":22,"35":39,"36":39,"37":39,"38":39,"39":39,"40":14,"41":14,"42":39,"43":14,"44":14,"45":14,"46":14,"47":14,"48":0,"49":0,"50":0,"51":14,"52":22,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":24,"61":24,"62":24,"63":26,"64":24,"65":0,"66":24,"67":24,"68":24,"69":24,"70":24,"71":28,"72":28,"73":0,"74":28,"75":4,"76":24,"77":24,"78":0,"79":24,"80":24,"81":1,"82":24,"83":24,"84":24,"85":24,"86":24,"87":24,"88":28,"89":24,"90":1,"91":1,"92":1,"93":1,"94":2,"95":1,"96":2,"97":1,"98":1,"99":1,"100":1,"101":4,"102":2,"103":2,"104":2,"105":4,"106":1,"107":4,"108":2,"109":2,"110":2,"111":1,"112":1,"113":1,"114":1,"115":2,"116":2,"117":2,"118":1,"119":2,"120":1,"121":1,"122":1,"123":1,"124":2,"125":2,"126":2,"127":1,"128":2,"129":1,"130":1,"131":1,"132":1,"133":4,"134":4,"135":12,"136":6,"137":6,"138":6,"139":4,"140":0,"141":4,"142":4,"143":6,"144":6,"145":4,"146":1,"147":4,"148":4,"149":0,"150":4,"151":6,"152":6,"153":6,"154":6,"155":0,"156":6,"157":4,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1,"166":2,"167":2,"168":2,"169":2,"170":1,"171":2,"172":2,"173":1,"174":1,"175":1,"176":1,"177":2,"178":0,"179":2,"180":1,"181":2,"182":0,"183":2,"184":1,"185":1,"186":1,"187":1,"188":2,"189":2,"190":2,"191":2,"192":1,"193":2,"194":2,"195":1,"196":1,"197":1,"198":1,"199":4,"200":4,"201":4,"202":1,"203":4,"204":1,"205":1,"206":0,"207":0,"208":0,"209":0,"210":0,"211":0,"212":0,"213":0,"214":1,"215":0},"b":{"1":[3,1],"2":[0,14],"3":[3,1],"4":[17,14],"5":[14,25],"6":[39,26],"7":[14,25],"8":[39,14],"9":[14,0],"10":[0,24],"11":[0,28],"12":[4,24],"13":[0,24],"14":[24,4],"15":[2,2],"16":[2,2],"17":[6,6],"18":[2,4],"19":[0,4],"20":[0,4],"21":[0,6],"22":[6,6],"23":[2,4],"24":[0,2],"25":[2,2],"26":[0,2],"27":[0,0],"28":[0,0]},"f":{"1":3,"2":14,"3":3,"4":31,"5":22,"6":24,"7":24,"8":2,"9":2,"10":4,"11":4,"12":2,"13":2,"14":2,"15":2,"16":4,"17":12,"18":4,"19":2,"20":2,"21":2,"22":2,"23":2,"24":2,"25":4,"26":4,"27":0,"28":0,"29":0,"30":0},"fnMap":{"1":{"name":"Serializer","line":24,"loc":{"start":{"line":24,"column":0},"end":{"line":24,"column":25}}},"2":{"name":"_transform","line":33,"loc":{"start":{"line":33,"column":34},"end":{"line":33,"column":77}}},"3":{"name":"Deserializer","line":63,"loc":{"start":{"line":63,"column":0},"end":{"line":63,"column":27}}},"4":{"name":"(anonymous_4)","line":75,"loc":{"start":{"line":75,"column":31},"end":{"line":75,"column":46}}},"5":{"name":"_transform","line":86,"loc":{"start":{"line":86,"column":36},"end":{"line":86,"column":79}}},"6":{"name":"writeCommonHeader","line":190,"loc":{"start":{"line":190,"column":26},"end":{"line":190,"column":69}}},"7":{"name":"readCommonHeader","line":225,"loc":{"start":{"line":225,"column":28},"end":{"line":225,"column":69}}},"8":{"name":"writeData","line":270,"loc":{"start":{"line":270,"column":18},"end":{"line":270,"column":53}}},"9":{"name":"readData","line":274,"loc":{"start":{"line":274,"column":20},"end":{"line":274,"column":53}}},"10":{"name":"writeHeadersPriority","line":313,"loc":{"start":{"line":313,"column":21},"end":{"line":313,"column":67}}},"11":{"name":"readHeadersPriority","line":322,"loc":{"start":{"line":322,"column":23},"end":{"line":322,"column":67}}},"12":{"name":"writePriority","line":352,"loc":{"start":{"line":352,"column":22},"end":{"line":352,"column":61}}},"13":{"name":"readPriority","line":358,"loc":{"start":{"line":358,"column":24},"end":{"line":358,"column":61}}},"14":{"name":"writeRstStream","line":384,"loc":{"start":{"line":384,"column":24},"end":{"line":384,"column":64}}},"15":{"name":"readRstStream","line":390,"loc":{"start":{"line":390,"column":26},"end":{"line":390,"column":64}}},"16":{"name":"writeSettings","line":426,"loc":{"start":{"line":426,"column":22},"end":{"line":426,"column":61}}},"17":{"name":"(anonymous_17)","line":428,"loc":{"start":{"line":428,"column":27},"end":{"line":428,"column":49}}},"18":{"name":"readSettings","line":448,"loc":{"start":{"line":448,"column":24},"end":{"line":448,"column":61}}},"19":{"name":"writePushPromise","line":514,"loc":{"start":{"line":514,"column":26},"end":{"line":514,"column":68}}},"20":{"name":"readPushPromise","line":521,"loc":{"start":{"line":521,"column":28},"end":{"line":521,"column":68}}},"21":{"name":"writePing","line":545,"loc":{"start":{"line":545,"column":18},"end":{"line":545,"column":53}}},"22":{"name":"readPing","line":552,"loc":{"start":{"line":552,"column":20},"end":{"line":552,"column":53}}},"23":{"name":"writeGoaway","line":587,"loc":{"start":{"line":587,"column":20},"end":{"line":587,"column":57}}},"24":{"name":"readGoaway","line":594,"loc":{"start":{"line":594,"column":22},"end":{"line":594,"column":57}}},"25":{"name":"writeWindowUpdate","line":621,"loc":{"start":{"line":621,"column":27},"end":{"line":621,"column":70}}},"26":{"name":"readWindowUpdate","line":627,"loc":{"start":{"line":627,"column":29},"end":{"line":627,"column":70}}},"27":{"name":"(anonymous_27)","line":655,"loc":{"start":{"line":655,"column":28},"end":{"line":655,"column":44}}},"28":{"name":"(anonymous_28)","line":657,"loc":{"start":{"line":657,"column":74},"end":{"line":657,"column":89}}},"29":{"name":"(anonymous_29)","line":665,"loc":{"start":{"line":665,"column":58},"end":{"line":665,"column":73}}},"30":{"name":"(anonymous_30)","line":673,"loc":{"start":{"line":673,"column":27},"end":{"line":673,"column":42}}}},"statementMap":{"1":{"start":{"line":5,"column":0},"end":{"line":5,"column":35}},"2":{"start":{"line":7,"column":0},"end":{"line":7,"column":44}},"3":{"start":{"line":9,"column":0},"end":{"line":9,"column":32}},"4":{"start":{"line":10,"column":0},"end":{"line":10,"column":36}},"5":{"start":{"line":24,"column":0},"end":{"line":27,"column":1}},"6":{"start":{"line":25,"column":2},"end":{"line":25,"column":71}},"7":{"start":{"line":26,"column":2},"end":{"line":26,"column":45}},"8":{"start":{"line":28,"column":0},"end":{"line":28,"column":98}},"9":{"start":{"line":33,"column":0},"end":{"line":50,"column":2}},"10":{"start":{"line":34,"column":2},"end":{"line":34,"column":54}},"11":{"start":{"line":36,"column":2},"end":{"line":38,"column":3}},"12":{"start":{"line":37,"column":4},"end":{"line":37,"column":57}},"13":{"start":{"line":40,"column":2},"end":{"line":40,"column":19}},"14":{"start":{"line":41,"column":2},"end":{"line":41,"column":41}},"15":{"start":{"line":42,"column":2},"end":{"line":42,"column":42}},"16":{"start":{"line":44,"column":2},"end":{"line":47,"column":3}},"17":{"start":{"line":45,"column":4},"end":{"line":45,"column":60}},"18":{"start":{"line":46,"column":4},"end":{"line":46,"column":26}},"19":{"start":{"line":49,"column":2},"end":{"line":49,"column":9}},"20":{"start":{"line":63,"column":0},"end":{"line":67,"column":1}},"21":{"start":{"line":64,"column":2},"end":{"line":64,"column":73}},"22":{"start":{"line":65,"column":2},"end":{"line":65,"column":45}},"23":{"start":{"line":66,"column":2},"end":{"line":66,"column":33}},"24":{"start":{"line":68,"column":0},"end":{"line":68,"column":102}},"25":{"start":{"line":75,"column":0},"end":{"line":82,"column":2}},"26":{"start":{"line":76,"column":2},"end":{"line":76,"column":19}},"27":{"start":{"line":77,"column":2},"end":{"line":77,"column":34}},"28":{"start":{"line":78,"column":2},"end":{"line":78,"column":55}},"29":{"start":{"line":79,"column":2},"end":{"line":81,"column":3}},"30":{"start":{"line":80,"column":4},"end":{"line":80,"column":21}},"31":{"start":{"line":86,"column":0},"end":{"line":132,"column":2}},"32":{"start":{"line":87,"column":2},"end":{"line":87,"column":17}},"33":{"start":{"line":89,"column":2},"end":{"line":89,"column":53}},"34":{"start":{"line":91,"column":2},"end":{"line":129,"column":3}},"35":{"start":{"line":94,"column":4},"end":{"line":94,"column":86}},"36":{"start":{"line":95,"column":4},"end":{"line":95,"column":69}},"37":{"start":{"line":96,"column":4},"end":{"line":96,"column":28}},"38":{"start":{"line":97,"column":4},"end":{"line":97,"column":22}},"39":{"start":{"line":104,"column":4},"end":{"line":107,"column":5}},"40":{"start":{"line":105,"column":6},"end":{"line":105,"column":59}},"41":{"start":{"line":106,"column":6},"end":{"line":106,"column":37}},"42":{"start":{"line":114,"column":4},"end":{"line":128,"column":5}},"43":{"start":{"line":115,"column":6},"end":{"line":126,"column":7}},"44":{"start":{"line":116,"column":8},"end":{"line":123,"column":9}},"45":{"start":{"line":117,"column":10},"end":{"line":117,"column":68}},"46":{"start":{"line":118,"column":10},"end":{"line":118,"column":68}},"47":{"start":{"line":119,"column":10},"end":{"line":119,"column":33}},"48":{"start":{"line":121,"column":10},"end":{"line":121,"column":74}},"49":{"start":{"line":122,"column":10},"end":{"line":122,"column":36}},"50":{"start":{"line":125,"column":8},"end":{"line":125,"column":78}},"51":{"start":{"line":127,"column":6},"end":{"line":127,"column":37}},"52":{"start":{"line":131,"column":2},"end":{"line":131,"column":9}},"53":{"start":{"line":179,"column":0},"end":{"line":179,"column":27}},"54":{"start":{"line":180,"column":0},"end":{"line":180,"column":29}},"55":{"start":{"line":182,"column":0},"end":{"line":182,"column":21}},"56":{"start":{"line":184,"column":0},"end":{"line":184,"column":21}},"57":{"start":{"line":186,"column":0},"end":{"line":186,"column":63}},"58":{"start":{"line":188,"column":0},"end":{"line":188,"column":34}},"59":{"start":{"line":190,"column":0},"end":{"line":223,"column":2}},"60":{"start":{"line":191,"column":2},"end":{"line":191,"column":53}},"61":{"start":{"line":193,"column":2},"end":{"line":193,"column":15}},"62":{"start":{"line":194,"column":2},"end":{"line":196,"column":3}},"63":{"start":{"line":195,"column":4},"end":{"line":195,"column":30}},"64":{"start":{"line":197,"column":2},"end":{"line":199,"column":3}},"65":{"start":{"line":198,"column":4},"end":{"line":198,"column":59}},"66":{"start":{"line":200,"column":2},"end":{"line":200,"column":39}},"67":{"start":{"line":202,"column":2},"end":{"line":202,"column":48}},"68":{"start":{"line":203,"column":2},"end":{"line":203,"column":39}},"69":{"start":{"line":205,"column":2},"end":{"line":205,"column":20}},"70":{"start":{"line":206,"column":2},"end":{"line":214,"column":3}},"71":{"start":{"line":207,"column":4},"end":{"line":207,"column":57}},"72":{"start":{"line":208,"column":4},"end":{"line":210,"column":5}},"73":{"start":{"line":209,"column":6},"end":{"line":209,"column":81}},"74":{"start":{"line":211,"column":4},"end":{"line":213,"column":5}},"75":{"start":{"line":212,"column":6},"end":{"line":212,"column":35}},"76":{"start":{"line":215,"column":2},"end":{"line":215,"column":41}},"77":{"start":{"line":217,"column":2},"end":{"line":219,"column":3}},"78":{"start":{"line":218,"column":4},"end":{"line":218,"column":60}},"79":{"start":{"line":220,"column":2},"end":{"line":220,"column":52}},"80":{"start":{"line":222,"column":2},"end":{"line":222,"column":33}},"81":{"start":{"line":225,"column":0},"end":{"line":238,"column":2}},"82":{"start":{"line":226,"column":2},"end":{"line":226,"column":40}},"83":{"start":{"line":228,"column":2},"end":{"line":228,"column":48}},"84":{"start":{"line":230,"column":2},"end":{"line":230,"column":19}},"85":{"start":{"line":231,"column":2},"end":{"line":231,"column":38}},"86":{"start":{"line":232,"column":2},"end":{"line":232,"column":46}},"87":{"start":{"line":233,"column":2},"end":{"line":235,"column":3}},"88":{"start":{"line":234,"column":4},"end":{"line":234,"column":66}},"89":{"start":{"line":237,"column":2},"end":{"line":237,"column":53}},"90":{"start":{"line":264,"column":0},"end":{"line":264,"column":26}},"91":{"start":{"line":266,"column":0},"end":{"line":266,"column":46}},"92":{"start":{"line":268,"column":0},"end":{"line":268,"column":41}},"93":{"start":{"line":270,"column":0},"end":{"line":272,"column":2}},"94":{"start":{"line":271,"column":2},"end":{"line":271,"column":27}},"95":{"start":{"line":274,"column":0},"end":{"line":276,"column":2}},"96":{"start":{"line":275,"column":2},"end":{"line":275,"column":22}},"97":{"start":{"line":297,"column":0},"end":{"line":297,"column":29}},"98":{"start":{"line":299,"column":0},"end":{"line":299,"column":76}},"99":{"start":{"line":301,"column":0},"end":{"line":301,"column":67}},"100":{"start":{"line":313,"column":0},"end":{"line":320,"column":2}},"101":{"start":{"line":314,"column":2},"end":{"line":318,"column":3}},"102":{"start":{"line":315,"column":4},"end":{"line":315,"column":31}},"103":{"start":{"line":316,"column":4},"end":{"line":316,"column":57}},"104":{"start":{"line":317,"column":4},"end":{"line":317,"column":25}},"105":{"start":{"line":319,"column":2},"end":{"line":319,"column":27}},"106":{"start":{"line":322,"column":0},"end":{"line":329,"column":2}},"107":{"start":{"line":323,"column":2},"end":{"line":328,"column":3}},"108":{"start":{"line":324,"column":4},"end":{"line":324,"column":57}},"109":{"start":{"line":325,"column":4},"end":{"line":325,"column":33}},"110":{"start":{"line":327,"column":4},"end":{"line":327,"column":24}},"111":{"start":{"line":338,"column":0},"end":{"line":338,"column":30}},"112":{"start":{"line":340,"column":0},"end":{"line":340,"column":26}},"113":{"start":{"line":342,"column":0},"end":{"line":342,"column":49}},"114":{"start":{"line":352,"column":0},"end":{"line":356,"column":2}},"115":{"start":{"line":353,"column":2},"end":{"line":353,"column":29}},"116":{"start":{"line":354,"column":2},"end":{"line":354,"column":42}},"117":{"start":{"line":355,"column":2},"end":{"line":355,"column":23}},"118":{"start":{"line":358,"column":0},"end":{"line":360,"column":2}},"119":{"start":{"line":359,"column":2},"end":{"line":359,"column":42}},"120":{"start":{"line":369,"column":0},"end":{"line":369,"column":32}},"121":{"start":{"line":371,"column":0},"end":{"line":371,"column":28}},"122":{"start":{"line":373,"column":0},"end":{"line":373,"column":48}},"123":{"start":{"line":384,"column":0},"end":{"line":388,"column":2}},"124":{"start":{"line":385,"column":2},"end":{"line":385,"column":29}},"125":{"start":{"line":386,"column":2},"end":{"line":386,"column":60}},"126":{"start":{"line":387,"column":2},"end":{"line":387,"column":23}},"127":{"start":{"line":390,"column":0},"end":{"line":392,"column":2}},"128":{"start":{"line":391,"column":2},"end":{"line":391,"column":52}},"129":{"start":{"line":402,"column":0},"end":{"line":402,"column":30}},"130":{"start":{"line":404,"column":0},"end":{"line":404,"column":26}},"131":{"start":{"line":406,"column":0},"end":{"line":406,"column":49}},"132":{"start":{"line":426,"column":0},"end":{"line":446,"column":2}},"133":{"start":{"line":427,"column":2},"end":{"line":427,"column":65}},"134":{"start":{"line":428,"column":2},"end":{"line":434,"column":5}},"135":{"start":{"line":429,"column":4},"end":{"line":433,"column":5}},"136":{"start":{"line":430,"column":6},"end":{"line":430,"column":67}},"137":{"start":{"line":431,"column":6},"end":{"line":431,"column":47}},"138":{"start":{"line":432,"column":6},"end":{"line":432,"column":78}},"139":{"start":{"line":435,"column":2},"end":{"line":437,"column":3}},"140":{"start":{"line":436,"column":4},"end":{"line":436,"column":69}},"141":{"start":{"line":439,"column":2},"end":{"line":439,"column":47}},"142":{"start":{"line":440,"column":2},"end":{"line":443,"column":3}},"143":{"start":{"line":441,"column":4},"end":{"line":441,"column":57}},"144":{"start":{"line":442,"column":4},"end":{"line":442,"column":53}},"145":{"start":{"line":445,"column":2},"end":{"line":445,"column":23}},"146":{"start":{"line":448,"column":0},"end":{"line":465,"column":2}},"147":{"start":{"line":449,"column":2},"end":{"line":449,"column":22}},"148":{"start":{"line":451,"column":2},"end":{"line":453,"column":3}},"149":{"start":{"line":452,"column":4},"end":{"line":452,"column":47}},"150":{"start":{"line":454,"column":2},"end":{"line":462,"column":3}},"151":{"start":{"line":455,"column":4},"end":{"line":455,"column":49}},"152":{"start":{"line":456,"column":4},"end":{"line":456,"column":39}},"153":{"start":{"line":457,"column":4},"end":{"line":457,"column":45}},"154":{"start":{"line":458,"column":4},"end":{"line":460,"column":5}},"155":{"start":{"line":459,"column":6},"end":{"line":459,"column":15}},"156":{"start":{"line":461,"column":4},"end":{"line":461,"column":79}},"157":{"start":{"line":464,"column":2},"end":{"line":464,"column":15}},"158":{"start":{"line":468,"column":0},"end":{"line":468,"column":26}},"159":{"start":{"line":472,"column":0},"end":{"line":472,"column":79}},"160":{"start":{"line":476,"column":0},"end":{"line":476,"column":76}},"161":{"start":{"line":482,"column":0},"end":{"line":482,"column":77}},"162":{"start":{"line":496,"column":0},"end":{"line":496,"column":34}},"163":{"start":{"line":498,"column":0},"end":{"line":498,"column":48}},"164":{"start":{"line":500,"column":0},"end":{"line":500,"column":79}},"165":{"start":{"line":514,"column":0},"end":{"line":519,"column":2}},"166":{"start":{"line":515,"column":2},"end":{"line":515,"column":29}},"167":{"start":{"line":516,"column":2},"end":{"line":516,"column":62}},"168":{"start":{"line":517,"column":2},"end":{"line":517,"column":23}},"169":{"start":{"line":518,"column":2},"end":{"line":518,"column":27}},"170":{"start":{"line":521,"column":0},"end":{"line":524,"column":2}},"171":{"start":{"line":522,"column":2},"end":{"line":522,"column":62}},"172":{"start":{"line":523,"column":2},"end":{"line":523,"column":31}},"173":{"start":{"line":537,"column":0},"end":{"line":537,"column":26}},"174":{"start":{"line":539,"column":0},"end":{"line":539,"column":28}},"175":{"start":{"line":541,"column":0},"end":{"line":541,"column":41}},"176":{"start":{"line":545,"column":0},"end":{"line":550,"column":2}},"177":{"start":{"line":546,"column":2},"end":{"line":548,"column":3}},"178":{"start":{"line":547,"column":4},"end":{"line":547,"column":65}},"179":{"start":{"line":549,"column":2},"end":{"line":549,"column":27}},"180":{"start":{"line":552,"column":0},"end":{"line":557,"column":2}},"181":{"start":{"line":553,"column":2},"end":{"line":555,"column":3}},"182":{"start":{"line":554,"column":4},"end":{"line":554,"column":48}},"183":{"start":{"line":556,"column":2},"end":{"line":556,"column":22}},"184":{"start":{"line":566,"column":0},"end":{"line":566,"column":28}},"185":{"start":{"line":568,"column":0},"end":{"line":568,"column":24}},"186":{"start":{"line":570,"column":0},"end":{"line":570,"column":59}},"187":{"start":{"line":587,"column":0},"end":{"line":592,"column":2}},"188":{"start":{"line":588,"column":2},"end":{"line":588,"column":29}},"189":{"start":{"line":589,"column":2},"end":{"line":589,"column":58}},"190":{"start":{"line":590,"column":2},"end":{"line":590,"column":60}},"191":{"start":{"line":591,"column":2},"end":{"line":591,"column":23}},"192":{"start":{"line":594,"column":0},"end":{"line":597,"column":2}},"193":{"start":{"line":595,"column":2},"end":{"line":595,"column":58}},"194":{"start":{"line":596,"column":2},"end":{"line":596,"column":52}},"195":{"start":{"line":610,"column":0},"end":{"line":610,"column":35}},"196":{"start":{"line":612,"column":0},"end":{"line":612,"column":49}},"197":{"start":{"line":614,"column":0},"end":{"line":614,"column":57}},"198":{"start":{"line":621,"column":0},"end":{"line":625,"column":2}},"199":{"start":{"line":622,"column":2},"end":{"line":622,"column":29}},"200":{"start":{"line":623,"column":2},"end":{"line":623,"column":58}},"201":{"start":{"line":624,"column":2},"end":{"line":624,"column":23}},"202":{"start":{"line":627,"column":0},"end":{"line":629,"column":2}},"203":{"start":{"line":628,"column":2},"end":{"line":628,"column":58}},"204":{"start":{"line":634,"column":0},"end":{"line":645,"column":2}},"205":{"start":{"line":655,"column":0},"end":{"line":670,"column":2}},"206":{"start":{"line":656,"column":2},"end":{"line":656,"column":21}},"207":{"start":{"line":657,"column":2},"end":{"line":659,"column":5}},"208":{"start":{"line":658,"column":4},"end":{"line":658,"column":34}},"209":{"start":{"line":661,"column":2},"end":{"line":663,"column":3}},"210":{"start":{"line":662,"column":4},"end":{"line":662,"column":48}},"211":{"start":{"line":665,"column":2},"end":{"line":667,"column":5}},"212":{"start":{"line":666,"column":4},"end":{"line":666,"column":38}},"213":{"start":{"line":669,"column":2},"end":{"line":669,"column":19}},"214":{"start":{"line":673,"column":0},"end":{"line":675,"column":2}},"215":{"start":{"line":674,"column":2},"end":{"line":674,"column":30}}},"branchMap":{"1":{"line":25,"type":"binary-expr","locations":[{"start":{"line":25,"column":15},"end":{"line":25,"column":18}},{"start":{"line":25,"column":22},"end":{"line":25,"column":34}}]},"2":{"line":36,"type":"if","locations":[{"start":{"line":36,"column":2},"end":{"line":36,"column":2}},{"start":{"line":36,"column":2},"end":{"line":36,"column":2}}]},"3":{"line":64,"type":"binary-expr","locations":[{"start":{"line":64,"column":15},"end":{"line":64,"column":18}},{"start":{"line":64,"column":22},"end":{"line":64,"column":34}}]},"4":{"line":79,"type":"if","locations":[{"start":{"line":79,"column":2},"end":{"line":79,"column":2}},{"start":{"line":79,"column":2},"end":{"line":79,"column":2}}]},"5":{"line":104,"type":"if","locations":[{"start":{"line":104,"column":4},"end":{"line":104,"column":4}},{"start":{"line":104,"column":4},"end":{"line":104,"column":4}}]},"6":{"line":104,"type":"binary-expr","locations":[{"start":{"line":104,"column":8},"end":{"line":104,"column":44}},{"start":{"line":104,"column":48},"end":{"line":104,"column":72}}]},"7":{"line":114,"type":"if","locations":[{"start":{"line":114,"column":4},"end":{"line":114,"column":4}},{"start":{"line":114,"column":4},"end":{"line":114,"column":4}}]},"8":{"line":114,"type":"binary-expr","locations":[{"start":{"line":114,"column":8},"end":{"line":114,"column":44}},{"start":{"line":114,"column":48},"end":{"line":114,"column":73}}]},"9":{"line":115,"type":"if","locations":[{"start":{"line":115,"column":6},"end":{"line":115,"column":6}},{"start":{"line":115,"column":6},"end":{"line":115,"column":6}}]},"10":{"line":197,"type":"if","locations":[{"start":{"line":197,"column":2},"end":{"line":197,"column":2}},{"start":{"line":197,"column":2},"end":{"line":197,"column":2}}]},"11":{"line":208,"type":"if","locations":[{"start":{"line":208,"column":4},"end":{"line":208,"column":4}},{"start":{"line":208,"column":4},"end":{"line":208,"column":4}}]},"12":{"line":211,"type":"if","locations":[{"start":{"line":211,"column":4},"end":{"line":211,"column":4}},{"start":{"line":211,"column":4},"end":{"line":211,"column":4}}]},"13":{"line":217,"type":"if","locations":[{"start":{"line":217,"column":2},"end":{"line":217,"column":2}},{"start":{"line":217,"column":2},"end":{"line":217,"column":2}}]},"14":{"line":220,"type":"binary-expr","locations":[{"start":{"line":220,"column":30},"end":{"line":220,"column":42}},{"start":{"line":220,"column":46},"end":{"line":220,"column":47}}]},"15":{"line":314,"type":"if","locations":[{"start":{"line":314,"column":2},"end":{"line":314,"column":2}},{"start":{"line":314,"column":2},"end":{"line":314,"column":2}}]},"16":{"line":323,"type":"if","locations":[{"start":{"line":323,"column":2},"end":{"line":323,"column":2}},{"start":{"line":323,"column":2},"end":{"line":323,"column":2}}]},"17":{"line":429,"type":"if","locations":[{"start":{"line":429,"column":4},"end":{"line":429,"column":4}},{"start":{"line":429,"column":4},"end":{"line":429,"column":4}}]},"18":{"line":432,"type":"cond-expr","locations":[{"start":{"line":432,"column":52},"end":{"line":432,"column":66}},{"start":{"line":432,"column":69},"end":{"line":432,"column":74}}]},"19":{"line":435,"type":"if","locations":[{"start":{"line":435,"column":2},"end":{"line":435,"column":2}},{"start":{"line":435,"column":2},"end":{"line":435,"column":2}}]},"20":{"line":451,"type":"if","locations":[{"start":{"line":451,"column":2},"end":{"line":451,"column":2}},{"start":{"line":451,"column":2},"end":{"line":451,"column":2}}]},"21":{"line":458,"type":"if","locations":[{"start":{"line":458,"column":4},"end":{"line":458,"column":4}},{"start":{"line":458,"column":4},"end":{"line":458,"column":4}}]},"22":{"line":458,"type":"binary-expr","locations":[{"start":{"line":458,"column":8},"end":{"line":458,"column":16}},{"start":{"line":458,"column":20},"end":{"line":458,"column":50}}]},"23":{"line":461,"type":"cond-expr","locations":[{"start":{"line":461,"column":50},"end":{"line":461,"column":70}},{"start":{"line":461,"column":73},"end":{"line":461,"column":78}}]},"24":{"line":546,"type":"if","locations":[{"start":{"line":546,"column":2},"end":{"line":546,"column":2}},{"start":{"line":546,"column":2},"end":{"line":546,"column":2}}]},"25":{"line":546,"type":"binary-expr","locations":[{"start":{"line":546,"column":6},"end":{"line":546,"column":17}},{"start":{"line":546,"column":21},"end":{"line":546,"column":44}}]},"26":{"line":553,"type":"if","locations":[{"start":{"line":553,"column":2},"end":{"line":553,"column":2}},{"start":{"line":553,"column":2},"end":{"line":553,"column":2}}]},"27":{"line":661,"type":"if","locations":[{"start":{"line":661,"column":2},"end":{"line":661,"column":2}},{"start":{"line":661,"column":2},"end":{"line":661,"column":2}}]},"28":{"line":665,"type":"binary-expr","locations":[{"start":{"line":665,"column":32},"end":{"line":665,"column":43}},{"start":{"line":665,"column":47},"end":{"line":665,"column":49}}]}}}} \ No newline at end of file diff --git a/coverage/lcov-report/index.html b/coverage/lcov-report/index.html new file mode 100644 index 00000000..adf62cca --- /dev/null +++ b/coverage/lcov-report/index.html @@ -0,0 +1,333 @@ + + + + Code coverage report for All files + + + + + + + +
+

Code coverage report for All files

+

+ + Statements: 91.18% (775 / 850)      + + + Branches: 84.69% (249 / 294)      + + + Functions: 88.03% (103 / 117)      + + + Lines: 91.18% (775 / 850)      + +

+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
lib/91.18%(775 / 850)84.69%(249 / 294)88.03%(103 / 117)91.18%(775 / 850)
+
+
+ + + + + + + + diff --git a/coverage/lcov-report/lib/compressor.js.html b/coverage/lcov-report/lib/compressor.js.html new file mode 100644 index 00000000..8bb639d5 --- /dev/null +++ b/coverage/lcov-report/lib/compressor.js.html @@ -0,0 +1,2726 @@ + + + + Code coverage report for lib/compressor.js + + + + + + + +
+

Code coverage report for lib/compressor.js

+

+ + Statements: 100% (262 / 262)      + + + Branches: 100% (101 / 101)      + + + Functions: 100% (31 / 31)      + + + Lines: 100% (262 / 262)      + +

+
All files » lib/ » compressor.js
+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 +310 +311 +312 +313 +314 +315 +316 +317 +318 +319 +320 +321 +322 +323 +324 +325 +326 +327 +328 +329 +330 +331 +332 +333 +334 +335 +336 +337 +338 +339 +340 +341 +342 +343 +344 +345 +346 +347 +348 +349 +350 +351 +352 +353 +354 +355 +356 +357 +358 +359 +360 +361 +362 +363 +364 +365 +366 +367 +368 +369 +370 +371 +372 +373 +374 +375 +376 +377 +378 +379 +380 +381 +382 +383 +384 +385 +386 +387 +388 +389 +390 +391 +392 +393 +394 +395 +396 +397 +398 +399 +400 +401 +402 +403 +404 +405 +406 +407 +408 +409 +410 +411 +412 +413 +414 +415 +416 +417 +418 +419 +420 +421 +422 +423 +424 +425 +426 +427 +428 +429 +430 +431 +432 +433 +434 +435 +436 +437 +438 +439 +440 +441 +442 +443 +444 +445 +446 +447 +448 +449 +450 +451 +452 +453 +454 +455 +456 +457 +458 +459 +460 +461 +462 +463 +464 +465 +466 +467 +468 +469 +470 +471 +472 +473 +474 +475 +476 +477 +478 +479 +480 +481 +482 +483 +484 +485 +486 +487 +488 +489 +490 +491 +492 +493 +494 +495 +496 +497 +498 +499 +500 +501 +502 +503 +504 +505 +506 +507 +508 +509 +510 +511 +512 +513 +514 +515 +516 +517 +518 +519 +520 +521 +522 +523 +524 +525 +526 +527 +528 +529 +530 +531 +532 +533 +534 +535 +536 +537 +538 +539 +540 +541 +542 +543 +544 +545 +546 +547 +548 +549 +550 +551 +552 +553 +554 +555 +556 +557 +558 +559 +560 +561 +562 +563 +564 +565 +566 +567 +568 +569 +570 +571 +572 +573 +574 +575 +576 +577 +578 +579 +580 +581 +582 +583 +584 +585 +586 +587 +588 +589 +590 +591 +592 +593 +594 +595 +596 +597 +598 +599 +600 +601 +602 +603 +604 +605 +606 +607 +608 +609 +610 +611 +612 +613 +614 +615 +616 +617 +618 +619 +620 +621 +622 +623 +624 +625 +626 +627 +628 +629 +630 +631 +632 +633 +634 +635 +636 +637 +638 +639 +640 +641 +642 +643 +644 +645 +646 +647 +648 +649 +650 +651 +652 +653 +654 +655 +656 +657 +658 +659 +660 +661 +662 +663 +664 +665 +666 +667 +668 +669 +670 +671 +672 +673 +674 +675 +676 +677 +678 +679 +680 +681 +682 +683 +684 +685 +686 +687 +688 +689 +690 +691 +692 +693 +694 +695 +696 +697 +698 +699 +700 +701 +702 +703 +704 +705 +706 +707 +708 +709 +710 +711 +712 +713 +714 +715 +716 +717 +718 +719 +720 +721 +722 +723 +724 +725 +726 +727 +728 +729 +730 +731 +732 +733 +734 +735 +736 +737 +738 +739 +740 +741 +742 +743 +744 +745 +746 +747 +748 +749 +750 +751 +752 +753 +754 +755 +756 +757 +758 +759 +760 +761 +762 +763 +764 +765 +766 +767 +768 +769 +770 +771 +772 +773 +774 +775 +776 +777 +778 +779 +780 +781 +782 +783 +784 +785 +786 +787 +788 +789 +790 +791 +792 +793 +794 +795 +796 +797 +798 +799 +800 +801 +802 +803 +804 +805 +806 +807 +808  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1 +1 +1 +  +1 +1 +1 +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1 +  +1 +10 +10 +10 +10 +  +  +  +  +1 +1421 +  +  +  +1 +43 +136 +  +  +  +  +1 +43 +  +  +  +  +43 +154 +  +98 +  +  +  +  +  +  +43 +98 +98 +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1 +172 +  +  +  +  +  +  +172 +52 +52 +139 +  +52 +2 +2 +  +50 +  +  +  +  +  +  +  +  +120 +35 +  +85 +  +  +120 +119 +88 +  +31 +  +119 +119 +  +  +120 +  +  +  +  +  +1 +36 +90 +  +  +  +  +  +1 +58 +  +58 +58 +5 +5 +1 +  +  +  +  +  +  +  +57 +57 +1029 +  +57 +31 +31 +15 +  +  +  +  +  +  +  +42 +  +  +  +  +  +  +  +  +1 +24 +  +24 +42 +24 +24 +  +  +  +24 +  +  +  +  +  +  +  +  +  +  +  +  +  +1 +119 +119 +119 +2345 +192 +  +2345 +  +119 +218 +218 +  +  +  +  +  +  +  +  +  +  +1 +6 +  +6 +  +6 +  +6 +  +1 +  +  +  +  +  +1 +23 +  +  +  +23 +  +  +  +  +23 +23 +90 +  +  +  +  +23 +  +  +  +23 +23 +90 +90 +90 +17 +8 +  +9 +  +  +73 +  +  +23 +23 +  +  +  +  +  +  +  +  +  +1 +4 +  +4 +  +4 +  +4 +  +1 +  +  +  +  +  +1 +20 +20 +  +  +  +20 +20 +64 +64 +8 +24 +  +  +56 +  +  +  +  +  +20 +20 +  +  +20 +46 +24 +24 +24 +  +  +  +  +20 +80 +58 +58 +58 +  +  +  +  +20 +20 +82 +  +  +20 +  +20 +20 +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1 +216 +216 +88 +  +  +128 +128 +2 +  +128 +  +128 +128 +136 +136 +  +136 +8 +  +136 +  +136 +  +  +128 +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1 +234 +  +234 +234 +100 +  +  +234 +139 +139 +149 +149 +149 +  +  +  +234 +  +  +  +  +  +  +  +  +  +  +  +  +1 +110 +110 +110 +  +  +1 +115 +115 +115 +115 +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1 +  +  +  +  +  +  +1 +90 +  +90 +27 +63 +1 +62 +46 +  +16 +  +  +90 +27 +  +  +63 +20 +  +43 +43 +  +  +63 +16 +  +  +63 +  +  +90 +  +90 +  +  +1 +98 +  +98 +98 +29 +69 +52 +2 +  +50 +  +  +17 +  +  +98 +29 +29 +  +  +69 +69 +44 +  +  +69 +17 +52 +50 +  +2 +  +  +69 +  +  +98 +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1 +  +  +1 +4 +  +  +1 +  +14 +  +10 +  +  +10 +  +  +  +  +10 +12 +12 +10 +  +2 +2 +  +  +12 +  +  +  +  +  +  +  +  +  +  +  +4 +  +  +14 +  +  +  +  +  +  +  +  +1 +6 +6 +6 +6 +6 +  +  +  +1 +  +  +18 +3 +1 +  +3 +  +  +  +  +15 +11 +11 +11 +11 +  +  +  +  +4 +  +  +  +  +  +18 +10 +12 +  +10 +10 +  +  +  +  +  +  +10 +  +  +18 +  +  +  +  +  +1 +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1 +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
// HTTP/2 compression is implemented by two [Transform Stream][1] subclasses that operate in
+// [object mode][2]: the Compressor and the Decompressor. These provide a layer between the
+// [framer](framer.html) and the [connection handling component](connection.html) that
+// generates/parses binary header data.
+//
+// Compression functionality is separated from the integration part. The latter is implemented in
+// the last part of the file, while the larger part of the file is an implementation of the [HTTP/2
+// Header Compression][3] spec. Both Compressor and Decompressor store their compression related
+// state in CompressionContext objects. It is always accessed using methods that guarantee that
+// it remains in a valid state.
+//
+// [1]: http://nodejs.org/api/stream.html#stream_class_stream_transform
+// [2]: http://nodejs.org/api/stream.html#stream_new_stream_readable_options
+// [3]: http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-00
+ 
+var utils = require('../lib/utils');
+var logging = require('./logging');
+var Transform = require('stream').Transform;
+ 
+exports.CompressionContext = CompressionContext;
+exports.Decompressor = Decompressor;
+exports.Compressor = Compressor;
+ 
+// Compression Context
+// ===================
+ 
+// A `CompressionContext` consists of the following tables:
+//
+// * Header Table (`this._table`) that is limited in size (`this._limit`)
+// * Reference Set (`this._reference`)
+// * Working Set (`this._working`)
+//
+// Header Table and Reference Set entries are `[name, value]` pairs (where both are strings), while
+// Working Set entries are objects with two properties: `index` (a number) and `pair` (a pair).
+//
+// There are only two methods that modifies the state of the tables: `reinitialize()` and
+// `execute(command)`.
+var DEFAULT_HEADER_TABLE_LIMIT = 4096;
+ 
+function CompressionContext(table, limit) {
+  this._table = table.slice();
+  this._limit = limit || DEFAULT_HEADER_TABLE_LIMIT;
+  this._reference = [];
+  this._working = [];
+}
+ 
+// The `equal(pair1, pair2)` static method decides if two headers are considered equal. Name
+// comparison is case insensitive while value comparison is case sensitive.
+CompressionContext.equal = function(pair1, pair2) {
+  return (pair1[0].toLowerCase() === pair2[0].toLowerCase()) && (pair1[1] === pair2[1]);
+};
+ 
+// `getWorkingSet()` returns the current working set as an array of `[name, value]` pairs.
+CompressionContext.prototype.getWorkingSet = function getWorkingSet() {
+  return this._working.map(function(entry) {
+    return entry.pair;
+  });
+};
+ 
+// `reinitialize()` must be called between parsing/generating header blocks.
+CompressionContext.prototype.reinitialize = function reinitialize() {
+  var self = this;
+ 
+  // * It first executes the steps needed to *end the processing of the previous block*.
+  // The new reference set of headers is computed by removing from the working set all the headers
+  // that are not present in the header table.
+  this._reference = this._working.filter(function(entry) {
+    return self._table.indexOf(entry.pair) !== -1;
+  }).map(function(entry) {
+    return entry.pair;
+  });
+ 
+  // * Then *prepares the processing of the next block*.
+  // The reference set of headers is interpreted into the working set of headers: for each header
+  // in the reference set, an entry is added to the working set, containing the header name, its
+  // value, and its current index in the header table.
+  this._working = this._reference.map(function(pair) {
+    var index = self._table.indexOf(pair);
+    return { index: index, pair: pair };
+  });
+};
+ 
+// `execute(command)` executes the given command ([header representation][1]): updates the Header
+// Table and the Working Set.
+// [1]: http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-00#section-3.3
+ 
+// The *JavaScript object representation* of a command:
+//
+//     {
+//       name: String || Integer,  // string literal or index
+//       value: String || Integer, // string literal or index
+//       index: Integer            // -1       : no indexing
+//                                 // 0 - ...  : substitution indexing
+//                                 // Infinity : incremental indexing
+//     }
+//
+// Examples:
+//
+//     Indexed:
+//     { name: 2  , value: 2  , index: -1       }
+//     Literal:
+//     { name: 2  , value: 'X', index: -1       } // without indexing
+//     { name: 2  , value: 'Y', index: Infinity } // incremental indexing
+//     { name: 'A', value: 'Z', index: 123      } // substitution indexing
+ 
+CompressionContext.prototype.execute = function execute(command) {
+  var index, pair;
+ 
+  // * For an indexed representation, it checks whether the index is present in the working set.
+  // If true, the corresponding entry is removed from the working set. If several entries correspond
+  // to this encoded index, all these entries are removed from the working set. If the index is not
+  // present in the working set, it is used to retrieve the corresponding header from the Header
+  // Table, and a new entry is added to the working set representing this header.
+  if (typeof command.value === 'number') {
+    index = command.value;
+    var filtered = this._working.filter(function(entry) {
+      return entry.index !== index;
+    });
+    if (filtered.length === this._working.length) {
+      pair = this._table[index];
+      this._working.push({ index: index, pair: pair });
+    } else {
+      this._working = filtered;
+    }
+  }
+ 
+  // * For a literal representation, a new entry is added to the working set representing this
+  // header. If the literal representation specifies that the header is to be indexed, the header is
+  // added accordingly to the header table, and its index is included in the entry in the working
+  // set. Otherwise, the entry in the working set contains an undefined index.
+  else {
+    if (typeof command.name === 'number') {
+      pair = [this._table[command.name][0], command.value];
+    } else {
+      pair = [command.name, command.value];
+    }
+ 
+    if (command.index !== -1) {
+      if (command.index === Infinity) {
+        this._table.push(pair);
+      } else {
+        this._table.splice(command.index, 1, pair);
+      }
+      this._enforceSizeBound();           // TODO: The order of these two
+      index = this._table.indexOf(pair);  // TODO: operation is not well defined!
+    }
+ 
+    this._working.push({ index: index, pair: pair });
+  }
+};
+ 
+// `_isShadowed` determines the reachability of a given index in the Header Table. An entry in the
+// Header Table is shadowed if there's an entry in the Working Set with the same ID.
+CompressionContext.prototype._isShadowed = function(index) {
+  return this._working.some(function(entry) {
+    return entry.index === index;
+  });
+};
+ 
+// `generateAddCommand` tries to find a compact command (header representation) for the given
+// `[name, value]` pair that causes the decoder to add the given pair to the Working Set.
+CompressionContext.prototype.generateAddCommand = function(pair) {
+  var equal = CompressionContext.equal.bind(null, pair);
+ 
+  var full_match = this._table.filter(equal);
+  if (full_match.length !== 0) {
+    var full_index = this._table.indexOf(full_match[0]);
+    if (!this._isShadowed(full_index)) {
+      return {
+        name: full_index,
+        value: full_index,
+        index: -1
+      };
+    }
+  }
+ 
+  var name = pair[0].toLowerCase();
+  var name_match = this._table.filter(function(entry) {
+    return entry[0].toLowerCase() === name;
+  });
+  if (name_match.length !== 0) {
+    var name_index = this._table.indexOf(name_match[0]);
+    if (!this._isShadowed(name_index)) {
+      return {
+        name: name_index,
+        value: pair[1],
+        index: name_index
+      };
+    }
+  }
+ 
+  return {
+    name: name,
+    value: pair[1],
+    index: Infinity
+  };
+};
+ 
+// `generateRemoveCommand` generates a command (an Indexed Header Representation) that causes the
+// decoder to drop the given pair from the Working Set.
+CompressionContext.prototype.generateRemoveCommand = function(pair) {
+  var match;
+ 
+  for (var i = 0; i < this._working.length; i++) {
+    if (this._working[i].pair === pair) {
+      match = this._working[i];
+      break;
+    }
+  }
+ 
+  return {
+    name: match.index,
+    value: match.index,
+    index: -1
+  };
+};
+ 
+// The header table size can be bounded so as to limit the memory requirements.
+// The `_enforceSizeBound()` private method drops the entries that are over the limit
+// (`this._limit`).
+//
+// The header table size is defined as the sum of the size of each entry of the table. The size
+// of an entry is the sum of the length in bytes of its name, of value's length in bytes and of
+// 32 bytes (for accounting for the entry structure overhead).
+CompressionContext.prototype._enforceSizeBound = function() {
+  var table = this._table;
+  var size = 0;
+  for (var i = 0; i < table.length; i++) {
+    if (table[i].size === undefined) {
+      table[i].size = new Buffer(table[i][0] + table[i][1], 'utf8').length + 32;
+    }
+    size += table[i].size;
+  }
+  while (size > this._limit) {
+    var dropped = table.shift();
+    size -= dropped.size;
+  }
+};
+ 
+// [Decompression process](http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-00#section-3.4)
+// =======================
+ 
+// The decompression process is always done by a `Decompressor` object.
+//
+// The compression related mutable state is stored in a contained `CompressionContext` object.
+// The initial value of it's Header Table depends on which side of the connection is it on.
+function Decompressor(type, log) {
+  this._log = (log || logging.root).child({ component: 'decompressor' });
+ 
+  var initial_table = (type === 'REQUEST') ? CompressionContext.initialRequestTable
+                                           : CompressionContext.initialResponseTable;
+  this._context = new CompressionContext(initial_table);
+ 
+  this._initializeStream();
+}
+Decompressor.prototype = Object.create(Transform.prototype, { constructor: { value: Decompressor } });
+ 
+// The `decompress` method takes a buffer, and returns the decoded header set.
+//
+// According to the spec, to ensure a correct decoding of a set of headers, the following steps or
+// equivalent ones MUST be executed by the decoder.
+Decompressor.prototype.decompress = function decompress(buffer) {
+  this._log.trace({ data: buffer }, 'Starting header decompression');
+ 
+  // * First, upon starting the decoding of a new set of headers, the reference set of headers is
+  // interpreted into the working set of headers
+  this._context.reinitialize();
+ 
+  // * Then, the header representations are processed in their order of occurrence in the frame.
+  // The decoding process of the header representations are defined in the `execute(command)`
+  // method of the `CompressionContext` class.
+  buffer.cursor = 0;
+  while (buffer.cursor < buffer.length) {
+    this._context.execute(Decompressor.header(buffer));
+  }
+ 
+  // * When all the header representations have been processed, the working set contains all the
+  // headers of the set of headers.
+  var pairs = this._context.getWorkingSet();
+ 
+  // * The working set entries are `[name, value]` pairs. As a last step, these are converted to the
+  // usual header set format used in node.js: `{ name1: value1, name2: [value2, value3], ... }`
+  var headers = {};
+  for (var i = 0; i < pairs.length; i++) {
+    var name = pairs[i][0];
+    var value = pairs[i][1];
+    if (name in headers) {
+      if (headers[name] instanceof Array) {
+        headers[name].push(value);
+      } else {
+        headers[name] = [headers[name], value];
+      }
+    } else {
+      headers[name] = value;
+    }
+  }
+  this._log.debug({ headers: headers }, 'Header decompression is done');
+  return headers;
+};
+ 
+// Compression process
+// ===================
+ 
+// The decompression process is always done by a `Compressor` object.
+//
+// The compression related mutable state is stored in a contained `CompressionContext` object.
+// The initial value of it's Header Table depends on which side of the connection is it on.
+function Compressor(type, log) {
+  this._log = (log || logging.root).child({ component: 'compressor' });
+ 
+  var initial_table = (type === 'REQUEST') ? CompressionContext.initialRequestTable
+                                           : CompressionContext.initialResponseTable;
+  this._context = new CompressionContext(initial_table);
+ 
+  this._initializeStream();
+}
+Compressor.prototype = Object.create(Transform.prototype, { constructor: { value: Compressor } });
+ 
+// The `compress` method takes a header set and returns an array of buffers containing the
+// encoded binary data.
+//
+// The inverse of the decoding process goes follows:
+Compressor.prototype.compress = function compress(headers) {
+  this._log.debug({ headers: headers }, 'Starting header compression');
+  var i;
+ 
+  // * First, the usual node.js header set format (`{ name1: value1, name2: [value2, value3], ... }`)
+  // has to be converted to `[name, value]` pairs.
+  var pairs = [];
+  for (var name in headers) {
+    var value = headers[name];
+    if (value instanceof Array) {
+      for (i = 0; i< value.length; i++) {
+        pairs.push([name, value[i]]);
+      }
+    } else {
+      pairs.push([name, value]);
+    }
+  }
+ 
+  // * Before generating commands that make the working set equal to the generated pair set,
+  // the reference set and the working set has to be reinitialized.
+  this._context.reinitialize();
+  var working = this._context.getWorkingSet(), command, commands = [];
+ 
+  // * The first commands remove the unneeded headers from the working set.
+  for (i = 0; i < working.length; i++) {
+    if (!pairs.some(CompressionContext.equal.bind(null, working[i]))) {
+      command = this._context.generateRemoveCommand(working[i]);
+      this._context.execute(command);
+      commands.push(command);
+    }
+  }
+ 
+  // * Then the headers that are not present in the working set yet are added.
+  for (i = 0; i < pairs.length; i++) {
+    if (!working.some(CompressionContext.equal.bind(null, pairs[i]))) {
+      command = this._context.generateAddCommand(pairs[i]);
+      this._context.execute(command);
+      commands.push(command);
+    }
+  }
+ 
+  // * The last step is the serialization of the generated commands.
+  var buffers = [];
+  for (i = 0; i < commands.length; i++) {
+    buffers.push(Compressor.header(commands[i]));
+  }
+ 
+  var buffer = utils.concat(Array.prototype.concat.apply([], buffers)); // [[bufs]] -> [bufs] -> buf
+ 
+  this._log.trace({ data: buffer }, 'Header compression is done');
+  return buffer;
+};
+ 
+// [Detailed Format](http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-00#section-4)
+// =================
+ 
+// Integer representation
+// ----------------------
+//
+// The algorithm to represent an integer I is as follows:
+//
+// 1. If I < 2^N - 1, encode I on N bits
+// 2. Else, encode 2^N - 1 on N bits and do the following steps:
+//    1. Set I to (I - (2^N - 1)) and Q to 1
+//    2. While Q > 0
+//       1. Compute Q and R, quotient and remainder of I divided by 2^7
+//       2. If Q is strictly greater than 0, write one 1 bit; otherwise, write one 0 bit
+//       3. Encode R on the next 7 bits
+//       4. I = Q
+ 
+Compressor.integer = function writeInteger(I, N) {
+  var limit = Math.pow(2,N) - 1;
+  if (I < limit) {
+    return [new Buffer([I])];
+  }
+ 
+  var bytes = [];
+  if (N !== 0) {
+    bytes.push(limit);
+  }
+  I -= limit;
+ 
+  var Q = 1, R;
+  while (Q > 0) {
+    Q = Math.floor(I / 128);
+    R = I % 128;
+ 
+    if (Q > 0) {
+      R += 128;
+    }
+    bytes.push(R);
+ 
+    I = Q;
+  }
+ 
+  return [new Buffer(bytes)];
+};
+ 
+// The inverse algorithm:
+//
+// 1. Set I to the number coded on the lower N bits of the first byte
+// 2. If I is smaller than 2^N - 1 then return I
+// 2. Else the number is encoded on more than one byte, so do the following steps:
+//    1. Set M to 0
+//    2. While returning with I
+//       1. Let B be the next byte (the first byte if N is 0)
+//       2. Read out the lower 7 bits of B and multiply it with 2^M
+//       3. Increase I with this number
+//       4. Increase M by 7
+//       5. Return I if the most significant bit of B is 0
+ 
+Decompressor.integer = function readInteger(buffer, N) {
+  var limit = Math.pow(2,N) - 1;
+ 
+  var I = buffer[buffer.cursor] & limit;
+  if (N !== 0) {
+    buffer.cursor += 1;
+  }
+ 
+  if (I === limit) {
+    var M = 0;
+    do {
+      I += (buffer[buffer.cursor] & 127) << M;
+      M += 7;
+      buffer.cursor += 1;
+    } while (buffer[buffer.cursor - 1] & 128);
+  }
+ 
+  return I;
+};
+ 
+// String literal representation
+// -----------------------------
+//
+// Literal **strings** can represent header names or header values.  They are encoded in two parts:
+//
+// 1. The string length, defined as the number of bytes needed to store its UTF-8 representation,
+//    is represented as an integer with a zero bits prefix.  If the string length is strictly less
+//    than 128, it is represented as one byte.
+// 2. The string value represented as a list of UTF-8 characters.
+ 
+Compressor.string = function writeString(str) {
+  var encoded_string = new Buffer(str, 'utf8');
+  var encoded_length = Compressor.integer(encoded_string.length, 0);
+  return encoded_length.concat(encoded_string);
+};
+ 
+Decompressor.string = function readString(buffer) {
+  var length = Decompressor.integer(buffer, 0);
+  var str = buffer.toString('utf8', buffer.cursor, buffer.cursor + length);
+  buffer.cursor += length;
+  return str;
+};
+ 
+// [Header represenations](http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-00#section-4.3)
+// -----------------------
+ 
+// The JavaScript object representation is described near the
+// `CompressionContext.prototype.execute()` method definition.
+//
+// **All binary header representations** start with a prefix signaling the representation type and
+// an index represented using prefix coded integers:
+//
+//       0   1   2   3   4   5   6   7
+//     +---+---+---+---+---+---+---+---+
+//     | 1 |        Index (7+)         |  Indexed Representation
+//     +---+---------------------------+
+//
+//     +---+---+---+---+---+---+---+---+
+//     | 0 | 1 | 1 |    Index (5+)     |  Literal w/o Indexing
+//     +---+---+---+-------------------+
+//
+//     +---+---+---+---+---+---+---+---+
+//     | 0 | 1 | 0 |    Index (5+)     |  Literal w/ Incremental Indexing
+//     +---+---+---+-------------------+
+//
+//     +---+---+---+---+---+---+---+---+
+//     | 0 | 0 |      Index (6+)       |  Literal w/ Substitution Indexing
+//     +---+---+-----------------------+
+//
+// The **Indexed Representation** consists of the 1-bit prefix and the Index that is represented as
+// a 7-bit prefix coded integer and nothing else.
+//
+// After the first bits, **all literal representations** specify the header name, either as a
+// pointer to the Header Table (Index) or a string literal. When the string literal representation
+// is used, the Index is set to 0 and the string literal starts at the second byte.
+//
+// When using **Substitution Indexing**, a new index comes next represented as a 0-bit prefix
+// integer, specifying the record in the Header Table that needs to be replaced.
+//
+// For **all literal representations**, the specification of the header value comes next. It is
+// always represented as a string.
+ 
+var representations = {
+  indexed             : { prefix: 7, pattern: 0x80 },
+  literal             : { prefix: 5, pattern: 0x60 },
+  literal_incremental : { prefix: 5, pattern: 0x40 },
+  literal_substitution: { prefix: 6, pattern: 0x00 }
+};
+ 
+Compressor.header = function writeString(header) {
+  var representation, buffers = [];
+ 
+  if (typeof header.value === 'number') {
+    representation = representations.indexed;
+  } else if (header.index === -1) {
+    representation = representations.literal;
+  } else if (header.index === Infinity) {
+    representation = representations.literal_incremental;
+  } else {
+    representation = representations.literal_substitution;
+  }
+ 
+  if (representation === representations.indexed) {
+    buffers.push(Compressor.integer(header.value, representation.prefix));
+ 
+  } else {
+    if (typeof header.name === 'number') {
+      buffers.push(Compressor.integer(header.name + 1, representation.prefix));
+    } else {
+      buffers.push(Compressor.integer(0, representation.prefix));
+      buffers.push(Compressor.string(header.name));
+    }
+ 
+    if (representation === representations.literal_substitution) {
+      buffers.push(Compressor.integer(header.index, 0));
+    }
+ 
+    buffers.push(Compressor.string(header.value));
+  }
+ 
+  buffers[0][0][0] |= representation.pattern;
+ 
+  return Array.prototype.concat.apply([], buffers); // array of arrays of buffers -> array of buffers
+};
+ 
+Decompressor.header = function readString(buffer) {
+  var representation, header = {};
+ 
+  var first_byte = buffer[buffer.cursor];
+  if (first_byte & 0x80) {
+    representation = representations.indexed;
+  } else if (first_byte & 0x40) {
+    if (first_byte & 0x20) {
+      representation = representations.literal;
+    } else {
+      representation = representations.literal_incremental;
+    }
+  } else {
+    representation = representations.literal_substitution;
+  }
+ 
+  if (representation === representations.indexed) {
+    header.value = header.name = Decompressor.integer(buffer, representation.prefix);
+    header.index = -1;
+ 
+  } else {
+    header.name = Decompressor.integer(buffer, representation.prefix) - 1;
+    if (header.name === -1) {
+      header.name = Decompressor.string(buffer);
+    }
+ 
+    if (representation === representations.literal_substitution) {
+      header.index = Decompressor.integer(buffer, 0);
+    } else if (representation === representations.literal_incremental) {
+      header.index = Infinity;
+    } else {
+      header.index = -1;
+    }
+ 
+    header.value = Decompressor.string(buffer);
+  }
+ 
+  return header;
+};
+ 
+// The compression layer
+// =====================
+ 
+// This section describes the interaction between the compressor/decompressor and the rest of the
+// HTTP/2 implementation. The Compressor and the Decompressor makes up a layer between the
+// [framer](framer.html) and the [connection handling component](connection.html). They let most
+// frames pass through, except HEADERS and PUSH_PROMISE frames. They convert the frames between
+// these two representations:
+//
+//     {                                   {
+//      type: 'HEADERS',                    type: 'HEADERS',
+//      flags: {},                          flags: {},
+//      stream: 1,               <===>      stream: 1,
+//      headers: {                          data: Buffer
+//       N1: 'V1',                         }
+//       N2: ['V1', 'V2', ...],
+//       // ...
+//      }
+//     }
+//
+// There are possibly several binary frame that belong to a single non-binary frame.
+ 
+var MAX_HTTP_PAYLOAD_SIZE = 16383;
+ 
+// The Compressor transform stream is basically stateless.
+Compressor.prototype._initializeStream = function _initializeStream() {
+  Transform.call(this, { objectMode: true });
+};
+ 
+Compressor.prototype._transform = function _transform(frame, encoding, done) {
+  // When it receives a HEADERS or PUSH_PROMISE frame
+  if (frame.type === 'HEADERS' || frame.type === 'PUSH_PROMISE') {
+    // * it generates a header block using the compress method
+    var buffer = this.compress(frame.headers);
+ 
+    // * cuts the header block into `chunks` that are not larger than `MAX_HTTP_PAYLOAD_SIZE`
+    var chunks = utils.cut(buffer, MAX_HTTP_PAYLOAD_SIZE);
+ 
+    // * for each `chunk`, it pushes out a `chunk_frame` that is identical to the original, except
+    // the `data` property which holds the given chunk, the END_HEADERS/END_PUSH_STREAM flag that
+    // marks the last frame and the END_STREAM flag which is always false before the end
+    for (var i = 0; i < chunks.length; i++) {
+      var flags = utils.shallow_copy(frame.flags);
+      if (i === chunks.length - 1) {
+        flags['END_' + frame.type] = true;
+      } else {
+        flags['END_' + frame.type] = false;
+        flags['END_STREAM'] = false;
+      }
+ 
+      this.push({
+        type: frame.type,
+        flags: flags,
+        stream: frame.stream,
+        priority: frame.priority,
+        data: chunks[i]
+      });
+    }
+  }
+ 
+  // Otherwise, the frame is forwarded without taking any action
+  else {
+    this.push(frame);
+  }
+ 
+  done();
+};
+ 
+// The Decompressor is a stateful transform stream, since it has to collect multiple frames first,
+// and the decoding comes after unifying the payload of those frames.
+//
+// If there's a frame in progress, `this._in_progress` is `true`. The frames are collected in
+// `this._frames`, and the type of the frame and the stream identifier is stored in `this._type`
+// and `this._stream` respectively.
+Decompressor.prototype._initializeStream = function _initializeStream() {
+  Transform.call(this, { objectMode: true });
+  this._in_progress = false;
+  this._type = undefined;
+  this._stream = undefined;
+  this._frames = undefined;
+};
+ 
+// When a `frame` arrives
+Decompressor.prototype._transform = function _transform(frame, encoding, done) {
+  // * and the collection process is already `_in_progress`, the frame is simply stored, except if
+  // it's an illegal frame
+  if (this._in_progress) {
+    if (frame.type !== this._type || frame.stream !== this._stream) {
+      this.emit('error', 'A series of header frames must not be interleaved with other frames!');
+    }
+    this._frames.push(frame);
+  }
+ 
+  // * and the collection process is not `_in_progress`, but the new frame's type is HEADERS or
+  // PUSH_PROMISE, a new collection process begins
+  else if (frame.type === 'HEADERS' || frame.type === 'PUSH_PROMISE') {
+    this._in_progress = true;
+    this._type = frame.type;
+    this._stream = frame.stream;
+    this._frames = [frame];
+  }
+ 
+  // * otherwise, the frame is forwarded without taking any action
+  else {
+    this.push(frame);
+  }
+ 
+  // When the frame signals that it's the last in the series, the header block chunks are
+  // concatenated, the headers are decompressed, and a new frame gets pushed out with the
+  // decompressed headers.
+  if (this._in_progress && (frame.flags.END_HEADERS || frame.flags.END_PUSH_PROMISE)) {
+    var buffer = utils.concat(this._frames.map(function(frame) {
+      return frame.data;
+    }));
+    var headers = this.decompress(buffer);
+    this.push({
+      type: frame.type,
+      flags: frame.flags,
+      stream: frame.stream,
+      priority: frame.priority,
+      headers: headers
+    });
+    this._in_progress = false;
+  }
+ 
+  done();
+};
+ 
+// [Initial header names](http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-00#appendix-A)
+// ======================
+ 
+CompressionContext.initialRequestTable  = [
+  [ ':scheme'                     , 'http'  ],
+  [ ':scheme'                     , 'https' ],
+  [ ':host'                       , ''      ],
+  [ ':path'                       , '/'     ],
+  [ ':method'                     , 'get'   ],
+  [ 'accept'                      , ''      ],
+  [ 'accept-charset'              , ''      ],
+  [ 'accept-encoding'             , ''      ],
+  [ 'accept-language'             , ''      ],
+  [ 'cookie'                      , ''      ],
+  [ 'if-modified-since'           , ''      ],
+  [ 'keep-alive'                  , ''      ],
+  [ 'user-agent'                  , ''      ],
+  [ 'proxy-connection'            , ''      ],
+  [ 'referer'                     , ''      ],
+  [ 'accept-datetime'             , ''      ],
+  [ 'authorization'               , ''      ],
+  [ 'allow'                       , ''      ],
+  [ 'cache-control'               , ''      ],
+  [ 'connection'                  , ''      ],
+  [ 'content-length'              , ''      ],
+  [ 'content-md5'                 , ''      ],
+  [ 'content-type'                , ''      ],
+  [ 'date'                        , ''      ],
+  [ 'expect'                      , ''      ],
+  [ 'from'                        , ''      ],
+  [ 'if-match'                    , ''      ],
+  [ 'if-none-match'               , ''      ],
+  [ 'if-range'                    , ''      ],
+  [ 'if-unmodified-since'         , ''      ],
+  [ 'max-forwards'                , ''      ],
+  [ 'pragma'                      , ''      ],
+  [ 'proxy-authorization'         , ''      ],
+  [ 'range'                       , ''      ],
+  [ 'te'                          , ''      ],
+  [ 'upgrade'                     , ''      ],
+  [ 'via'                         , ''      ],
+  [ 'warning'                     , ''      ]
+];
+ 
+CompressionContext.initialResponseTable = [
+  [ ':status'                     , '200'   ],
+  [ 'age'                         , ''      ],
+  [ 'cache-control'               , ''      ],
+  [ 'content-length'              , ''      ],
+  [ 'content-type'                , ''      ],
+  [ 'date'                        , ''      ],
+  [ 'etag'                        , ''      ],
+  [ 'expires'                     , ''      ],
+  [ 'last-modified'               , ''      ],
+  [ 'server'                      , ''      ],
+  [ 'set-cookie'                  , ''      ],
+  [ 'vary'                        , ''      ],
+  [ 'via'                         , ''      ],
+  [ 'access-control-allow-origin' , ''      ],
+  [ 'accept-ranges'               , ''      ],
+  [ 'allow'                       , ''      ],
+  [ 'connection'                  , ''      ],
+  [ 'content-disposition'         , ''      ],
+  [ 'content-encoding'            , ''      ],
+  [ 'content-language'            , ''      ],
+  [ 'content-location'            , ''      ],
+  [ 'content-md5'                 , ''      ],
+  [ 'content-range'               , ''      ],
+  [ 'link'                        , ''      ],
+  [ 'location'                    , ''      ],
+  [ 'p3p'                         , ''      ],
+  [ 'pragma'                      , ''      ],
+  [ 'proxy-authenticate'          , ''      ],
+  [ 'refresh'                     , ''      ],
+  [ 'retry-after'                 , ''      ],
+  [ 'strict-transport-security'   , ''      ],
+  [ 'trailer'                     , ''      ],
+  [ 'transfer-encoding'           , ''      ],
+  [ 'warning'                     , ''      ],
+  [ 'www-authenticate'            , ''      ]
+];
+ 
+ +
+ + + + + + + + diff --git a/coverage/lcov-report/lib/connection.js.html b/coverage/lcov-report/lib/connection.js.html new file mode 100644 index 00000000..4eadb90f --- /dev/null +++ b/coverage/lcov-report/lib/connection.js.html @@ -0,0 +1,1190 @@ + + + + Code coverage report for lib/connection.js + + + + + + + +
+

Code coverage report for lib/connection.js

+

+ + Statements: 75.86% (88 / 116)      + + + Branches: 60.71% (17 / 28)      + + + Functions: 71.43% (15 / 21)      + + + Lines: 75.86% (88 / 116)      + +

+
All files » lib/ » connection.js
+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +2961 +1 +1 +1 +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1 +  +  +1 +  +6 +  +  +6 +  +  +6 +  +  +6 +  +  +6 +  +  +6 +  +1 +  +  +  +  +1 +6 +6 +12 +12 +  +6 +6 +  +6 +6 +  +  +1 +2 +2 +2 +2 +2 +  +  +1 +1 +1 +1 +  +  +  +  +  +1 +26 +  +26 +26 +41 +41 +41 +16 +16 +  +  +  +  +26 +26 +26 +  +  +  +  +  +  +  +  +  +  +  +  +1 +16 +  +16 +1 +1 +1 +  +  +16 +  +16 +  +16 +  +  +  +  +  +1 +6 +  +6 +6 +  +  +  +  +6 +6 +6 +  +  +  +  +  +6 +  +  +1 +  +  +  +  +  +1 +6 +6 +6 +  +  +1 +  +  +  +  +  +  +  +  +  +1 +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1 +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1 +  +  +1 +  +  +  +  +  +1 +  +6 +  +  +  +  +  +  +  +  +6 +6 +  +  +  +  +1 +  +  +  +  +  +1 +  +  +  +  +  +  +  +1 +6 +  +  +  +  +  +  +  +  +  +  +1 +6 +6 +  +  +  +6 +  +  +1 +16 +2 +  +  +2 +  +  +16 +  + 
var utils   = require('./utils');
+var logging = require('./logging');
+var Stream  = require('./stream').Stream;
+var Duplex  = require('stream').Duplex;
+ 
+// Overview
+// --------
+ 
+//              |    ^             |    ^
+//              v    |             v    |
+//         +--------------+   +--------------+
+//     +---|   stream1    |---|   stream2    |----      ....      ---+
+//     |   | +----------+ |   | +----------+ |                       |
+//     |   | | stream1. | |   | | stream2. | |                       |
+//     |   +-| upstream |-+   +-| upstream |-+                       |
+//     |     +----------+       +----------+                         |
+//     |       |     ^             |     ^                           |
+//     |       v     |             v     |                           |
+//     |       +-----+-------------+-----+--------      ....         |
+//     |       ^     |             |     |                           |
+//     |       |     v             |     |                           |
+//     |   +--------------+        |     |                           |
+//     |   |   stream0    |        |     |                           |
+//     |   |  connection  |        |     |                           |
+//     |   |  management  |     multiplexing                         |
+//     |   +--------------+     flow control                         |
+//     |                           |     ^                           |
+//     |                   _read() |     | _write()                  |
+//     |                           v     |                           |
+//     |                +------------+ +-----------+                 |
+//     |                |output queue| |input queue|                 |
+//     +----------------+------------+-+-----------+-----------------+
+//                                 |     ^
+//                          read() |     | write()
+//                                 v     |
+ 
+// Connection
+// ----------
+ 
+exports.Connection = Connection;
+ 
+// The main aspects of managing the connection are:
+function Connection(firstStreamId, settings, log) {
+  // * handling IO, particularly multiplexing/demultiplexing incoming and outgoing frames
+  Duplex.call(this, { objectMode: true });
+ 
+  // * logging: every method uses the common logger object
+  this._log = (log || logging.root).child({ component: 'connection' });
+ 
+  // * stream management
+  this._initializeStreamManagement(firstStreamId);
+ 
+  // * settings management
+  this._initializeSettingsManagement(settings);
+ 
+  // * lifecycle management
+  this._initializeLifecycleManagement();
+ 
+  // * flow control
+  this._initializeFlowControl();
+}
+Connection.prototype = Object.create(Duplex.prototype, { constructor: { value: Connection } });
+ 
+// Stream management
+// -----------------
+ 
+Connection.prototype._initializeStreamManagement = function _initializeStreamManagement(firstStreamId) {
+  this._control = new Duplex({ objectMode: true });
+  this._control._write = function(frame, encoding, done) {
+    this.emit(frame.type, frame);
+    done();
+  };
+  this._control._read = utils.noop;
+  this._control.on('readable', this.emit.bind(this, 'stream_readable'));
+ 
+  this.streams = [{ upstream: this._control }];
+  this._next_stream_id = firstStreamId;
+};
+ 
+Connection.prototype._newStream = function _newStream(id) {
+  var stream = new Stream(this._log.child({ stream: id }));
+  this._log.trace({ id: id }, 'Adding new stream.');
+  this.streams[id] = stream;
+  stream.upstream.on('readable', this.emit.bind(this, 'stream_readable'));
+  return stream;
+};
+ 
+Connection.prototype.createStream = function createStream() {
+  var id = this._next_stream_id;
+  this._next_stream_id += 2;
+  return this._newStream(id);
+};
+ 
+// Multiplexing
+// ------------
+ 
+Connection.prototype._read = function _read() { // TODO: prioritization
+  this._log.trace('Starting forwarding frames from streams.');
+ 
+  var more_needed = true, stream, frame;
+  for (var id = 0; id < this.streams.length && more_needed; id++) {
+    stream = this.streams[id];
+    Eif (stream) {
+      while (frame = stream.upstream.read()) {
+        frame.stream = id;
+        more_needed = this._send(frame);
+      }
+    }
+  }
+ 
+  Eif (more_needed === true) {
+    this._log.trace('More chunk is needed, but we could not provide more.');
+    this.once('stream_readable', this._read.bind(this));
+  }
+ 
+  else if (more_needed === null) {
+    this._log.trace('We could not send more because of insufficient flow control window.'); // TODO: push back frame
+    this.once('window_update', this._read.bind(this));
+  }
+ 
+  else {
+    this._log.trace('No more chunk needed, stopping forwarding.');
+  }
+};
+ 
+Connection.prototype._write = function write(frame, encoding, done) {
+  var stream = this.streams[frame.stream];
+ 
+  if (!stream) {
+    stream = this._newStream(frame.stream);
+    this.emit('incoming_stream', stream);
+    this._log.debug({ id: frame.stream }, 'New incoming stream.');
+  }
+ 
+  this.emit('receiving', frame);
+ 
+  stream.upstream.write(frame);
+ 
+  done();
+};
+ 
+// Settings management
+// -------------------
+ 
+Connection.prototype._initializeSettingsManagement = function _initializeSettingsManagement(settings) {
+  this._settings = settings;
+ 
+  this._log.info('Sending the first SETTINGS frame as part of the connection header.');
+  this._control.push({
+    type: 'SETTINGS',
+    settings: this._settings
+  });
+ 
+  this.once('receiving', function(frame) {
+    Eif (frame.stream === 0 && frame.type === 'SETTINGS') {
+      this._log.info('Receiving the first SETTINGS frame as part of the connection header.');
+    } else {
+      this.reset();
+    }
+  });
+ 
+  this._control.on('SETTINGS', this._receiveSettings.bind(this));
+};
+ 
+Connection.prototype._receiveSettings = function _receiveSettings(frame) {
+};
+ 
+// Lifecycle management
+// --------------------
+ 
+Connection.prototype._initializeLifecycleManagement = function _initializeLifecycleManagement() {
+  this._pings = {};
+  this._control.on('PING', this._receivePing.bind(this));
+  this._control.on('GOAWAY', this._receiveGoaway.bind(this));
+};
+ 
+Connection.prototype._generatePingId = function _generatePingId() {
+  do {
+    var id = '';
+    for (var i = 0; i < 16; i++) {
+      id += Math.floor(Math.random()*16).toString(16);
+    }
+  } while(!(id in this._pings));
+  return id;
+};
+ 
+Connection.prototype.ping = function ping(callback) {
+  var id = this._generatePingId();
+  var data = new Buffer(id, 'hex');
+  this._pings[id] = callback;
+ 
+  this._log.debug({ data: data }, 'Sending PING.')
+  this._control.push({
+    type: 'PING',
+    flags: {
+      PONG: false
+    },
+    data: new Buffer(id, 'hex')
+  });
+};
+ 
+Connection.prototype._receivePing = function _receivePing(frame) {
+  if (frame.flags.PONG) {
+    var id = frame.data.toString('hex');
+    if (id in this._pings) {
+      this._log.debug({ data: frame.data }, 'Receiving answer for a PING.');
+      this._pings[id]();
+      delete this._pings[id];
+    } else {
+      this._log.warning({ data: frame.data }, 'Unsolicited PING answer.');
+    }
+ 
+  } else {
+    this._log.debug({ data: frame.data }, 'Answering PING.')
+    this._control.push({
+      type: 'PING',
+      flags: {
+        PONG: true
+      },
+      data: frame.data
+    });
+  }
+};
+ 
+Connection.prototype.reset = function reset() {
+};
+ 
+Connection.prototype._receiveGoaway = function _receiveGoaway(frame) {
+};
+ 
+// Flow control
+// ------------
+ 
+Connection.prototype._initializeFlowControl = function _initializeFlowControl() {
+  // Turning off flow control for incoming frames (not yet supported):
+  this._control.push({
+    type: 'WINDOW_UPDATE',
+    flags: {
+      END_FLOW_CONTROL: true
+    },
+    window_size: 0
+  });
+ 
+  // Initializing flow control for outgoing frames
+  this._window = INITIAL_WINDOW_SIZE;
+  this._control.on('WINDOW_UPDATE', this._updateWindow.bind(this));
+};
+ 
+// When a HTTP/2.0 connection is first established, new streams are created with an initial flow
+// control window size of 65535 bytes.
+var INITIAL_WINDOW_SIZE = 65535;
+ 
+// A SETTINGS frame can alter the initial flow control window size for all current streams. When the
+// value of SETTINGS_INITIAL_WINDOW_SIZE changes, a receiver MUST adjust the size of all stream by
+// calling the `setInitialWindowSize` method. The window size has to be modified by the difference
+// between the new value and the old value.
+Connection.prototype.setInitialWindowSize = function setInitialWindowSize(initialWindowSize) {
+  this._window = this._window - this._initialWindowSize + initialWindowSize;
+  this._initialWindowSize = initialWindowSize;
+};
+ 
+// Flow control can be disabled for all streams on the connection using the `disableFlowControl`
+// method. This may happen when there's a SETTINGS frame received with the
+// SETTINGS_FLOW_CONTROL_OPTIONS setting.
+Connection.prototype.disableFlowControl = function disableFlowControl() {
+  this._window = Infinity;
+};
+ 
+// The `_updateWindow` method gets called every time there's an incoming WINDOW_UPDATE frame. It
+// modifies the modifies the flow control window:
+//
+// * Flow control can be disabled for an individual stream by sending a WINDOW_UPDATE with the
+//   END_FLOW_CONTROL flag set. The payload of a WINDOW_UPDATE frame that has the END_FLOW_CONTROL
+//   flag set is ignored.
+// * A sender that receives a WINDOW_UPDATE frame updates the corresponding window by the amount
+//   specified in the frame.
+Connection.prototype._updateWindow = function _updateWindow(frame) {
+  Eif (frame.flags.END_FLOW_CONTROL) {
+    this.disableFlowControl();
+  } else {
+    this._window += frame.window_size;
+  }
+  this.emit('window_update');
+};
+ 
+Connection.prototype._send = function _send(frame) {
+  if (frame && frame.type === 'DATA') {
+    Iif (frame.data.length > this._window) {
+      return null;
+    }
+    this._window -= frame.data.length;
+  }
+ 
+  return this.push(frame);
+};
+ 
+ +
+ + + + + + + + diff --git a/coverage/lcov-report/lib/endpoint.js.html b/coverage/lcov-report/lib/endpoint.js.html new file mode 100644 index 00000000..31f1cb9b --- /dev/null +++ b/coverage/lcov-report/lib/endpoint.js.html @@ -0,0 +1,809 @@ + + + + Code coverage report for lib/endpoint.js + + + + + + + +
+

Code coverage report for lib/endpoint.js

+

+ + Statements: 90.28% (65 / 72)      + + + Branches: 72.22% (13 / 18)      + + + Functions: 88.89% (8 / 9)      + + + Lines: 90.28% (65 / 72)      + +

+
All files » lib/ » endpoint.js
+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +1691 +1 +1 +1 +1 +1 +1 +  +1 +  +  +  +  +  +1 +2 +  +  +2 +  +  +  +2 +1 +1 +1 +  +  +  +  +  +  +  +2 +  +  +2 +  +1 +  +  +  +  +1 +  +  +1 +1 +1 +  +  +  +1 +  +1 +  +  +1 +  +  +1 +1 +24 +  +  +  +  +  +24 +  +  +  +  +1 +1 +1 +1 +1 +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1 +2 +2 +1 +1 +1 +  +1 +1 +1 +  +  +2 +2 +2 +2 +2 +  +2 +2 +  +  +1 +12 +12 +8 +  +  +12 +12 +  +  +  +1 +7 +  +  +  +  +  +1 +2 +2 +2 +2 +2 +  +  +1 +  +  +  +  + 
var logging      = require('./logging');
+var Serializer   = require('./framer').Serializer;
+var Deserializer = require('./framer').Deserializer;
+var Compressor   = require('./compressor').Compressor;
+var Decompressor = require('./compressor').Decompressor;
+var Connection   = require('./connection').Connection;
+var Duplex       = require('stream').Duplex;
+ 
+exports.Endpoint = Endpoint;
+ 
+// Endpoint
+// ========
+ 
+// The process of initialization:
+function Endpoint(role, settings, log) {
+  Duplex.call(this);
+ 
+  // * Initializing logging infrastructure
+  this._log = (log || logging.root).child({ component: 'endpoint' });
+ 
+  // * First part of the handshake process: sending and receiving the client connection header
+  //   prelude.
+  if (role === 'CLIENT') {
+    this._writePrelude();
+  } else Eif (role === 'SERVER') {
+    this._readPrelude();
+  } else {
+    throw new Error('Invalid role: ' + role);
+  }
+ 
+  // * Initialization of componenet. This includes the second part of the handshake process:
+  //   sending the first SETTINGS frame. This is done by the connection class right after
+  //   initialization.
+  this._initializeDataFlow(role, settings);
+ 
+  // * Initializing error handling.
+  this._initializeErrorHandling();
+}
+Endpoint.prototype = Object.create(Duplex.prototype, { constructor: { value: Endpoint } });
+ 
+// Handshake
+// ---------
+ 
+var CLIENT_PRELUDE = new Buffer('PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n');
+ 
+// Writing the client header is simple and synchronous.
+Endpoint.prototype._writePrelude = function _writePrelude() {
+  this._log.info('Sending the client connection header prelude.');
+  this.push(CLIENT_PRELUDE);
+};
+ 
+// The asynchronous process of reading the client header:
+Endpoint.prototype._readPrelude = function _readPrelude() {
+  // * progress in the header is tracker using a `cursor`
+  var cursor = 0;
+ 
+  // * `_write` is temporarily replaced by the comparator function
+  this._write = function _temporalWrite(chunk, encoding, done) {
+    // * which compares the stored header with the current `chunk` byte by byte and emits the
+    //   'error' event if there's a byte that doesn't match
+    var offset = cursor;
+    while(cursor < CLIENT_PRELUDE.length && (cursor - offset) < chunk.length) {
+      Iif (CLIENT_PRELUDE[cursor] !== chunk[cursor - offset]) {
+        this._log.fatal({ cursor: cursor, offset: offset, chunk: chunk },
+                        'Client connection header prelude does not match.');
+        this._error('handshake', 'Client connection header prelude does not match.');
+        return;
+      }
+      cursor += 1;
+    }
+ 
+    // * if the whole header is over, and there were no error then restore the original `_write`
+    //   and call it with the remaining part of the current chunk
+    Eif (cursor === CLIENT_PRELUDE.length) {
+      this._log.info('Successfully received the client connection header prelude.');
+      delete this._write;
+      chunk = chunk.slice(cursor - offset);
+      this._write(chunk, encoding, done);
+    }
+  };
+};
+ 
+// Data flow
+// ---------
+ 
+//     +---------------------------------------------+
+//     |                                             |
+//     |   +-------------------------------------+   |
+//     |   | +---------+ +---------+ +---------+ |   |
+//     |   | | stream1 | | stream2 | |   ...   | |   |
+//     |   | +---------+ +---------+ +---------+ |   |
+//     |   |             connection              |   |
+//     |   +-------------------------------------+   |
+//     |             |                 ^             |
+//     |        pipe |                 | pipe        |
+//     |             v                 |             |
+//     |   +------------------+------------------+   |
+//     |   |    compressor    |   decompressor   |   |
+//     |   +------------------+------------------+   |
+//     |             |                 ^             |
+//     |        pipe |                 | pipe        |
+//     |             v                 |             |
+//     |   +------------------+------------------+   |
+//     |   |    serializer    |   deserializer   |   |
+//     |   +------------------+------------------+   |
+//     |             |                 ^             |
+//     |     _read() |                 | _write()    |
+//     |             v                 |             |
+//     |      +------------+     +-----------+       |
+//     |      |output queue|     |input queue|       |
+//     +------+------------+-----+-----------+-------+
+//                   |                 ^
+//            read() |                 | write()
+//                   v                 |
+ 
+Endpoint.prototype._initializeDataFlow = function _initializeDataFlow(role, settings) {
+  var firstStreamId, compressorRole, decompressorRole;
+  if (role === 'CLIENT') {
+    firstStreamId = 1;
+    compressorRole = 'REQUEST';
+    decompressorRole = 'RESPONSE';
+  } else {
+    firstStreamId = 2;
+    compressorRole = 'RESPONSE';
+    decompressorRole = 'REQUEST';
+  }
+ 
+  this._serializer   = new Serializer(this._log);
+  this._deserializer = new Deserializer(this._log);
+  this._compressor   = new Compressor(compressorRole, this._log);
+  this._decompressor = new Decompressor(decompressorRole, this._log);
+  this._connection   = new Connection(firstStreamId, settings, this._log);
+ 
+  this._connection.pipe(this._compressor).pipe(this._serializer);
+  this._deserializer.pipe(this._decompressor).pipe(this._connection);
+};
+ 
+Endpoint.prototype._read = function _read(size) {
+  var more_needed = true, chunk;
+  while (more_needed && (chunk = this._serializer.read(size))) {
+    more_needed = this.push(chunk);
+  }
+ 
+  Eif (more_needed) {
+    this._serializer.once('readable', this._read.bind(this));
+  }
+};
+ 
+Endpoint.prototype._write = function _write(chunk, encoding, done) {
+  this._deserializer.write(chunk, encoding, done);
+};
+ 
+// Error handling
+// --------------
+ 
+Endpoint.prototype._initializeErrorHandling = function _initializeErrorHandling() {
+  this._serializer.on('error', this._error.bind(this, 'serializer'));
+  this._deserializer.on('error', this._error.bind(this, 'deserializer'));
+  this._compressor.on('error', this._error.bind(this, 'compressor'));
+  this._decompressor.on('error', this._error.bind(this, 'decompressor'));
+  this._connection.on('error', this._error.bind(this, 'connection'));
+};
+ 
+Endpoint.prototype._error = function _error(component, message) {
+  this._log.fatal({ component: component, message: message }, 'Fatal error, closing connection');
+  this.push(null);
+  this.emit('error', component, message);
+};
+ 
+ +
+ + + + + + + + diff --git a/coverage/lcov-report/lib/framer.js.html b/coverage/lcov-report/lib/framer.js.html new file mode 100644 index 00000000..8a6c0f62 --- /dev/null +++ b/coverage/lcov-report/lib/framer.js.html @@ -0,0 +1,2330 @@ + + + + Code coverage report for lib/framer.js + + + + + + + +
+

Code coverage report for lib/framer.js

+

+ + Statements: 90.23% (194 / 215)      + + + Branches: 75% (42 / 56)      + + + Functions: 86.67% (26 / 30)      + + + Lines: 90.23% (194 / 215)      + +

+
All files » lib/ » framer.js
+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 +310 +311 +312 +313 +314 +315 +316 +317 +318 +319 +320 +321 +322 +323 +324 +325 +326 +327 +328 +329 +330 +331 +332 +333 +334 +335 +336 +337 +338 +339 +340 +341 +342 +343 +344 +345 +346 +347 +348 +349 +350 +351 +352 +353 +354 +355 +356 +357 +358 +359 +360 +361 +362 +363 +364 +365 +366 +367 +368 +369 +370 +371 +372 +373 +374 +375 +376 +377 +378 +379 +380 +381 +382 +383 +384 +385 +386 +387 +388 +389 +390 +391 +392 +393 +394 +395 +396 +397 +398 +399 +400 +401 +402 +403 +404 +405 +406 +407 +408 +409 +410 +411 +412 +413 +414 +415 +416 +417 +418 +419 +420 +421 +422 +423 +424 +425 +426 +427 +428 +429 +430 +431 +432 +433 +434 +435 +436 +437 +438 +439 +440 +441 +442 +443 +444 +445 +446 +447 +448 +449 +450 +451 +452 +453 +454 +455 +456 +457 +458 +459 +460 +461 +462 +463 +464 +465 +466 +467 +468 +469 +470 +471 +472 +473 +474 +475 +476 +477 +478 +479 +480 +481 +482 +483 +484 +485 +486 +487 +488 +489 +490 +491 +492 +493 +494 +495 +496 +497 +498 +499 +500 +501 +502 +503 +504 +505 +506 +507 +508 +509 +510 +511 +512 +513 +514 +515 +516 +517 +518 +519 +520 +521 +522 +523 +524 +525 +526 +527 +528 +529 +530 +531 +532 +533 +534 +535 +536 +537 +538 +539 +540 +541 +542 +543 +544 +545 +546 +547 +548 +549 +550 +551 +552 +553 +554 +555 +556 +557 +558 +559 +560 +561 +562 +563 +564 +565 +566 +567 +568 +569 +570 +571 +572 +573 +574 +575 +576 +577 +578 +579 +580 +581 +582 +583 +584 +585 +586 +587 +588 +589 +590 +591 +592 +593 +594 +595 +596 +597 +598 +599 +600 +601 +602 +603 +604 +605 +606 +607 +608 +609 +610 +611 +612 +613 +614 +615 +616 +617 +618 +619 +620 +621 +622 +623 +624 +625 +626 +627 +628 +629 +630 +631 +632 +633 +634 +635 +636 +637 +638 +639 +640 +641 +642 +643 +644 +645 +646 +647 +648 +649 +650 +651 +652 +653 +654 +655 +656 +657 +658 +659 +660 +661 +662 +663 +664 +665 +666 +667 +668 +669 +670 +671 +672 +673 +674 +675 +676  +  +  +  +1 +  +1 +  +1 +1 +  +  +  +  +  +  +  +  +  +  +  +  +  +1 +3 +3 +  +1 +  +  +  +  +1 +14 +  +14 +  +  +  +14 +14 +14 +  +14 +30 +30 +  +  +14 +  +  +  +  +  +  +  +  +  +  +  +  +  +1 +3 +3 +3 +  +1 +  +  +  +  +  +  +1 +31 +31 +31 +31 +17 +  +  +  +  +  +1 +22 +  +22 +  +22 +  +  +39 +39 +39 +39 +  +  +  +  +  +  +39 +14 +14 +  +  +  +  +  +  +  +39 +14 +14 +14 +14 +14 +  +  +  +  +  +  +  +14 +  +  +  +22 +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1 +1 +  +1 +  +1 +  +1 +  +1 +  +1 +24 +  +24 +24 +26 +  +24 +  +  +24 +  +24 +24 +  +24 +24 +28 +28 +  +  +28 +4 +  +  +24 +  +24 +  +  +24 +  +24 +  +  +1 +24 +  +24 +  +24 +24 +24 +24 +28 +  +  +24 +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1 +  +1 +  +1 +  +1 +2 +  +  +1 +2 +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1 +  +1 +  +1 +  +  +  +  +  +  +  +  +  +  +  +1 +4 +2 +2 +2 +  +4 +  +  +1 +4 +2 +2 +  +2 +  +  +  +  +  +  +  +  +  +  +1 +  +1 +  +1 +  +  +  +  +  +  +  +  +  +1 +2 +2 +2 +  +  +1 +2 +  +  +  +  +  +  +  +  +  +1 +  +1 +  +1 +  +  +  +  +  +  +  +  +  +  +1 +2 +2 +2 +  +  +1 +2 +  +  +  +  +  +  +  +  +  +  +1 +  +1 +  +1 +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1 +4 +4 +12 +6 +6 +6 +  +  +4 +  +  +  +4 +4 +6 +6 +  +  +4 +  +  +1 +4 +  +4 +  +  +4 +6 +6 +6 +6 +  +  +6 +  +  +4 +  +  +  +1 +  +  +  +1 +  +  +  +1 +  +  +  +  +  +1 +  +  +  +  +  +  +  +  +  +  +  +  +  +1 +  +1 +  +1 +  +  +  +  +  +  +  +  +  +  +  +  +  +1 +2 +2 +2 +2 +  +  +1 +2 +2 +  +  +  +  +  +  +  +  +  +  +  +  +  +1 +  +1 +  +1 +  +  +  +1 +2 +  +  +2 +  +  +1 +2 +  +  +2 +  +  +  +  +  +  +  +  +  +1 +  +1 +  +1 +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1 +2 +2 +2 +2 +  +  +1 +2 +2 +  +  +  +  +  +  +  +  +  +  +  +  +  +1 +  +1 +  +1 +  +  +  +  +  +  +1 +4 +4 +4 +  +  +1 +4 +  +  +  +  +  +1 +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1 +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1 +  +  + 
// The framer consists of two [Transform Stream][1] subclasses that operate in [object mode][2]:
+// the Serializer and the Deserializer
+// [1]: http://nodejs.org/api/stream.html#stream_class_stream_transform
+// [2]: http://nodejs.org/api/stream.html#stream_new_stream_readable_options
+var logging = require('./logging');
+ 
+var Transform = require('stream').Transform;
+ 
+exports.Serializer = Serializer;
+exports.Deserializer = Deserializer;
+ 
+ 
+// Serializer
+// ----------
+//
+//     Frame Objects
+//     * * * * * * * --+---------------------------
+//                     |                          |
+//                     v                          v           Buffers
+//      [] -----> Payload Ser. --[buffers]--> Header Ser. --> * * * *
+//     empty      adds payload                adds header
+//     array        buffers                     buffer
+ 
+function Serializer(log) {
+  this._log = (log || logging.root).child({ component: 'serializer' });
+  Transform.call(this, { objectMode: true });
+}
+Serializer.prototype = Object.create(Transform.prototype, { constructor: { value: Serializer } });
+ 
+// When there's an incoming frame object, it first generates the frame type specific part of the
+// frame (payload), and then then adds the header part which holds fields that are common to all
+// frame types (like the length of the payload).
+Serializer.prototype._transform = function _transform(frame, encoding, done) {
+  this._log.debug({ frame: frame }, 'Outgoing frame');
+ 
+  Iif (!(frame.type in Serializer)) {
+    throw new Error('Unknown frame type: ' + frame.type);
+  }
+ 
+  var buffers = [];
+  Serializer[frame.type](frame, buffers);
+  Serializer.commonHeader(frame, buffers);
+ 
+  for (var i = 0; i < buffers.length; i++) {
+    this._log.trace({ data: buffers[i] }, 'Outgoing data.');
+    this.push(buffers[i]);
+  }
+ 
+  done();
+};
+ 
+// Deserializer
+// ------------
+//
+//     Buffers
+//     * * * * --------+-------------------------
+//                     |                        |
+//                     v                        v           Frame Objects
+//      {} -----> Header Des. --{frame}--> Payload Des. --> * * * * * * *
+//     empty      adds parsed              adds parsed
+//     object  header properties        payload properties
+ 
+function Deserializer(log) {
+  this._log = (log || logging.root).child({ component: 'deserializer' });
+  Transform.call(this, { objectMode: true });
+  this._next(COMMON_HEADER_SIZE);
+}
+Deserializer.prototype = Object.create(Transform.prototype, { constructor: { value: Deserializer } });
+ 
+// The Deserializer is stateful, and it's two main alternating states are: *waiting for header* and
+// *waiting for payload*. The state is stored in the boolean property `_waiting_for_header`.
+//
+// When entering a new state, a `_buffer` is created that will hold the accumulated data (header or
+// payload). The `_cursor` is used to track the progress.
+Deserializer.prototype._next = function(size) {
+  this._cursor = 0;
+  this._buffer = new Buffer(size);
+  this._waiting_for_header = !this._waiting_for_header;
+  if (this._waiting_for_header) {
+    this._frame = {};
+  }
+};
+ 
+// Parsing an incoming buffer is an iterative process because it can hold multiple frames if it's
+// large enough. A `cursor` is used to track the progress in parsing the incoming `chunk`.
+Deserializer.prototype._transform = function _transform(chunk, encoding, done) {
+  var cursor = 0;
+ 
+  this._log.trace({ data: chunk }, 'Incoming data.');
+ 
+  while(cursor < chunk.length) {
+    // The content of an incoming buffer is first copied to `_buffer`. If it can't hold the full
+    // chunk, then only a part of it is copied.
+    var to_copy = Math.min(chunk.length - cursor, this._buffer.length - this._cursor);
+    chunk.copy(this._buffer, this._cursor, cursor, cursor + to_copy);
+    this._cursor += to_copy;
+    cursor += to_copy;
+ 
+    // When `_buffer` is full, it's content gets parsed either as header or payload depending on
+    // the actual state.
+ 
+    // If it's header then the parsed data is stored in a temporary variable and then the
+    // deserializer waits for the specified length payload.
+    if (this._cursor === this._buffer.length && this._waiting_for_header) {
+      Deserializer.commonHeader(this._buffer, this._frame);
+      this._next(this._frame.length);
+    }
+ 
+    // If it's payload then the the frame object is finalized and then gets pushed out.
+    // Unknown frame types are ignored.
+    //
+    // Note: If we just finished the parsing of a header and the payload length is 0, this branch
+    // will also run.
+    if (this._cursor === this._buffer.length && !this._waiting_for_header) {
+      Eif (this._frame.type) {
+        try {
+          Deserializer[this._frame.type](this._buffer, this._frame);
+          this._log.debug({ frame: this._frame }, 'Incoming frame');
+          this.push(this._frame);
+        } catch(error) {
+          this._log.error({ err: error }, 'Incoming frame parsing error');
+          this.emit('error', error);
+        }
+      } else {
+        this._log.warn({ frame: this._frame }, 'Unknown type incoming frame');
+      }
+      this._next(COMMON_HEADER_SIZE);
+    }
+  }
+ 
+  done();
+};
+ 
+// [Frame Header](http://http2.github.io/http2-spec/#FrameHeader)
+// --------------------------------------------------------------
+//
+// HTTP/2.0 frames share a common base format consisting of an 8-byte header followed by 0 to 65535
+// bytes of data.
+//
+// Additional size limits can be set by specific application uses. HTTP limits the frame size to
+// 16,383 octets. This limitation is enforced on the connection layer.
+//
+//      0                   1                   2                   3
+//      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+//     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+//     |         Length (16)           |   Type (8)    |   Flags (8)   |
+//     +-+-------------+---------------+-------------------------------+
+//     |R|                 Stream Identifier (31)                      |
+//     +-+-------------------------------------------------------------+
+//     |                     Frame Data (0...)                       ...
+//     +---------------------------------------------------------------+
+//
+// The fields of the frame header are defined as:
+//
+// * Length:
+//   The length of the frame data expressed as an unsigned 16-bit integer. The 8 bytes of the frame
+//   header are not included in this value.
+//
+// * Type:
+//   The 8-bit type of the frame. The frame type determines how the remainder of the frame header
+//   and data are interpreted. Implementations MUST ignore unsupported and unrecognized frame types.
+//
+// * Flags:
+//   An 8-bit field reserved for frame-type specific boolean flags.
+//
+//   Flags are assigned semantics specific to the indicated frame type. Flags that have no defined
+//   semantics for a particular frame type MUST be ignored, and MUST be left unset (0) when sending.
+//
+// * R:
+//   A reserved 1-bit field. The semantics of this bit are undefined and the bit MUST remain unset
+//   (0) when sending and MUST be ignored when receiving.
+//
+// * Stream Identifier:
+//   A 31-bit stream identifier (see Section 3.4.1). A value 0 is reserved for frames that are
+//   associated with the connection as a whole as opposed to an individual stream.
+//
+// The structure and content of the remaining frame data is dependent entirely on the frame type.
+ 
+var COMMON_HEADER_SIZE = 8;
+var MAX_PAYLOAD_SIZE = 65535;
+ 
+var frame_types = [];
+ 
+var frame_flags = {};
+ 
+var generic_attributes = ['length', 'type', 'flags', 'stream'];
+ 
+var type_specific_attributes = {};
+ 
+Serializer.commonHeader = function writeCommonHeader(frame, buffers) {
+  var header_buffer = new Buffer(COMMON_HEADER_SIZE);
+ 
+  var size = 0;
+  for (var i = 0; i < buffers.length; i++) {
+    size += buffers[i].length;
+  }
+  Iif (size > MAX_PAYLOAD_SIZE) {
+    throw new Error('Too large frame: ' + size + ' bytes');
+  }
+  header_buffer.writeUInt16BE(size, 0);
+ 
+  var type_id = frame_types.indexOf(frame.type);  // If we are here then the type is valid for sure
+  header_buffer.writeUInt8(type_id, 2);
+ 
+  var flag_byte = 0;
+  for (var flag in frame.flags) {
+    var position = frame_flags[frame.type].indexOf(flag);
+    Iif (position === -1) {
+      throw new Error('Unknown flag for frame type ' + frame.type + ': ' + flag);
+    }
+    if (frame.flags[flag]) {
+      flag_byte |= (1 << position);
+    }
+  }
+  header_buffer.writeUInt8(flag_byte, 3);
+ 
+  Iif (frame.stream > 0x7fffffff) {
+    throw new Error('Too large stream ID: ' + frame.stream);
+  }
+  header_buffer.writeUInt32BE(frame.stream || 0, 4);
+ 
+  buffers.unshift(header_buffer);
+};
+ 
+Deserializer.commonHeader = function readCommonHeader(buffer, frame) {
+  frame.length = buffer.readUInt16BE(0);
+ 
+  frame.type = frame_types[buffer.readUInt8(2)];
+ 
+  frame.flags = {};
+  var flag_byte = buffer.readUInt8(3);
+  var defined_flags = frame_flags[frame.type];
+  for (var i = 0; i < defined_flags.length; i++) {
+    frame.flags[defined_flags[i]] = Boolean(flag_byte & (1 << i));
+  }
+ 
+  frame.stream = buffer.readUInt32BE(4) & 0x7fffffff;
+};
+ 
+// Frame types
+// ===========
+ 
+// Every frame type is registered in the following places:
+//
+// * `frame_types`: a register of frame type codes (used by `commonHeader()`)
+// * `frame_flags`: a register of valid flags for frame types (used by `commonHeader()`)
+// * `type_specific_attributes`: a register of frame specific frame object attributes (used by
+//   logging code and also serves as documentation for frame objects)
+ 
+// [DATA Frames](http://http2.github.io/http2-spec/#DataFrames)
+// ------------------------------------------------------------
+//
+// DATA frames (type=0x0) convey arbitrary, variable-length sequences of octets associated with a
+// stream.
+//
+// The DATA frame defines the following flags:
+//
+// * END_STREAM (0x1):
+//   Bit 1 being set indicates that this frame is the last that the endpoint will send for the
+//   identified stream.
+// * RESERVED (0x2):
+//   Bit 2 is reserved for future use.
+ 
+frame_types[0x0] = 'DATA';
+ 
+frame_flags.DATA = ['END_STREAM', 'RESERVED'];
+ 
+type_specific_attributes.DATA = ['data'];
+ 
+Serializer.DATA = function writeData(frame, buffers) {
+  buffers.push(frame.data);
+};
+ 
+Deserializer.DATA = function readData(buffer, frame) {
+  frame.data = buffer;
+};
+ 
+// [HEADERS](http://http2.github.io/http2-spec/#HEADERS)
+// --------------------------------------------------------------
+//
+// The HEADERS frame (type=0x1) allows the sender to create a stream.
+//
+// The HEADERS frame defines the following flags:
+//
+// * END_STREAM (0x1):
+//   Bit 1 being set indicates that this frame is the last that the endpoint will send for the
+//   identified stream.
+// * RESERVED (0x2):
+//   Bit 2 is reserved for future use.
+// * END_HEADERS (0x4):
+//   The END_HEADERS bit indicates that this frame contains the entire payload necessary to provide
+//   a complete set of headers.
+// * PRIORITY (0x8):
+//   Bit 4 being set indicates that the first four octets of this frame contain a single reserved
+//   bit and a 31-bit priority.
+ 
+frame_types[0x1] = 'HEADERS';
+ 
+frame_flags.HEADERS = ['END_STREAM', 'RESERVED', 'END_HEADERS', 'PRIORITY'];
+ 
+type_specific_attributes.HEADERS = ['priority', 'headers', 'data'];
+ 
+//      0                   1                   2                   3
+//      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+//     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+//     |X|               (Optional) Priority (31)                      |
+//     +-+-------------------------------------------------------------+
+//     |                    Header Block (*)                         ...
+//     +---------------------------------------------------------------+
+//
+// The payload of a HEADERS frame contains a Headers Block
+ 
+Serializer.HEADERS = function writeHeadersPriority(frame, buffers) {
+  if (frame.flags.PRIORITY) {
+    var buffer = new Buffer(4);
+    buffer.writeUInt32BE(frame.priority & 0x7fffffff, 0);
+    buffers.push(buffer);
+  }
+  buffers.push(frame.data);
+};
+ 
+Deserializer.HEADERS = function readHeadersPriority(buffer, frame) {
+  if (frame.flags.PRIORITY) {
+    frame.priority = buffer.readUInt32BE(0) & 0x7fffffff;
+    frame.data = buffer.slice(4);
+  } else {
+    frame.data = buffer;
+  }
+};
+ 
+// [PRIORITY](http://http2.github.io/http2-spec/#PRIORITY)
+// -------------------------------------------------------
+//
+// The PRIORITY frame (type=0x2) specifies the sender-advised priority of a stream.
+//
+// The PRIORITY frame does not define any flags.
+ 
+frame_types[0x2] = 'PRIORITY';
+ 
+frame_flags.PRIORITY = [];
+ 
+type_specific_attributes.PRIORITY = ['priority'];
+ 
+//      0                   1                   2                   3
+//      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+//     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+//     |X|                   Priority (31)                             |
+//     +-+-------------------------------------------------------------+
+//
+// The payload of a PRIORITY frame contains a single reserved bit and a 31-bit priority.
+ 
+Serializer.PRIORITY = function writePriority(frame, buffers) {
+  var buffer = new Buffer(4);
+  buffer.writeUInt32BE(frame.priority, 0);
+  buffers.push(buffer);
+};
+ 
+Deserializer.PRIORITY = function readPriority(buffer, frame) {
+  frame.priority = buffer.readUInt32BE(0);
+};
+ 
+// [RST_STREAM](http://http2.github.io/http2-spec/#RST_STREAM)
+// -----------------------------------------------------------
+//
+// The RST_STREAM frame (type=0x3) allows for abnormal termination of a stream.
+//
+// No type-flags are defined.
+ 
+frame_types[0x3] = 'RST_STREAM';
+ 
+frame_flags.RST_STREAM = [];
+ 
+type_specific_attributes.RST_STREAM = ['error'];
+ 
+//      0                   1                   2                   3
+//      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+//     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+//     |                         Error Code (32)                       |
+//     +---------------------------------------------------------------+
+//
+// The RST_STREAM frame contains a single unsigned, 32-bit integer identifying the error
+// code (see Error Codes). The error code indicates why the stream is being terminated.
+ 
+Serializer.RST_STREAM = function writeRstStream(frame, buffers) {
+  var buffer = new Buffer(4);
+  buffer.writeUInt32BE(error_codes.indexOf(frame.error), 0);
+  buffers.push(buffer);
+};
+ 
+Deserializer.RST_STREAM = function readRstStream(buffer, frame) {
+  frame.error = error_codes[buffer.readUInt32BE(0)];
+};
+ 
+// [SETTINGS](http://http2.github.io/http2-spec/#SETTINGS)
+// -------------------------------------------------------
+//
+// The SETTINGS frame (type=0x4) conveys configuration parameters that affect how endpoints
+// communicate.
+//
+// The SETTINGS frame does not define any flags.
+ 
+frame_types[0x4] = 'SETTINGS';
+ 
+frame_flags.SETTINGS = [];
+ 
+type_specific_attributes.SETTINGS = ['settings'];
+ 
+// The payload of a SETTINGS frame consists of zero or more settings. Each setting consists of an
+// 8-bit reserved field, an unsigned 24-bit setting identifier, and an unsigned 32-bit value.
+//
+//      0                   1                   2                   3
+//      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+//     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+//     |  Reserved(8)  |             Setting Identifier (24)           |
+//     +---------------+-----------------------------------------------+
+//     |                        Value (32)                             |
+//     +---------------------------------------------------------------+
+//
+// A SETTINGS frame is not required to include every defined setting; senders can include only those
+// parameters for which it has accurate values and a need to convey. When multiple parameters are
+// sent, they SHOULD be sent in order of numerically lowest ID to highest ID. A single SETTINGS
+// frame MUST NOT contain multiple values for the same ID. If the receiver of a SETTINGS frame
+// discovers multiple values for the same ID, it MUST ignore all values for that ID except the first
+// one.
+ 
+Serializer.SETTINGS = function writeSettings(frame, buffers) {
+  var settings = [], settings_left = Object.keys(frame.settings);
+  defined_settings.forEach(function(setting, id) {
+    if (setting.name in frame.settings) {
+      settings_left.splice(settings_left.indexOf(setting.name), 1);
+      var value = frame.settings[setting.name];
+      settings.push({ id: id, value: setting.flag ? Boolean(value) : value });
+    }
+  });
+  Iif (settings_left.length !== 0) {
+    throw new Error('Unknown settings: ' + settings_left.join(', '));
+  }
+ 
+  var buffer = new Buffer(settings.length * 8);
+  for (var i = 0; i < settings.length; i++) {
+    buffer.writeUInt32BE(settings[i].id & 0xffffff, i*8);
+    buffer.writeUInt32BE(settings[i].value, i*8 + 4);
+  }
+ 
+  buffers.push(buffer);
+};
+ 
+Deserializer.SETTINGS = function readSettings(buffer, frame) {
+  frame.settings = {};
+ 
+  Iif (buffer.length % 8 !== 0) {
+    throw new Error('Invalid SETTINGS frame.');
+  }
+  for (var i = 0; i < buffer.length / 8; i++) {
+    var id = buffer.readUInt32BE(i*8) & 0xffffff;
+    var setting = defined_settings[id];
+    var value = buffer.readUInt32BE(i*8 + 4);
+    Iif (!setting || setting.name in frame.settings) {
+      continue;
+    }
+    frame.settings[setting.name] = setting.flag ? Boolean(value & 0x1) : value;
+  }
+ 
+  return frame;
+};
+ 
+// The following settings are defined:
+var defined_settings = [];
+ 
+// * SETTINGS_MAX_CONCURRENT_STREAMS (4):
+//   indicates the maximum number of concurrent streams that the sender will allow.
+defined_settings[4] = { name: 'SETTINGS_MAX_CONCURRENT_STREAMS', flag: false };
+ 
+// * SETTINGS_INITIAL_WINDOW_SIZE (7):
+//   indicates the sender's initial stream window size (in bytes) for new streams.
+defined_settings[7] = { name: 'SETTINGS_INITIAL_WINDOW_SIZE', flag: false };
+ 
+// * SETTINGS_FLOW_CONTROL_OPTIONS (10):
+//   indicates that streams directed to the sender will not be subject to flow control. The least
+//   significant bit (0x1) is set to indicate that new streams are not flow controlled. All other
+//   bits are reserved.
+defined_settings[10] = { name: 'SETTINGS_FLOW_CONTROL_OPTIONS', flag: true };
+ 
+// [PUSH_PROMISE](http://http2.github.io/http2-spec/#PUSH_PROMISE)
+// ---------------------------------------------------------------
+//
+// The PUSH_PROMISE frame (type=0x5) is used to notify the peer endpoint in advance of streams the
+// sender intends to initiate.
+//
+// The PUSH_PROMISE frame defines the following flags:
+//
+// * END_PUSH_PROMISE (0x1):
+//   The END_PUSH_PROMISE bit indicates that this frame contains the entire payload necessary to
+//   provide a complete set of headers.
+ 
+frame_types[0x5] = 'PUSH_PROMISE';
+ 
+frame_flags.PUSH_PROMISE = ['END_PUSH_PROMISE'];
+ 
+type_specific_attributes.PUSH_PROMISE = ['promised_stream', 'headers', 'data'];
+ 
+//      0                   1                   2                   3
+//      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+//     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+//     |X|                Promised-Stream-ID (31)                      |
+//     +-+-------------------------------------------------------------+
+//     |                    Header Block (*)                         ...
+//     +---------------------------------------------------------------+
+//
+// The PUSH_PROMISE frame includes the unsigned 31-bit identifier of
+// the stream the endpoint plans to create along with a minimal set of headers that provide
+// additional context for the stream.
+ 
+Serializer.PUSH_PROMISE = function writePushPromise(frame, buffers) {
+  var buffer = new Buffer(4);
+  buffer.writeUInt32BE(frame.promised_stream & 0x7fffffff, 0);
+  buffers.push(buffer);
+  buffers.push(frame.data);
+};
+ 
+Deserializer.PUSH_PROMISE = function readPushPromise(buffer, frame) {
+  frame.promised_stream = buffer.readUInt32BE(0) & 0x7fffffff;
+  frame.data = buffer.slice(4);
+};
+ 
+// [PING](http://http2.github.io/http2-spec/#PING)
+// -----------------------------------------------
+//
+// The PING frame (type=0x6) is a mechanism for measuring a minimal round-trip time from the
+// sender, as well as determining whether an idle connection is still functional.
+//
+// The PING frame defines one type-specific flag:
+//
+// * PONG (0x2):
+//   Bit 2 being set indicates that this PING frame is a PING response.
+ 
+frame_types[0x6] = 'PING';
+ 
+frame_flags.PING = ['PONG'];
+ 
+type_specific_attributes.PING = ['data'];
+ 
+// In addition to the frame header, PING frames MUST contain 8 additional octets of opaque data.
+ 
+Serializer.PING = function writePing(frame, buffers) {
+  Iif (!frame.data || frame.data.length !== 8) {
+    throw new Error('PING frames must carry an 8 byte payload.');
+  }
+  buffers.push(frame.data);
+};
+ 
+Deserializer.PING = function readPing(buffer, frame) {
+  Iif (buffer.length !== 8) {
+    throw new Error('Invalid size PING frame.');
+  }
+  frame.data = buffer;
+};
+ 
+// [GOAWAY](http://http2.github.io/http2-spec/#GOAWAY)
+// ---------------------------------------------------
+//
+// The GOAWAY frame (type=0x7) informs the remote peer to stop creating streams on this connection.
+//
+// The GOAWAY frame does not define any flags.
+ 
+frame_types[0x7] = 'GOAWAY';
+ 
+frame_flags.GOAWAY = [];
+ 
+type_specific_attributes.GOAWAY = ['last_stream', 'error'];
+ 
+//      0                   1                   2                   3
+//      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+//     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+//     |X|                  Last-Stream-ID (31)                        |
+//     +-+-------------------------------------------------------------+
+//     |                      Error Code (32)                          |
+//     +---------------------------------------------------------------+
+//
+// The last stream identifier in the GOAWAY frame contains the highest numbered stream identifier
+// for which the sender of the GOAWAY frame has received frames on and might have taken some action
+// on.
+//
+// The GOAWAY frame also contains a 32-bit error code (see Error Codes) that contains the reason for
+// closing the connection.
+ 
+Serializer.GOAWAY = function writeGoaway(frame, buffers) {
+  var buffer = new Buffer(8);
+  buffer.writeUInt32BE(frame.last_stream & 0x7fffffff, 0);
+  buffer.writeUInt32BE(error_codes.indexOf(frame.error), 4);
+  buffers.push(buffer);
+};
+ 
+Deserializer.GOAWAY = function readGoaway(buffer, frame) {
+  frame.last_stream = buffer.readUInt32BE(0) & 0x7fffffff;
+  frame.error = error_codes[buffer.readUInt32BE(4)];
+};
+ 
+// [WINDOW_UPDATE](http://http2.github.io/http2-spec/#WINDOW_UPDATE)
+// -----------------------------------------------------------------
+//
+// The WINDOW_UPDATE frame (type=0x9) is used to implement flow control.
+//
+// The WINDOW_UPDATE frame defines the following flags:
+//
+// * END_FLOW_CONTROL (0x1):
+//   Bit 1 being set indicates that flow control for the identified stream
+//   or connection has been ended; subsequent frames do not need to be flow controlled.
+ 
+frame_types[0x9] = 'WINDOW_UPDATE';
+ 
+frame_flags.WINDOW_UPDATE = ['END_FLOW_CONTROL'];
+ 
+type_specific_attributes.WINDOW_UPDATE = ['window_size'];
+ 
+// The payload of a WINDOW_UPDATE frame is a 32-bit value indicating the additional number of bytes
+// that the sender can transmit in addition to the existing flow control window. The legal range
+// for this field is 1 to 2^31 - 1 (0x7fffffff) bytes; the most significant bit of this value is
+// reserved.
+ 
+Serializer.WINDOW_UPDATE = function writeWindowUpdate(frame, buffers) {
+  var buffer = new Buffer(4);
+  buffer.writeUInt32BE(frame.window_size & 0x7fffffff, 0);
+  buffers.push(buffer);
+};
+ 
+Deserializer.WINDOW_UPDATE = function readWindowUpdate(buffer, frame) {
+  frame.window_size = buffer.readUInt32BE(0) & 0x7fffffff;
+};
+ 
+// [Error Codes](http://http2.github.io/http2-spec/#ErrorCodes)
+// ------------------------------------------------------------
+ 
+var error_codes = [
+  'NO_ERROR',
+  'PROTOCOL_ERROR',
+  'INTERNAL_ERROR',
+  'FLOW_CONTROL_ERROR',
+  ,
+  'STREAM_CLOSED',
+  'FRAME_TOO_LARGE',
+  'REFUSED_STREAM',
+  'CANCEL',
+  'COMPRESSION_ERROR'
+];
+ 
+// Logging
+// -------
+ 
+// [Bunyan serializers](https://github.com/trentm/node-bunyan#serializers) to improve logging output
+// for debug messages emitted in this component.
+ 
+// * `frame` serializer: it transforms data attributes from Buffers to hex strings and filters out
+//   flags that are not present.
+logging.serializers.frame = function(frame) {
+  var log_entry = {};
+  generic_attributes.concat(type_specific_attributes[frame.type]).forEach(function(name) {
+    log_entry[name] = frame[name];
+  });
+ 
+  if (frame.data instanceof Buffer) {
+    log_entry.data = frame.data.toString('hex');
+  }
+ 
+  log_entry.flags = Object.keys(frame.flags || {}).filter(function(name) {
+    return frame.flags[name] === true;
+  });
+ 
+  return log_entry;
+};
+ 
+// * `data` serializer: it simply transforms a buffer to a hex string.
+logging.serializers.data = function(data) {
+  return data.toString('hex');
+};
+ 
+ +
+ + + + + + + + diff --git a/coverage/lcov-report/lib/index.html b/coverage/lcov-report/lib/index.html new file mode 100644 index 00000000..14d03551 --- /dev/null +++ b/coverage/lcov-report/lib/index.html @@ -0,0 +1,411 @@ + + + + Code coverage report for lib/ + + + + + + + +
+

Code coverage report for lib/

+

+ + Statements: 91.18% (775 / 850)      + + + Branches: 84.69% (249 / 294)      + + + Functions: 88.03% (103 / 117)      + + + Lines: 91.18% (775 / 850)      + +

+
All files » lib/
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
compressor.js100%(262 / 262)100%(101 / 101)100%(31 / 31)100%(262 / 262)
connection.js75.86%(88 / 116)60.71%(17 / 28)71.43%(15 / 21)75.86%(88 / 116)
endpoint.js90.28%(65 / 72)72.22%(13 / 18)88.89%(8 / 9)90.28%(65 / 72)
framer.js90.23%(194 / 215)75%(42 / 56)86.67%(26 / 30)90.23%(194 / 215)
logging.js66.67%(6 / 9)50%(1 / 2)100%(1 / 1)66.67%(6 / 9)
stream.js90.2%(138 / 153)84.27%(75 / 89)85.71%(18 / 21)90.2%(138 / 153)
utils.js95.65%(22 / 23)100%(0 / 0)100%(4 / 4)95.65%(22 / 23)
+
+
+ + + + + + + + diff --git a/coverage/lcov-report/lib/logging.js.html b/coverage/lcov-report/lib/logging.js.html new file mode 100644 index 00000000..3d358f02 --- /dev/null +++ b/coverage/lcov-report/lib/logging.js.html @@ -0,0 +1,389 @@ + + + + Code coverage report for lib/logging.js + + + + + + + +
+

Code coverage report for lib/logging.js

+

+ + Statements: 66.67% (6 / 9)      + + + Branches: 50% (1 / 2)      + + + Functions: 100% (1 / 1)      + + + Lines: 66.67% (6 / 9)      + +

+
All files » lib/ » logging.js
+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +291 +1 +  +1 +  +  +  +  +  +  +  +  +  +  +  +1 +  +  +  +  +  +  +  +53 +  +  +1 +  + 
var utils = require('./utils');
+var logging = exports;
+ 
+Iif (process.env.HTTP2_LOG) {
+  var bunyan = require('bunyan');
+ 
+  logging.root = bunyan.createLogger({
+    name: 'http2',
+    level: process.env.HTTP2_LOG,
+    serializers: bunyan.stdSerializers
+  });
+ 
+  logging.serializers = logging.root.serializers;
+ 
+} else {
+  logging.root = {
+    fatal: utils.noop,
+    error: utils.noop,
+    warn : utils.noop,
+    info : utils.noop,
+    debug: utils.noop,
+    trace: utils.noop,
+ 
+    child: function() { return this; }
+  };
+ 
+  logging.serializers = {};
+}
+ 
+ +
+ + + + + + + + diff --git a/coverage/lcov-report/lib/stream.js.html b/coverage/lcov-report/lib/stream.js.html new file mode 100644 index 00000000..fc4a2a72 --- /dev/null +++ b/coverage/lcov-report/lib/stream.js.html @@ -0,0 +1,1628 @@ + + + + Code coverage report for lib/stream.js + + + + + + + +
+

Code coverage report for lib/stream.js

+

+ + Statements: 90.2% (138 / 153)      + + + Branches: 84.27% (75 / 89)      + + + Functions: 85.71% (18 / 21)      + + + Lines: 90.2% (138 / 153)      + +

+
All files » lib/ » stream.js
+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 +310 +311 +312 +313 +314 +315 +316 +317 +318 +319 +320 +321 +322 +323 +324 +325 +326 +327 +328 +329 +330 +331 +332 +333 +334 +335 +336 +337 +338 +339 +340 +341 +342 +343 +344 +345 +346 +347 +348 +349 +350 +351 +352 +353 +354 +355 +356 +357 +358 +359 +360 +361 +362 +363 +364 +365 +366 +367 +368 +369 +370 +371 +372 +373 +374 +375 +376 +377 +378 +379 +380 +381 +382 +383 +384 +385 +386 +387 +388 +389 +390 +391 +392 +393 +394 +395 +396 +397 +398 +399 +400 +401 +402 +403 +404 +405 +406 +407 +408 +409 +410 +411 +412 +413 +414 +415 +416 +417 +418 +419 +420 +421 +422 +423 +424 +425 +426 +427 +428 +429 +430 +431 +432 +433 +434 +435 +436 +437 +438 +439 +440 +441 +4421 +1 +  +1 +  +  +  +  +  +1 +  +1 +  +  +1 +23 +  +  +23 +  +  +23 +  +  +23 +  +  +23 +  +  +  +23 +  +  +1 +  +  +  +  +  +  +1 +23 +29 +4 +25 +7 +7 +  +  +23 +  +  +  +  +  +  +  +1 +1 +  +  +  +  +  +1 +5 +  +  +  +  +5 +  +  +1 +17 +  +  +  +  +  +  +  +  +  +  +  +  +1 +23 +23 +  +23 +23 +23 +  +  +23 +23 +29 +29 +29 +  +  +  +  +  +1 +27 +27 +27 +23 +  +  +  +1 +23 +23 +27 +27 +27 +  +23 +  +  +  +  +  +  +  +1 +1 +5 +5 +  +  +  +  +  +  +5 +5 +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1 +23 +23 +23 +  +  +  +  +1 +18 +18 +18 +18 +  +  +  +  +  +  +1 +56 +56 +  +56 +  +  +  +  +  +  +  +  +  +  +9 +4 +4 +1 +  +5 +2 +  +3 +  +9 +  +  +  +  +  +  +  +  +  +  +6 +1 +5 +  +  +5 +  +6 +  +  +  +  +  +  +  +  +5 +  +5 +1 +  +4 +  +5 +  +  +  +  +  +  +  +  +  +  +  +4 +3 +1 +  +  +4 +  +  +  +  +  +  +5 +3 +2 +  +  +5 +  +  +  +  +  +  +  +  +  +  +10 +3 +7 +5 +  +10 +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +17 +  +17 +  +  +17 +  +  +  +56 +17 +  +  +17 +  +  +  +  +  +  +  +17 +17 +17 +  +  +  +  +  +  +  +  +  +  +  +1 +23 +23 +  +23 +23 +  +  +  +  +1 +  +  +  +  +  +1 +  +  +  +  +  +  +  +1 +  +  +  +  +  +  +  +  +  +  +  +1 +29 +4 +  +  +4 +  +4 +  +  +  +  +1 +  +4 +4 +  +  +  +4 +4 +4 +4 +  +  +  +  +  +  +  +  +4 +  +  +  +4 +4 +  +  +  +  +  +  +  +  +  +1 +29 +10 +  +  +29 +5 +  +  + 
var utils   = require('./utils');
+var logging = require('./logging');
+ 
+var MAX_HTTP_PAYLOAD_SIZE = 16383; // TODO: this is repeated in multiple files
+ 
+// Stream is a [Duplex stream](http://nodejs.org/api/stream.html#stream_class_stream_duplex)
+// subclass that implements the [HTTP/2 Stream](http://http2.github.io/http2-spec/#rfc.section.3.4)
+// concept.
+ 
+var Duplex = require('stream').Duplex;
+ 
+exports.Stream = Stream;
+ 
+// The main aspects of managing the stream are:
+function Stream(log) {
+  Duplex.call(this);
+ 
+  // * every method uses the common logger object
+  this._log = (log || logging.root).child({ component: 'stream' });
+ 
+  // * sending and receiving frames to/from the upstream connection
+  this._initializeUpstream();
+ 
+  // * receiving and sending stream management commands
+  this._initializeManagement();
+ 
+  // * maintaining the state of the stream (idle, open, closed, etc.) and error detection
+  this._initializeState();
+ 
+  // * flow control, which includes forwarding data from/to the user on the Duplex stream interface
+  // (`write()`, `end()`, `pipe()`)
+  this._initializeFlowControl();
+}
+ 
+Stream.prototype = Object.create(Duplex.prototype, { constructor: { value: Stream } });
+ 
+// Managing the stream
+// -------------------
+ 
+// PUSH_PROMISE and HEADERS are forwarded to the user through events. When error happens, we first
+// close the stream.
+Stream.prototype._initializeManagement = function _initializeManagement() {
+  this.upstream.on('receiving', function(frame) {
+    if (frame.type === 'PUSH_PROMISE') {
+      this.emit('promise', frame.headers);
+    } else if (frame.type === 'HEADERS') {
+      this.priority = frame.priority;
+      this.emit('headers', frame.headers);
+    }
+  }.bind(this));
+  this.on('error', function() {
+    this.push(null);
+  });
+};
+ 
+// For sending management frames, the `this._send(frame)` method is used. It notifies the state
+// management code about the sent frames (using the 'sending' event) so we don't have to manage
+// state transitions here.
+Stream.prototype.promise = function promise(headers) {
+  this._send({
+    type: 'PUSH_PROMISE',
+    headers: headers
+  });
+};
+ 
+Stream.prototype.open = function open(headers, priority) {
+  this._send({
+    type: 'HEADERS',
+    priority: priority,
+    headers: headers
+  });
+  this.priority = priority;
+};
+ 
+Stream.prototype.reset = function reset(error) {
+  this._send({
+    type: 'RST_STREAM',
+    error: error
+  });
+};
+ 
+// Managing the upstream connection
+// --------------------------------
+ 
+// The incoming and the generated outgoing frames are received/transmitted on the `this.upsteam`
+// Duplex stream which operates in [object mode][1]. The [Connection](connection.html) object
+// instantiating the stream will read and write frames to/from it.
+// [1]: http://nodejs.org/api/stream.html#stream_new_stream_readable_options
+Stream.prototype._initializeUpstream = function _initializeUpstream() {
+  this._flush_timer = undefined;
+  this.on('finish', this._finishing.bind(this));
+ 
+  this.upstream = new Duplex({ objectMode: true });
+  this.upstream._queue = [];
+  this.upstream._read = utils.noop;
+ 
+  // When there's an incoming frame, we let the world know this by emitting a 'receiving' event.
+  var log = this._log;
+  this.upstream._write = function(frame, encoding, done) {
+    log.debug({ frame: frame }, 'Receiving frame');
+    this.emit('receiving', frame);
+    done();
+  };
+};
+ 
+// Frames can be sent upstream using the `_send` method. The frames to be sent are put into the
+// `upstream._queue` first, and are flushed immediately on the beginning of the next turn.
+Stream.prototype._send = function _send(frame) {
+  frame.flags = frame.flags || {};
+  this.upstream._queue.push(frame);
+  if (!this._flush_timer) {
+    this._flush_timer = setImmediate(this._flush.bind(this));
+  }
+};
+ 
+Stream.prototype._flush = function _flush() {
+  var frame;
+  while(frame = this.upstream._queue.shift()) {
+    this.upstream.emit('sending', frame);
+    this._log.debug({ frame: frame }, 'Sending frame');
+    this.upstream.push(frame);
+  }
+  this._flush_timer = undefined;
+};
+ 
+// The reason for using an output queue is this. When the stream is finishing (the user calls
+// `end()` on it), then we have to set the `END_STREAM` flag on the last object.
+//
+// If there's no frame in the queue, then we create a 0 length DATA frame. We could do this
+// all the time, but putting the flag on an existing frame is a nice optimization.
+var empty_buffer = new Buffer(0);
+Stream.prototype._finishing = function _finishing() {
+  var length = this.upstream._queue.length;
+  Iif (length === 0) {
+    this._send({
+      type: 'DATA',
+      flags: { END_STREAM: true },
+      data: empty_buffer
+    });
+  } else {
+    var last_frame = this.upstream._queue[length - 1];
+    last_frame.flags.END_STREAM = true;
+  }
+};
+ 
+// [Stream States](http://tools.ietf.org/id/draft-unicorn-httpbis-http2-01.html#StreamStates)
+// ----------------
+//
+//                           +--------+
+//                     PP    |        |    PP
+//                  ,--------|  idle  |--------.
+//                 /         |        |         \
+//                v          +--------+          v
+//         +----------+          |           +----------+
+//         |          |          | H         |          |
+//     ,---| reserved |          |           | reserved |---.
+//     |   | (local)  |          v           | (remote) |   |
+//     |   +----------+      +--------+      +----------+   |
+//     |      |          ES  |        |  ES          |      |
+//     |      | H    ,-------|  open  |-------.      | H    |
+//     |      |     /        |        |        \     |      |
+//     |      v    v         +--------+         v    v      |
+//     |   +----------+          |           +----------+   |
+//     |   |   half   |          |           |   half   |   |
+//     |   |  closed  |          | R         |  closed  |   |
+//     |   | (remote) |          |           | (local)  |   |
+//     |   +----------+          |           +----------+   |
+//     |        |                v                 |        |
+//     |        |  ES / R    +--------+  ES / R    |        |
+//     |        `----------->|        |<-----------'        |
+//     |  R                  | closed |                  R  |
+//     `-------------------->|        |<--------------------'
+//                           +--------+
+ 
+// Streams begin in the IDLE state and transitions happen when there's an incoming or outgoing frame
+Stream.prototype._initializeState = function _initializeState() {
+  this.state = 'IDLE';
+  this.upstream.on('sending', this._transition.bind(this, true));
+  this.upstream.on('receiving', this._transition.bind(this, false));
+};
+ 
+// Only `_setState` should change `this.state` directly. It also logs the state change and notifies
+// interested parties using the 'state' event.
+Stream.prototype._setState = function transition(state) {
+  Eif (this.state !== state) {
+    this._log.debug({ from: this.state, to: state }, 'State transition');
+    this.emit('state', state);
+    this.state = state;
+  }
+};
+ 
+// `_transition` is called every time there's an incoming or outgoing frame. It manages state
+// transitions, and detects stream errors. A stream error is always caused by a frame that is not
+// allowed in the current state.
+Stream.prototype._transition = function transition(sending, frame) {
+  var receiving = !sending;
+  var error = undefined;
+ 
+  switch (this.state) {
+    // All streams start in the **idle** state. In this state, no frames have been exchanged.
+    //
+    // * Sending or receiving a HEADERS frame causes the stream to become "open".
+    // * Sending a PUSH_PROMISE frame marks the associated stream for later use. The stream state
+    //   for the reserved stream transitions to "reserved (local)".
+    // * Receiving a PUSH_PROMISE frame marks the associated stream as reserved by the remote peer.
+    //   The state of the stream becomes "reserved (remote)".
+    //
+    // When the HEADERS frame contains the END_STREAM flags, then two state transitions happen.
+    case 'IDLE':
+      if (frame.type === 'HEADERS') {
+        this._setState('OPEN');
+        if (frame.flags.END_STREAM) {
+          this._setState(sending ? 'HALF_CLOSED_LOCAL' : 'HALF_CLOSED_REMOTE');
+        }
+      } else if (frame.type === 'PUSH_PROMISE') {
+        this._setState(sending ? 'RESERVED_LOCAL' : 'RESERVED_REMOTE');
+      } else { // TODO: Not well defined. https://github.com/http2/http2-spec/issues/165
+        error = 'PROTOCOL_ERROR';
+      }
+      break;
+ 
+    // A stream in the **reserved (local)** state is one that has been promised by sending a
+    // PUSH_PROMISE frame.
+    //
+    // * The endpoint can send a HEADERS frame. This causes the stream to open in a "half closed
+    //   (remote)" state.
+    // * Either endpoint can send a RST_STREAM frame to cause the stream to become "closed". This
+    //   releases the stream reservation.
+    // * An endpoint MUST NOT send any other type of frame in this state.
+    case 'RESERVED_LOCAL':
+      if (sending && frame.type === 'HEADERS') {
+        this._setState('HALF_CLOSED_REMOTE');
+      } else Iif (sending && frame.type === 'RST_STREAM') {
+        this._setState('CLOSED');
+      } else { // TODO: Not well defined. https://github.com/http2/http2-spec/issues/165
+        error = 'PROTOCOL_ERROR';
+      }
+      break;
+ 
+    // A stream in the **reserved (remote)** state has been reserved by a remote peer.
+    //
+    // * Either endpoint can send a RST_STREAM frame to cause the stream to become "closed". This
+    //   releases the stream reservation.
+    // * Receiving a HEADERS frame causes the stream to transition to "half closed (local)".
+    // * Receiving any other type of frame MUST be treated as a stream error of type PROTOCOL_ERROR.
+    case 'RESERVED_REMOTE':
+      Iif (frame.type === 'RST_STREAM') {
+        this._setState('CLOSED');
+      } else if (receiving && frame.type === 'HEADERS') {
+        this._setState('HALF_CLOSED_LOCAL');
+      } else {
+        error = 'PROTOCOL_ERROR';
+      }
+      break;
+ 
+    // The **open** state is where both peers can send frames. In this state, sending peers observe
+    // advertised stream level flow control limits.
+    //
+    // * From this state either endpoint can send a frame with a END_STREAM flag set, which causes
+    //   the stream to transition into one of the "half closed" states: an endpoint sending a
+    //   END_STREAM flag causes the stream state to become "half closed (local)"; an endpoint
+    //   receiving a END_STREAM flag causes the stream state to become "half closed (remote)".
+    // * Either endpoint can send a RST_STREAM frame from this state, causing it to transition
+    //   immediately to "closed".
+    case 'OPEN':
+      if (frame.flags.END_STREAM) {
+        this._setState(sending ? 'HALF_CLOSED_LOCAL' : 'HALF_CLOSED_REMOTE');
+      } else Iif (frame.type === 'RST_STREAM') {
+        this._setState('CLOSED');
+      } // Anything else is OK
+      break;
+ 
+    // A stream that is **half closed (local)** cannot be used for sending frames.
+    //
+    // * A stream transitions from this state to "closed" when a frame that contains a END_STREAM
+    //   flag is received, or when either peer sends a RST_STREAM frame.
+    case 'HALF_CLOSED_LOCAL':
+      if (frame.type === 'RST_STREAM' || (receiving && frame.flags.END_STREAM)) {
+        this._setState('CLOSED');
+      } else Iif (sending) {
+        error = 'PROTOCOL_ERROR';
+      } // Receiving anything is OK
+      break;
+ 
+    // A stream that is **half closed (remote)** is no longer being used by the peer to send frames.
+    // In this state, an endpoint is no longer obligated to maintain a receiver flow control window
+    // if it performs flow control.
+    //
+    // * If an endpoint receives additional frames for a stream that is in this state it MUST
+    //   respond with a stream error of type STREAM_CLOSED.
+    // * A stream can transition from this state to "closed" by sending a frame that contains a
+    //   END_STREAM flag, or when either peer sends a RST_STREAM frame.
+    case 'HALF_CLOSED_REMOTE':
+      if (frame.type === 'RST_STREAM' || (sending && frame.flags.END_STREAM)) {
+        this._setState('CLOSED');
+      } else if (receiving) {
+        error = 'PROTOCOL_ERROR';
+      } // Sending anything is OK
+      break;
+ 
+    // The **closed** state is the terminal state.
+    //
+    // * An endpoint MUST NOT send frames on a closed stream. An endpoint that receives a frame
+    //   after receiving a RST_STREAM or a frame containing a END_STREAM flag on that stream MUST
+    //   treat that as a stream error of type STREAM_CLOSED.
+    // * If this state is reached as a result of sending a RST_STREAM frame, the peer that receives
+    //   the RST_STREAM might have already sent - or enqueued for sending - frames on the stream
+    //   that cannot be withdrawn. An endpoint that sends a RST_STREAM frame MUST ignore frames that
+    //   it receives on closed streams after it has sent a RST_STREAM frame. An endpoint MAY choose
+    //   to limit the period over which it ignores frames and treat frames that arrive after this
+    //   time as being in error.
+    // * An endpoint might receive a PUSH_PROMISE frame after it sends RST_STREAM. PUSH_PROMISE
+    //   causes a stream to become "reserved". If promised streams are not desired, a RST_STREAM
+    //   can be used to close any of those streams.
+    case 'CLOSED':
+      Iif (receiving && frame.type === 'PUSH_PROMISE') {
+        this._setState('RESERVED_REMOTE');
+      } else Iif (!(sending && frame.type === 'RST_STREAM')) {
+        error = 'PROTOCOL_ERROR';
+      } // TODO: act based on the reason for termination.
+      break;
+  }
+ 
+  // Common error handling.
+  if (error) {
+    var info = { error: error, frame: frame, state: this.state };
+ 
+    // * When sending something invalid, throwing an exception, since it is probably a bug.
+    Iif (sending) {
+      this._log.error(info, 'Stream error: sending illegal frame.');
+      throw new Error('Sending illegal frame (' + frame.type + ') in ' + this.state + ' state.');
+    }
+ 
+    // * When receiving something invalid, sending an RST_STREAM using the `reset` method.
+    //   This will automatically cause a transition to the CLOSED state.
+    else {
+      this._log.error(info, 'Stream error: received illegal frame.');
+      this.state = 'CLOSED';
+      this.reset(error);
+    }
+  }
+};
+ 
+// [Flow control](http://tools.ietf.org/id/draft-unicorn-httpbis-http2-01.html#rfc.section.6.9)
+// --------------
+ 
+// Flow control in HTTP/2.0 is implemented using a window kept by each sender on every stream.
+// The flow control window is a simple integer value that indicates how many bytes of data the
+// sender is permitted to transmit. Two flow control windows are applicable; the stream flow control
+// window and the connection flow control window. The stream only manages the flow control `window`.
+Stream.prototype._initializeFlowControl = function _initializeFlowControl() {
+  this._read = utils.noop;
+  this.upstream.on('receiving', this._receiveData.bind(this));
+ 
+  this._window = INITIAL_WINDOW_SIZE;
+  this.upstream.on('receiving', this._updateWindow.bind(this));
+};
+ 
+// When a HTTP/2.0 connection is first established, new streams are created with an initial flow
+// control window size of 65535 bytes.
+var INITIAL_WINDOW_SIZE = 65535;
+ 
+// A SETTINGS frame can alter the initial flow control window size for all current streams. When the
+// value of SETTINGS_INITIAL_WINDOW_SIZE changes, a receiver MUST adjust the size of all stream by
+// calling the `setInitialWindowSize` method. The window size has to be modified by the difference
+// between the new value and the old value.
+Stream.prototype.setInitialWindowSize = function setInitialWindowSize(initialWindowSize) {
+  this._window = this._window - this._initialWindowSize + initialWindowSize;
+  this._initialWindowSize = initialWindowSize;
+};
+ 
+// Flow control can be disabled for all streams on the connection using the `disableFlowControl`
+// method. This may happen when there's a SETTINGS frame received with the
+// SETTINGS_FLOW_CONTROL_OPTIONS setting.
+Stream.prototype.disableFlowControl = function disableFlowControl() {
+  this._window = Infinity;
+};
+ 
+// The `_updateWindow` method gets called every time there's an incoming frame. It filters out
+// WINDOW_UPDATE frames, and then modifies the modifies the flow control window:
+//
+// * Flow control can be disabled for an individual stream by sending a WINDOW_UPDATE with the
+//   END_FLOW_CONTROL flag set. The payload of a WINDOW_UPDATE frame that has the END_FLOW_CONTROL
+//   flag set is ignored.
+// * A sender that receives a WINDOW_UPDATE frame updates the corresponding window by the amount
+//   specified in the frame.
+Stream.prototype._updateWindow = function _updateWindow(frame) {
+  if (frame.type === 'WINDOW_UPDATE') {
+    Iif (frame.flags.END_FLOW_CONTROL) {
+      this.disableFlowControl();
+    } else {
+      this._window += frame.window_size;
+    }
+    this.emit('window_update');
+  }
+};
+ 
+// When the user wants to write a buffer into the stream
+Stream.prototype._write = function _write(buffer, encoding, done) {
+  // * The incoming buffer is cut into pieces that are not larger than `MAX_HTTP_PAYLOAD_SIZE`
+  var chunks = utils.cut(buffer, MAX_HTTP_PAYLOAD_SIZE);
+  var sent = 0;
+ 
+  // * Chunks are wrapped in DATA frames and sent out until all of them are sent or the flow control
+  //   `window` is not enough to send a chunk
+  while (chunks.length > 0 && chunks[0].length <= this._window) {
+    var chunk = chunks.shift();
+    sent += chunk.length;
+    this._send({
+      type: 'DATA',
+      flags: {},
+      data: chunk
+    });
+ 
+    // * After sending a flow controlled frame, the sender reduces the space available the window by
+    //   the length of the transmitted frame. For flow control calculations, the 8 byte frame header
+    //   is not counted.
+    this._window -= chunk.length;
+  }
+ 
+  // * If all of the chunks are sent, we are done
+  Eif (chunks.length === 0) {
+    done();
+  }
+ 
+  // * Otherwise the process has to continue when a window_update occurs. It is guaranteed by
+  //   the Duplex stream class, that there will be no more calls to `_write` until we are done
+  else {
+    this.once('window_update', this._write.bind(this, buffer.slice(sent), encoding, done));
+  }
+};
+ 
+Stream.prototype._receiveData = function _receiveData(frame) {
+  if (frame.type === 'DATA') {
+    this.push(frame.data);
+  }
+ 
+  if (frame.flags.END_STREAM) {
+    this.push(null);
+  }
+};
+ 
+ +
+ + + + + + + + diff --git a/coverage/lcov-report/lib/utils.js.html b/coverage/lcov-report/lib/utils.js.html new file mode 100644 index 00000000..acf0c16b --- /dev/null +++ b/coverage/lcov-report/lib/utils.js.html @@ -0,0 +1,422 @@ + + + + Code coverage report for lib/utils.js + + + + + + + +
+

Code coverage report for lib/utils.js

+

+ + Statements: 95.65% (22 / 23)      + + + Branches: 100% (0 / 0)      + + + Functions: 100% (4 / 4)      + + + Lines: 95.65% (22 / 23)      + +

+
All files » lib/ » utils.js
+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40  +1 +77 +77 +411 +  +  +77 +77 +411 +  +  +77 +  +  +  +1 +14 +14 +14 +16 +16 +16 +  +14 +  +  +  +1 +12 +12 +  +  +12 +  +  +  +1 +1 + 
// Concatenate an array of buffers into a new buffer
+exports.concat = function concat(buffers) {
+  var size = 0;
+  for (var i = 0; i < buffers.length; i++) {
+    size += buffers[i].length;
+  }
+ 
+  var concatenated = new Buffer(size);
+  for (var cursor = 0, j = 0; j < buffers.length; cursor += buffers[j].length, j++) {
+    buffers[j].copy(concatenated, cursor);
+  }
+ 
+  return concatenated;
+};
+ 
+// Cut `buffer` into chunks not larger than `size`
+exports.cut = function cut(buffer, size) {
+  var chunks = [];
+  var cursor = 0;
+  do {
+    var chunk_size = Math.min(size, buffer.length - cursor);
+    chunks.push(buffer.slice(cursor, cursor + chunk_size));
+    cursor += chunk_size;
+  } while(cursor < buffer.length);
+  return chunks;
+};
+ 
+// Shallow copy inspired by underscore's [clone](http://underscorejs.org/#clone)
+exports.shallow_copy = function shallow_copy(object) {
+  var clone = {};
+  for (var key in object) {
+    clone[key] = object[key];
+  }
+  return clone;
+};
+ 
+// Placeholder no-op function
+function noop() {}
+exports.noop = noop;
+ 
+ +
+ + + + + + + + diff --git a/coverage/lcov-report/prettify.css b/coverage/lcov-report/prettify.css new file mode 100644 index 00000000..b317a7cd --- /dev/null +++ b/coverage/lcov-report/prettify.css @@ -0,0 +1 @@ +.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} diff --git a/coverage/lcov-report/prettify.js b/coverage/lcov-report/prettify.js new file mode 100644 index 00000000..ef51e038 --- /dev/null +++ b/coverage/lcov-report/prettify.js @@ -0,0 +1 @@ +window.PR_SHOULD_USE_CONTINUATION=true;(function(){var h=["break,continue,do,else,for,if,return,while"];var u=[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var p=[u,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var l=[p,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];var x=[p,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];var R=[x,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];var r="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes";var w=[p,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];var s="caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END";var I=[h,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"];var f=[h,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"];var H=[h,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"];var A=[l,R,w,s+I,f,H];var e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;var C="str";var z="kwd";var j="com";var O="typ";var G="lit";var L="pun";var F="pln";var m="tag";var E="dec";var J="src";var P="atn";var n="atv";var N="nocode";var M="(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";function k(Z){var ad=0;var S=false;var ac=false;for(var V=0,U=Z.length;V122)){if(!(al<65||ag>90)){af.push([Math.max(65,ag)|32,Math.min(al,90)|32])}if(!(al<97||ag>122)){af.push([Math.max(97,ag)&~32,Math.min(al,122)&~32])}}}}af.sort(function(av,au){return(av[0]-au[0])||(au[1]-av[1])});var ai=[];var ap=[NaN,NaN];for(var ar=0;arat[0]){if(at[1]+1>at[0]){an.push("-")}an.push(T(at[1]))}}an.push("]");return an.join("")}function W(al){var aj=al.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g"));var ah=aj.length;var an=[];for(var ak=0,am=0;ak=2&&ai==="["){aj[ak]=X(ag)}else{if(ai!=="\\"){aj[ak]=ag.replace(/[a-zA-Z]/g,function(ao){var ap=ao.charCodeAt(0);return"["+String.fromCharCode(ap&~32,ap|32)+"]"})}}}}return aj.join("")}var aa=[];for(var V=0,U=Z.length;V=0;){S[ac.charAt(ae)]=Y}}var af=Y[1];var aa=""+af;if(!ag.hasOwnProperty(aa)){ah.push(af);ag[aa]=null}}ah.push(/[\0-\uffff]/);V=k(ah)})();var X=T.length;var W=function(ah){var Z=ah.sourceCode,Y=ah.basePos;var ad=[Y,F];var af=0;var an=Z.match(V)||[];var aj={};for(var ae=0,aq=an.length;ae=5&&"lang-"===ap.substring(0,5);if(am&&!(ai&&typeof ai[1]==="string")){am=false;ap=J}if(!am){aj[ag]=ap}}var ab=af;af+=ag.length;if(!am){ad.push(Y+ab,ap)}else{var al=ai[1];var ak=ag.indexOf(al);var ac=ak+al.length;if(ai[2]){ac=ag.length-ai[2].length;ak=ac-al.length}var ar=ap.substring(5);B(Y+ab,ag.substring(0,ak),W,ad);B(Y+ab+ak,al,q(ar,al),ad);B(Y+ab+ac,ag.substring(ac),W,ad)}}ah.decorations=ad};return W}function i(T){var W=[],S=[];if(T.tripleQuotedStrings){W.push([C,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(T.multiLineStrings){W.push([C,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{W.push([C,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(T.verbatimStrings){S.push([C,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null])}var Y=T.hashComments;if(Y){if(T.cStyleComments){if(Y>1){W.push([j,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"])}else{W.push([j,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"])}S.push([C,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])}else{W.push([j,/^#[^\r\n]*/,null,"#"])}}if(T.cStyleComments){S.push([j,/^\/\/[^\r\n]*/,null]);S.push([j,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(T.regexLiterals){var X=("/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/");S.push(["lang-regex",new RegExp("^"+M+"("+X+")")])}var V=T.types;if(V){S.push([O,V])}var U=(""+T.keywords).replace(/^ | $/g,"");if(U.length){S.push([z,new RegExp("^(?:"+U.replace(/[\s,]+/g,"|")+")\\b"),null])}W.push([F,/^\s+/,null," \r\n\t\xA0"]);S.push([G,/^@[a-z_$][a-z_$@0-9]*/i,null],[O,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[F,/^[a-z_$][a-z_$@0-9]*/i,null],[G,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[F,/^\\[\s\S]?/,null],[L,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]);return g(W,S)}var K=i({keywords:A,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function Q(V,ag){var U=/(?:^|\s)nocode(?:\s|$)/;var ab=/\r\n?|\n/;var ac=V.ownerDocument;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=ac.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Z=S&&"pre"===S.substring(0,3);var af=ac.createElement("LI");while(V.firstChild){af.appendChild(V.firstChild)}var W=[af];function ae(al){switch(al.nodeType){case 1:if(U.test(al.className)){break}if("BR"===al.nodeName){ad(al);if(al.parentNode){al.parentNode.removeChild(al)}}else{for(var an=al.firstChild;an;an=an.nextSibling){ae(an)}}break;case 3:case 4:if(Z){var am=al.nodeValue;var aj=am.match(ab);if(aj){var ai=am.substring(0,aj.index);al.nodeValue=ai;var ah=am.substring(aj.index+aj[0].length);if(ah){var ak=al.parentNode;ak.insertBefore(ac.createTextNode(ah),al.nextSibling)}ad(al);if(!ai){al.parentNode.removeChild(al)}}}break}}function ad(ak){while(!ak.nextSibling){ak=ak.parentNode;if(!ak){return}}function ai(al,ar){var aq=ar?al.cloneNode(false):al;var ao=al.parentNode;if(ao){var ap=ai(ao,1);var an=al.nextSibling;ap.appendChild(aq);for(var am=an;am;am=an){an=am.nextSibling;ap.appendChild(am)}}return aq}var ah=ai(ak.nextSibling,0);for(var aj;(aj=ah.parentNode)&&aj.nodeType===1;){ah=aj}W.push(ah)}for(var Y=0;Y=S){ah+=2}if(V>=ap){Z+=2}}}var t={};function c(U,V){for(var S=V.length;--S>=0;){var T=V[S];if(!t.hasOwnProperty(T)){t[T]=U}else{if(window.console){console.warn("cannot override language handler %s",T)}}}}function q(T,S){if(!(T&&t.hasOwnProperty(T))){T=/^\s*]*(?:>|$)/],[j,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[L,/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);c(g([[F,/^[\s]+/,null," \t\r\n"],[n,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[[m,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[P,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[L,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);c(g([],[[n,/^[\s\S]+/]]),["uq.val"]);c(i({keywords:l,hashComments:true,cStyleComments:true,types:e}),["c","cc","cpp","cxx","cyc","m"]);c(i({keywords:"null,true,false"}),["json"]);c(i({keywords:R,hashComments:true,cStyleComments:true,verbatimStrings:true,types:e}),["cs"]);c(i({keywords:x,cStyleComments:true}),["java"]);c(i({keywords:H,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);c(i({keywords:I,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);c(i({keywords:s,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);c(i({keywords:f,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);c(i({keywords:w,cStyleComments:true,regexLiterals:true}),["js"]);c(i({keywords:r,hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),["coffee"]);c(g([],[[C,/^[\s\S]+/]]),["regex"]);function d(V){var U=V.langExtension;try{var S=a(V.sourceNode);var T=S.sourceCode;V.sourceCode=T;V.spans=S.spans;V.basePos=0;q(U,T)(V);D(V)}catch(W){if("console" in window){console.log(W&&W.stack?W.stack:W)}}}function y(W,V,U){var S=document.createElement("PRE");S.innerHTML=W;if(U){Q(S,U)}var T={langExtension:V,numberLines:U,sourceNode:S};d(T);return S.innerHTML}function b(ad){function Y(af){return document.getElementsByTagName(af)}var ac=[Y("pre"),Y("code"),Y("xmp")];var T=[];for(var aa=0;aa=0){var ah=ai.match(ab);var am;if(!ah&&(am=o(aj))&&"CODE"===am.tagName){ah=am.className.match(ab)}if(ah){ah=ah[1]}var al=false;for(var ak=aj.parentNode;ak;ak=ak.parentNode){if((ak.tagName==="pre"||ak.tagName==="code"||ak.tagName==="xmp")&&ak.className&&ak.className.indexOf("prettyprint")>=0){al=true;break}}if(!al){var af=aj.className.match(/\blinenums\b(?::(\d+))?/);af=af?af[1]&&af[1].length?+af[1]:true:false;if(af){Q(aj,af)}S={langExtension:ah,sourceNode:aj,numberLines:af};d(S)}}}if(X]*(?:>|$)/],[PR.PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-handlebars",/^]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i],[PR.PR_DECLARATION,/^{{[#^>/]?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{&?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{{>?\s*[\w.][^}]*}}}/],[PR.PR_COMMENT,/^{{![^}]*}}/]]),["handlebars","hbs"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],[PR.PR_COMMENT,/^(?:)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\)\"\']+/]]),["css-str"]); diff --git a/coverage/lcov.info b/coverage/lcov.info new file mode 100644 index 00000000..dfb0a22a --- /dev/null +++ b/coverage/lcov.info @@ -0,0 +1,1441 @@ +TN: +SF:/data/upstream/node-http2/lib/utils.js +FN:2,concat +FN:17,cut +FN:29,shallow_copy +FN:38,noop +FNF:4 +FNH:4 +FNDA:77,concat +FNDA:14,cut +FNDA:12,shallow_copy +FNDA:372,noop +DA:2,1 +DA:3,77 +DA:4,77 +DA:5,411 +DA:8,77 +DA:9,77 +DA:10,411 +DA:13,77 +DA:17,1 +DA:18,14 +DA:19,14 +DA:20,14 +DA:21,16 +DA:22,16 +DA:23,16 +DA:25,14 +DA:29,1 +DA:30,12 +DA:31,12 +DA:32,0 +DA:34,12 +DA:38,1 +DA:39,1 +LF:23 +LH:22 +BRF:0 +BRH:0 +end_of_record +TN: +SF:/data/upstream/node-http2/lib/compressor.js +FN:40,CompressionContext +FN:49,(anonymous_2) +FN:54,getWorkingSet +FN:55,(anonymous_4) +FN:61,reinitialize +FN:67,(anonymous_6) +FN:69,(anonymous_7) +FN:77,(anonymous_8) +FN:106,execute +FN:116,(anonymous_10) +FN:154,(anonymous_11) +FN:155,(anonymous_12) +FN:162,(anonymous_13) +FN:178,(anonymous_14) +FN:201,(anonymous_15) +FN:225,(anonymous_16) +FN:247,Decompressor +FN:262,decompress +FN:308,Compressor +FN:323,compress +FN:393,writeInteger +FN:434,readInteger +FN:464,writeString +FN:470,readString +FN:523,writeString +FN:559,readString +FN:624,_initializeStream +FN:628,_transform +FN:673,_initializeStream +FN:682,_transform +FN:710,(anonymous_31) +FNF:31 +FNH:31 +FNDA:10,CompressionContext +FNDA:1421,(anonymous_2) +FNDA:43,getWorkingSet +FNDA:136,(anonymous_4) +FNDA:43,reinitialize +FNDA:154,(anonymous_6) +FNDA:98,(anonymous_7) +FNDA:98,(anonymous_8) +FNDA:172,execute +FNDA:139,(anonymous_10) +FNDA:36,(anonymous_11) +FNDA:90,(anonymous_12) +FNDA:58,(anonymous_13) +FNDA:1029,(anonymous_14) +FNDA:24,(anonymous_15) +FNDA:119,(anonymous_16) +FNDA:6,Decompressor +FNDA:23,decompress +FNDA:4,Compressor +FNDA:20,compress +FNDA:216,writeInteger +FNDA:234,readInteger +FNDA:110,writeString +FNDA:115,readString +FNDA:90,writeString +FNDA:98,readString +FNDA:4,_initializeStream +FNDA:14,_transform +FNDA:6,_initializeStream +FNDA:18,_transform +FNDA:12,(anonymous_31) +DA:16,1 +DA:17,1 +DA:18,1 +DA:20,1 +DA:21,1 +DA:22,1 +DA:38,1 +DA:40,1 +DA:41,10 +DA:42,10 +DA:43,10 +DA:44,10 +DA:49,1 +DA:50,1421 +DA:54,1 +DA:55,43 +DA:56,136 +DA:61,1 +DA:62,43 +DA:67,43 +DA:68,154 +DA:70,98 +DA:77,43 +DA:78,98 +DA:79,98 +DA:106,1 +DA:107,172 +DA:114,172 +DA:115,52 +DA:116,52 +DA:117,139 +DA:119,52 +DA:120,2 +DA:121,2 +DA:123,50 +DA:132,120 +DA:133,35 +DA:135,85 +DA:138,120 +DA:139,119 +DA:140,88 +DA:142,31 +DA:144,119 +DA:145,119 +DA:148,120 +DA:154,1 +DA:155,36 +DA:156,90 +DA:162,1 +DA:163,58 +DA:165,58 +DA:166,58 +DA:167,5 +DA:168,5 +DA:169,1 +DA:177,57 +DA:178,57 +DA:179,1029 +DA:181,57 +DA:182,31 +DA:183,31 +DA:184,15 +DA:192,42 +DA:201,1 +DA:202,24 +DA:204,24 +DA:205,42 +DA:206,24 +DA:207,24 +DA:211,24 +DA:225,1 +DA:226,119 +DA:227,119 +DA:228,119 +DA:229,2345 +DA:230,192 +DA:232,2345 +DA:234,119 +DA:235,218 +DA:236,218 +DA:247,1 +DA:248,6 +DA:250,6 +DA:252,6 +DA:254,6 +DA:256,1 +DA:262,1 +DA:263,23 +DA:267,23 +DA:272,23 +DA:273,23 +DA:274,90 +DA:279,23 +DA:283,23 +DA:284,23 +DA:285,90 +DA:286,90 +DA:287,90 +DA:288,17 +DA:289,8 +DA:291,9 +DA:294,73 +DA:297,23 +DA:298,23 +DA:308,1 +DA:309,4 +DA:311,4 +DA:313,4 +DA:315,4 +DA:317,1 +DA:323,1 +DA:324,20 +DA:325,20 +DA:329,20 +DA:330,20 +DA:331,64 +DA:332,64 +DA:333,8 +DA:334,24 +DA:337,56 +DA:343,20 +DA:344,20 +DA:347,20 +DA:348,46 +DA:349,24 +DA:350,24 +DA:351,24 +DA:356,20 +DA:357,80 +DA:358,58 +DA:359,58 +DA:360,58 +DA:365,20 +DA:366,20 +DA:367,82 +DA:370,20 +DA:372,20 +DA:373,20 +DA:393,1 +DA:394,216 +DA:395,216 +DA:396,88 +DA:399,128 +DA:400,128 +DA:401,2 +DA:403,128 +DA:405,128 +DA:406,128 +DA:407,136 +DA:408,136 +DA:410,136 +DA:411,8 +DA:413,136 +DA:415,136 +DA:418,128 +DA:434,1 +DA:435,234 +DA:437,234 +DA:438,234 +DA:439,100 +DA:442,234 +DA:443,139 +DA:444,139 +DA:445,149 +DA:446,149 +DA:447,149 +DA:451,234 +DA:464,1 +DA:465,110 +DA:466,110 +DA:467,110 +DA:470,1 +DA:471,115 +DA:472,115 +DA:473,115 +DA:474,115 +DA:516,1 +DA:523,1 +DA:524,90 +DA:526,90 +DA:527,27 +DA:528,63 +DA:529,1 +DA:530,62 +DA:531,46 +DA:533,16 +DA:536,90 +DA:537,27 +DA:540,63 +DA:541,20 +DA:543,43 +DA:544,43 +DA:547,63 +DA:548,16 +DA:551,63 +DA:554,90 +DA:556,90 +DA:559,1 +DA:560,98 +DA:562,98 +DA:563,98 +DA:564,29 +DA:565,69 +DA:566,52 +DA:567,2 +DA:569,50 +DA:572,17 +DA:575,98 +DA:576,29 +DA:577,29 +DA:580,69 +DA:581,69 +DA:582,44 +DA:585,69 +DA:586,17 +DA:587,52 +DA:588,50 +DA:590,2 +DA:593,69 +DA:596,98 +DA:621,1 +DA:624,1 +DA:625,4 +DA:628,1 +DA:630,14 +DA:632,10 +DA:635,10 +DA:640,10 +DA:641,12 +DA:642,12 +DA:643,10 +DA:645,2 +DA:646,2 +DA:649,12 +DA:661,4 +DA:664,14 +DA:673,1 +DA:674,6 +DA:675,6 +DA:676,6 +DA:677,6 +DA:678,6 +DA:682,1 +DA:685,18 +DA:686,3 +DA:687,1 +DA:689,3 +DA:694,15 +DA:695,11 +DA:696,11 +DA:697,11 +DA:698,11 +DA:703,4 +DA:709,18 +DA:710,10 +DA:711,12 +DA:713,10 +DA:714,10 +DA:721,10 +DA:724,18 +DA:730,1 +DA:771,1 +LF:262 +LH:262 +BRDA:42,1,0,10 +BRDA:42,1,1,10 +BRDA:50,2,0,1421 +BRDA:50,2,1,121 +BRDA:114,3,0,52 +BRDA:114,3,1,120 +BRDA:119,4,0,2 +BRDA:119,4,1,50 +BRDA:132,5,0,35 +BRDA:132,5,1,85 +BRDA:138,6,0,119 +BRDA:138,6,1,1 +BRDA:139,7,0,88 +BRDA:139,7,1,31 +BRDA:166,8,0,5 +BRDA:166,8,1,53 +BRDA:168,9,0,1 +BRDA:168,9,1,4 +BRDA:181,10,0,31 +BRDA:181,10,1,26 +BRDA:183,11,0,15 +BRDA:183,11,1,16 +BRDA:205,12,0,24 +BRDA:205,12,1,18 +BRDA:229,13,0,192 +BRDA:229,13,1,2153 +BRDA:248,14,0,6 +BRDA:248,14,1,4 +BRDA:250,15,0,4 +BRDA:250,15,1,2 +BRDA:287,16,0,17 +BRDA:287,16,1,73 +BRDA:288,17,0,8 +BRDA:288,17,1,9 +BRDA:309,18,0,4 +BRDA:309,18,1,2 +BRDA:311,19,0,2 +BRDA:311,19,1,2 +BRDA:332,20,0,8 +BRDA:332,20,1,56 +BRDA:348,21,0,24 +BRDA:348,21,1,22 +BRDA:357,22,0,58 +BRDA:357,22,1,22 +BRDA:395,23,0,88 +BRDA:395,23,1,128 +BRDA:400,24,0,2 +BRDA:400,24,1,126 +BRDA:410,25,0,8 +BRDA:410,25,1,128 +BRDA:438,26,0,100 +BRDA:438,26,1,134 +BRDA:442,27,0,139 +BRDA:442,27,1,95 +BRDA:526,28,0,27 +BRDA:526,28,1,63 +BRDA:528,29,0,1 +BRDA:528,29,1,62 +BRDA:530,30,0,46 +BRDA:530,30,1,16 +BRDA:536,31,0,27 +BRDA:536,31,1,63 +BRDA:540,32,0,20 +BRDA:540,32,1,43 +BRDA:547,33,0,16 +BRDA:547,33,1,47 +BRDA:563,34,0,29 +BRDA:563,34,1,69 +BRDA:565,35,0,52 +BRDA:565,35,1,17 +BRDA:566,36,0,2 +BRDA:566,36,1,50 +BRDA:575,37,0,29 +BRDA:575,37,1,69 +BRDA:581,38,0,44 +BRDA:581,38,1,25 +BRDA:585,39,0,17 +BRDA:585,39,1,52 +BRDA:587,40,0,50 +BRDA:587,40,1,2 +BRDA:630,41,0,10 +BRDA:630,41,1,4 +BRDA:630,42,0,14 +BRDA:630,42,1,9 +BRDA:642,43,0,10 +BRDA:642,43,1,2 +BRDA:685,44,0,3 +BRDA:685,44,1,15 +BRDA:686,45,0,1 +BRDA:686,45,1,2 +BRDA:686,46,0,3 +BRDA:686,46,1,2 +BRDA:694,47,0,11 +BRDA:694,47,1,4 +BRDA:694,48,0,15 +BRDA:694,48,1,9 +BRDA:709,49,0,10 +BRDA:709,49,1,8 +BRDA:709,50,0,18 +BRDA:709,50,1,14 +BRDA:709,50,2,9 +BRF:101 +BRH:101 +end_of_record +TN: +SF:/data/upstream/node-http2/lib/logging.js +FN:24,(anonymous_1) +FNF:1 +FNH:1 +FNDA:53,(anonymous_1) +DA:1,1 +DA:2,1 +DA:4,1 +DA:5,0 +DA:7,0 +DA:13,0 +DA:16,1 +DA:24,53 +DA:27,1 +LF:9 +LH:6 +BRDA:4,1,0,0 +BRDA:4,1,1,1 +BRF:2 +BRH:1 +end_of_record +TN: +SF:/data/upstream/node-http2/lib/connection.js +FN:43,Connection +FN:67,_initializeStreamManagement +FN:69,(anonymous_3) +FN:80,_newStream +FN:88,createStream +FN:97,_read +FN:126,write +FN:145,_initializeSettingsManagement +FN:154,(anonymous_9) +FN:165,_receiveSettings +FN:171,_initializeLifecycleManagement +FN:177,_generatePingId +FN:187,ping +FN:202,_receivePing +FN:225,reset +FN:228,_receiveGoaway +FN:234,_initializeFlowControl +FN:257,setInitialWindowSize +FN:265,disableFlowControl +FN:277,_updateWindow +FN:286,_send +FNF:21 +FNH:15 +FNDA:6,Connection +FNDA:6,_initializeStreamManagement +FNDA:12,(anonymous_3) +FNDA:2,_newStream +FNDA:1,createStream +FNDA:26,_read +FNDA:16,write +FNDA:6,_initializeSettingsManagement +FNDA:6,(anonymous_9) +FNDA:6,_receiveSettings +FNDA:6,_initializeLifecycleManagement +FNDA:0,_generatePingId +FNDA:0,ping +FNDA:0,_receivePing +FNDA:0,reset +FNDA:0,_receiveGoaway +FNDA:6,_initializeFlowControl +FNDA:0,setInitialWindowSize +FNDA:6,disableFlowControl +FNDA:6,_updateWindow +FNDA:16,_send +DA:1,1 +DA:2,1 +DA:3,1 +DA:4,1 +DA:40,1 +DA:43,1 +DA:45,6 +DA:48,6 +DA:51,6 +DA:54,6 +DA:57,6 +DA:60,6 +DA:62,1 +DA:67,1 +DA:68,6 +DA:69,6 +DA:70,12 +DA:71,12 +DA:73,6 +DA:74,6 +DA:76,6 +DA:77,6 +DA:80,1 +DA:81,2 +DA:82,2 +DA:83,2 +DA:84,2 +DA:85,2 +DA:88,1 +DA:89,1 +DA:90,1 +DA:91,1 +DA:97,1 +DA:98,26 +DA:100,26 +DA:101,26 +DA:102,41 +DA:103,41 +DA:104,41 +DA:105,16 +DA:106,16 +DA:111,26 +DA:112,26 +DA:113,26 +DA:116,0 +DA:117,0 +DA:118,0 +DA:122,0 +DA:126,1 +DA:127,16 +DA:129,16 +DA:130,1 +DA:131,1 +DA:132,1 +DA:135,16 +DA:137,16 +DA:139,16 +DA:145,1 +DA:146,6 +DA:148,6 +DA:149,6 +DA:154,6 +DA:155,6 +DA:156,6 +DA:158,0 +DA:162,6 +DA:165,1 +DA:171,1 +DA:172,6 +DA:173,6 +DA:174,6 +DA:177,1 +DA:178,0 +DA:179,0 +DA:180,0 +DA:181,0 +DA:184,0 +DA:187,1 +DA:188,0 +DA:189,0 +DA:190,0 +DA:192,0 +DA:193,0 +DA:202,1 +DA:203,0 +DA:204,0 +DA:205,0 +DA:206,0 +DA:207,0 +DA:208,0 +DA:210,0 +DA:214,0 +DA:215,0 +DA:225,1 +DA:228,1 +DA:234,1 +DA:236,6 +DA:245,6 +DA:246,6 +DA:251,1 +DA:257,1 +DA:258,0 +DA:259,0 +DA:265,1 +DA:266,6 +DA:277,1 +DA:278,6 +DA:279,6 +DA:281,0 +DA:283,6 +DA:286,1 +DA:287,16 +DA:288,2 +DA:289,0 +DA:291,2 +DA:294,16 +LF:116 +LH:88 +BRDA:48,1,0,6 +BRDA:48,1,1,2 +BRDA:101,2,0,67 +BRDA:101,2,1,41 +BRDA:103,3,0,41 +BRDA:103,3,1,0 +BRDA:111,4,0,26 +BRDA:111,4,1,0 +BRDA:116,5,0,0 +BRDA:116,5,1,0 +BRDA:129,6,0,1 +BRDA:129,6,1,15 +BRDA:155,7,0,6 +BRDA:155,7,1,0 +BRDA:155,8,0,6 +BRDA:155,8,1,6 +BRDA:203,9,0,0 +BRDA:203,9,1,0 +BRDA:205,10,0,0 +BRDA:205,10,1,0 +BRDA:278,11,0,6 +BRDA:278,11,1,0 +BRDA:287,12,0,2 +BRDA:287,12,1,14 +BRDA:287,13,0,16 +BRDA:287,13,1,16 +BRDA:288,14,0,0 +BRDA:288,14,1,2 +BRF:28 +BRH:17 +end_of_record +TN: +SF:/data/upstream/node-http2/lib/stream.js +FN:15,Stream +FN:42,_initializeManagement +FN:43,(anonymous_3) +FN:51,(anonymous_4) +FN:59,promise +FN:66,open +FN:75,reset +FN:89,_initializeUpstream +FN:99,(anonymous_9) +FN:108,_send +FN:116,_flush +FN:132,_finishing +FN:176,_initializeState +FN:184,transition +FN:195,transition +FN:351,_initializeFlowControl +FN:367,setInitialWindowSize +FN:375,disableFlowControl +FN:387,_updateWindow +FN:399,_write +FN:433,_receiveData +FNF:21 +FNH:18 +FNDA:23,Stream +FNDA:23,_initializeManagement +FNDA:29,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:1,promise +FNDA:5,open +FNDA:17,reset +FNDA:23,_initializeUpstream +FNDA:29,(anonymous_9) +FNDA:27,_send +FNDA:23,_flush +FNDA:5,_finishing +FNDA:23,_initializeState +FNDA:18,transition +FNDA:56,transition +FNDA:23,_initializeFlowControl +FNDA:0,setInitialWindowSize +FNDA:0,disableFlowControl +FNDA:29,_updateWindow +FNDA:4,_write +FNDA:29,_receiveData +DA:1,1 +DA:2,1 +DA:4,1 +DA:10,1 +DA:12,1 +DA:15,1 +DA:16,23 +DA:19,23 +DA:22,23 +DA:25,23 +DA:28,23 +DA:32,23 +DA:35,1 +DA:42,1 +DA:43,23 +DA:44,29 +DA:45,4 +DA:46,25 +DA:47,7 +DA:48,7 +DA:51,23 +DA:52,0 +DA:59,1 +DA:60,1 +DA:66,1 +DA:67,5 +DA:72,5 +DA:75,1 +DA:76,17 +DA:89,1 +DA:90,23 +DA:91,23 +DA:93,23 +DA:94,23 +DA:95,23 +DA:98,23 +DA:99,23 +DA:100,29 +DA:101,29 +DA:102,29 +DA:108,1 +DA:109,27 +DA:110,27 +DA:111,27 +DA:112,23 +DA:116,1 +DA:117,23 +DA:118,23 +DA:119,27 +DA:120,27 +DA:121,27 +DA:123,23 +DA:131,1 +DA:132,1 +DA:133,5 +DA:134,5 +DA:135,0 +DA:141,5 +DA:142,5 +DA:176,1 +DA:177,23 +DA:178,23 +DA:179,23 +DA:184,1 +DA:185,18 +DA:186,18 +DA:187,18 +DA:188,18 +DA:195,1 +DA:196,56 +DA:197,56 +DA:199,56 +DA:210,9 +DA:211,4 +DA:212,4 +DA:213,1 +DA:215,5 +DA:216,2 +DA:218,3 +DA:220,9 +DA:231,6 +DA:232,1 +DA:233,5 +DA:234,0 +DA:236,5 +DA:238,6 +DA:247,5 +DA:248,0 +DA:249,5 +DA:250,1 +DA:252,4 +DA:254,5 +DA:266,4 +DA:267,3 +DA:268,1 +DA:269,0 +DA:271,4 +DA:278,5 +DA:279,3 +DA:280,2 +DA:281,0 +DA:283,5 +DA:294,10 +DA:295,3 +DA:296,7 +DA:297,5 +DA:299,10 +DA:316,17 +DA:317,0 +DA:318,17 +DA:319,0 +DA:321,17 +DA:325,56 +DA:326,17 +DA:329,17 +DA:330,0 +DA:331,0 +DA:337,17 +DA:338,17 +DA:339,17 +DA:351,1 +DA:352,23 +DA:353,23 +DA:355,23 +DA:356,23 +DA:361,1 +DA:367,1 +DA:368,0 +DA:369,0 +DA:375,1 +DA:376,0 +DA:387,1 +DA:388,29 +DA:389,4 +DA:390,0 +DA:392,4 +DA:394,4 +DA:399,1 +DA:401,4 +DA:402,4 +DA:406,4 +DA:407,4 +DA:408,4 +DA:409,4 +DA:418,4 +DA:422,4 +DA:423,4 +DA:429,0 +DA:433,1 +DA:434,29 +DA:435,10 +DA:438,29 +DA:439,5 +LF:153 +LH:138 +BRDA:19,1,0,23 +BRDA:19,1,1,21 +BRDA:44,2,0,4 +BRDA:44,2,1,25 +BRDA:46,3,0,7 +BRDA:46,3,1,18 +BRDA:109,4,0,27 +BRDA:109,4,1,23 +BRDA:111,5,0,23 +BRDA:111,5,1,4 +BRDA:134,6,0,0 +BRDA:134,6,1,5 +BRDA:185,7,0,18 +BRDA:185,7,1,0 +BRDA:199,8,0,9 +BRDA:199,8,1,6 +BRDA:199,8,2,5 +BRDA:199,8,3,4 +BRDA:199,8,4,5 +BRDA:199,8,5,10 +BRDA:199,8,6,17 +BRDA:210,9,0,4 +BRDA:210,9,1,5 +BRDA:212,10,0,1 +BRDA:212,10,1,3 +BRDA:213,11,0,1 +BRDA:213,11,1,0 +BRDA:215,12,0,2 +BRDA:215,12,1,3 +BRDA:216,13,0,1 +BRDA:216,13,1,1 +BRDA:231,14,0,1 +BRDA:231,14,1,5 +BRDA:231,15,0,6 +BRDA:231,15,1,1 +BRDA:233,16,0,0 +BRDA:233,16,1,5 +BRDA:233,17,0,5 +BRDA:233,17,1,0 +BRDA:247,18,0,0 +BRDA:247,18,1,5 +BRDA:249,19,0,1 +BRDA:249,19,1,4 +BRDA:249,20,0,5 +BRDA:249,20,1,5 +BRDA:266,21,0,3 +BRDA:266,21,1,1 +BRDA:267,22,0,1 +BRDA:267,22,1,2 +BRDA:268,23,0,0 +BRDA:268,23,1,1 +BRDA:278,24,0,3 +BRDA:278,24,1,2 +BRDA:278,25,0,5 +BRDA:278,25,1,5 +BRDA:278,25,2,5 +BRDA:280,26,0,0 +BRDA:280,26,1,2 +BRDA:294,27,0,3 +BRDA:294,27,1,7 +BRDA:294,28,0,10 +BRDA:294,28,1,10 +BRDA:294,28,2,5 +BRDA:296,29,0,5 +BRDA:296,29,1,2 +BRDA:316,30,0,0 +BRDA:316,30,1,17 +BRDA:316,31,0,17 +BRDA:316,31,1,0 +BRDA:318,32,0,0 +BRDA:318,32,1,17 +BRDA:318,33,0,17 +BRDA:318,33,1,17 +BRDA:325,34,0,17 +BRDA:325,34,1,39 +BRDA:329,35,0,0 +BRDA:329,35,1,17 +BRDA:388,36,0,4 +BRDA:388,36,1,25 +BRDA:389,37,0,0 +BRDA:389,37,1,4 +BRDA:406,38,0,8 +BRDA:406,38,1,4 +BRDA:422,39,0,4 +BRDA:422,39,1,0 +BRDA:434,40,0,10 +BRDA:434,40,1,19 +BRDA:438,41,0,5 +BRDA:438,41,1,24 +BRF:89 +BRH:75 +end_of_record +TN: +SF:/data/upstream/node-http2/lib/endpoint.js +FN:15,Endpoint +FN:47,_writePrelude +FN:53,_readPrelude +FN:58,_temporalWrite +FN:116,_initializeDataFlow +FN:138,_read +FN:149,_write +FN:156,_initializeErrorHandling +FN:164,_error +FNF:9 +FNH:8 +FNDA:2,Endpoint +FNDA:1,_writePrelude +FNDA:1,_readPrelude +FNDA:1,_temporalWrite +FNDA:2,_initializeDataFlow +FNDA:12,_read +FNDA:7,_write +FNDA:2,_initializeErrorHandling +FNDA:0,_error +DA:1,1 +DA:2,1 +DA:3,1 +DA:4,1 +DA:5,1 +DA:6,1 +DA:7,1 +DA:9,1 +DA:15,1 +DA:16,2 +DA:19,2 +DA:23,2 +DA:24,1 +DA:25,1 +DA:26,1 +DA:28,0 +DA:34,2 +DA:37,2 +DA:39,1 +DA:44,1 +DA:47,1 +DA:48,1 +DA:49,1 +DA:53,1 +DA:55,1 +DA:58,1 +DA:61,1 +DA:62,1 +DA:63,24 +DA:64,0 +DA:66,0 +DA:67,0 +DA:69,24 +DA:74,1 +DA:75,1 +DA:76,1 +DA:77,1 +DA:78,1 +DA:116,1 +DA:117,2 +DA:118,2 +DA:119,1 +DA:120,1 +DA:121,1 +DA:123,1 +DA:124,1 +DA:125,1 +DA:128,2 +DA:129,2 +DA:130,2 +DA:131,2 +DA:132,2 +DA:134,2 +DA:135,2 +DA:138,1 +DA:139,12 +DA:140,12 +DA:141,8 +DA:144,12 +DA:145,12 +DA:149,1 +DA:150,7 +DA:156,1 +DA:157,2 +DA:158,2 +DA:159,2 +DA:160,2 +DA:161,2 +DA:164,1 +DA:165,0 +DA:166,0 +DA:167,0 +LF:72 +LH:65 +BRDA:19,1,0,2 +BRDA:19,1,1,0 +BRDA:23,2,0,1 +BRDA:23,2,1,1 +BRDA:25,3,0,1 +BRDA:25,3,1,0 +BRDA:62,4,0,25 +BRDA:62,4,1,24 +BRDA:63,5,0,0 +BRDA:63,5,1,24 +BRDA:74,6,0,1 +BRDA:74,6,1,0 +BRDA:118,7,0,1 +BRDA:118,7,1,1 +BRDA:140,8,0,20 +BRDA:140,8,1,20 +BRDA:144,9,0,12 +BRDA:144,9,1,0 +BRF:18 +BRH:13 +end_of_record +TN: +SF:/data/upstream/node-http2/lib/framer.js +FN:24,Serializer +FN:33,_transform +FN:63,Deserializer +FN:75,(anonymous_4) +FN:86,_transform +FN:190,writeCommonHeader +FN:225,readCommonHeader +FN:270,writeData +FN:274,readData +FN:313,writeHeadersPriority +FN:322,readHeadersPriority +FN:352,writePriority +FN:358,readPriority +FN:384,writeRstStream +FN:390,readRstStream +FN:426,writeSettings +FN:428,(anonymous_17) +FN:448,readSettings +FN:514,writePushPromise +FN:521,readPushPromise +FN:545,writePing +FN:552,readPing +FN:587,writeGoaway +FN:594,readGoaway +FN:621,writeWindowUpdate +FN:627,readWindowUpdate +FN:655,(anonymous_27) +FN:657,(anonymous_28) +FN:665,(anonymous_29) +FN:673,(anonymous_30) +FNF:30 +FNH:26 +FNDA:3,Serializer +FNDA:14,_transform +FNDA:3,Deserializer +FNDA:31,(anonymous_4) +FNDA:22,_transform +FNDA:24,writeCommonHeader +FNDA:24,readCommonHeader +FNDA:2,writeData +FNDA:2,readData +FNDA:4,writeHeadersPriority +FNDA:4,readHeadersPriority +FNDA:2,writePriority +FNDA:2,readPriority +FNDA:2,writeRstStream +FNDA:2,readRstStream +FNDA:4,writeSettings +FNDA:12,(anonymous_17) +FNDA:4,readSettings +FNDA:2,writePushPromise +FNDA:2,readPushPromise +FNDA:2,writePing +FNDA:2,readPing +FNDA:2,writeGoaway +FNDA:2,readGoaway +FNDA:4,writeWindowUpdate +FNDA:4,readWindowUpdate +FNDA:0,(anonymous_27) +FNDA:0,(anonymous_28) +FNDA:0,(anonymous_29) +FNDA:0,(anonymous_30) +DA:5,1 +DA:7,1 +DA:9,1 +DA:10,1 +DA:24,1 +DA:25,3 +DA:26,3 +DA:28,1 +DA:33,1 +DA:34,14 +DA:36,14 +DA:37,0 +DA:40,14 +DA:41,14 +DA:42,14 +DA:44,14 +DA:45,30 +DA:46,30 +DA:49,14 +DA:63,1 +DA:64,3 +DA:65,3 +DA:66,3 +DA:68,1 +DA:75,1 +DA:76,31 +DA:77,31 +DA:78,31 +DA:79,31 +DA:80,17 +DA:86,1 +DA:87,22 +DA:89,22 +DA:91,22 +DA:94,39 +DA:95,39 +DA:96,39 +DA:97,39 +DA:104,39 +DA:105,14 +DA:106,14 +DA:114,39 +DA:115,14 +DA:116,14 +DA:117,14 +DA:118,14 +DA:119,14 +DA:121,0 +DA:122,0 +DA:125,0 +DA:127,14 +DA:131,22 +DA:179,1 +DA:180,1 +DA:182,1 +DA:184,1 +DA:186,1 +DA:188,1 +DA:190,1 +DA:191,24 +DA:193,24 +DA:194,24 +DA:195,26 +DA:197,24 +DA:198,0 +DA:200,24 +DA:202,24 +DA:203,24 +DA:205,24 +DA:206,24 +DA:207,28 +DA:208,28 +DA:209,0 +DA:211,28 +DA:212,4 +DA:215,24 +DA:217,24 +DA:218,0 +DA:220,24 +DA:222,24 +DA:225,1 +DA:226,24 +DA:228,24 +DA:230,24 +DA:231,24 +DA:232,24 +DA:233,24 +DA:234,28 +DA:237,24 +DA:264,1 +DA:266,1 +DA:268,1 +DA:270,1 +DA:271,2 +DA:274,1 +DA:275,2 +DA:297,1 +DA:299,1 +DA:301,1 +DA:313,1 +DA:314,4 +DA:315,2 +DA:316,2 +DA:317,2 +DA:319,4 +DA:322,1 +DA:323,4 +DA:324,2 +DA:325,2 +DA:327,2 +DA:338,1 +DA:340,1 +DA:342,1 +DA:352,1 +DA:353,2 +DA:354,2 +DA:355,2 +DA:358,1 +DA:359,2 +DA:369,1 +DA:371,1 +DA:373,1 +DA:384,1 +DA:385,2 +DA:386,2 +DA:387,2 +DA:390,1 +DA:391,2 +DA:402,1 +DA:404,1 +DA:406,1 +DA:426,1 +DA:427,4 +DA:428,4 +DA:429,12 +DA:430,6 +DA:431,6 +DA:432,6 +DA:435,4 +DA:436,0 +DA:439,4 +DA:440,4 +DA:441,6 +DA:442,6 +DA:445,4 +DA:448,1 +DA:449,4 +DA:451,4 +DA:452,0 +DA:454,4 +DA:455,6 +DA:456,6 +DA:457,6 +DA:458,6 +DA:459,0 +DA:461,6 +DA:464,4 +DA:468,1 +DA:472,1 +DA:476,1 +DA:482,1 +DA:496,1 +DA:498,1 +DA:500,1 +DA:514,1 +DA:515,2 +DA:516,2 +DA:517,2 +DA:518,2 +DA:521,1 +DA:522,2 +DA:523,2 +DA:537,1 +DA:539,1 +DA:541,1 +DA:545,1 +DA:546,2 +DA:547,0 +DA:549,2 +DA:552,1 +DA:553,2 +DA:554,0 +DA:556,2 +DA:566,1 +DA:568,1 +DA:570,1 +DA:587,1 +DA:588,2 +DA:589,2 +DA:590,2 +DA:591,2 +DA:594,1 +DA:595,2 +DA:596,2 +DA:610,1 +DA:612,1 +DA:614,1 +DA:621,1 +DA:622,4 +DA:623,4 +DA:624,4 +DA:627,1 +DA:628,4 +DA:634,1 +DA:655,1 +DA:656,0 +DA:657,0 +DA:658,0 +DA:661,0 +DA:662,0 +DA:665,0 +DA:666,0 +DA:669,0 +DA:673,1 +DA:674,0 +LF:215 +LH:194 +BRDA:25,1,0,3 +BRDA:25,1,1,1 +BRDA:36,2,0,0 +BRDA:36,2,1,14 +BRDA:64,3,0,3 +BRDA:64,3,1,1 +BRDA:79,4,0,17 +BRDA:79,4,1,14 +BRDA:104,5,0,14 +BRDA:104,5,1,25 +BRDA:104,6,0,39 +BRDA:104,6,1,26 +BRDA:114,7,0,14 +BRDA:114,7,1,25 +BRDA:114,8,0,39 +BRDA:114,8,1,14 +BRDA:115,9,0,14 +BRDA:115,9,1,0 +BRDA:197,10,0,0 +BRDA:197,10,1,24 +BRDA:208,11,0,0 +BRDA:208,11,1,28 +BRDA:211,12,0,4 +BRDA:211,12,1,24 +BRDA:217,13,0,0 +BRDA:217,13,1,24 +BRDA:220,14,0,24 +BRDA:220,14,1,4 +BRDA:314,15,0,2 +BRDA:314,15,1,2 +BRDA:323,16,0,2 +BRDA:323,16,1,2 +BRDA:429,17,0,6 +BRDA:429,17,1,6 +BRDA:432,18,0,2 +BRDA:432,18,1,4 +BRDA:435,19,0,0 +BRDA:435,19,1,4 +BRDA:451,20,0,0 +BRDA:451,20,1,4 +BRDA:458,21,0,0 +BRDA:458,21,1,6 +BRDA:458,22,0,6 +BRDA:458,22,1,6 +BRDA:461,23,0,2 +BRDA:461,23,1,4 +BRDA:546,24,0,0 +BRDA:546,24,1,2 +BRDA:546,25,0,2 +BRDA:546,25,1,2 +BRDA:553,26,0,0 +BRDA:553,26,1,2 +BRDA:661,27,0,0 +BRDA:661,27,1,0 +BRDA:665,28,0,0 +BRDA:665,28,1,0 +BRF:56 +BRH:42 +end_of_record From b6e9fece9b3c22dbae0d90f958eb7790e27530eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Moln=C3=A1r?= Date: Fri, 19 Jul 2013 18:50:19 +0200 Subject: [PATCH 04/20] Removing unneeded files --- lib/endpoint.js | 168 --------------------------------------------- lib/index.js | 32 --------- lib/logging.js | 28 -------- test/connection.js | 72 ------------------- test/endpoint.js | 24 ------- 5 files changed, 324 deletions(-) delete mode 100644 lib/endpoint.js delete mode 100644 lib/index.js delete mode 100644 lib/logging.js delete mode 100644 test/connection.js delete mode 100644 test/endpoint.js diff --git a/lib/endpoint.js b/lib/endpoint.js deleted file mode 100644 index b259cbd3..00000000 --- a/lib/endpoint.js +++ /dev/null @@ -1,168 +0,0 @@ -var logging = require('./logging'); -var Serializer = require('./framer').Serializer; -var Deserializer = require('./framer').Deserializer; -var Compressor = require('./compressor').Compressor; -var Decompressor = require('./compressor').Decompressor; -var Connection = require('./connection').Connection; -var Duplex = require('stream').Duplex; - -exports.Endpoint = Endpoint; - -// Endpoint -// ======== - -// The process of initialization: -function Endpoint(role, settings, log) { - Duplex.call(this); - - // * Initializing logging infrastructure - this._log = (log || logging.root).child({ component: 'endpoint' }); - - // * First part of the handshake process: sending and receiving the client connection header - // prelude. - if (role === 'CLIENT') { - this._writePrelude(); - } else if (role === 'SERVER') { - this._readPrelude(); - } else { - throw new Error('Invalid role: ' + role); - } - - // * Initialization of componenet. This includes the second part of the handshake process: - // sending the first SETTINGS frame. This is done by the connection class right after - // initialization. - this._initializeDataFlow(role, settings); - - // * Initializing error handling. - this._initializeErrorHandling(); -} -Endpoint.prototype = Object.create(Duplex.prototype, { constructor: { value: Endpoint } }); - -// Handshake -// --------- - -var CLIENT_PRELUDE = new Buffer('PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n'); - -// Writing the client header is simple and synchronous. -Endpoint.prototype._writePrelude = function _writePrelude() { - this._log.info('Sending the client connection header prelude.'); - this.push(CLIENT_PRELUDE); -}; - -// The asynchronous process of reading the client header: -Endpoint.prototype._readPrelude = function _readPrelude() { - // * progress in the header is tracker using a `cursor` - var cursor = 0; - - // * `_write` is temporarily replaced by the comparator function - this._write = function _temporalWrite(chunk, encoding, done) { - // * which compares the stored header with the current `chunk` byte by byte and emits the - // 'error' event if there's a byte that doesn't match - var offset = cursor; - while(cursor < CLIENT_PRELUDE.length && (cursor - offset) < chunk.length) { - if (CLIENT_PRELUDE[cursor] !== chunk[cursor - offset]) { - this._log.fatal({ cursor: cursor, offset: offset, chunk: chunk }, - 'Client connection header prelude does not match.'); - this._error('handshake', 'Client connection header prelude does not match.'); - return; - } - cursor += 1; - } - - // * if the whole header is over, and there were no error then restore the original `_write` - // and call it with the remaining part of the current chunk - if (cursor === CLIENT_PRELUDE.length) { - this._log.info('Successfully received the client connection header prelude.'); - delete this._write; - chunk = chunk.slice(cursor - offset); - this._write(chunk, encoding, done); - } - }; -}; - -// Data flow -// --------- - -// +---------------------------------------------+ -// | | -// | +-------------------------------------+ | -// | | +---------+ +---------+ +---------+ | | -// | | | stream1 | | stream2 | | ... | | | -// | | +---------+ +---------+ +---------+ | | -// | | connection | | -// | +-------------------------------------+ | -// | | ^ | -// | pipe | | pipe | -// | v | | -// | +------------------+------------------+ | -// | | compressor | decompressor | | -// | +------------------+------------------+ | -// | | ^ | -// | pipe | | pipe | -// | v | | -// | +------------------+------------------+ | -// | | serializer | deserializer | | -// | +------------------+------------------+ | -// | | ^ | -// | _read() | | _write() | -// | v | | -// | +------------+ +-----------+ | -// | |output queue| |input queue| | -// +------+------------+-----+-----------+-------+ -// | ^ -// read() | | write() -// v | - -Endpoint.prototype._initializeDataFlow = function _initializeDataFlow(role, settings) { - var firstStreamId, compressorRole, decompressorRole; - if (role === 'CLIENT') { - firstStreamId = 1; - compressorRole = 'REQUEST'; - decompressorRole = 'RESPONSE'; - } else { - firstStreamId = 2; - compressorRole = 'RESPONSE'; - decompressorRole = 'REQUEST'; - } - - this._serializer = new Serializer(this._log); - this._deserializer = new Deserializer(this._log); - this._compressor = new Compressor(compressorRole, this._log); - this._decompressor = new Decompressor(decompressorRole, this._log); - this._connection = new Connection(firstStreamId, settings, this._log); - - this._connection.pipe(this._compressor).pipe(this._serializer); - this._deserializer.pipe(this._decompressor).pipe(this._connection); -}; - -Endpoint.prototype._read = function _read(size) { - var more_needed = true, chunk; - while (more_needed && (chunk = this._serializer.read(size))) { - more_needed = this.push(chunk); - } - - if (more_needed) { - this._serializer.once('readable', this._read.bind(this)); - } -}; - -Endpoint.prototype._write = function _write(chunk, encoding, done) { - this._deserializer.write(chunk, encoding, done); -}; - -// Error handling -// -------------- - -Endpoint.prototype._initializeErrorHandling = function _initializeErrorHandling() { - this._serializer.on('error', this._error.bind(this, 'serializer')); - this._deserializer.on('error', this._error.bind(this, 'deserializer')); - this._compressor.on('error', this._error.bind(this, 'compressor')); - this._decompressor.on('error', this._error.bind(this, 'decompressor')); - this._connection.on('error', this._error.bind(this, 'connection')); -}; - -Endpoint.prototype._error = function _error(component, message) { - this._log.fatal({ component: component, message: message }, 'Fatal error, closing connection'); - this.push(null); - this.emit('error', component, message); -}; diff --git a/lib/index.js b/lib/index.js deleted file mode 100644 index 11c2fb17..00000000 --- a/lib/index.js +++ /dev/null @@ -1,32 +0,0 @@ -// [node-http2](https://github.com/molnarg/node-http2) consists of the following components: -var http2 = exports; - -// * [utils.js](utils.html): common utility functions, like concatenating buffers -http2.utils = require('./utils'); - -// * [logging.js](logging.html): a default logger object and a registry of log formatter functions -http2.logging = require('./logging'); - -// * [framer.js](framer.html): the lowest layer in the stack that transforms between the binary and -// the JavaScript object representation of HTTP/2 frames -http2.framer = require('./framer'); - -// * [compressor.js](compressor.html): compression and decompression of HEADER frames -http2.compressor = require('./compressor'); - -// * [stream.js](stream.html): implementation of the HTTP/2 stream concept -http2.stream = require('./stream'); - -// * [connection.js](connection.html): multiplexes streams, manages the identifiers of them and -// repsonsible for connection level flow control -http2.connection = require('./connection'); - -// * [endpoint.js](endpoint.html): manages other components (framer, compressor, connection, -// streams) and part of the handshake process -http2.endpoint = require('./endpoint'); - -// * [http.js](http.html): public node-http2 API for unencrypted connections -http2.http = require('./http'); - -// * [https.js](https.html): public node-http2 API for SSL/TLS encrypted connections -http2.https = require('./https'); diff --git a/lib/logging.js b/lib/logging.js deleted file mode 100644 index 11271ffa..00000000 --- a/lib/logging.js +++ /dev/null @@ -1,28 +0,0 @@ -var utils = require('./utils'); -var logging = exports; - -if (process.env.HTTP2_LOG) { - var bunyan = require('bunyan'); - - logging.root = bunyan.createLogger({ - name: 'http2', - level: process.env.HTTP2_LOG, - serializers: bunyan.stdSerializers - }); - - logging.serializers = logging.root.serializers; - -} else { - logging.root = { - fatal: utils.noop, - error: utils.noop, - warn : utils.noop, - info : utils.noop, - debug: utils.noop, - trace: utils.noop, - - child: function() { return this; } - }; - - logging.serializers = {}; -} diff --git a/test/connection.js b/test/connection.js deleted file mode 100644 index 7aabcc9e..00000000 --- a/test/connection.js +++ /dev/null @@ -1,72 +0,0 @@ -var expect = require('chai').expect; -var log_root = require('../lib/logging').root; - -var Connection = require('../lib/connection').Connection; - -describe('connection.js', function() { - describe('scenario', function() { - describe('connection setup', function() { - it('should work as expected', function(done) { - var c = new Connection(1, {}); - var s = new Connection(2, {}); - - c.pipe(s).pipe(c); - - setTimeout(function() { - // If there are no exception until this, then we're done - done(); - }, 10); - }); - }); - describe('sending/receiving a request', function() { - it('should work as expected', function(done) { - var c = new Connection(1, {}, log_root.child({ role: 'client' })); - var s = new Connection(2, {}, log_root.child({ role: 'server' })); - - c.pipe(s).pipe(c); - - // Request and response data - var request_headers = { - ':method': 'GET', - ':path': '/' - }; - var request_data = new Buffer(0); - var response_headers = { - ':status': '200' - }; - var response_data = new Buffer('12345678', 'hex'); - - // Setting up server - s.on('incoming_stream', function(server_stream) { - server_stream.on('headers', function(headers) { - expect(headers).to.deep.equal(request_headers); - server_stream.open(response_headers); - server_stream.end(response_data); - }); - }); - - // Sending request - var client_stream = c.createStream(); - client_stream.open(request_headers); - client_stream.end(request_data); - - // Waiting for answer - var headers_arrived = false; - var data_arrived = false; - client_stream.on('headers', function(headers) { - expect(headers).to.deep.equal(response_headers); - headers_arrived = true; - }); - client_stream.on('data', function(chunk) { - expect(chunk).to.deep.equal(response_data); - data_arrived = true; - }); - client_stream.on('end', function() { - expect(headers_arrived).to.equal(true); - expect(data_arrived).to.equal(true); - done(); - }); - }); - }); - }); -}); diff --git a/test/endpoint.js b/test/endpoint.js deleted file mode 100644 index c9948934..00000000 --- a/test/endpoint.js +++ /dev/null @@ -1,24 +0,0 @@ -var expect = require('chai').expect; -var log_root = require('../lib/logging').root; - -var endpoint = require('../lib/endpoint'); -var Endpoint = endpoint.Endpoint; - -describe('endpoint.js', function() { - describe('scenario', function() { - describe('connection setup', function() { - it('should work as expected', function(done) { - var c = new Endpoint('CLIENT', {}, log_root.child({ role: 'client' })); - var s = new Endpoint('SERVER', {}, log_root.child({ role: 'server' })); - - log_root.debug('Test initialization over, starting piping.'); - c.pipe(s).pipe(c); - - setTimeout(function() { - // If there are no exception until this, then we're done - done(); - }, 10); - }); - }); - }); -}); From a8ee821f497b7e9740d431f6f82016ff3225ecc4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Moln=C3=A1r?= Date: Fri, 19 Jul 2013 18:50:32 +0200 Subject: [PATCH 05/20] Moving public directory back to doc --- {public => doc/public}/fonts/aller-bold.eot | Bin {public => doc/public}/fonts/aller-bold.ttf | Bin {public => doc/public}/fonts/aller-bold.woff | Bin {public => doc/public}/fonts/aller-light.eot | Bin {public => doc/public}/fonts/aller-light.ttf | Bin {public => doc/public}/fonts/aller-light.woff | Bin {public => doc/public}/fonts/novecento-bold.eot | Bin {public => doc/public}/fonts/novecento-bold.ttf | Bin {public => doc/public}/fonts/novecento-bold.woff | Bin {public => doc/public}/stylesheets/normalize.css | 0 10 files changed, 0 insertions(+), 0 deletions(-) rename {public => doc/public}/fonts/aller-bold.eot (100%) rename {public => doc/public}/fonts/aller-bold.ttf (100%) rename {public => doc/public}/fonts/aller-bold.woff (100%) rename {public => doc/public}/fonts/aller-light.eot (100%) rename {public => doc/public}/fonts/aller-light.ttf (100%) rename {public => doc/public}/fonts/aller-light.woff (100%) rename {public => doc/public}/fonts/novecento-bold.eot (100%) rename {public => doc/public}/fonts/novecento-bold.ttf (100%) rename {public => doc/public}/fonts/novecento-bold.woff (100%) rename {public => doc/public}/stylesheets/normalize.css (100%) diff --git a/public/fonts/aller-bold.eot b/doc/public/fonts/aller-bold.eot similarity index 100% rename from public/fonts/aller-bold.eot rename to doc/public/fonts/aller-bold.eot diff --git a/public/fonts/aller-bold.ttf b/doc/public/fonts/aller-bold.ttf similarity index 100% rename from public/fonts/aller-bold.ttf rename to doc/public/fonts/aller-bold.ttf diff --git a/public/fonts/aller-bold.woff b/doc/public/fonts/aller-bold.woff similarity index 100% rename from public/fonts/aller-bold.woff rename to doc/public/fonts/aller-bold.woff diff --git a/public/fonts/aller-light.eot b/doc/public/fonts/aller-light.eot similarity index 100% rename from public/fonts/aller-light.eot rename to doc/public/fonts/aller-light.eot diff --git a/public/fonts/aller-light.ttf b/doc/public/fonts/aller-light.ttf similarity index 100% rename from public/fonts/aller-light.ttf rename to doc/public/fonts/aller-light.ttf diff --git a/public/fonts/aller-light.woff b/doc/public/fonts/aller-light.woff similarity index 100% rename from public/fonts/aller-light.woff rename to doc/public/fonts/aller-light.woff diff --git a/public/fonts/novecento-bold.eot b/doc/public/fonts/novecento-bold.eot similarity index 100% rename from public/fonts/novecento-bold.eot rename to doc/public/fonts/novecento-bold.eot diff --git a/public/fonts/novecento-bold.ttf b/doc/public/fonts/novecento-bold.ttf similarity index 100% rename from public/fonts/novecento-bold.ttf rename to doc/public/fonts/novecento-bold.ttf diff --git a/public/fonts/novecento-bold.woff b/doc/public/fonts/novecento-bold.woff similarity index 100% rename from public/fonts/novecento-bold.woff rename to doc/public/fonts/novecento-bold.woff diff --git a/public/stylesheets/normalize.css b/doc/public/stylesheets/normalize.css similarity index 100% rename from public/stylesheets/normalize.css rename to doc/public/stylesheets/normalize.css From d72d76aed0f92e6b4bdd0ffb404c23b2e246f7c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Moln=C3=A1r?= Date: Fri, 19 Jul 2013 18:50:53 +0200 Subject: [PATCH 06/20] Deleting unneeded files. --- example/client.js | 23 ----------------------- example/server.js | 45 --------------------------------------------- 2 files changed, 68 deletions(-) delete mode 100644 example/client.js delete mode 100644 example/server.js diff --git a/example/client.js b/example/client.js deleted file mode 100644 index 0d28df88..00000000 --- a/example/client.js +++ /dev/null @@ -1,23 +0,0 @@ -var parse_url = require('url').parse; -var net = require('net'); -var http2 = require('../lib/index'); -var Endpoint = http2.endpoint.Endpoint; - -var settings = { - SETTINGS_MAX_CONCURRENT_STREAMS: 1, - SETTINGS_INITIAL_WINDOW_SIZE: 100000 -}; - -var url = parse_url(process.argv.pop()); -var server = { host: url.hostname, port: url.port }; - -var socket = net.connect(server, function() { - var client_endpoint = new Endpoint('CLIENT', settings); - client_endpoint.pipe(socket).pipe(client_endpoint); - - var stream = client_endpoint._connection.createStream(); - stream.open({ ':path': url.path }); - stream.end(); - stream.pipe(process.stderr); - stream.on('end', process.exit); -}); diff --git a/example/server.js b/example/server.js deleted file mode 100644 index d1d4578e..00000000 --- a/example/server.js +++ /dev/null @@ -1,45 +0,0 @@ -var fs = require('fs'); -var net = require('net'); -var path = require('path'); -var http2 = require('../lib/index'); -var Endpoint = http2.endpoint.Endpoint; - -var settings = { - SETTINGS_MAX_CONCURRENT_STREAMS: 1, - SETTINGS_INITIAL_WINDOW_SIZE: 100000 -}; - -var server = net.createServer(function(socket) { - console.error('Incoming connection.'); - - var server_endpoint = new Endpoint('SERVER', settings); - server_endpoint.pipe(socket).pipe(server_endpoint); - - server_endpoint._connection.on('incoming_stream', function(stream) { - console.error('Incoming stream.'); - - stream.on('headers', function(headers) { - var filename = path.join(__dirname, headers[':path']); - console.error('Incoming request:', headers[':path'], '(' + filename + ')'); - - if (fs.existsSync(filename)) { - console.error('Reading file from disk.'); - stream.open({ - ':status': '200' - }); - var filestream = fs.createReadStream(filename); - filestream.pipe(stream); - - } else { - console.error('File not found.'); - stream.open({ - ':status': '404' - }); - stream.end(); - } - }); - }); -}); - -server.listen(8080); -console.error('Listening on localhost:8080, serving up files from', __dirname); From 80094ef50ecda2c19f3f7a1cc1e831e29646af51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Moln=C3=A1r?= Date: Mon, 19 Aug 2013 20:42:26 +0200 Subject: [PATCH 07/20] Updating coverage report. --- coverage/coverage.json | 2 +- coverage/lcov-report/index.html | 28 +- coverage/lcov-report/lib/compressor.js.html | 616 ++-- coverage/lcov-report/lib/connection.js.html | 1029 ++++-- coverage/lcov-report/lib/endpoint.js.html | 167 +- coverage/lcov-report/lib/framer.js.html | 490 +-- coverage/lcov-report/lib/index.html | 135 +- coverage/lcov-report/lib/logging.js.html | 24 +- coverage/lcov-report/lib/stream.js.html | 861 +++-- coverage/lcov-report/lib/utils.js.html | 422 --- coverage/lcov.info | 3526 ++++++++++++------- 11 files changed, 4390 insertions(+), 2910 deletions(-) delete mode 100644 coverage/lcov-report/lib/utils.js.html diff --git a/coverage/coverage.json b/coverage/coverage.json index 1207c919..2c36513f 100644 --- a/coverage/coverage.json +++ b/coverage/coverage.json @@ -1 +1 @@ -{"/data/upstream/node-http2/lib/utils.js":{"path":"/data/upstream/node-http2/lib/utils.js","s":{"1":1,"2":77,"3":77,"4":411,"5":77,"6":77,"7":411,"8":77,"9":1,"10":14,"11":14,"12":14,"13":16,"14":16,"15":16,"16":14,"17":1,"18":12,"19":12,"20":0,"21":12,"22":1,"23":1},"b":{},"f":{"1":77,"2":14,"3":12,"4":372},"fnMap":{"1":{"name":"concat","line":2,"loc":{"start":{"line":2,"column":17},"end":{"line":2,"column":42}}},"2":{"name":"cut","line":17,"loc":{"start":{"line":17,"column":14},"end":{"line":17,"column":41}}},"3":{"name":"shallow_copy","line":29,"loc":{"start":{"line":29,"column":23},"end":{"line":29,"column":53}}},"4":{"name":"noop","line":38,"loc":{"start":{"line":38,"column":0},"end":{"line":38,"column":16}}}},"statementMap":{"1":{"start":{"line":2,"column":0},"end":{"line":14,"column":2}},"2":{"start":{"line":3,"column":2},"end":{"line":3,"column":15}},"3":{"start":{"line":4,"column":2},"end":{"line":6,"column":3}},"4":{"start":{"line":5,"column":4},"end":{"line":5,"column":30}},"5":{"start":{"line":8,"column":2},"end":{"line":8,"column":38}},"6":{"start":{"line":9,"column":2},"end":{"line":11,"column":3}},"7":{"start":{"line":10,"column":4},"end":{"line":10,"column":42}},"8":{"start":{"line":13,"column":2},"end":{"line":13,"column":22}},"9":{"start":{"line":17,"column":0},"end":{"line":26,"column":2}},"10":{"start":{"line":18,"column":2},"end":{"line":18,"column":18}},"11":{"start":{"line":19,"column":2},"end":{"line":19,"column":17}},"12":{"start":{"line":20,"column":2},"end":{"line":24,"column":34}},"13":{"start":{"line":21,"column":4},"end":{"line":21,"column":60}},"14":{"start":{"line":22,"column":4},"end":{"line":22,"column":59}},"15":{"start":{"line":23,"column":4},"end":{"line":23,"column":25}},"16":{"start":{"line":25,"column":2},"end":{"line":25,"column":16}},"17":{"start":{"line":29,"column":0},"end":{"line":35,"column":2}},"18":{"start":{"line":30,"column":2},"end":{"line":30,"column":17}},"19":{"start":{"line":31,"column":2},"end":{"line":33,"column":3}},"20":{"start":{"line":32,"column":4},"end":{"line":32,"column":29}},"21":{"start":{"line":34,"column":2},"end":{"line":34,"column":15}},"22":{"start":{"line":38,"column":0},"end":{"line":38,"column":18}},"23":{"start":{"line":39,"column":0},"end":{"line":39,"column":20}}},"branchMap":{}},"/data/upstream/node-http2/lib/compressor.js":{"path":"/data/upstream/node-http2/lib/compressor.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":10,"10":10,"11":10,"12":10,"13":1,"14":1421,"15":1,"16":43,"17":136,"18":1,"19":43,"20":43,"21":154,"22":98,"23":43,"24":98,"25":98,"26":1,"27":172,"28":172,"29":52,"30":52,"31":139,"32":52,"33":2,"34":2,"35":50,"36":120,"37":35,"38":85,"39":120,"40":119,"41":88,"42":31,"43":119,"44":119,"45":120,"46":1,"47":36,"48":90,"49":1,"50":58,"51":58,"52":58,"53":5,"54":5,"55":1,"56":57,"57":57,"58":1029,"59":57,"60":31,"61":31,"62":15,"63":42,"64":1,"65":24,"66":24,"67":42,"68":24,"69":24,"70":24,"71":1,"72":119,"73":119,"74":119,"75":2345,"76":192,"77":2345,"78":119,"79":218,"80":218,"81":1,"82":6,"83":6,"84":6,"85":6,"86":1,"87":1,"88":23,"89":23,"90":23,"91":23,"92":90,"93":23,"94":23,"95":23,"96":90,"97":90,"98":90,"99":17,"100":8,"101":9,"102":73,"103":23,"104":23,"105":1,"106":4,"107":4,"108":4,"109":4,"110":1,"111":1,"112":20,"113":20,"114":20,"115":20,"116":64,"117":64,"118":8,"119":24,"120":56,"121":20,"122":20,"123":20,"124":46,"125":24,"126":24,"127":24,"128":20,"129":80,"130":58,"131":58,"132":58,"133":20,"134":20,"135":82,"136":20,"137":20,"138":20,"139":1,"140":216,"141":216,"142":88,"143":128,"144":128,"145":2,"146":128,"147":128,"148":128,"149":136,"150":136,"151":136,"152":8,"153":136,"154":136,"155":128,"156":1,"157":234,"158":234,"159":234,"160":100,"161":234,"162":139,"163":139,"164":149,"165":149,"166":149,"167":234,"168":1,"169":110,"170":110,"171":110,"172":1,"173":115,"174":115,"175":115,"176":115,"177":1,"178":1,"179":90,"180":90,"181":27,"182":63,"183":1,"184":62,"185":46,"186":16,"187":90,"188":27,"189":63,"190":20,"191":43,"192":43,"193":63,"194":16,"195":63,"196":90,"197":90,"198":1,"199":98,"200":98,"201":98,"202":29,"203":69,"204":52,"205":2,"206":50,"207":17,"208":98,"209":29,"210":29,"211":69,"212":69,"213":44,"214":69,"215":17,"216":52,"217":50,"218":2,"219":69,"220":98,"221":1,"222":1,"223":4,"224":1,"225":14,"226":10,"227":10,"228":10,"229":12,"230":12,"231":10,"232":2,"233":2,"234":12,"235":4,"236":14,"237":1,"238":6,"239":6,"240":6,"241":6,"242":6,"243":1,"244":18,"245":3,"246":1,"247":3,"248":15,"249":11,"250":11,"251":11,"252":11,"253":4,"254":18,"255":10,"256":12,"257":10,"258":10,"259":10,"260":18,"261":1,"262":1},"b":{"1":[10,10],"2":[1421,121],"3":[52,120],"4":[2,50],"5":[35,85],"6":[119,1],"7":[88,31],"8":[5,53],"9":[1,4],"10":[31,26],"11":[15,16],"12":[24,18],"13":[192,2153],"14":[6,4],"15":[4,2],"16":[17,73],"17":[8,9],"18":[4,2],"19":[2,2],"20":[8,56],"21":[24,22],"22":[58,22],"23":[88,128],"24":[2,126],"25":[8,128],"26":[100,134],"27":[139,95],"28":[27,63],"29":[1,62],"30":[46,16],"31":[27,63],"32":[20,43],"33":[16,47],"34":[29,69],"35":[52,17],"36":[2,50],"37":[29,69],"38":[44,25],"39":[17,52],"40":[50,2],"41":[10,4],"42":[14,9],"43":[10,2],"44":[3,15],"45":[1,2],"46":[3,2],"47":[11,4],"48":[15,9],"49":[10,8],"50":[18,14,9]},"f":{"1":10,"2":1421,"3":43,"4":136,"5":43,"6":154,"7":98,"8":98,"9":172,"10":139,"11":36,"12":90,"13":58,"14":1029,"15":24,"16":119,"17":6,"18":23,"19":4,"20":20,"21":216,"22":234,"23":110,"24":115,"25":90,"26":98,"27":4,"28":14,"29":6,"30":18,"31":12},"fnMap":{"1":{"name":"CompressionContext","line":40,"loc":{"start":{"line":40,"column":0},"end":{"line":40,"column":42}}},"2":{"name":"(anonymous_2)","line":49,"loc":{"start":{"line":49,"column":27},"end":{"line":49,"column":50}}},"3":{"name":"getWorkingSet","line":54,"loc":{"start":{"line":54,"column":45},"end":{"line":54,"column":70}}},"4":{"name":"(anonymous_4)","line":55,"loc":{"start":{"line":55,"column":27},"end":{"line":55,"column":43}}},"5":{"name":"reinitialize","line":61,"loc":{"start":{"line":61,"column":44},"end":{"line":61,"column":68}}},"6":{"name":"(anonymous_6)","line":67,"loc":{"start":{"line":67,"column":41},"end":{"line":67,"column":57}}},"7":{"name":"(anonymous_7)","line":69,"loc":{"start":{"line":69,"column":9},"end":{"line":69,"column":25}}},"8":{"name":"(anonymous_8)","line":77,"loc":{"start":{"line":77,"column":38},"end":{"line":77,"column":53}}},"9":{"name":"execute","line":106,"loc":{"start":{"line":106,"column":39},"end":{"line":106,"column":65}}},"10":{"name":"(anonymous_10)","line":116,"loc":{"start":{"line":116,"column":40},"end":{"line":116,"column":56}}},"11":{"name":"(anonymous_11)","line":154,"loc":{"start":{"line":154,"column":43},"end":{"line":154,"column":59}}},"12":{"name":"(anonymous_12)","line":155,"loc":{"start":{"line":155,"column":28},"end":{"line":155,"column":44}}},"13":{"name":"(anonymous_13)","line":162,"loc":{"start":{"line":162,"column":50},"end":{"line":162,"column":65}}},"14":{"name":"(anonymous_14)","line":178,"loc":{"start":{"line":178,"column":38},"end":{"line":178,"column":54}}},"15":{"name":"(anonymous_15)","line":201,"loc":{"start":{"line":201,"column":53},"end":{"line":201,"column":68}}},"16":{"name":"(anonymous_16)","line":225,"loc":{"start":{"line":225,"column":49},"end":{"line":225,"column":60}}},"17":{"name":"Decompressor","line":247,"loc":{"start":{"line":247,"column":0},"end":{"line":247,"column":33}}},"18":{"name":"decompress","line":262,"loc":{"start":{"line":262,"column":36},"end":{"line":262,"column":64}}},"19":{"name":"Compressor","line":308,"loc":{"start":{"line":308,"column":0},"end":{"line":308,"column":31}}},"20":{"name":"compress","line":323,"loc":{"start":{"line":323,"column":32},"end":{"line":323,"column":59}}},"21":{"name":"writeInteger","line":393,"loc":{"start":{"line":393,"column":21},"end":{"line":393,"column":49}}},"22":{"name":"readInteger","line":434,"loc":{"start":{"line":434,"column":23},"end":{"line":434,"column":55}}},"23":{"name":"writeString","line":464,"loc":{"start":{"line":464,"column":20},"end":{"line":464,"column":46}}},"24":{"name":"readString","line":470,"loc":{"start":{"line":470,"column":22},"end":{"line":470,"column":50}}},"25":{"name":"writeString","line":523,"loc":{"start":{"line":523,"column":20},"end":{"line":523,"column":49}}},"26":{"name":"readString","line":559,"loc":{"start":{"line":559,"column":22},"end":{"line":559,"column":50}}},"27":{"name":"_initializeStream","line":624,"loc":{"start":{"line":624,"column":41},"end":{"line":624,"column":70}}},"28":{"name":"_transform","line":628,"loc":{"start":{"line":628,"column":34},"end":{"line":628,"column":77}}},"29":{"name":"_initializeStream","line":673,"loc":{"start":{"line":673,"column":43},"end":{"line":673,"column":72}}},"30":{"name":"_transform","line":682,"loc":{"start":{"line":682,"column":36},"end":{"line":682,"column":79}}},"31":{"name":"(anonymous_31)","line":710,"loc":{"start":{"line":710,"column":47},"end":{"line":710,"column":63}}}},"statementMap":{"1":{"start":{"line":16,"column":0},"end":{"line":16,"column":36}},"2":{"start":{"line":17,"column":0},"end":{"line":17,"column":35}},"3":{"start":{"line":18,"column":0},"end":{"line":18,"column":44}},"4":{"start":{"line":20,"column":0},"end":{"line":20,"column":48}},"5":{"start":{"line":21,"column":0},"end":{"line":21,"column":36}},"6":{"start":{"line":22,"column":0},"end":{"line":22,"column":32}},"7":{"start":{"line":38,"column":0},"end":{"line":38,"column":38}},"8":{"start":{"line":40,"column":0},"end":{"line":45,"column":1}},"9":{"start":{"line":41,"column":2},"end":{"line":41,"column":30}},"10":{"start":{"line":42,"column":2},"end":{"line":42,"column":52}},"11":{"start":{"line":43,"column":2},"end":{"line":43,"column":23}},"12":{"start":{"line":44,"column":2},"end":{"line":44,"column":21}},"13":{"start":{"line":49,"column":0},"end":{"line":51,"column":2}},"14":{"start":{"line":50,"column":2},"end":{"line":50,"column":88}},"15":{"start":{"line":54,"column":0},"end":{"line":58,"column":2}},"16":{"start":{"line":55,"column":2},"end":{"line":57,"column":5}},"17":{"start":{"line":56,"column":4},"end":{"line":56,"column":22}},"18":{"start":{"line":61,"column":0},"end":{"line":81,"column":2}},"19":{"start":{"line":62,"column":2},"end":{"line":62,"column":18}},"20":{"start":{"line":67,"column":2},"end":{"line":71,"column":5}},"21":{"start":{"line":68,"column":4},"end":{"line":68,"column":50}},"22":{"start":{"line":70,"column":4},"end":{"line":70,"column":22}},"23":{"start":{"line":77,"column":2},"end":{"line":80,"column":5}},"24":{"start":{"line":78,"column":4},"end":{"line":78,"column":42}},"25":{"start":{"line":79,"column":4},"end":{"line":79,"column":40}},"26":{"start":{"line":106,"column":0},"end":{"line":150,"column":2}},"27":{"start":{"line":107,"column":2},"end":{"line":107,"column":18}},"28":{"start":{"line":114,"column":2},"end":{"line":149,"column":3}},"29":{"start":{"line":115,"column":4},"end":{"line":115,"column":26}},"30":{"start":{"line":116,"column":4},"end":{"line":118,"column":7}},"31":{"start":{"line":117,"column":6},"end":{"line":117,"column":35}},"32":{"start":{"line":119,"column":4},"end":{"line":124,"column":5}},"33":{"start":{"line":120,"column":6},"end":{"line":120,"column":32}},"34":{"start":{"line":121,"column":6},"end":{"line":121,"column":55}},"35":{"start":{"line":123,"column":6},"end":{"line":123,"column":31}},"36":{"start":{"line":132,"column":4},"end":{"line":136,"column":5}},"37":{"start":{"line":133,"column":6},"end":{"line":133,"column":59}},"38":{"start":{"line":135,"column":6},"end":{"line":135,"column":43}},"39":{"start":{"line":138,"column":4},"end":{"line":146,"column":5}},"40":{"start":{"line":139,"column":6},"end":{"line":143,"column":7}},"41":{"start":{"line":140,"column":8},"end":{"line":140,"column":31}},"42":{"start":{"line":142,"column":8},"end":{"line":142,"column":51}},"43":{"start":{"line":144,"column":6},"end":{"line":144,"column":31}},"44":{"start":{"line":145,"column":6},"end":{"line":145,"column":40}},"45":{"start":{"line":148,"column":4},"end":{"line":148,"column":53}},"46":{"start":{"line":154,"column":0},"end":{"line":158,"column":2}},"47":{"start":{"line":155,"column":2},"end":{"line":157,"column":5}},"48":{"start":{"line":156,"column":4},"end":{"line":156,"column":33}},"49":{"start":{"line":162,"column":0},"end":{"line":197,"column":2}},"50":{"start":{"line":163,"column":2},"end":{"line":163,"column":56}},"51":{"start":{"line":165,"column":2},"end":{"line":165,"column":45}},"52":{"start":{"line":166,"column":2},"end":{"line":175,"column":3}},"53":{"start":{"line":167,"column":4},"end":{"line":167,"column":56}},"54":{"start":{"line":168,"column":4},"end":{"line":174,"column":5}},"55":{"start":{"line":169,"column":6},"end":{"line":173,"column":8}},"56":{"start":{"line":177,"column":2},"end":{"line":177,"column":35}},"57":{"start":{"line":178,"column":2},"end":{"line":180,"column":5}},"58":{"start":{"line":179,"column":4},"end":{"line":179,"column":43}},"59":{"start":{"line":181,"column":2},"end":{"line":190,"column":3}},"60":{"start":{"line":182,"column":4},"end":{"line":182,"column":56}},"61":{"start":{"line":183,"column":4},"end":{"line":189,"column":5}},"62":{"start":{"line":184,"column":6},"end":{"line":188,"column":8}},"63":{"start":{"line":192,"column":2},"end":{"line":196,"column":4}},"64":{"start":{"line":201,"column":0},"end":{"line":216,"column":2}},"65":{"start":{"line":202,"column":2},"end":{"line":202,"column":12}},"66":{"start":{"line":204,"column":2},"end":{"line":209,"column":3}},"67":{"start":{"line":205,"column":4},"end":{"line":208,"column":5}},"68":{"start":{"line":206,"column":6},"end":{"line":206,"column":31}},"69":{"start":{"line":207,"column":6},"end":{"line":207,"column":12}},"70":{"start":{"line":211,"column":2},"end":{"line":215,"column":4}},"71":{"start":{"line":225,"column":0},"end":{"line":238,"column":2}},"72":{"start":{"line":226,"column":2},"end":{"line":226,"column":26}},"73":{"start":{"line":227,"column":2},"end":{"line":227,"column":15}},"74":{"start":{"line":228,"column":2},"end":{"line":233,"column":3}},"75":{"start":{"line":229,"column":4},"end":{"line":231,"column":5}},"76":{"start":{"line":230,"column":6},"end":{"line":230,"column":80}},"77":{"start":{"line":232,"column":4},"end":{"line":232,"column":26}},"78":{"start":{"line":234,"column":2},"end":{"line":237,"column":3}},"79":{"start":{"line":235,"column":4},"end":{"line":235,"column":32}},"80":{"start":{"line":236,"column":4},"end":{"line":236,"column":25}},"81":{"start":{"line":247,"column":0},"end":{"line":255,"column":1}},"82":{"start":{"line":248,"column":2},"end":{"line":248,"column":73}},"83":{"start":{"line":250,"column":2},"end":{"line":251,"column":85}},"84":{"start":{"line":252,"column":2},"end":{"line":252,"column":56}},"85":{"start":{"line":254,"column":2},"end":{"line":254,"column":27}},"86":{"start":{"line":256,"column":0},"end":{"line":256,"column":102}},"87":{"start":{"line":262,"column":0},"end":{"line":299,"column":2}},"88":{"start":{"line":263,"column":2},"end":{"line":263,"column":69}},"89":{"start":{"line":267,"column":2},"end":{"line":267,"column":31}},"90":{"start":{"line":272,"column":2},"end":{"line":272,"column":20}},"91":{"start":{"line":273,"column":2},"end":{"line":275,"column":3}},"92":{"start":{"line":274,"column":4},"end":{"line":274,"column":55}},"93":{"start":{"line":279,"column":2},"end":{"line":279,"column":44}},"94":{"start":{"line":283,"column":2},"end":{"line":283,"column":19}},"95":{"start":{"line":284,"column":2},"end":{"line":296,"column":3}},"96":{"start":{"line":285,"column":4},"end":{"line":285,"column":27}},"97":{"start":{"line":286,"column":4},"end":{"line":286,"column":28}},"98":{"start":{"line":287,"column":4},"end":{"line":295,"column":5}},"99":{"start":{"line":288,"column":6},"end":{"line":292,"column":7}},"100":{"start":{"line":289,"column":8},"end":{"line":289,"column":34}},"101":{"start":{"line":291,"column":8},"end":{"line":291,"column":47}},"102":{"start":{"line":294,"column":6},"end":{"line":294,"column":28}},"103":{"start":{"line":297,"column":2},"end":{"line":297,"column":72}},"104":{"start":{"line":298,"column":2},"end":{"line":298,"column":17}},"105":{"start":{"line":308,"column":0},"end":{"line":316,"column":1}},"106":{"start":{"line":309,"column":2},"end":{"line":309,"column":71}},"107":{"start":{"line":311,"column":2},"end":{"line":312,"column":85}},"108":{"start":{"line":313,"column":2},"end":{"line":313,"column":56}},"109":{"start":{"line":315,"column":2},"end":{"line":315,"column":27}},"110":{"start":{"line":317,"column":0},"end":{"line":317,"column":98}},"111":{"start":{"line":323,"column":0},"end":{"line":374,"column":2}},"112":{"start":{"line":324,"column":2},"end":{"line":324,"column":71}},"113":{"start":{"line":325,"column":2},"end":{"line":325,"column":8}},"114":{"start":{"line":329,"column":2},"end":{"line":329,"column":17}},"115":{"start":{"line":330,"column":2},"end":{"line":339,"column":3}},"116":{"start":{"line":331,"column":4},"end":{"line":331,"column":30}},"117":{"start":{"line":332,"column":4},"end":{"line":338,"column":5}},"118":{"start":{"line":333,"column":6},"end":{"line":335,"column":7}},"119":{"start":{"line":334,"column":8},"end":{"line":334,"column":37}},"120":{"start":{"line":337,"column":6},"end":{"line":337,"column":32}},"121":{"start":{"line":343,"column":2},"end":{"line":343,"column":31}},"122":{"start":{"line":344,"column":2},"end":{"line":344,"column":70}},"123":{"start":{"line":347,"column":2},"end":{"line":353,"column":3}},"124":{"start":{"line":348,"column":4},"end":{"line":352,"column":5}},"125":{"start":{"line":349,"column":6},"end":{"line":349,"column":64}},"126":{"start":{"line":350,"column":6},"end":{"line":350,"column":37}},"127":{"start":{"line":351,"column":6},"end":{"line":351,"column":29}},"128":{"start":{"line":356,"column":2},"end":{"line":362,"column":3}},"129":{"start":{"line":357,"column":4},"end":{"line":361,"column":5}},"130":{"start":{"line":358,"column":6},"end":{"line":358,"column":59}},"131":{"start":{"line":359,"column":6},"end":{"line":359,"column":37}},"132":{"start":{"line":360,"column":6},"end":{"line":360,"column":29}},"133":{"start":{"line":365,"column":2},"end":{"line":365,"column":19}},"134":{"start":{"line":366,"column":2},"end":{"line":368,"column":3}},"135":{"start":{"line":367,"column":4},"end":{"line":367,"column":49}},"136":{"start":{"line":370,"column":2},"end":{"line":370,"column":71}},"137":{"start":{"line":372,"column":2},"end":{"line":372,"column":66}},"138":{"start":{"line":373,"column":2},"end":{"line":373,"column":16}},"139":{"start":{"line":393,"column":0},"end":{"line":419,"column":2}},"140":{"start":{"line":394,"column":2},"end":{"line":394,"column":32}},"141":{"start":{"line":395,"column":2},"end":{"line":397,"column":3}},"142":{"start":{"line":396,"column":4},"end":{"line":396,"column":29}},"143":{"start":{"line":399,"column":2},"end":{"line":399,"column":17}},"144":{"start":{"line":400,"column":2},"end":{"line":402,"column":3}},"145":{"start":{"line":401,"column":4},"end":{"line":401,"column":22}},"146":{"start":{"line":403,"column":2},"end":{"line":403,"column":13}},"147":{"start":{"line":405,"column":2},"end":{"line":405,"column":15}},"148":{"start":{"line":406,"column":2},"end":{"line":416,"column":3}},"149":{"start":{"line":407,"column":4},"end":{"line":407,"column":28}},"150":{"start":{"line":408,"column":4},"end":{"line":408,"column":16}},"151":{"start":{"line":410,"column":4},"end":{"line":412,"column":5}},"152":{"start":{"line":411,"column":6},"end":{"line":411,"column":15}},"153":{"start":{"line":413,"column":4},"end":{"line":413,"column":18}},"154":{"start":{"line":415,"column":4},"end":{"line":415,"column":10}},"155":{"start":{"line":418,"column":2},"end":{"line":418,"column":29}},"156":{"start":{"line":434,"column":0},"end":{"line":452,"column":2}},"157":{"start":{"line":435,"column":2},"end":{"line":435,"column":32}},"158":{"start":{"line":437,"column":2},"end":{"line":437,"column":40}},"159":{"start":{"line":438,"column":2},"end":{"line":440,"column":3}},"160":{"start":{"line":439,"column":4},"end":{"line":439,"column":23}},"161":{"start":{"line":442,"column":2},"end":{"line":449,"column":3}},"162":{"start":{"line":443,"column":4},"end":{"line":443,"column":14}},"163":{"start":{"line":444,"column":4},"end":{"line":448,"column":46}},"164":{"start":{"line":445,"column":6},"end":{"line":445,"column":46}},"165":{"start":{"line":446,"column":6},"end":{"line":446,"column":13}},"166":{"start":{"line":447,"column":6},"end":{"line":447,"column":25}},"167":{"start":{"line":451,"column":2},"end":{"line":451,"column":11}},"168":{"start":{"line":464,"column":0},"end":{"line":468,"column":2}},"169":{"start":{"line":465,"column":2},"end":{"line":465,"column":47}},"170":{"start":{"line":466,"column":2},"end":{"line":466,"column":68}},"171":{"start":{"line":467,"column":2},"end":{"line":467,"column":47}},"172":{"start":{"line":470,"column":0},"end":{"line":475,"column":2}},"173":{"start":{"line":471,"column":2},"end":{"line":471,"column":47}},"174":{"start":{"line":472,"column":2},"end":{"line":472,"column":75}},"175":{"start":{"line":473,"column":2},"end":{"line":473,"column":26}},"176":{"start":{"line":474,"column":2},"end":{"line":474,"column":13}},"177":{"start":{"line":516,"column":0},"end":{"line":521,"column":2}},"178":{"start":{"line":523,"column":0},"end":{"line":557,"column":2}},"179":{"start":{"line":524,"column":2},"end":{"line":524,"column":35}},"180":{"start":{"line":526,"column":2},"end":{"line":534,"column":3}},"181":{"start":{"line":527,"column":4},"end":{"line":527,"column":45}},"182":{"start":{"line":528,"column":9},"end":{"line":534,"column":3}},"183":{"start":{"line":529,"column":4},"end":{"line":529,"column":45}},"184":{"start":{"line":530,"column":9},"end":{"line":534,"column":3}},"185":{"start":{"line":531,"column":4},"end":{"line":531,"column":57}},"186":{"start":{"line":533,"column":4},"end":{"line":533,"column":58}},"187":{"start":{"line":536,"column":2},"end":{"line":552,"column":3}},"188":{"start":{"line":537,"column":4},"end":{"line":537,"column":74}},"189":{"start":{"line":540,"column":4},"end":{"line":545,"column":5}},"190":{"start":{"line":541,"column":6},"end":{"line":541,"column":79}},"191":{"start":{"line":543,"column":6},"end":{"line":543,"column":65}},"192":{"start":{"line":544,"column":6},"end":{"line":544,"column":51}},"193":{"start":{"line":547,"column":4},"end":{"line":549,"column":5}},"194":{"start":{"line":548,"column":6},"end":{"line":548,"column":56}},"195":{"start":{"line":551,"column":4},"end":{"line":551,"column":50}},"196":{"start":{"line":554,"column":2},"end":{"line":554,"column":45}},"197":{"start":{"line":556,"column":2},"end":{"line":556,"column":51}},"198":{"start":{"line":559,"column":0},"end":{"line":597,"column":2}},"199":{"start":{"line":560,"column":2},"end":{"line":560,"column":34}},"200":{"start":{"line":562,"column":2},"end":{"line":562,"column":41}},"201":{"start":{"line":563,"column":2},"end":{"line":573,"column":3}},"202":{"start":{"line":564,"column":4},"end":{"line":564,"column":45}},"203":{"start":{"line":565,"column":9},"end":{"line":573,"column":3}},"204":{"start":{"line":566,"column":4},"end":{"line":570,"column":5}},"205":{"start":{"line":567,"column":6},"end":{"line":567,"column":47}},"206":{"start":{"line":569,"column":6},"end":{"line":569,"column":59}},"207":{"start":{"line":572,"column":4},"end":{"line":572,"column":58}},"208":{"start":{"line":575,"column":2},"end":{"line":594,"column":3}},"209":{"start":{"line":576,"column":4},"end":{"line":576,"column":85}},"210":{"start":{"line":577,"column":4},"end":{"line":577,"column":22}},"211":{"start":{"line":580,"column":4},"end":{"line":580,"column":74}},"212":{"start":{"line":581,"column":4},"end":{"line":583,"column":5}},"213":{"start":{"line":582,"column":6},"end":{"line":582,"column":48}},"214":{"start":{"line":585,"column":4},"end":{"line":591,"column":5}},"215":{"start":{"line":586,"column":6},"end":{"line":586,"column":53}},"216":{"start":{"line":587,"column":11},"end":{"line":591,"column":5}},"217":{"start":{"line":588,"column":6},"end":{"line":588,"column":30}},"218":{"start":{"line":590,"column":6},"end":{"line":590,"column":24}},"219":{"start":{"line":593,"column":4},"end":{"line":593,"column":47}},"220":{"start":{"line":596,"column":2},"end":{"line":596,"column":16}},"221":{"start":{"line":621,"column":0},"end":{"line":621,"column":34}},"222":{"start":{"line":624,"column":0},"end":{"line":626,"column":2}},"223":{"start":{"line":625,"column":2},"end":{"line":625,"column":45}},"224":{"start":{"line":628,"column":0},"end":{"line":665,"column":2}},"225":{"start":{"line":630,"column":2},"end":{"line":662,"column":3}},"226":{"start":{"line":632,"column":4},"end":{"line":632,"column":46}},"227":{"start":{"line":635,"column":4},"end":{"line":635,"column":58}},"228":{"start":{"line":640,"column":4},"end":{"line":656,"column":5}},"229":{"start":{"line":641,"column":6},"end":{"line":641,"column":50}},"230":{"start":{"line":642,"column":6},"end":{"line":647,"column":7}},"231":{"start":{"line":643,"column":8},"end":{"line":643,"column":42}},"232":{"start":{"line":645,"column":8},"end":{"line":645,"column":43}},"233":{"start":{"line":646,"column":8},"end":{"line":646,"column":36}},"234":{"start":{"line":649,"column":6},"end":{"line":655,"column":9}},"235":{"start":{"line":661,"column":4},"end":{"line":661,"column":21}},"236":{"start":{"line":664,"column":2},"end":{"line":664,"column":9}},"237":{"start":{"line":673,"column":0},"end":{"line":679,"column":2}},"238":{"start":{"line":674,"column":2},"end":{"line":674,"column":45}},"239":{"start":{"line":675,"column":2},"end":{"line":675,"column":28}},"240":{"start":{"line":676,"column":2},"end":{"line":676,"column":25}},"241":{"start":{"line":677,"column":2},"end":{"line":677,"column":27}},"242":{"start":{"line":678,"column":2},"end":{"line":678,"column":27}},"243":{"start":{"line":682,"column":0},"end":{"line":725,"column":2}},"244":{"start":{"line":685,"column":2},"end":{"line":704,"column":3}},"245":{"start":{"line":686,"column":4},"end":{"line":688,"column":5}},"246":{"start":{"line":687,"column":6},"end":{"line":687,"column":97}},"247":{"start":{"line":689,"column":4},"end":{"line":689,"column":29}},"248":{"start":{"line":694,"column":7},"end":{"line":704,"column":3}},"249":{"start":{"line":695,"column":4},"end":{"line":695,"column":29}},"250":{"start":{"line":696,"column":4},"end":{"line":696,"column":28}},"251":{"start":{"line":697,"column":4},"end":{"line":697,"column":32}},"252":{"start":{"line":698,"column":4},"end":{"line":698,"column":27}},"253":{"start":{"line":703,"column":4},"end":{"line":703,"column":21}},"254":{"start":{"line":709,"column":2},"end":{"line":722,"column":3}},"255":{"start":{"line":710,"column":4},"end":{"line":712,"column":8}},"256":{"start":{"line":711,"column":6},"end":{"line":711,"column":24}},"257":{"start":{"line":713,"column":4},"end":{"line":713,"column":42}},"258":{"start":{"line":714,"column":4},"end":{"line":720,"column":7}},"259":{"start":{"line":721,"column":4},"end":{"line":721,"column":30}},"260":{"start":{"line":724,"column":2},"end":{"line":724,"column":9}},"261":{"start":{"line":730,"column":0},"end":{"line":769,"column":2}},"262":{"start":{"line":771,"column":0},"end":{"line":807,"column":2}}},"branchMap":{"1":{"line":42,"type":"binary-expr","locations":[{"start":{"line":42,"column":16},"end":{"line":42,"column":21}},{"start":{"line":42,"column":25},"end":{"line":42,"column":51}}]},"2":{"line":50,"type":"binary-expr","locations":[{"start":{"line":50,"column":10},"end":{"line":50,"column":59}},{"start":{"line":50,"column":65},"end":{"line":50,"column":86}}]},"3":{"line":114,"type":"if","locations":[{"start":{"line":114,"column":2},"end":{"line":114,"column":2}},{"start":{"line":114,"column":2},"end":{"line":114,"column":2}}]},"4":{"line":119,"type":"if","locations":[{"start":{"line":119,"column":4},"end":{"line":119,"column":4}},{"start":{"line":119,"column":4},"end":{"line":119,"column":4}}]},"5":{"line":132,"type":"if","locations":[{"start":{"line":132,"column":4},"end":{"line":132,"column":4}},{"start":{"line":132,"column":4},"end":{"line":132,"column":4}}]},"6":{"line":138,"type":"if","locations":[{"start":{"line":138,"column":4},"end":{"line":138,"column":4}},{"start":{"line":138,"column":4},"end":{"line":138,"column":4}}]},"7":{"line":139,"type":"if","locations":[{"start":{"line":139,"column":6},"end":{"line":139,"column":6}},{"start":{"line":139,"column":6},"end":{"line":139,"column":6}}]},"8":{"line":166,"type":"if","locations":[{"start":{"line":166,"column":2},"end":{"line":166,"column":2}},{"start":{"line":166,"column":2},"end":{"line":166,"column":2}}]},"9":{"line":168,"type":"if","locations":[{"start":{"line":168,"column":4},"end":{"line":168,"column":4}},{"start":{"line":168,"column":4},"end":{"line":168,"column":4}}]},"10":{"line":181,"type":"if","locations":[{"start":{"line":181,"column":2},"end":{"line":181,"column":2}},{"start":{"line":181,"column":2},"end":{"line":181,"column":2}}]},"11":{"line":183,"type":"if","locations":[{"start":{"line":183,"column":4},"end":{"line":183,"column":4}},{"start":{"line":183,"column":4},"end":{"line":183,"column":4}}]},"12":{"line":205,"type":"if","locations":[{"start":{"line":205,"column":4},"end":{"line":205,"column":4}},{"start":{"line":205,"column":4},"end":{"line":205,"column":4}}]},"13":{"line":229,"type":"if","locations":[{"start":{"line":229,"column":4},"end":{"line":229,"column":4}},{"start":{"line":229,"column":4},"end":{"line":229,"column":4}}]},"14":{"line":248,"type":"binary-expr","locations":[{"start":{"line":248,"column":15},"end":{"line":248,"column":18}},{"start":{"line":248,"column":22},"end":{"line":248,"column":34}}]},"15":{"line":250,"type":"cond-expr","locations":[{"start":{"line":250,"column":45},"end":{"line":250,"column":83}},{"start":{"line":251,"column":45},"end":{"line":251,"column":84}}]},"16":{"line":287,"type":"if","locations":[{"start":{"line":287,"column":4},"end":{"line":287,"column":4}},{"start":{"line":287,"column":4},"end":{"line":287,"column":4}}]},"17":{"line":288,"type":"if","locations":[{"start":{"line":288,"column":6},"end":{"line":288,"column":6}},{"start":{"line":288,"column":6},"end":{"line":288,"column":6}}]},"18":{"line":309,"type":"binary-expr","locations":[{"start":{"line":309,"column":15},"end":{"line":309,"column":18}},{"start":{"line":309,"column":22},"end":{"line":309,"column":34}}]},"19":{"line":311,"type":"cond-expr","locations":[{"start":{"line":311,"column":45},"end":{"line":311,"column":83}},{"start":{"line":312,"column":45},"end":{"line":312,"column":84}}]},"20":{"line":332,"type":"if","locations":[{"start":{"line":332,"column":4},"end":{"line":332,"column":4}},{"start":{"line":332,"column":4},"end":{"line":332,"column":4}}]},"21":{"line":348,"type":"if","locations":[{"start":{"line":348,"column":4},"end":{"line":348,"column":4}},{"start":{"line":348,"column":4},"end":{"line":348,"column":4}}]},"22":{"line":357,"type":"if","locations":[{"start":{"line":357,"column":4},"end":{"line":357,"column":4}},{"start":{"line":357,"column":4},"end":{"line":357,"column":4}}]},"23":{"line":395,"type":"if","locations":[{"start":{"line":395,"column":2},"end":{"line":395,"column":2}},{"start":{"line":395,"column":2},"end":{"line":395,"column":2}}]},"24":{"line":400,"type":"if","locations":[{"start":{"line":400,"column":2},"end":{"line":400,"column":2}},{"start":{"line":400,"column":2},"end":{"line":400,"column":2}}]},"25":{"line":410,"type":"if","locations":[{"start":{"line":410,"column":4},"end":{"line":410,"column":4}},{"start":{"line":410,"column":4},"end":{"line":410,"column":4}}]},"26":{"line":438,"type":"if","locations":[{"start":{"line":438,"column":2},"end":{"line":438,"column":2}},{"start":{"line":438,"column":2},"end":{"line":438,"column":2}}]},"27":{"line":442,"type":"if","locations":[{"start":{"line":442,"column":2},"end":{"line":442,"column":2}},{"start":{"line":442,"column":2},"end":{"line":442,"column":2}}]},"28":{"line":526,"type":"if","locations":[{"start":{"line":526,"column":2},"end":{"line":526,"column":2}},{"start":{"line":526,"column":2},"end":{"line":526,"column":2}}]},"29":{"line":528,"type":"if","locations":[{"start":{"line":528,"column":9},"end":{"line":528,"column":9}},{"start":{"line":528,"column":9},"end":{"line":528,"column":9}}]},"30":{"line":530,"type":"if","locations":[{"start":{"line":530,"column":9},"end":{"line":530,"column":9}},{"start":{"line":530,"column":9},"end":{"line":530,"column":9}}]},"31":{"line":536,"type":"if","locations":[{"start":{"line":536,"column":2},"end":{"line":536,"column":2}},{"start":{"line":536,"column":2},"end":{"line":536,"column":2}}]},"32":{"line":540,"type":"if","locations":[{"start":{"line":540,"column":4},"end":{"line":540,"column":4}},{"start":{"line":540,"column":4},"end":{"line":540,"column":4}}]},"33":{"line":547,"type":"if","locations":[{"start":{"line":547,"column":4},"end":{"line":547,"column":4}},{"start":{"line":547,"column":4},"end":{"line":547,"column":4}}]},"34":{"line":563,"type":"if","locations":[{"start":{"line":563,"column":2},"end":{"line":563,"column":2}},{"start":{"line":563,"column":2},"end":{"line":563,"column":2}}]},"35":{"line":565,"type":"if","locations":[{"start":{"line":565,"column":9},"end":{"line":565,"column":9}},{"start":{"line":565,"column":9},"end":{"line":565,"column":9}}]},"36":{"line":566,"type":"if","locations":[{"start":{"line":566,"column":4},"end":{"line":566,"column":4}},{"start":{"line":566,"column":4},"end":{"line":566,"column":4}}]},"37":{"line":575,"type":"if","locations":[{"start":{"line":575,"column":2},"end":{"line":575,"column":2}},{"start":{"line":575,"column":2},"end":{"line":575,"column":2}}]},"38":{"line":581,"type":"if","locations":[{"start":{"line":581,"column":4},"end":{"line":581,"column":4}},{"start":{"line":581,"column":4},"end":{"line":581,"column":4}}]},"39":{"line":585,"type":"if","locations":[{"start":{"line":585,"column":4},"end":{"line":585,"column":4}},{"start":{"line":585,"column":4},"end":{"line":585,"column":4}}]},"40":{"line":587,"type":"if","locations":[{"start":{"line":587,"column":11},"end":{"line":587,"column":11}},{"start":{"line":587,"column":11},"end":{"line":587,"column":11}}]},"41":{"line":630,"type":"if","locations":[{"start":{"line":630,"column":2},"end":{"line":630,"column":2}},{"start":{"line":630,"column":2},"end":{"line":630,"column":2}}]},"42":{"line":630,"type":"binary-expr","locations":[{"start":{"line":630,"column":6},"end":{"line":630,"column":30}},{"start":{"line":630,"column":34},"end":{"line":630,"column":63}}]},"43":{"line":642,"type":"if","locations":[{"start":{"line":642,"column":6},"end":{"line":642,"column":6}},{"start":{"line":642,"column":6},"end":{"line":642,"column":6}}]},"44":{"line":685,"type":"if","locations":[{"start":{"line":685,"column":2},"end":{"line":685,"column":2}},{"start":{"line":685,"column":2},"end":{"line":685,"column":2}}]},"45":{"line":686,"type":"if","locations":[{"start":{"line":686,"column":4},"end":{"line":686,"column":4}},{"start":{"line":686,"column":4},"end":{"line":686,"column":4}}]},"46":{"line":686,"type":"binary-expr","locations":[{"start":{"line":686,"column":8},"end":{"line":686,"column":33}},{"start":{"line":686,"column":37},"end":{"line":686,"column":66}}]},"47":{"line":694,"type":"if","locations":[{"start":{"line":694,"column":7},"end":{"line":694,"column":7}},{"start":{"line":694,"column":7},"end":{"line":694,"column":7}}]},"48":{"line":694,"type":"binary-expr","locations":[{"start":{"line":694,"column":11},"end":{"line":694,"column":35}},{"start":{"line":694,"column":39},"end":{"line":694,"column":68}}]},"49":{"line":709,"type":"if","locations":[{"start":{"line":709,"column":2},"end":{"line":709,"column":2}},{"start":{"line":709,"column":2},"end":{"line":709,"column":2}}]},"50":{"line":709,"type":"binary-expr","locations":[{"start":{"line":709,"column":6},"end":{"line":709,"column":23}},{"start":{"line":709,"column":28},"end":{"line":709,"column":51}},{"start":{"line":709,"column":55},"end":{"line":709,"column":83}}]}}},"/data/upstream/node-http2/lib/logging.js":{"path":"/data/upstream/node-http2/lib/logging.js","s":{"1":1,"2":1,"3":1,"4":0,"5":0,"6":0,"7":1,"8":53,"9":1},"b":{"1":[0,1]},"f":{"1":53},"fnMap":{"1":{"name":"(anonymous_1)","line":24,"loc":{"start":{"line":24,"column":11},"end":{"line":24,"column":22}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":31}},"2":{"start":{"line":2,"column":0},"end":{"line":2,"column":22}},"3":{"start":{"line":4,"column":0},"end":{"line":28,"column":1}},"4":{"start":{"line":5,"column":2},"end":{"line":5,"column":33}},"5":{"start":{"line":7,"column":2},"end":{"line":11,"column":5}},"6":{"start":{"line":13,"column":2},"end":{"line":13,"column":49}},"7":{"start":{"line":16,"column":2},"end":{"line":25,"column":4}},"8":{"start":{"line":24,"column":24},"end":{"line":24,"column":36}},"9":{"start":{"line":27,"column":2},"end":{"line":27,"column":27}}},"branchMap":{"1":{"line":4,"type":"if","locations":[{"start":{"line":4,"column":0},"end":{"line":4,"column":0}},{"start":{"line":4,"column":0},"end":{"line":4,"column":0}}]}}},"/data/upstream/node-http2/lib/connection.js":{"path":"/data/upstream/node-http2/lib/connection.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":6,"8":6,"9":6,"10":6,"11":6,"12":6,"13":1,"14":1,"15":6,"16":6,"17":12,"18":12,"19":6,"20":6,"21":6,"22":6,"23":1,"24":2,"25":2,"26":2,"27":2,"28":2,"29":1,"30":1,"31":1,"32":1,"33":1,"34":26,"35":26,"36":26,"37":41,"38":41,"39":41,"40":16,"41":16,"42":26,"43":26,"44":26,"45":0,"46":0,"47":0,"48":0,"49":1,"50":16,"51":16,"52":1,"53":1,"54":1,"55":16,"56":16,"57":16,"58":1,"59":6,"60":6,"61":6,"62":6,"63":6,"64":6,"65":0,"66":6,"67":1,"68":1,"69":6,"70":6,"71":6,"72":1,"73":0,"74":0,"75":0,"76":0,"77":0,"78":1,"79":0,"80":0,"81":0,"82":0,"83":0,"84":1,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":1,"95":1,"96":1,"97":6,"98":6,"99":6,"100":1,"101":1,"102":0,"103":0,"104":1,"105":6,"106":1,"107":6,"108":6,"109":0,"110":6,"111":1,"112":16,"113":2,"114":0,"115":2,"116":16},"b":{"1":[6,2],"2":[67,41],"3":[41,0],"4":[26,0],"5":[0,0],"6":[1,15],"7":[6,0],"8":[6,6],"9":[0,0],"10":[0,0],"11":[6,0],"12":[2,14],"13":[16,16],"14":[0,2]},"f":{"1":6,"2":6,"3":12,"4":2,"5":1,"6":26,"7":16,"8":6,"9":6,"10":6,"11":6,"12":0,"13":0,"14":0,"15":0,"16":0,"17":6,"18":0,"19":6,"20":6,"21":16},"fnMap":{"1":{"name":"Connection","line":43,"loc":{"start":{"line":43,"column":0},"end":{"line":43,"column":50}}},"2":{"name":"_initializeStreamManagement","line":67,"loc":{"start":{"line":67,"column":51},"end":{"line":67,"column":103}}},"3":{"name":"(anonymous_3)","line":69,"loc":{"start":{"line":69,"column":25},"end":{"line":69,"column":57}}},"4":{"name":"_newStream","line":80,"loc":{"start":{"line":80,"column":34},"end":{"line":80,"column":58}}},"5":{"name":"createStream","line":88,"loc":{"start":{"line":88,"column":36},"end":{"line":88,"column":60}}},"6":{"name":"_read","line":97,"loc":{"start":{"line":97,"column":29},"end":{"line":97,"column":46}}},"7":{"name":"write","line":126,"loc":{"start":{"line":126,"column":30},"end":{"line":126,"column":68}}},"8":{"name":"_initializeSettingsManagement","line":145,"loc":{"start":{"line":145,"column":53},"end":{"line":145,"column":102}}},"9":{"name":"(anonymous_9)","line":154,"loc":{"start":{"line":154,"column":25},"end":{"line":154,"column":41}}},"10":{"name":"_receiveSettings","line":165,"loc":{"start":{"line":165,"column":40},"end":{"line":165,"column":73}}},"11":{"name":"_initializeLifecycleManagement","line":171,"loc":{"start":{"line":171,"column":54},"end":{"line":171,"column":96}}},"12":{"name":"_generatePingId","line":177,"loc":{"start":{"line":177,"column":39},"end":{"line":177,"column":66}}},"13":{"name":"ping","line":187,"loc":{"start":{"line":187,"column":28},"end":{"line":187,"column":52}}},"14":{"name":"_receivePing","line":202,"loc":{"start":{"line":202,"column":36},"end":{"line":202,"column":65}}},"15":{"name":"reset","line":225,"loc":{"start":{"line":225,"column":29},"end":{"line":225,"column":46}}},"16":{"name":"_receiveGoaway","line":228,"loc":{"start":{"line":228,"column":38},"end":{"line":228,"column":69}}},"17":{"name":"_initializeFlowControl","line":234,"loc":{"start":{"line":234,"column":46},"end":{"line":234,"column":80}}},"18":{"name":"setInitialWindowSize","line":257,"loc":{"start":{"line":257,"column":44},"end":{"line":257,"column":93}}},"19":{"name":"disableFlowControl","line":265,"loc":{"start":{"line":265,"column":42},"end":{"line":265,"column":72}}},"20":{"name":"_updateWindow","line":277,"loc":{"start":{"line":277,"column":37},"end":{"line":277,"column":67}}},"21":{"name":"_send","line":286,"loc":{"start":{"line":286,"column":29},"end":{"line":286,"column":51}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":33}},"2":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"3":{"start":{"line":3,"column":0},"end":{"line":3,"column":41}},"4":{"start":{"line":4,"column":0},"end":{"line":4,"column":39}},"5":{"start":{"line":40,"column":0},"end":{"line":40,"column":32}},"6":{"start":{"line":43,"column":0},"end":{"line":61,"column":1}},"7":{"start":{"line":45,"column":2},"end":{"line":45,"column":42}},"8":{"start":{"line":48,"column":2},"end":{"line":48,"column":71}},"9":{"start":{"line":51,"column":2},"end":{"line":51,"column":50}},"10":{"start":{"line":54,"column":2},"end":{"line":54,"column":47}},"11":{"start":{"line":57,"column":2},"end":{"line":57,"column":40}},"12":{"start":{"line":60,"column":2},"end":{"line":60,"column":32}},"13":{"start":{"line":62,"column":0},"end":{"line":62,"column":95}},"14":{"start":{"line":67,"column":0},"end":{"line":78,"column":2}},"15":{"start":{"line":68,"column":2},"end":{"line":68,"column":51}},"16":{"start":{"line":69,"column":2},"end":{"line":72,"column":4}},"17":{"start":{"line":70,"column":4},"end":{"line":70,"column":33}},"18":{"start":{"line":71,"column":4},"end":{"line":71,"column":11}},"19":{"start":{"line":73,"column":2},"end":{"line":73,"column":35}},"20":{"start":{"line":74,"column":2},"end":{"line":74,"column":72}},"21":{"start":{"line":76,"column":2},"end":{"line":76,"column":47}},"22":{"start":{"line":77,"column":2},"end":{"line":77,"column":39}},"23":{"start":{"line":80,"column":0},"end":{"line":86,"column":2}},"24":{"start":{"line":81,"column":2},"end":{"line":81,"column":59}},"25":{"start":{"line":82,"column":2},"end":{"line":82,"column":52}},"26":{"start":{"line":83,"column":2},"end":{"line":83,"column":28}},"27":{"start":{"line":84,"column":2},"end":{"line":84,"column":74}},"28":{"start":{"line":85,"column":2},"end":{"line":85,"column":16}},"29":{"start":{"line":88,"column":0},"end":{"line":92,"column":2}},"30":{"start":{"line":89,"column":2},"end":{"line":89,"column":32}},"31":{"start":{"line":90,"column":2},"end":{"line":90,"column":28}},"32":{"start":{"line":91,"column":2},"end":{"line":91,"column":29}},"33":{"start":{"line":97,"column":0},"end":{"line":124,"column":2}},"34":{"start":{"line":98,"column":2},"end":{"line":98,"column":62}},"35":{"start":{"line":100,"column":2},"end":{"line":100,"column":40}},"36":{"start":{"line":101,"column":2},"end":{"line":109,"column":3}},"37":{"start":{"line":102,"column":4},"end":{"line":102,"column":30}},"38":{"start":{"line":103,"column":4},"end":{"line":108,"column":5}},"39":{"start":{"line":104,"column":6},"end":{"line":107,"column":7}},"40":{"start":{"line":105,"column":8},"end":{"line":105,"column":26}},"41":{"start":{"line":106,"column":8},"end":{"line":106,"column":40}},"42":{"start":{"line":111,"column":2},"end":{"line":123,"column":3}},"43":{"start":{"line":112,"column":4},"end":{"line":112,"column":76}},"44":{"start":{"line":113,"column":4},"end":{"line":113,"column":56}},"45":{"start":{"line":116,"column":7},"end":{"line":123,"column":3}},"46":{"start":{"line":117,"column":4},"end":{"line":117,"column":91}},"47":{"start":{"line":118,"column":4},"end":{"line":118,"column":54}},"48":{"start":{"line":122,"column":4},"end":{"line":122,"column":66}},"49":{"start":{"line":126,"column":0},"end":{"line":140,"column":2}},"50":{"start":{"line":127,"column":2},"end":{"line":127,"column":42}},"51":{"start":{"line":129,"column":2},"end":{"line":133,"column":3}},"52":{"start":{"line":130,"column":4},"end":{"line":130,"column":43}},"53":{"start":{"line":131,"column":4},"end":{"line":131,"column":41}},"54":{"start":{"line":132,"column":4},"end":{"line":132,"column":66}},"55":{"start":{"line":135,"column":2},"end":{"line":135,"column":32}},"56":{"start":{"line":137,"column":2},"end":{"line":137,"column":31}},"57":{"start":{"line":139,"column":2},"end":{"line":139,"column":9}},"58":{"start":{"line":145,"column":0},"end":{"line":163,"column":2}},"59":{"start":{"line":146,"column":2},"end":{"line":146,"column":28}},"60":{"start":{"line":148,"column":2},"end":{"line":148,"column":87}},"61":{"start":{"line":149,"column":2},"end":{"line":152,"column":5}},"62":{"start":{"line":154,"column":2},"end":{"line":160,"column":5}},"63":{"start":{"line":155,"column":4},"end":{"line":159,"column":5}},"64":{"start":{"line":156,"column":6},"end":{"line":156,"column":93}},"65":{"start":{"line":158,"column":6},"end":{"line":158,"column":19}},"66":{"start":{"line":162,"column":2},"end":{"line":162,"column":65}},"67":{"start":{"line":165,"column":0},"end":{"line":166,"column":2}},"68":{"start":{"line":171,"column":0},"end":{"line":175,"column":2}},"69":{"start":{"line":172,"column":2},"end":{"line":172,"column":19}},"70":{"start":{"line":173,"column":2},"end":{"line":173,"column":57}},"71":{"start":{"line":174,"column":2},"end":{"line":174,"column":61}},"72":{"start":{"line":177,"column":0},"end":{"line":185,"column":2}},"73":{"start":{"line":178,"column":2},"end":{"line":183,"column":32}},"74":{"start":{"line":179,"column":4},"end":{"line":179,"column":16}},"75":{"start":{"line":180,"column":4},"end":{"line":182,"column":5}},"76":{"start":{"line":181,"column":6},"end":{"line":181,"column":54}},"77":{"start":{"line":184,"column":2},"end":{"line":184,"column":12}},"78":{"start":{"line":187,"column":0},"end":{"line":200,"column":2}},"79":{"start":{"line":188,"column":2},"end":{"line":188,"column":34}},"80":{"start":{"line":189,"column":2},"end":{"line":189,"column":35}},"81":{"start":{"line":190,"column":2},"end":{"line":190,"column":29}},"82":{"start":{"line":192,"column":2},"end":{"line":193,"column":2}},"83":{"start":{"line":193,"column":2},"end":{"line":199,"column":5}},"84":{"start":{"line":202,"column":0},"end":{"line":223,"column":2}},"85":{"start":{"line":203,"column":2},"end":{"line":222,"column":3}},"86":{"start":{"line":204,"column":4},"end":{"line":204,"column":40}},"87":{"start":{"line":205,"column":4},"end":{"line":211,"column":5}},"88":{"start":{"line":206,"column":6},"end":{"line":206,"column":76}},"89":{"start":{"line":207,"column":6},"end":{"line":207,"column":24}},"90":{"start":{"line":208,"column":6},"end":{"line":208,"column":29}},"91":{"start":{"line":210,"column":6},"end":{"line":210,"column":74}},"92":{"start":{"line":214,"column":4},"end":{"line":215,"column":4}},"93":{"start":{"line":215,"column":4},"end":{"line":221,"column":7}},"94":{"start":{"line":225,"column":0},"end":{"line":226,"column":2}},"95":{"start":{"line":228,"column":0},"end":{"line":229,"column":2}},"96":{"start":{"line":234,"column":0},"end":{"line":247,"column":2}},"97":{"start":{"line":236,"column":2},"end":{"line":242,"column":5}},"98":{"start":{"line":245,"column":2},"end":{"line":245,"column":37}},"99":{"start":{"line":246,"column":2},"end":{"line":246,"column":67}},"100":{"start":{"line":251,"column":0},"end":{"line":251,"column":32}},"101":{"start":{"line":257,"column":0},"end":{"line":260,"column":2}},"102":{"start":{"line":258,"column":2},"end":{"line":258,"column":76}},"103":{"start":{"line":259,"column":2},"end":{"line":259,"column":46}},"104":{"start":{"line":265,"column":0},"end":{"line":267,"column":2}},"105":{"start":{"line":266,"column":2},"end":{"line":266,"column":26}},"106":{"start":{"line":277,"column":0},"end":{"line":284,"column":2}},"107":{"start":{"line":278,"column":2},"end":{"line":282,"column":3}},"108":{"start":{"line":279,"column":4},"end":{"line":279,"column":30}},"109":{"start":{"line":281,"column":4},"end":{"line":281,"column":38}},"110":{"start":{"line":283,"column":2},"end":{"line":283,"column":29}},"111":{"start":{"line":286,"column":0},"end":{"line":295,"column":2}},"112":{"start":{"line":287,"column":2},"end":{"line":292,"column":3}},"113":{"start":{"line":288,"column":4},"end":{"line":290,"column":5}},"114":{"start":{"line":289,"column":6},"end":{"line":289,"column":18}},"115":{"start":{"line":291,"column":4},"end":{"line":291,"column":38}},"116":{"start":{"line":294,"column":2},"end":{"line":294,"column":26}}},"branchMap":{"1":{"line":48,"type":"binary-expr","locations":[{"start":{"line":48,"column":15},"end":{"line":48,"column":18}},{"start":{"line":48,"column":22},"end":{"line":48,"column":34}}]},"2":{"line":101,"type":"binary-expr","locations":[{"start":{"line":101,"column":19},"end":{"line":101,"column":43}},{"start":{"line":101,"column":47},"end":{"line":101,"column":58}}]},"3":{"line":103,"type":"if","locations":[{"start":{"line":103,"column":4},"end":{"line":103,"column":4}},{"start":{"line":103,"column":4},"end":{"line":103,"column":4}}]},"4":{"line":111,"type":"if","locations":[{"start":{"line":111,"column":2},"end":{"line":111,"column":2}},{"start":{"line":111,"column":2},"end":{"line":111,"column":2}}]},"5":{"line":116,"type":"if","locations":[{"start":{"line":116,"column":7},"end":{"line":116,"column":7}},{"start":{"line":116,"column":7},"end":{"line":116,"column":7}}]},"6":{"line":129,"type":"if","locations":[{"start":{"line":129,"column":2},"end":{"line":129,"column":2}},{"start":{"line":129,"column":2},"end":{"line":129,"column":2}}]},"7":{"line":155,"type":"if","locations":[{"start":{"line":155,"column":4},"end":{"line":155,"column":4}},{"start":{"line":155,"column":4},"end":{"line":155,"column":4}}]},"8":{"line":155,"type":"binary-expr","locations":[{"start":{"line":155,"column":8},"end":{"line":155,"column":26}},{"start":{"line":155,"column":30},"end":{"line":155,"column":55}}]},"9":{"line":203,"type":"if","locations":[{"start":{"line":203,"column":2},"end":{"line":203,"column":2}},{"start":{"line":203,"column":2},"end":{"line":203,"column":2}}]},"10":{"line":205,"type":"if","locations":[{"start":{"line":205,"column":4},"end":{"line":205,"column":4}},{"start":{"line":205,"column":4},"end":{"line":205,"column":4}}]},"11":{"line":278,"type":"if","locations":[{"start":{"line":278,"column":2},"end":{"line":278,"column":2}},{"start":{"line":278,"column":2},"end":{"line":278,"column":2}}]},"12":{"line":287,"type":"if","locations":[{"start":{"line":287,"column":2},"end":{"line":287,"column":2}},{"start":{"line":287,"column":2},"end":{"line":287,"column":2}}]},"13":{"line":287,"type":"binary-expr","locations":[{"start":{"line":287,"column":6},"end":{"line":287,"column":11}},{"start":{"line":287,"column":15},"end":{"line":287,"column":36}}]},"14":{"line":288,"type":"if","locations":[{"start":{"line":288,"column":4},"end":{"line":288,"column":4}},{"start":{"line":288,"column":4},"end":{"line":288,"column":4}}]}}},"/data/upstream/node-http2/lib/stream.js":{"path":"/data/upstream/node-http2/lib/stream.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":23,"8":23,"9":23,"10":23,"11":23,"12":23,"13":1,"14":1,"15":23,"16":29,"17":4,"18":25,"19":7,"20":7,"21":23,"22":0,"23":1,"24":1,"25":1,"26":5,"27":5,"28":1,"29":17,"30":1,"31":23,"32":23,"33":23,"34":23,"35":23,"36":23,"37":23,"38":29,"39":29,"40":29,"41":1,"42":27,"43":27,"44":27,"45":23,"46":1,"47":23,"48":23,"49":27,"50":27,"51":27,"52":23,"53":1,"54":1,"55":5,"56":5,"57":0,"58":5,"59":5,"60":1,"61":23,"62":23,"63":23,"64":1,"65":18,"66":18,"67":18,"68":18,"69":1,"70":56,"71":56,"72":56,"73":9,"74":4,"75":4,"76":1,"77":5,"78":2,"79":3,"80":9,"81":6,"82":1,"83":5,"84":0,"85":5,"86":6,"87":5,"88":0,"89":5,"90":1,"91":4,"92":5,"93":4,"94":3,"95":1,"96":0,"97":4,"98":5,"99":3,"100":2,"101":0,"102":5,"103":10,"104":3,"105":7,"106":5,"107":10,"108":17,"109":0,"110":17,"111":0,"112":17,"113":56,"114":17,"115":17,"116":0,"117":0,"118":17,"119":17,"120":17,"121":1,"122":23,"123":23,"124":23,"125":23,"126":1,"127":1,"128":0,"129":0,"130":1,"131":0,"132":1,"133":29,"134":4,"135":0,"136":4,"137":4,"138":1,"139":4,"140":4,"141":4,"142":4,"143":4,"144":4,"145":4,"146":4,"147":4,"148":0,"149":1,"150":29,"151":10,"152":29,"153":5},"b":{"1":[23,21],"2":[4,25],"3":[7,18],"4":[27,23],"5":[23,4],"6":[0,5],"7":[18,0],"8":[9,6,5,4,5,10,17],"9":[4,5],"10":[1,3],"11":[1,0],"12":[2,3],"13":[1,1],"14":[1,5],"15":[6,1],"16":[0,5],"17":[5,0],"18":[0,5],"19":[1,4],"20":[5,5],"21":[3,1],"22":[1,2],"23":[0,1],"24":[3,2],"25":[5,5,5],"26":[0,2],"27":[3,7],"28":[10,10,5],"29":[5,2],"30":[0,17],"31":[17,0],"32":[0,17],"33":[17,17],"34":[17,39],"35":[0,17],"36":[4,25],"37":[0,4],"38":[8,4],"39":[4,0],"40":[10,19],"41":[5,24]},"f":{"1":23,"2":23,"3":29,"4":0,"5":1,"6":5,"7":17,"8":23,"9":29,"10":27,"11":23,"12":5,"13":23,"14":18,"15":56,"16":23,"17":0,"18":0,"19":29,"20":4,"21":29},"fnMap":{"1":{"name":"Stream","line":15,"loc":{"start":{"line":15,"column":0},"end":{"line":15,"column":21}}},"2":{"name":"_initializeManagement","line":42,"loc":{"start":{"line":42,"column":41},"end":{"line":42,"column":74}}},"3":{"name":"(anonymous_3)","line":43,"loc":{"start":{"line":43,"column":32},"end":{"line":43,"column":48}}},"4":{"name":"(anonymous_4)","line":51,"loc":{"start":{"line":51,"column":19},"end":{"line":51,"column":30}}},"5":{"name":"promise","line":59,"loc":{"start":{"line":59,"column":27},"end":{"line":59,"column":53}}},"6":{"name":"open","line":66,"loc":{"start":{"line":66,"column":24},"end":{"line":66,"column":57}}},"7":{"name":"reset","line":75,"loc":{"start":{"line":75,"column":25},"end":{"line":75,"column":47}}},"8":{"name":"_initializeUpstream","line":89,"loc":{"start":{"line":89,"column":39},"end":{"line":89,"column":70}}},"9":{"name":"(anonymous_9)","line":99,"loc":{"start":{"line":99,"column":25},"end":{"line":99,"column":57}}},"10":{"name":"_send","line":108,"loc":{"start":{"line":108,"column":25},"end":{"line":108,"column":47}}},"11":{"name":"_flush","line":116,"loc":{"start":{"line":116,"column":26},"end":{"line":116,"column":44}}},"12":{"name":"_finishing","line":132,"loc":{"start":{"line":132,"column":30},"end":{"line":132,"column":52}}},"13":{"name":"_initializeState","line":176,"loc":{"start":{"line":176,"column":36},"end":{"line":176,"column":64}}},"14":{"name":"transition","line":184,"loc":{"start":{"line":184,"column":29},"end":{"line":184,"column":56}}},"15":{"name":"transition","line":195,"loc":{"start":{"line":195,"column":31},"end":{"line":195,"column":67}}},"16":{"name":"_initializeFlowControl","line":351,"loc":{"start":{"line":351,"column":42},"end":{"line":351,"column":76}}},"17":{"name":"setInitialWindowSize","line":367,"loc":{"start":{"line":367,"column":40},"end":{"line":367,"column":89}}},"18":{"name":"disableFlowControl","line":375,"loc":{"start":{"line":375,"column":38},"end":{"line":375,"column":68}}},"19":{"name":"_updateWindow","line":387,"loc":{"start":{"line":387,"column":33},"end":{"line":387,"column":63}}},"20":{"name":"_write","line":399,"loc":{"start":{"line":399,"column":26},"end":{"line":399,"column":66}}},"21":{"name":"_receiveData","line":433,"loc":{"start":{"line":433,"column":32},"end":{"line":433,"column":61}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":33}},"2":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":34}},"4":{"start":{"line":10,"column":0},"end":{"line":10,"column":38}},"5":{"start":{"line":12,"column":0},"end":{"line":12,"column":24}},"6":{"start":{"line":15,"column":0},"end":{"line":33,"column":1}},"7":{"start":{"line":16,"column":2},"end":{"line":16,"column":20}},"8":{"start":{"line":19,"column":2},"end":{"line":19,"column":67}},"9":{"start":{"line":22,"column":2},"end":{"line":22,"column":29}},"10":{"start":{"line":25,"column":2},"end":{"line":25,"column":31}},"11":{"start":{"line":28,"column":2},"end":{"line":28,"column":26}},"12":{"start":{"line":32,"column":2},"end":{"line":32,"column":32}},"13":{"start":{"line":35,"column":0},"end":{"line":35,"column":87}},"14":{"start":{"line":42,"column":0},"end":{"line":54,"column":2}},"15":{"start":{"line":43,"column":2},"end":{"line":50,"column":16}},"16":{"start":{"line":44,"column":4},"end":{"line":49,"column":5}},"17":{"start":{"line":45,"column":6},"end":{"line":45,"column":42}},"18":{"start":{"line":46,"column":11},"end":{"line":49,"column":5}},"19":{"start":{"line":47,"column":6},"end":{"line":47,"column":37}},"20":{"start":{"line":48,"column":6},"end":{"line":48,"column":42}},"21":{"start":{"line":51,"column":2},"end":{"line":53,"column":5}},"22":{"start":{"line":52,"column":4},"end":{"line":52,"column":20}},"23":{"start":{"line":59,"column":0},"end":{"line":64,"column":2}},"24":{"start":{"line":60,"column":2},"end":{"line":63,"column":5}},"25":{"start":{"line":66,"column":0},"end":{"line":73,"column":2}},"26":{"start":{"line":67,"column":2},"end":{"line":71,"column":5}},"27":{"start":{"line":72,"column":2},"end":{"line":72,"column":27}},"28":{"start":{"line":75,"column":0},"end":{"line":80,"column":2}},"29":{"start":{"line":76,"column":2},"end":{"line":79,"column":5}},"30":{"start":{"line":89,"column":0},"end":{"line":104,"column":2}},"31":{"start":{"line":90,"column":2},"end":{"line":90,"column":32}},"32":{"start":{"line":91,"column":2},"end":{"line":91,"column":48}},"33":{"start":{"line":93,"column":2},"end":{"line":93,"column":51}},"34":{"start":{"line":94,"column":2},"end":{"line":94,"column":28}},"35":{"start":{"line":95,"column":2},"end":{"line":95,"column":35}},"36":{"start":{"line":98,"column":2},"end":{"line":98,"column":22}},"37":{"start":{"line":99,"column":2},"end":{"line":103,"column":4}},"38":{"start":{"line":100,"column":4},"end":{"line":100,"column":51}},"39":{"start":{"line":101,"column":4},"end":{"line":101,"column":34}},"40":{"start":{"line":102,"column":4},"end":{"line":102,"column":11}},"41":{"start":{"line":108,"column":0},"end":{"line":114,"column":2}},"42":{"start":{"line":109,"column":2},"end":{"line":109,"column":34}},"43":{"start":{"line":110,"column":2},"end":{"line":110,"column":35}},"44":{"start":{"line":111,"column":2},"end":{"line":113,"column":3}},"45":{"start":{"line":112,"column":4},"end":{"line":112,"column":61}},"46":{"start":{"line":116,"column":0},"end":{"line":124,"column":2}},"47":{"start":{"line":117,"column":2},"end":{"line":117,"column":12}},"48":{"start":{"line":118,"column":2},"end":{"line":122,"column":3}},"49":{"start":{"line":119,"column":4},"end":{"line":119,"column":41}},"50":{"start":{"line":120,"column":4},"end":{"line":120,"column":55}},"51":{"start":{"line":121,"column":4},"end":{"line":121,"column":30}},"52":{"start":{"line":123,"column":2},"end":{"line":123,"column":32}},"53":{"start":{"line":131,"column":0},"end":{"line":131,"column":33}},"54":{"start":{"line":132,"column":0},"end":{"line":144,"column":2}},"55":{"start":{"line":133,"column":2},"end":{"line":133,"column":43}},"56":{"start":{"line":134,"column":2},"end":{"line":143,"column":3}},"57":{"start":{"line":135,"column":4},"end":{"line":139,"column":7}},"58":{"start":{"line":141,"column":4},"end":{"line":141,"column":54}},"59":{"start":{"line":142,"column":4},"end":{"line":142,"column":39}},"60":{"start":{"line":176,"column":0},"end":{"line":180,"column":2}},"61":{"start":{"line":177,"column":2},"end":{"line":177,"column":22}},"62":{"start":{"line":178,"column":2},"end":{"line":178,"column":65}},"63":{"start":{"line":179,"column":2},"end":{"line":179,"column":68}},"64":{"start":{"line":184,"column":0},"end":{"line":190,"column":2}},"65":{"start":{"line":185,"column":2},"end":{"line":189,"column":3}},"66":{"start":{"line":186,"column":4},"end":{"line":186,"column":73}},"67":{"start":{"line":187,"column":4},"end":{"line":187,"column":30}},"68":{"start":{"line":188,"column":4},"end":{"line":188,"column":23}},"69":{"start":{"line":195,"column":0},"end":{"line":342,"column":2}},"70":{"start":{"line":196,"column":2},"end":{"line":196,"column":27}},"71":{"start":{"line":197,"column":2},"end":{"line":197,"column":24}},"72":{"start":{"line":199,"column":2},"end":{"line":322,"column":3}},"73":{"start":{"line":210,"column":6},"end":{"line":219,"column":7}},"74":{"start":{"line":211,"column":8},"end":{"line":211,"column":31}},"75":{"start":{"line":212,"column":8},"end":{"line":214,"column":9}},"76":{"start":{"line":213,"column":10},"end":{"line":213,"column":79}},"77":{"start":{"line":215,"column":13},"end":{"line":219,"column":7}},"78":{"start":{"line":216,"column":8},"end":{"line":216,"column":71}},"79":{"start":{"line":218,"column":8},"end":{"line":218,"column":33}},"80":{"start":{"line":220,"column":6},"end":{"line":220,"column":12}},"81":{"start":{"line":231,"column":6},"end":{"line":237,"column":7}},"82":{"start":{"line":232,"column":8},"end":{"line":232,"column":45}},"83":{"start":{"line":233,"column":13},"end":{"line":237,"column":7}},"84":{"start":{"line":234,"column":8},"end":{"line":234,"column":33}},"85":{"start":{"line":236,"column":8},"end":{"line":236,"column":33}},"86":{"start":{"line":238,"column":6},"end":{"line":238,"column":12}},"87":{"start":{"line":247,"column":6},"end":{"line":253,"column":7}},"88":{"start":{"line":248,"column":8},"end":{"line":248,"column":33}},"89":{"start":{"line":249,"column":13},"end":{"line":253,"column":7}},"90":{"start":{"line":250,"column":8},"end":{"line":250,"column":44}},"91":{"start":{"line":252,"column":8},"end":{"line":252,"column":33}},"92":{"start":{"line":254,"column":6},"end":{"line":254,"column":12}},"93":{"start":{"line":266,"column":6},"end":{"line":270,"column":7}},"94":{"start":{"line":267,"column":8},"end":{"line":267,"column":77}},"95":{"start":{"line":268,"column":13},"end":{"line":270,"column":7}},"96":{"start":{"line":269,"column":8},"end":{"line":269,"column":33}},"97":{"start":{"line":271,"column":6},"end":{"line":271,"column":12}},"98":{"start":{"line":278,"column":6},"end":{"line":282,"column":7}},"99":{"start":{"line":279,"column":8},"end":{"line":279,"column":33}},"100":{"start":{"line":280,"column":13},"end":{"line":282,"column":7}},"101":{"start":{"line":281,"column":8},"end":{"line":281,"column":33}},"102":{"start":{"line":283,"column":6},"end":{"line":283,"column":12}},"103":{"start":{"line":294,"column":6},"end":{"line":298,"column":7}},"104":{"start":{"line":295,"column":8},"end":{"line":295,"column":33}},"105":{"start":{"line":296,"column":13},"end":{"line":298,"column":7}},"106":{"start":{"line":297,"column":8},"end":{"line":297,"column":33}},"107":{"start":{"line":299,"column":6},"end":{"line":299,"column":12}},"108":{"start":{"line":316,"column":6},"end":{"line":320,"column":7}},"109":{"start":{"line":317,"column":8},"end":{"line":317,"column":42}},"110":{"start":{"line":318,"column":13},"end":{"line":320,"column":7}},"111":{"start":{"line":319,"column":8},"end":{"line":319,"column":33}},"112":{"start":{"line":321,"column":6},"end":{"line":321,"column":12}},"113":{"start":{"line":325,"column":2},"end":{"line":341,"column":3}},"114":{"start":{"line":326,"column":4},"end":{"line":326,"column":65}},"115":{"start":{"line":329,"column":4},"end":{"line":340,"column":5}},"116":{"start":{"line":330,"column":6},"end":{"line":330,"column":68}},"117":{"start":{"line":331,"column":6},"end":{"line":331,"column":97}},"118":{"start":{"line":337,"column":6},"end":{"line":337,"column":69}},"119":{"start":{"line":338,"column":6},"end":{"line":338,"column":28}},"120":{"start":{"line":339,"column":6},"end":{"line":339,"column":24}},"121":{"start":{"line":351,"column":0},"end":{"line":357,"column":2}},"122":{"start":{"line":352,"column":2},"end":{"line":352,"column":26}},"123":{"start":{"line":353,"column":2},"end":{"line":353,"column":62}},"124":{"start":{"line":355,"column":2},"end":{"line":355,"column":37}},"125":{"start":{"line":356,"column":2},"end":{"line":356,"column":63}},"126":{"start":{"line":361,"column":0},"end":{"line":361,"column":32}},"127":{"start":{"line":367,"column":0},"end":{"line":370,"column":2}},"128":{"start":{"line":368,"column":2},"end":{"line":368,"column":76}},"129":{"start":{"line":369,"column":2},"end":{"line":369,"column":46}},"130":{"start":{"line":375,"column":0},"end":{"line":377,"column":2}},"131":{"start":{"line":376,"column":2},"end":{"line":376,"column":26}},"132":{"start":{"line":387,"column":0},"end":{"line":396,"column":2}},"133":{"start":{"line":388,"column":2},"end":{"line":395,"column":3}},"134":{"start":{"line":389,"column":4},"end":{"line":393,"column":5}},"135":{"start":{"line":390,"column":6},"end":{"line":390,"column":32}},"136":{"start":{"line":392,"column":6},"end":{"line":392,"column":40}},"137":{"start":{"line":394,"column":4},"end":{"line":394,"column":31}},"138":{"start":{"line":399,"column":0},"end":{"line":431,"column":2}},"139":{"start":{"line":401,"column":2},"end":{"line":401,"column":56}},"140":{"start":{"line":402,"column":2},"end":{"line":402,"column":15}},"141":{"start":{"line":406,"column":2},"end":{"line":419,"column":3}},"142":{"start":{"line":407,"column":4},"end":{"line":407,"column":31}},"143":{"start":{"line":408,"column":4},"end":{"line":408,"column":25}},"144":{"start":{"line":409,"column":4},"end":{"line":413,"column":7}},"145":{"start":{"line":418,"column":4},"end":{"line":418,"column":33}},"146":{"start":{"line":422,"column":2},"end":{"line":430,"column":3}},"147":{"start":{"line":423,"column":4},"end":{"line":423,"column":11}},"148":{"start":{"line":429,"column":4},"end":{"line":429,"column":91}},"149":{"start":{"line":433,"column":0},"end":{"line":441,"column":2}},"150":{"start":{"line":434,"column":2},"end":{"line":436,"column":3}},"151":{"start":{"line":435,"column":4},"end":{"line":435,"column":26}},"152":{"start":{"line":438,"column":2},"end":{"line":440,"column":3}},"153":{"start":{"line":439,"column":4},"end":{"line":439,"column":20}}},"branchMap":{"1":{"line":19,"type":"binary-expr","locations":[{"start":{"line":19,"column":15},"end":{"line":19,"column":18}},{"start":{"line":19,"column":22},"end":{"line":19,"column":34}}]},"2":{"line":44,"type":"if","locations":[{"start":{"line":44,"column":4},"end":{"line":44,"column":4}},{"start":{"line":44,"column":4},"end":{"line":44,"column":4}}]},"3":{"line":46,"type":"if","locations":[{"start":{"line":46,"column":11},"end":{"line":46,"column":11}},{"start":{"line":46,"column":11},"end":{"line":46,"column":11}}]},"4":{"line":109,"type":"binary-expr","locations":[{"start":{"line":109,"column":16},"end":{"line":109,"column":27}},{"start":{"line":109,"column":31},"end":{"line":109,"column":33}}]},"5":{"line":111,"type":"if","locations":[{"start":{"line":111,"column":2},"end":{"line":111,"column":2}},{"start":{"line":111,"column":2},"end":{"line":111,"column":2}}]},"6":{"line":134,"type":"if","locations":[{"start":{"line":134,"column":2},"end":{"line":134,"column":2}},{"start":{"line":134,"column":2},"end":{"line":134,"column":2}}]},"7":{"line":185,"type":"if","locations":[{"start":{"line":185,"column":2},"end":{"line":185,"column":2}},{"start":{"line":185,"column":2},"end":{"line":185,"column":2}}]},"8":{"line":199,"type":"switch","locations":[{"start":{"line":209,"column":4},"end":{"line":220,"column":12}},{"start":{"line":230,"column":4},"end":{"line":238,"column":12}},{"start":{"line":246,"column":4},"end":{"line":254,"column":12}},{"start":{"line":265,"column":4},"end":{"line":271,"column":12}},{"start":{"line":277,"column":4},"end":{"line":283,"column":12}},{"start":{"line":293,"column":4},"end":{"line":299,"column":12}},{"start":{"line":315,"column":4},"end":{"line":321,"column":12}}]},"9":{"line":210,"type":"if","locations":[{"start":{"line":210,"column":6},"end":{"line":210,"column":6}},{"start":{"line":210,"column":6},"end":{"line":210,"column":6}}]},"10":{"line":212,"type":"if","locations":[{"start":{"line":212,"column":8},"end":{"line":212,"column":8}},{"start":{"line":212,"column":8},"end":{"line":212,"column":8}}]},"11":{"line":213,"type":"cond-expr","locations":[{"start":{"line":213,"column":35},"end":{"line":213,"column":54}},{"start":{"line":213,"column":57},"end":{"line":213,"column":77}}]},"12":{"line":215,"type":"if","locations":[{"start":{"line":215,"column":13},"end":{"line":215,"column":13}},{"start":{"line":215,"column":13},"end":{"line":215,"column":13}}]},"13":{"line":216,"type":"cond-expr","locations":[{"start":{"line":216,"column":33},"end":{"line":216,"column":49}},{"start":{"line":216,"column":52},"end":{"line":216,"column":69}}]},"14":{"line":231,"type":"if","locations":[{"start":{"line":231,"column":6},"end":{"line":231,"column":6}},{"start":{"line":231,"column":6},"end":{"line":231,"column":6}}]},"15":{"line":231,"type":"binary-expr","locations":[{"start":{"line":231,"column":10},"end":{"line":231,"column":17}},{"start":{"line":231,"column":21},"end":{"line":231,"column":45}}]},"16":{"line":233,"type":"if","locations":[{"start":{"line":233,"column":13},"end":{"line":233,"column":13}},{"start":{"line":233,"column":13},"end":{"line":233,"column":13}}]},"17":{"line":233,"type":"binary-expr","locations":[{"start":{"line":233,"column":17},"end":{"line":233,"column":24}},{"start":{"line":233,"column":28},"end":{"line":233,"column":55}}]},"18":{"line":247,"type":"if","locations":[{"start":{"line":247,"column":6},"end":{"line":247,"column":6}},{"start":{"line":247,"column":6},"end":{"line":247,"column":6}}]},"19":{"line":249,"type":"if","locations":[{"start":{"line":249,"column":13},"end":{"line":249,"column":13}},{"start":{"line":249,"column":13},"end":{"line":249,"column":13}}]},"20":{"line":249,"type":"binary-expr","locations":[{"start":{"line":249,"column":17},"end":{"line":249,"column":26}},{"start":{"line":249,"column":30},"end":{"line":249,"column":54}}]},"21":{"line":266,"type":"if","locations":[{"start":{"line":266,"column":6},"end":{"line":266,"column":6}},{"start":{"line":266,"column":6},"end":{"line":266,"column":6}}]},"22":{"line":267,"type":"cond-expr","locations":[{"start":{"line":267,"column":33},"end":{"line":267,"column":52}},{"start":{"line":267,"column":55},"end":{"line":267,"column":75}}]},"23":{"line":268,"type":"if","locations":[{"start":{"line":268,"column":13},"end":{"line":268,"column":13}},{"start":{"line":268,"column":13},"end":{"line":268,"column":13}}]},"24":{"line":278,"type":"if","locations":[{"start":{"line":278,"column":6},"end":{"line":278,"column":6}},{"start":{"line":278,"column":6},"end":{"line":278,"column":6}}]},"25":{"line":278,"type":"binary-expr","locations":[{"start":{"line":278,"column":10},"end":{"line":278,"column":37}},{"start":{"line":278,"column":42},"end":{"line":278,"column":51}},{"start":{"line":278,"column":55},"end":{"line":278,"column":77}}]},"26":{"line":280,"type":"if","locations":[{"start":{"line":280,"column":13},"end":{"line":280,"column":13}},{"start":{"line":280,"column":13},"end":{"line":280,"column":13}}]},"27":{"line":294,"type":"if","locations":[{"start":{"line":294,"column":6},"end":{"line":294,"column":6}},{"start":{"line":294,"column":6},"end":{"line":294,"column":6}}]},"28":{"line":294,"type":"binary-expr","locations":[{"start":{"line":294,"column":10},"end":{"line":294,"column":37}},{"start":{"line":294,"column":42},"end":{"line":294,"column":49}},{"start":{"line":294,"column":53},"end":{"line":294,"column":75}}]},"29":{"line":296,"type":"if","locations":[{"start":{"line":296,"column":13},"end":{"line":296,"column":13}},{"start":{"line":296,"column":13},"end":{"line":296,"column":13}}]},"30":{"line":316,"type":"if","locations":[{"start":{"line":316,"column":6},"end":{"line":316,"column":6}},{"start":{"line":316,"column":6},"end":{"line":316,"column":6}}]},"31":{"line":316,"type":"binary-expr","locations":[{"start":{"line":316,"column":10},"end":{"line":316,"column":19}},{"start":{"line":316,"column":23},"end":{"line":316,"column":52}}]},"32":{"line":318,"type":"if","locations":[{"start":{"line":318,"column":13},"end":{"line":318,"column":13}},{"start":{"line":318,"column":13},"end":{"line":318,"column":13}}]},"33":{"line":318,"type":"binary-expr","locations":[{"start":{"line":318,"column":19},"end":{"line":318,"column":26}},{"start":{"line":318,"column":30},"end":{"line":318,"column":57}}]},"34":{"line":325,"type":"if","locations":[{"start":{"line":325,"column":2},"end":{"line":325,"column":2}},{"start":{"line":325,"column":2},"end":{"line":325,"column":2}}]},"35":{"line":329,"type":"if","locations":[{"start":{"line":329,"column":4},"end":{"line":329,"column":4}},{"start":{"line":329,"column":4},"end":{"line":329,"column":4}}]},"36":{"line":388,"type":"if","locations":[{"start":{"line":388,"column":2},"end":{"line":388,"column":2}},{"start":{"line":388,"column":2},"end":{"line":388,"column":2}}]},"37":{"line":389,"type":"if","locations":[{"start":{"line":389,"column":4},"end":{"line":389,"column":4}},{"start":{"line":389,"column":4},"end":{"line":389,"column":4}}]},"38":{"line":406,"type":"binary-expr","locations":[{"start":{"line":406,"column":9},"end":{"line":406,"column":26}},{"start":{"line":406,"column":30},"end":{"line":406,"column":62}}]},"39":{"line":422,"type":"if","locations":[{"start":{"line":422,"column":2},"end":{"line":422,"column":2}},{"start":{"line":422,"column":2},"end":{"line":422,"column":2}}]},"40":{"line":434,"type":"if","locations":[{"start":{"line":434,"column":2},"end":{"line":434,"column":2}},{"start":{"line":434,"column":2},"end":{"line":434,"column":2}}]},"41":{"line":438,"type":"if","locations":[{"start":{"line":438,"column":2},"end":{"line":438,"column":2}},{"start":{"line":438,"column":2},"end":{"line":438,"column":2}}]}}},"/data/upstream/node-http2/lib/endpoint.js":{"path":"/data/upstream/node-http2/lib/endpoint.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":2,"11":2,"12":2,"13":1,"14":1,"15":1,"16":0,"17":2,"18":2,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":24,"30":0,"31":0,"32":0,"33":24,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":2,"41":2,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":2,"49":2,"50":2,"51":2,"52":2,"53":2,"54":2,"55":1,"56":12,"57":12,"58":8,"59":12,"60":12,"61":1,"62":7,"63":1,"64":2,"65":2,"66":2,"67":2,"68":2,"69":1,"70":0,"71":0,"72":0},"b":{"1":[2,0],"2":[1,1],"3":[1,0],"4":[25,24],"5":[0,24],"6":[1,0],"7":[1,1],"8":[20,20],"9":[12,0]},"f":{"1":2,"2":1,"3":1,"4":1,"5":2,"6":12,"7":7,"8":2,"9":0},"fnMap":{"1":{"name":"Endpoint","line":15,"loc":{"start":{"line":15,"column":0},"end":{"line":15,"column":39}}},"2":{"name":"_writePrelude","line":47,"loc":{"start":{"line":47,"column":35},"end":{"line":47,"column":60}}},"3":{"name":"_readPrelude","line":53,"loc":{"start":{"line":53,"column":34},"end":{"line":53,"column":58}}},"4":{"name":"_temporalWrite","line":58,"loc":{"start":{"line":58,"column":16},"end":{"line":58,"column":63}}},"5":{"name":"_initializeDataFlow","line":116,"loc":{"start":{"line":116,"column":41},"end":{"line":116,"column":86}}},"6":{"name":"_read","line":138,"loc":{"start":{"line":138,"column":27},"end":{"line":138,"column":48}}},"7":{"name":"_write","line":149,"loc":{"start":{"line":149,"column":28},"end":{"line":149,"column":67}}},"8":{"name":"_initializeErrorHandling","line":156,"loc":{"start":{"line":156,"column":46},"end":{"line":156,"column":82}}},"9":{"name":"_error","line":164,"loc":{"start":{"line":164,"column":28},"end":{"line":164,"column":64}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":40}},"2":{"start":{"line":2,"column":0},"end":{"line":2,"column":50}},"3":{"start":{"line":3,"column":0},"end":{"line":3,"column":52}},"4":{"start":{"line":4,"column":0},"end":{"line":4,"column":54}},"5":{"start":{"line":5,"column":0},"end":{"line":5,"column":56}},"6":{"start":{"line":6,"column":0},"end":{"line":6,"column":54}},"7":{"start":{"line":7,"column":0},"end":{"line":7,"column":44}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":28}},"9":{"start":{"line":15,"column":0},"end":{"line":38,"column":1}},"10":{"start":{"line":16,"column":2},"end":{"line":16,"column":20}},"11":{"start":{"line":19,"column":2},"end":{"line":19,"column":69}},"12":{"start":{"line":23,"column":2},"end":{"line":29,"column":3}},"13":{"start":{"line":24,"column":4},"end":{"line":24,"column":25}},"14":{"start":{"line":25,"column":9},"end":{"line":29,"column":3}},"15":{"start":{"line":26,"column":4},"end":{"line":26,"column":24}},"16":{"start":{"line":28,"column":4},"end":{"line":28,"column":45}},"17":{"start":{"line":34,"column":2},"end":{"line":34,"column":43}},"18":{"start":{"line":37,"column":2},"end":{"line":37,"column":34}},"19":{"start":{"line":39,"column":0},"end":{"line":39,"column":91}},"20":{"start":{"line":44,"column":0},"end":{"line":44,"column":68}},"21":{"start":{"line":47,"column":0},"end":{"line":50,"column":2}},"22":{"start":{"line":48,"column":2},"end":{"line":48,"column":66}},"23":{"start":{"line":49,"column":2},"end":{"line":49,"column":28}},"24":{"start":{"line":53,"column":0},"end":{"line":81,"column":2}},"25":{"start":{"line":55,"column":2},"end":{"line":55,"column":17}},"26":{"start":{"line":58,"column":2},"end":{"line":80,"column":4}},"27":{"start":{"line":61,"column":4},"end":{"line":61,"column":24}},"28":{"start":{"line":62,"column":4},"end":{"line":70,"column":5}},"29":{"start":{"line":63,"column":6},"end":{"line":68,"column":7}},"30":{"start":{"line":64,"column":8},"end":{"line":65,"column":76}},"31":{"start":{"line":66,"column":8},"end":{"line":66,"column":85}},"32":{"start":{"line":67,"column":8},"end":{"line":67,"column":15}},"33":{"start":{"line":69,"column":6},"end":{"line":69,"column":18}},"34":{"start":{"line":74,"column":4},"end":{"line":79,"column":5}},"35":{"start":{"line":75,"column":6},"end":{"line":75,"column":84}},"36":{"start":{"line":76,"column":6},"end":{"line":76,"column":25}},"37":{"start":{"line":77,"column":6},"end":{"line":77,"column":43}},"38":{"start":{"line":78,"column":6},"end":{"line":78,"column":41}},"39":{"start":{"line":116,"column":0},"end":{"line":136,"column":2}},"40":{"start":{"line":117,"column":2},"end":{"line":117,"column":54}},"41":{"start":{"line":118,"column":2},"end":{"line":126,"column":3}},"42":{"start":{"line":119,"column":4},"end":{"line":119,"column":22}},"43":{"start":{"line":120,"column":4},"end":{"line":120,"column":31}},"44":{"start":{"line":121,"column":4},"end":{"line":121,"column":34}},"45":{"start":{"line":123,"column":4},"end":{"line":123,"column":22}},"46":{"start":{"line":124,"column":4},"end":{"line":124,"column":32}},"47":{"start":{"line":125,"column":4},"end":{"line":125,"column":33}},"48":{"start":{"line":128,"column":2},"end":{"line":128,"column":49}},"49":{"start":{"line":129,"column":2},"end":{"line":129,"column":51}},"50":{"start":{"line":130,"column":2},"end":{"line":130,"column":65}},"51":{"start":{"line":131,"column":2},"end":{"line":131,"column":69}},"52":{"start":{"line":132,"column":2},"end":{"line":132,"column":74}},"53":{"start":{"line":134,"column":2},"end":{"line":134,"column":65}},"54":{"start":{"line":135,"column":2},"end":{"line":135,"column":69}},"55":{"start":{"line":138,"column":0},"end":{"line":147,"column":2}},"56":{"start":{"line":139,"column":2},"end":{"line":139,"column":32}},"57":{"start":{"line":140,"column":2},"end":{"line":142,"column":3}},"58":{"start":{"line":141,"column":4},"end":{"line":141,"column":35}},"59":{"start":{"line":144,"column":2},"end":{"line":146,"column":3}},"60":{"start":{"line":145,"column":4},"end":{"line":145,"column":61}},"61":{"start":{"line":149,"column":0},"end":{"line":151,"column":2}},"62":{"start":{"line":150,"column":2},"end":{"line":150,"column":50}},"63":{"start":{"line":156,"column":0},"end":{"line":162,"column":2}},"64":{"start":{"line":157,"column":2},"end":{"line":157,"column":69}},"65":{"start":{"line":158,"column":2},"end":{"line":158,"column":73}},"66":{"start":{"line":159,"column":2},"end":{"line":159,"column":69}},"67":{"start":{"line":160,"column":2},"end":{"line":160,"column":73}},"68":{"start":{"line":161,"column":2},"end":{"line":161,"column":69}},"69":{"start":{"line":164,"column":0},"end":{"line":168,"column":2}},"70":{"start":{"line":165,"column":2},"end":{"line":165,"column":97}},"71":{"start":{"line":166,"column":2},"end":{"line":166,"column":18}},"72":{"start":{"line":167,"column":2},"end":{"line":167,"column":41}}},"branchMap":{"1":{"line":19,"type":"binary-expr","locations":[{"start":{"line":19,"column":15},"end":{"line":19,"column":18}},{"start":{"line":19,"column":22},"end":{"line":19,"column":34}}]},"2":{"line":23,"type":"if","locations":[{"start":{"line":23,"column":2},"end":{"line":23,"column":2}},{"start":{"line":23,"column":2},"end":{"line":23,"column":2}}]},"3":{"line":25,"type":"if","locations":[{"start":{"line":25,"column":9},"end":{"line":25,"column":9}},{"start":{"line":25,"column":9},"end":{"line":25,"column":9}}]},"4":{"line":62,"type":"binary-expr","locations":[{"start":{"line":62,"column":10},"end":{"line":62,"column":40}},{"start":{"line":62,"column":44},"end":{"line":62,"column":76}}]},"5":{"line":63,"type":"if","locations":[{"start":{"line":63,"column":6},"end":{"line":63,"column":6}},{"start":{"line":63,"column":6},"end":{"line":63,"column":6}}]},"6":{"line":74,"type":"if","locations":[{"start":{"line":74,"column":4},"end":{"line":74,"column":4}},{"start":{"line":74,"column":4},"end":{"line":74,"column":4}}]},"7":{"line":118,"type":"if","locations":[{"start":{"line":118,"column":2},"end":{"line":118,"column":2}},{"start":{"line":118,"column":2},"end":{"line":118,"column":2}}]},"8":{"line":140,"type":"binary-expr","locations":[{"start":{"line":140,"column":9},"end":{"line":140,"column":20}},{"start":{"line":140,"column":25},"end":{"line":140,"column":60}}]},"9":{"line":144,"type":"if","locations":[{"start":{"line":144,"column":2},"end":{"line":144,"column":2}},{"start":{"line":144,"column":2},"end":{"line":144,"column":2}}]}}},"/data/upstream/node-http2/lib/framer.js":{"path":"/data/upstream/node-http2/lib/framer.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":3,"7":3,"8":1,"9":1,"10":14,"11":14,"12":0,"13":14,"14":14,"15":14,"16":14,"17":30,"18":30,"19":14,"20":1,"21":3,"22":3,"23":3,"24":1,"25":1,"26":31,"27":31,"28":31,"29":31,"30":17,"31":1,"32":22,"33":22,"34":22,"35":39,"36":39,"37":39,"38":39,"39":39,"40":14,"41":14,"42":39,"43":14,"44":14,"45":14,"46":14,"47":14,"48":0,"49":0,"50":0,"51":14,"52":22,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":24,"61":24,"62":24,"63":26,"64":24,"65":0,"66":24,"67":24,"68":24,"69":24,"70":24,"71":28,"72":28,"73":0,"74":28,"75":4,"76":24,"77":24,"78":0,"79":24,"80":24,"81":1,"82":24,"83":24,"84":24,"85":24,"86":24,"87":24,"88":28,"89":24,"90":1,"91":1,"92":1,"93":1,"94":2,"95":1,"96":2,"97":1,"98":1,"99":1,"100":1,"101":4,"102":2,"103":2,"104":2,"105":4,"106":1,"107":4,"108":2,"109":2,"110":2,"111":1,"112":1,"113":1,"114":1,"115":2,"116":2,"117":2,"118":1,"119":2,"120":1,"121":1,"122":1,"123":1,"124":2,"125":2,"126":2,"127":1,"128":2,"129":1,"130":1,"131":1,"132":1,"133":4,"134":4,"135":12,"136":6,"137":6,"138":6,"139":4,"140":0,"141":4,"142":4,"143":6,"144":6,"145":4,"146":1,"147":4,"148":4,"149":0,"150":4,"151":6,"152":6,"153":6,"154":6,"155":0,"156":6,"157":4,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1,"166":2,"167":2,"168":2,"169":2,"170":1,"171":2,"172":2,"173":1,"174":1,"175":1,"176":1,"177":2,"178":0,"179":2,"180":1,"181":2,"182":0,"183":2,"184":1,"185":1,"186":1,"187":1,"188":2,"189":2,"190":2,"191":2,"192":1,"193":2,"194":2,"195":1,"196":1,"197":1,"198":1,"199":4,"200":4,"201":4,"202":1,"203":4,"204":1,"205":1,"206":0,"207":0,"208":0,"209":0,"210":0,"211":0,"212":0,"213":0,"214":1,"215":0},"b":{"1":[3,1],"2":[0,14],"3":[3,1],"4":[17,14],"5":[14,25],"6":[39,26],"7":[14,25],"8":[39,14],"9":[14,0],"10":[0,24],"11":[0,28],"12":[4,24],"13":[0,24],"14":[24,4],"15":[2,2],"16":[2,2],"17":[6,6],"18":[2,4],"19":[0,4],"20":[0,4],"21":[0,6],"22":[6,6],"23":[2,4],"24":[0,2],"25":[2,2],"26":[0,2],"27":[0,0],"28":[0,0]},"f":{"1":3,"2":14,"3":3,"4":31,"5":22,"6":24,"7":24,"8":2,"9":2,"10":4,"11":4,"12":2,"13":2,"14":2,"15":2,"16":4,"17":12,"18":4,"19":2,"20":2,"21":2,"22":2,"23":2,"24":2,"25":4,"26":4,"27":0,"28":0,"29":0,"30":0},"fnMap":{"1":{"name":"Serializer","line":24,"loc":{"start":{"line":24,"column":0},"end":{"line":24,"column":25}}},"2":{"name":"_transform","line":33,"loc":{"start":{"line":33,"column":34},"end":{"line":33,"column":77}}},"3":{"name":"Deserializer","line":63,"loc":{"start":{"line":63,"column":0},"end":{"line":63,"column":27}}},"4":{"name":"(anonymous_4)","line":75,"loc":{"start":{"line":75,"column":31},"end":{"line":75,"column":46}}},"5":{"name":"_transform","line":86,"loc":{"start":{"line":86,"column":36},"end":{"line":86,"column":79}}},"6":{"name":"writeCommonHeader","line":190,"loc":{"start":{"line":190,"column":26},"end":{"line":190,"column":69}}},"7":{"name":"readCommonHeader","line":225,"loc":{"start":{"line":225,"column":28},"end":{"line":225,"column":69}}},"8":{"name":"writeData","line":270,"loc":{"start":{"line":270,"column":18},"end":{"line":270,"column":53}}},"9":{"name":"readData","line":274,"loc":{"start":{"line":274,"column":20},"end":{"line":274,"column":53}}},"10":{"name":"writeHeadersPriority","line":313,"loc":{"start":{"line":313,"column":21},"end":{"line":313,"column":67}}},"11":{"name":"readHeadersPriority","line":322,"loc":{"start":{"line":322,"column":23},"end":{"line":322,"column":67}}},"12":{"name":"writePriority","line":352,"loc":{"start":{"line":352,"column":22},"end":{"line":352,"column":61}}},"13":{"name":"readPriority","line":358,"loc":{"start":{"line":358,"column":24},"end":{"line":358,"column":61}}},"14":{"name":"writeRstStream","line":384,"loc":{"start":{"line":384,"column":24},"end":{"line":384,"column":64}}},"15":{"name":"readRstStream","line":390,"loc":{"start":{"line":390,"column":26},"end":{"line":390,"column":64}}},"16":{"name":"writeSettings","line":426,"loc":{"start":{"line":426,"column":22},"end":{"line":426,"column":61}}},"17":{"name":"(anonymous_17)","line":428,"loc":{"start":{"line":428,"column":27},"end":{"line":428,"column":49}}},"18":{"name":"readSettings","line":448,"loc":{"start":{"line":448,"column":24},"end":{"line":448,"column":61}}},"19":{"name":"writePushPromise","line":514,"loc":{"start":{"line":514,"column":26},"end":{"line":514,"column":68}}},"20":{"name":"readPushPromise","line":521,"loc":{"start":{"line":521,"column":28},"end":{"line":521,"column":68}}},"21":{"name":"writePing","line":545,"loc":{"start":{"line":545,"column":18},"end":{"line":545,"column":53}}},"22":{"name":"readPing","line":552,"loc":{"start":{"line":552,"column":20},"end":{"line":552,"column":53}}},"23":{"name":"writeGoaway","line":587,"loc":{"start":{"line":587,"column":20},"end":{"line":587,"column":57}}},"24":{"name":"readGoaway","line":594,"loc":{"start":{"line":594,"column":22},"end":{"line":594,"column":57}}},"25":{"name":"writeWindowUpdate","line":621,"loc":{"start":{"line":621,"column":27},"end":{"line":621,"column":70}}},"26":{"name":"readWindowUpdate","line":627,"loc":{"start":{"line":627,"column":29},"end":{"line":627,"column":70}}},"27":{"name":"(anonymous_27)","line":655,"loc":{"start":{"line":655,"column":28},"end":{"line":655,"column":44}}},"28":{"name":"(anonymous_28)","line":657,"loc":{"start":{"line":657,"column":74},"end":{"line":657,"column":89}}},"29":{"name":"(anonymous_29)","line":665,"loc":{"start":{"line":665,"column":58},"end":{"line":665,"column":73}}},"30":{"name":"(anonymous_30)","line":673,"loc":{"start":{"line":673,"column":27},"end":{"line":673,"column":42}}}},"statementMap":{"1":{"start":{"line":5,"column":0},"end":{"line":5,"column":35}},"2":{"start":{"line":7,"column":0},"end":{"line":7,"column":44}},"3":{"start":{"line":9,"column":0},"end":{"line":9,"column":32}},"4":{"start":{"line":10,"column":0},"end":{"line":10,"column":36}},"5":{"start":{"line":24,"column":0},"end":{"line":27,"column":1}},"6":{"start":{"line":25,"column":2},"end":{"line":25,"column":71}},"7":{"start":{"line":26,"column":2},"end":{"line":26,"column":45}},"8":{"start":{"line":28,"column":0},"end":{"line":28,"column":98}},"9":{"start":{"line":33,"column":0},"end":{"line":50,"column":2}},"10":{"start":{"line":34,"column":2},"end":{"line":34,"column":54}},"11":{"start":{"line":36,"column":2},"end":{"line":38,"column":3}},"12":{"start":{"line":37,"column":4},"end":{"line":37,"column":57}},"13":{"start":{"line":40,"column":2},"end":{"line":40,"column":19}},"14":{"start":{"line":41,"column":2},"end":{"line":41,"column":41}},"15":{"start":{"line":42,"column":2},"end":{"line":42,"column":42}},"16":{"start":{"line":44,"column":2},"end":{"line":47,"column":3}},"17":{"start":{"line":45,"column":4},"end":{"line":45,"column":60}},"18":{"start":{"line":46,"column":4},"end":{"line":46,"column":26}},"19":{"start":{"line":49,"column":2},"end":{"line":49,"column":9}},"20":{"start":{"line":63,"column":0},"end":{"line":67,"column":1}},"21":{"start":{"line":64,"column":2},"end":{"line":64,"column":73}},"22":{"start":{"line":65,"column":2},"end":{"line":65,"column":45}},"23":{"start":{"line":66,"column":2},"end":{"line":66,"column":33}},"24":{"start":{"line":68,"column":0},"end":{"line":68,"column":102}},"25":{"start":{"line":75,"column":0},"end":{"line":82,"column":2}},"26":{"start":{"line":76,"column":2},"end":{"line":76,"column":19}},"27":{"start":{"line":77,"column":2},"end":{"line":77,"column":34}},"28":{"start":{"line":78,"column":2},"end":{"line":78,"column":55}},"29":{"start":{"line":79,"column":2},"end":{"line":81,"column":3}},"30":{"start":{"line":80,"column":4},"end":{"line":80,"column":21}},"31":{"start":{"line":86,"column":0},"end":{"line":132,"column":2}},"32":{"start":{"line":87,"column":2},"end":{"line":87,"column":17}},"33":{"start":{"line":89,"column":2},"end":{"line":89,"column":53}},"34":{"start":{"line":91,"column":2},"end":{"line":129,"column":3}},"35":{"start":{"line":94,"column":4},"end":{"line":94,"column":86}},"36":{"start":{"line":95,"column":4},"end":{"line":95,"column":69}},"37":{"start":{"line":96,"column":4},"end":{"line":96,"column":28}},"38":{"start":{"line":97,"column":4},"end":{"line":97,"column":22}},"39":{"start":{"line":104,"column":4},"end":{"line":107,"column":5}},"40":{"start":{"line":105,"column":6},"end":{"line":105,"column":59}},"41":{"start":{"line":106,"column":6},"end":{"line":106,"column":37}},"42":{"start":{"line":114,"column":4},"end":{"line":128,"column":5}},"43":{"start":{"line":115,"column":6},"end":{"line":126,"column":7}},"44":{"start":{"line":116,"column":8},"end":{"line":123,"column":9}},"45":{"start":{"line":117,"column":10},"end":{"line":117,"column":68}},"46":{"start":{"line":118,"column":10},"end":{"line":118,"column":68}},"47":{"start":{"line":119,"column":10},"end":{"line":119,"column":33}},"48":{"start":{"line":121,"column":10},"end":{"line":121,"column":74}},"49":{"start":{"line":122,"column":10},"end":{"line":122,"column":36}},"50":{"start":{"line":125,"column":8},"end":{"line":125,"column":78}},"51":{"start":{"line":127,"column":6},"end":{"line":127,"column":37}},"52":{"start":{"line":131,"column":2},"end":{"line":131,"column":9}},"53":{"start":{"line":179,"column":0},"end":{"line":179,"column":27}},"54":{"start":{"line":180,"column":0},"end":{"line":180,"column":29}},"55":{"start":{"line":182,"column":0},"end":{"line":182,"column":21}},"56":{"start":{"line":184,"column":0},"end":{"line":184,"column":21}},"57":{"start":{"line":186,"column":0},"end":{"line":186,"column":63}},"58":{"start":{"line":188,"column":0},"end":{"line":188,"column":34}},"59":{"start":{"line":190,"column":0},"end":{"line":223,"column":2}},"60":{"start":{"line":191,"column":2},"end":{"line":191,"column":53}},"61":{"start":{"line":193,"column":2},"end":{"line":193,"column":15}},"62":{"start":{"line":194,"column":2},"end":{"line":196,"column":3}},"63":{"start":{"line":195,"column":4},"end":{"line":195,"column":30}},"64":{"start":{"line":197,"column":2},"end":{"line":199,"column":3}},"65":{"start":{"line":198,"column":4},"end":{"line":198,"column":59}},"66":{"start":{"line":200,"column":2},"end":{"line":200,"column":39}},"67":{"start":{"line":202,"column":2},"end":{"line":202,"column":48}},"68":{"start":{"line":203,"column":2},"end":{"line":203,"column":39}},"69":{"start":{"line":205,"column":2},"end":{"line":205,"column":20}},"70":{"start":{"line":206,"column":2},"end":{"line":214,"column":3}},"71":{"start":{"line":207,"column":4},"end":{"line":207,"column":57}},"72":{"start":{"line":208,"column":4},"end":{"line":210,"column":5}},"73":{"start":{"line":209,"column":6},"end":{"line":209,"column":81}},"74":{"start":{"line":211,"column":4},"end":{"line":213,"column":5}},"75":{"start":{"line":212,"column":6},"end":{"line":212,"column":35}},"76":{"start":{"line":215,"column":2},"end":{"line":215,"column":41}},"77":{"start":{"line":217,"column":2},"end":{"line":219,"column":3}},"78":{"start":{"line":218,"column":4},"end":{"line":218,"column":60}},"79":{"start":{"line":220,"column":2},"end":{"line":220,"column":52}},"80":{"start":{"line":222,"column":2},"end":{"line":222,"column":33}},"81":{"start":{"line":225,"column":0},"end":{"line":238,"column":2}},"82":{"start":{"line":226,"column":2},"end":{"line":226,"column":40}},"83":{"start":{"line":228,"column":2},"end":{"line":228,"column":48}},"84":{"start":{"line":230,"column":2},"end":{"line":230,"column":19}},"85":{"start":{"line":231,"column":2},"end":{"line":231,"column":38}},"86":{"start":{"line":232,"column":2},"end":{"line":232,"column":46}},"87":{"start":{"line":233,"column":2},"end":{"line":235,"column":3}},"88":{"start":{"line":234,"column":4},"end":{"line":234,"column":66}},"89":{"start":{"line":237,"column":2},"end":{"line":237,"column":53}},"90":{"start":{"line":264,"column":0},"end":{"line":264,"column":26}},"91":{"start":{"line":266,"column":0},"end":{"line":266,"column":46}},"92":{"start":{"line":268,"column":0},"end":{"line":268,"column":41}},"93":{"start":{"line":270,"column":0},"end":{"line":272,"column":2}},"94":{"start":{"line":271,"column":2},"end":{"line":271,"column":27}},"95":{"start":{"line":274,"column":0},"end":{"line":276,"column":2}},"96":{"start":{"line":275,"column":2},"end":{"line":275,"column":22}},"97":{"start":{"line":297,"column":0},"end":{"line":297,"column":29}},"98":{"start":{"line":299,"column":0},"end":{"line":299,"column":76}},"99":{"start":{"line":301,"column":0},"end":{"line":301,"column":67}},"100":{"start":{"line":313,"column":0},"end":{"line":320,"column":2}},"101":{"start":{"line":314,"column":2},"end":{"line":318,"column":3}},"102":{"start":{"line":315,"column":4},"end":{"line":315,"column":31}},"103":{"start":{"line":316,"column":4},"end":{"line":316,"column":57}},"104":{"start":{"line":317,"column":4},"end":{"line":317,"column":25}},"105":{"start":{"line":319,"column":2},"end":{"line":319,"column":27}},"106":{"start":{"line":322,"column":0},"end":{"line":329,"column":2}},"107":{"start":{"line":323,"column":2},"end":{"line":328,"column":3}},"108":{"start":{"line":324,"column":4},"end":{"line":324,"column":57}},"109":{"start":{"line":325,"column":4},"end":{"line":325,"column":33}},"110":{"start":{"line":327,"column":4},"end":{"line":327,"column":24}},"111":{"start":{"line":338,"column":0},"end":{"line":338,"column":30}},"112":{"start":{"line":340,"column":0},"end":{"line":340,"column":26}},"113":{"start":{"line":342,"column":0},"end":{"line":342,"column":49}},"114":{"start":{"line":352,"column":0},"end":{"line":356,"column":2}},"115":{"start":{"line":353,"column":2},"end":{"line":353,"column":29}},"116":{"start":{"line":354,"column":2},"end":{"line":354,"column":42}},"117":{"start":{"line":355,"column":2},"end":{"line":355,"column":23}},"118":{"start":{"line":358,"column":0},"end":{"line":360,"column":2}},"119":{"start":{"line":359,"column":2},"end":{"line":359,"column":42}},"120":{"start":{"line":369,"column":0},"end":{"line":369,"column":32}},"121":{"start":{"line":371,"column":0},"end":{"line":371,"column":28}},"122":{"start":{"line":373,"column":0},"end":{"line":373,"column":48}},"123":{"start":{"line":384,"column":0},"end":{"line":388,"column":2}},"124":{"start":{"line":385,"column":2},"end":{"line":385,"column":29}},"125":{"start":{"line":386,"column":2},"end":{"line":386,"column":60}},"126":{"start":{"line":387,"column":2},"end":{"line":387,"column":23}},"127":{"start":{"line":390,"column":0},"end":{"line":392,"column":2}},"128":{"start":{"line":391,"column":2},"end":{"line":391,"column":52}},"129":{"start":{"line":402,"column":0},"end":{"line":402,"column":30}},"130":{"start":{"line":404,"column":0},"end":{"line":404,"column":26}},"131":{"start":{"line":406,"column":0},"end":{"line":406,"column":49}},"132":{"start":{"line":426,"column":0},"end":{"line":446,"column":2}},"133":{"start":{"line":427,"column":2},"end":{"line":427,"column":65}},"134":{"start":{"line":428,"column":2},"end":{"line":434,"column":5}},"135":{"start":{"line":429,"column":4},"end":{"line":433,"column":5}},"136":{"start":{"line":430,"column":6},"end":{"line":430,"column":67}},"137":{"start":{"line":431,"column":6},"end":{"line":431,"column":47}},"138":{"start":{"line":432,"column":6},"end":{"line":432,"column":78}},"139":{"start":{"line":435,"column":2},"end":{"line":437,"column":3}},"140":{"start":{"line":436,"column":4},"end":{"line":436,"column":69}},"141":{"start":{"line":439,"column":2},"end":{"line":439,"column":47}},"142":{"start":{"line":440,"column":2},"end":{"line":443,"column":3}},"143":{"start":{"line":441,"column":4},"end":{"line":441,"column":57}},"144":{"start":{"line":442,"column":4},"end":{"line":442,"column":53}},"145":{"start":{"line":445,"column":2},"end":{"line":445,"column":23}},"146":{"start":{"line":448,"column":0},"end":{"line":465,"column":2}},"147":{"start":{"line":449,"column":2},"end":{"line":449,"column":22}},"148":{"start":{"line":451,"column":2},"end":{"line":453,"column":3}},"149":{"start":{"line":452,"column":4},"end":{"line":452,"column":47}},"150":{"start":{"line":454,"column":2},"end":{"line":462,"column":3}},"151":{"start":{"line":455,"column":4},"end":{"line":455,"column":49}},"152":{"start":{"line":456,"column":4},"end":{"line":456,"column":39}},"153":{"start":{"line":457,"column":4},"end":{"line":457,"column":45}},"154":{"start":{"line":458,"column":4},"end":{"line":460,"column":5}},"155":{"start":{"line":459,"column":6},"end":{"line":459,"column":15}},"156":{"start":{"line":461,"column":4},"end":{"line":461,"column":79}},"157":{"start":{"line":464,"column":2},"end":{"line":464,"column":15}},"158":{"start":{"line":468,"column":0},"end":{"line":468,"column":26}},"159":{"start":{"line":472,"column":0},"end":{"line":472,"column":79}},"160":{"start":{"line":476,"column":0},"end":{"line":476,"column":76}},"161":{"start":{"line":482,"column":0},"end":{"line":482,"column":77}},"162":{"start":{"line":496,"column":0},"end":{"line":496,"column":34}},"163":{"start":{"line":498,"column":0},"end":{"line":498,"column":48}},"164":{"start":{"line":500,"column":0},"end":{"line":500,"column":79}},"165":{"start":{"line":514,"column":0},"end":{"line":519,"column":2}},"166":{"start":{"line":515,"column":2},"end":{"line":515,"column":29}},"167":{"start":{"line":516,"column":2},"end":{"line":516,"column":62}},"168":{"start":{"line":517,"column":2},"end":{"line":517,"column":23}},"169":{"start":{"line":518,"column":2},"end":{"line":518,"column":27}},"170":{"start":{"line":521,"column":0},"end":{"line":524,"column":2}},"171":{"start":{"line":522,"column":2},"end":{"line":522,"column":62}},"172":{"start":{"line":523,"column":2},"end":{"line":523,"column":31}},"173":{"start":{"line":537,"column":0},"end":{"line":537,"column":26}},"174":{"start":{"line":539,"column":0},"end":{"line":539,"column":28}},"175":{"start":{"line":541,"column":0},"end":{"line":541,"column":41}},"176":{"start":{"line":545,"column":0},"end":{"line":550,"column":2}},"177":{"start":{"line":546,"column":2},"end":{"line":548,"column":3}},"178":{"start":{"line":547,"column":4},"end":{"line":547,"column":65}},"179":{"start":{"line":549,"column":2},"end":{"line":549,"column":27}},"180":{"start":{"line":552,"column":0},"end":{"line":557,"column":2}},"181":{"start":{"line":553,"column":2},"end":{"line":555,"column":3}},"182":{"start":{"line":554,"column":4},"end":{"line":554,"column":48}},"183":{"start":{"line":556,"column":2},"end":{"line":556,"column":22}},"184":{"start":{"line":566,"column":0},"end":{"line":566,"column":28}},"185":{"start":{"line":568,"column":0},"end":{"line":568,"column":24}},"186":{"start":{"line":570,"column":0},"end":{"line":570,"column":59}},"187":{"start":{"line":587,"column":0},"end":{"line":592,"column":2}},"188":{"start":{"line":588,"column":2},"end":{"line":588,"column":29}},"189":{"start":{"line":589,"column":2},"end":{"line":589,"column":58}},"190":{"start":{"line":590,"column":2},"end":{"line":590,"column":60}},"191":{"start":{"line":591,"column":2},"end":{"line":591,"column":23}},"192":{"start":{"line":594,"column":0},"end":{"line":597,"column":2}},"193":{"start":{"line":595,"column":2},"end":{"line":595,"column":58}},"194":{"start":{"line":596,"column":2},"end":{"line":596,"column":52}},"195":{"start":{"line":610,"column":0},"end":{"line":610,"column":35}},"196":{"start":{"line":612,"column":0},"end":{"line":612,"column":49}},"197":{"start":{"line":614,"column":0},"end":{"line":614,"column":57}},"198":{"start":{"line":621,"column":0},"end":{"line":625,"column":2}},"199":{"start":{"line":622,"column":2},"end":{"line":622,"column":29}},"200":{"start":{"line":623,"column":2},"end":{"line":623,"column":58}},"201":{"start":{"line":624,"column":2},"end":{"line":624,"column":23}},"202":{"start":{"line":627,"column":0},"end":{"line":629,"column":2}},"203":{"start":{"line":628,"column":2},"end":{"line":628,"column":58}},"204":{"start":{"line":634,"column":0},"end":{"line":645,"column":2}},"205":{"start":{"line":655,"column":0},"end":{"line":670,"column":2}},"206":{"start":{"line":656,"column":2},"end":{"line":656,"column":21}},"207":{"start":{"line":657,"column":2},"end":{"line":659,"column":5}},"208":{"start":{"line":658,"column":4},"end":{"line":658,"column":34}},"209":{"start":{"line":661,"column":2},"end":{"line":663,"column":3}},"210":{"start":{"line":662,"column":4},"end":{"line":662,"column":48}},"211":{"start":{"line":665,"column":2},"end":{"line":667,"column":5}},"212":{"start":{"line":666,"column":4},"end":{"line":666,"column":38}},"213":{"start":{"line":669,"column":2},"end":{"line":669,"column":19}},"214":{"start":{"line":673,"column":0},"end":{"line":675,"column":2}},"215":{"start":{"line":674,"column":2},"end":{"line":674,"column":30}}},"branchMap":{"1":{"line":25,"type":"binary-expr","locations":[{"start":{"line":25,"column":15},"end":{"line":25,"column":18}},{"start":{"line":25,"column":22},"end":{"line":25,"column":34}}]},"2":{"line":36,"type":"if","locations":[{"start":{"line":36,"column":2},"end":{"line":36,"column":2}},{"start":{"line":36,"column":2},"end":{"line":36,"column":2}}]},"3":{"line":64,"type":"binary-expr","locations":[{"start":{"line":64,"column":15},"end":{"line":64,"column":18}},{"start":{"line":64,"column":22},"end":{"line":64,"column":34}}]},"4":{"line":79,"type":"if","locations":[{"start":{"line":79,"column":2},"end":{"line":79,"column":2}},{"start":{"line":79,"column":2},"end":{"line":79,"column":2}}]},"5":{"line":104,"type":"if","locations":[{"start":{"line":104,"column":4},"end":{"line":104,"column":4}},{"start":{"line":104,"column":4},"end":{"line":104,"column":4}}]},"6":{"line":104,"type":"binary-expr","locations":[{"start":{"line":104,"column":8},"end":{"line":104,"column":44}},{"start":{"line":104,"column":48},"end":{"line":104,"column":72}}]},"7":{"line":114,"type":"if","locations":[{"start":{"line":114,"column":4},"end":{"line":114,"column":4}},{"start":{"line":114,"column":4},"end":{"line":114,"column":4}}]},"8":{"line":114,"type":"binary-expr","locations":[{"start":{"line":114,"column":8},"end":{"line":114,"column":44}},{"start":{"line":114,"column":48},"end":{"line":114,"column":73}}]},"9":{"line":115,"type":"if","locations":[{"start":{"line":115,"column":6},"end":{"line":115,"column":6}},{"start":{"line":115,"column":6},"end":{"line":115,"column":6}}]},"10":{"line":197,"type":"if","locations":[{"start":{"line":197,"column":2},"end":{"line":197,"column":2}},{"start":{"line":197,"column":2},"end":{"line":197,"column":2}}]},"11":{"line":208,"type":"if","locations":[{"start":{"line":208,"column":4},"end":{"line":208,"column":4}},{"start":{"line":208,"column":4},"end":{"line":208,"column":4}}]},"12":{"line":211,"type":"if","locations":[{"start":{"line":211,"column":4},"end":{"line":211,"column":4}},{"start":{"line":211,"column":4},"end":{"line":211,"column":4}}]},"13":{"line":217,"type":"if","locations":[{"start":{"line":217,"column":2},"end":{"line":217,"column":2}},{"start":{"line":217,"column":2},"end":{"line":217,"column":2}}]},"14":{"line":220,"type":"binary-expr","locations":[{"start":{"line":220,"column":30},"end":{"line":220,"column":42}},{"start":{"line":220,"column":46},"end":{"line":220,"column":47}}]},"15":{"line":314,"type":"if","locations":[{"start":{"line":314,"column":2},"end":{"line":314,"column":2}},{"start":{"line":314,"column":2},"end":{"line":314,"column":2}}]},"16":{"line":323,"type":"if","locations":[{"start":{"line":323,"column":2},"end":{"line":323,"column":2}},{"start":{"line":323,"column":2},"end":{"line":323,"column":2}}]},"17":{"line":429,"type":"if","locations":[{"start":{"line":429,"column":4},"end":{"line":429,"column":4}},{"start":{"line":429,"column":4},"end":{"line":429,"column":4}}]},"18":{"line":432,"type":"cond-expr","locations":[{"start":{"line":432,"column":52},"end":{"line":432,"column":66}},{"start":{"line":432,"column":69},"end":{"line":432,"column":74}}]},"19":{"line":435,"type":"if","locations":[{"start":{"line":435,"column":2},"end":{"line":435,"column":2}},{"start":{"line":435,"column":2},"end":{"line":435,"column":2}}]},"20":{"line":451,"type":"if","locations":[{"start":{"line":451,"column":2},"end":{"line":451,"column":2}},{"start":{"line":451,"column":2},"end":{"line":451,"column":2}}]},"21":{"line":458,"type":"if","locations":[{"start":{"line":458,"column":4},"end":{"line":458,"column":4}},{"start":{"line":458,"column":4},"end":{"line":458,"column":4}}]},"22":{"line":458,"type":"binary-expr","locations":[{"start":{"line":458,"column":8},"end":{"line":458,"column":16}},{"start":{"line":458,"column":20},"end":{"line":458,"column":50}}]},"23":{"line":461,"type":"cond-expr","locations":[{"start":{"line":461,"column":50},"end":{"line":461,"column":70}},{"start":{"line":461,"column":73},"end":{"line":461,"column":78}}]},"24":{"line":546,"type":"if","locations":[{"start":{"line":546,"column":2},"end":{"line":546,"column":2}},{"start":{"line":546,"column":2},"end":{"line":546,"column":2}}]},"25":{"line":546,"type":"binary-expr","locations":[{"start":{"line":546,"column":6},"end":{"line":546,"column":17}},{"start":{"line":546,"column":21},"end":{"line":546,"column":44}}]},"26":{"line":553,"type":"if","locations":[{"start":{"line":553,"column":2},"end":{"line":553,"column":2}},{"start":{"line":553,"column":2},"end":{"line":553,"column":2}}]},"27":{"line":661,"type":"if","locations":[{"start":{"line":661,"column":2},"end":{"line":661,"column":2}},{"start":{"line":661,"column":2},"end":{"line":661,"column":2}}]},"28":{"line":665,"type":"binary-expr","locations":[{"start":{"line":665,"column":32},"end":{"line":665,"column":43}},{"start":{"line":665,"column":47},"end":{"line":665,"column":49}}]}}}} \ No newline at end of file +{"/data/upstream/node-http2/lib/compressor.js":{"path":"/data/upstream/node-http2/lib/compressor.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":14,"9":14,"10":14,"11":14,"12":14,"13":1,"14":1643,"15":1,"16":47,"17":142,"18":1,"19":47,"20":47,"21":154,"22":98,"23":47,"24":98,"25":98,"26":1,"27":184,"28":184,"29":184,"30":52,"31":52,"32":139,"33":52,"34":2,"35":2,"36":50,"37":132,"38":47,"39":85,"40":132,"41":131,"42":88,"43":43,"44":131,"45":131,"46":132,"47":1,"48":42,"49":97,"50":1,"51":64,"52":64,"53":64,"54":5,"55":5,"56":1,"57":63,"58":63,"59":1251,"60":63,"61":37,"62":37,"63":21,"64":42,"65":1,"66":24,"67":24,"68":42,"69":24,"70":24,"71":24,"72":1,"73":131,"74":131,"75":131,"76":2789,"77":204,"78":2789,"79":131,"80":218,"81":218,"82":1,"83":8,"84":8,"85":8,"86":8,"87":1,"88":1,"89":25,"90":25,"91":25,"92":25,"93":96,"94":25,"95":25,"96":25,"97":96,"98":96,"99":96,"100":17,"101":8,"102":9,"103":79,"104":25,"105":25,"106":1,"107":6,"108":6,"109":6,"110":6,"111":1,"112":1,"113":22,"114":22,"115":22,"116":22,"117":70,"118":70,"119":8,"120":24,"121":62,"122":22,"123":22,"124":22,"125":46,"126":24,"127":24,"128":24,"129":22,"130":86,"131":64,"132":64,"133":64,"134":22,"135":22,"136":88,"137":22,"138":22,"139":22,"140":1,"141":234,"142":234,"143":94,"144":140,"145":140,"146":2,"147":140,"148":140,"149":140,"150":148,"151":148,"152":148,"153":8,"154":148,"155":148,"156":140,"157":1,"158":252,"159":252,"160":252,"161":106,"162":252,"163":151,"164":151,"165":161,"166":161,"167":161,"168":252,"169":1,"170":116,"171":116,"172":116,"173":1,"174":121,"175":121,"176":121,"177":121,"178":1,"179":1,"180":96,"181":96,"182":27,"183":69,"184":1,"185":68,"186":46,"187":22,"188":96,"189":27,"190":69,"191":26,"192":43,"193":43,"194":69,"195":22,"196":69,"197":96,"198":96,"199":1,"200":104,"201":104,"202":104,"203":29,"204":75,"205":52,"206":2,"207":50,"208":23,"209":104,"210":29,"211":29,"212":75,"213":75,"214":44,"215":75,"216":23,"217":52,"218":50,"219":2,"220":75,"221":104,"222":1,"223":1,"224":6,"225":1,"226":18,"227":12,"228":12,"229":12,"230":14,"231":14,"232":12,"233":2,"234":2,"235":14,"236":6,"237":18,"238":1,"239":8,"240":8,"241":8,"242":8,"243":8,"244":1,"245":22,"246":3,"247":1,"248":1,"249":1,"250":2,"251":19,"252":13,"253":13,"254":13,"255":13,"256":6,"257":21,"258":12,"259":14,"260":12,"261":12,"262":0,"263":0,"264":0,"265":12,"266":12,"267":21,"268":1,"269":1,"270":1,"271":34,"272":34,"273":333,"274":34,"275":34,"276":333,"277":34,"278":1,"279":12,"280":12,"281":12,"282":14,"283":14,"284":14,"285":12,"286":1,"287":14,"288":14,"289":0,"290":14},"b":{"1":[14,14],"2":[1643,128],"3":[52,132],"4":[2,50],"5":[47,85],"6":[131,1],"7":[88,43],"8":[5,59],"9":[1,4],"10":[37,26],"11":[21,16],"12":[24,18],"13":[204,2585],"14":[8,4],"15":[5,3],"16":[17,79],"17":[8,9],"18":[6,2],"19":[3,3],"20":[8,62],"21":[24,22],"22":[64,22],"23":[94,140],"24":[2,138],"25":[8,140],"26":[106,146],"27":[151,101],"28":[27,69],"29":[1,68],"30":[46,22],"31":[27,69],"32":[26,43],"33":[22,47],"34":[29,75],"35":[52,23],"36":[2,50],"37":[29,75],"38":[44,31],"39":[23,52],"40":[50,2],"41":[12,6],"42":[18,11],"43":[12,2],"44":[3,19],"45":[1,2],"46":[3,2],"47":[13,6],"48":[19,11],"49":[12,9],"50":[21,15,8]},"f":{"1":14,"2":1643,"3":47,"4":142,"5":47,"6":154,"7":98,"8":98,"9":184,"10":139,"11":42,"12":97,"13":64,"14":1251,"15":24,"16":131,"17":8,"18":25,"19":6,"20":22,"21":234,"22":252,"23":116,"24":121,"25":96,"26":104,"27":6,"28":18,"29":8,"30":22,"31":14,"32":34,"33":12,"34":14},"fnMap":{"1":{"name":"CompressionContext","line":39,"loc":{"start":{"line":39,"column":0},"end":{"line":39,"column":47}}},"2":{"name":"(anonymous_2)","line":49,"loc":{"start":{"line":49,"column":27},"end":{"line":49,"column":50}}},"3":{"name":"getWorkingSet","line":54,"loc":{"start":{"line":54,"column":45},"end":{"line":54,"column":70}}},"4":{"name":"(anonymous_4)","line":55,"loc":{"start":{"line":55,"column":27},"end":{"line":55,"column":43}}},"5":{"name":"reinitialize","line":61,"loc":{"start":{"line":61,"column":44},"end":{"line":61,"column":68}}},"6":{"name":"(anonymous_6)","line":67,"loc":{"start":{"line":67,"column":41},"end":{"line":67,"column":57}}},"7":{"name":"(anonymous_7)","line":69,"loc":{"start":{"line":69,"column":9},"end":{"line":69,"column":25}}},"8":{"name":"(anonymous_8)","line":77,"loc":{"start":{"line":77,"column":38},"end":{"line":77,"column":53}}},"9":{"name":"execute","line":106,"loc":{"start":{"line":106,"column":39},"end":{"line":106,"column":65}}},"10":{"name":"(anonymous_10)","line":119,"loc":{"start":{"line":119,"column":40},"end":{"line":119,"column":56}}},"11":{"name":"(anonymous_11)","line":157,"loc":{"start":{"line":157,"column":43},"end":{"line":157,"column":59}}},"12":{"name":"(anonymous_12)","line":158,"loc":{"start":{"line":158,"column":28},"end":{"line":158,"column":44}}},"13":{"name":"(anonymous_13)","line":165,"loc":{"start":{"line":165,"column":50},"end":{"line":165,"column":65}}},"14":{"name":"(anonymous_14)","line":181,"loc":{"start":{"line":181,"column":37},"end":{"line":181,"column":53}}},"15":{"name":"(anonymous_15)","line":204,"loc":{"start":{"line":204,"column":53},"end":{"line":204,"column":68}}},"16":{"name":"(anonymous_16)","line":228,"loc":{"start":{"line":228,"column":49},"end":{"line":228,"column":60}}},"17":{"name":"Decompressor","line":250,"loc":{"start":{"line":250,"column":0},"end":{"line":250,"column":33}}},"18":{"name":"decompress","line":265,"loc":{"start":{"line":265,"column":36},"end":{"line":265,"column":64}}},"19":{"name":"Compressor","line":311,"loc":{"start":{"line":311,"column":0},"end":{"line":311,"column":31}}},"20":{"name":"compress","line":326,"loc":{"start":{"line":326,"column":32},"end":{"line":326,"column":59}}},"21":{"name":"writeInteger","line":396,"loc":{"start":{"line":396,"column":21},"end":{"line":396,"column":49}}},"22":{"name":"readInteger","line":437,"loc":{"start":{"line":437,"column":23},"end":{"line":437,"column":55}}},"23":{"name":"writeString","line":467,"loc":{"start":{"line":467,"column":20},"end":{"line":467,"column":46}}},"24":{"name":"readString","line":473,"loc":{"start":{"line":473,"column":22},"end":{"line":473,"column":50}}},"25":{"name":"writeString","line":526,"loc":{"start":{"line":526,"column":20},"end":{"line":526,"column":49}}},"26":{"name":"readString","line":562,"loc":{"start":{"line":562,"column":22},"end":{"line":562,"column":50}}},"27":{"name":"_initializeStream","line":627,"loc":{"start":{"line":627,"column":41},"end":{"line":627,"column":70}}},"28":{"name":"_transform","line":631,"loc":{"start":{"line":631,"column":34},"end":{"line":631,"column":77}}},"29":{"name":"_initializeStream","line":677,"loc":{"start":{"line":677,"column":43},"end":{"line":677,"column":72}}},"30":{"name":"_transform","line":686,"loc":{"start":{"line":686,"column":36},"end":{"line":686,"column":79}}},"31":{"name":"(anonymous_31)","line":716,"loc":{"start":{"line":716,"column":41},"end":{"line":716,"column":57}}},"32":{"name":"concat","line":826,"loc":{"start":{"line":826,"column":0},"end":{"line":826,"column":25}}},"33":{"name":"cut","line":841,"loc":{"start":{"line":841,"column":0},"end":{"line":841,"column":27}}},"34":{"name":"shallowCopy","line":853,"loc":{"start":{"line":853,"column":0},"end":{"line":853,"column":29}}}},"statementMap":{"1":{"start":{"line":16,"column":0},"end":{"line":16,"column":35}},"2":{"start":{"line":17,"column":0},"end":{"line":17,"column":44}},"3":{"start":{"line":19,"column":0},"end":{"line":19,"column":48}},"4":{"start":{"line":20,"column":0},"end":{"line":20,"column":36}},"5":{"start":{"line":21,"column":0},"end":{"line":21,"column":32}},"6":{"start":{"line":37,"column":0},"end":{"line":37,"column":38}},"7":{"start":{"line":39,"column":0},"end":{"line":45,"column":1}},"8":{"start":{"line":40,"column":2},"end":{"line":40,"column":18}},"9":{"start":{"line":41,"column":2},"end":{"line":41,"column":30}},"10":{"start":{"line":42,"column":2},"end":{"line":42,"column":52}},"11":{"start":{"line":43,"column":2},"end":{"line":43,"column":23}},"12":{"start":{"line":44,"column":2},"end":{"line":44,"column":21}},"13":{"start":{"line":49,"column":0},"end":{"line":51,"column":2}},"14":{"start":{"line":50,"column":2},"end":{"line":50,"column":88}},"15":{"start":{"line":54,"column":0},"end":{"line":58,"column":2}},"16":{"start":{"line":55,"column":2},"end":{"line":57,"column":5}},"17":{"start":{"line":56,"column":4},"end":{"line":56,"column":22}},"18":{"start":{"line":61,"column":0},"end":{"line":81,"column":2}},"19":{"start":{"line":62,"column":2},"end":{"line":62,"column":18}},"20":{"start":{"line":67,"column":2},"end":{"line":71,"column":5}},"21":{"start":{"line":68,"column":4},"end":{"line":68,"column":50}},"22":{"start":{"line":70,"column":4},"end":{"line":70,"column":22}},"23":{"start":{"line":77,"column":2},"end":{"line":80,"column":5}},"24":{"start":{"line":78,"column":4},"end":{"line":78,"column":42}},"25":{"start":{"line":79,"column":4},"end":{"line":79,"column":40}},"26":{"start":{"line":106,"column":0},"end":{"line":153,"column":2}},"27":{"start":{"line":107,"column":2},"end":{"line":108,"column":55}},"28":{"start":{"line":110,"column":2},"end":{"line":110,"column":18}},"29":{"start":{"line":117,"column":2},"end":{"line":152,"column":3}},"30":{"start":{"line":118,"column":4},"end":{"line":118,"column":26}},"31":{"start":{"line":119,"column":4},"end":{"line":121,"column":7}},"32":{"start":{"line":120,"column":6},"end":{"line":120,"column":35}},"33":{"start":{"line":122,"column":4},"end":{"line":127,"column":5}},"34":{"start":{"line":123,"column":6},"end":{"line":123,"column":32}},"35":{"start":{"line":124,"column":6},"end":{"line":124,"column":55}},"36":{"start":{"line":126,"column":6},"end":{"line":126,"column":31}},"37":{"start":{"line":135,"column":4},"end":{"line":139,"column":5}},"38":{"start":{"line":136,"column":6},"end":{"line":136,"column":59}},"39":{"start":{"line":138,"column":6},"end":{"line":138,"column":43}},"40":{"start":{"line":141,"column":4},"end":{"line":149,"column":5}},"41":{"start":{"line":142,"column":6},"end":{"line":146,"column":7}},"42":{"start":{"line":143,"column":8},"end":{"line":143,"column":31}},"43":{"start":{"line":145,"column":8},"end":{"line":145,"column":51}},"44":{"start":{"line":147,"column":6},"end":{"line":147,"column":31}},"45":{"start":{"line":148,"column":6},"end":{"line":148,"column":40}},"46":{"start":{"line":151,"column":4},"end":{"line":151,"column":53}},"47":{"start":{"line":157,"column":0},"end":{"line":161,"column":2}},"48":{"start":{"line":158,"column":2},"end":{"line":160,"column":5}},"49":{"start":{"line":159,"column":4},"end":{"line":159,"column":33}},"50":{"start":{"line":165,"column":0},"end":{"line":200,"column":2}},"51":{"start":{"line":166,"column":2},"end":{"line":166,"column":56}},"52":{"start":{"line":168,"column":2},"end":{"line":168,"column":44}},"53":{"start":{"line":169,"column":2},"end":{"line":178,"column":3}},"54":{"start":{"line":170,"column":4},"end":{"line":170,"column":54}},"55":{"start":{"line":171,"column":4},"end":{"line":177,"column":5}},"56":{"start":{"line":172,"column":6},"end":{"line":176,"column":8}},"57":{"start":{"line":180,"column":2},"end":{"line":180,"column":35}},"58":{"start":{"line":181,"column":2},"end":{"line":183,"column":5}},"59":{"start":{"line":182,"column":4},"end":{"line":182,"column":43}},"60":{"start":{"line":184,"column":2},"end":{"line":193,"column":3}},"61":{"start":{"line":185,"column":4},"end":{"line":185,"column":54}},"62":{"start":{"line":186,"column":4},"end":{"line":192,"column":5}},"63":{"start":{"line":187,"column":6},"end":{"line":191,"column":8}},"64":{"start":{"line":195,"column":2},"end":{"line":199,"column":4}},"65":{"start":{"line":204,"column":0},"end":{"line":219,"column":2}},"66":{"start":{"line":205,"column":2},"end":{"line":205,"column":12}},"67":{"start":{"line":207,"column":2},"end":{"line":212,"column":3}},"68":{"start":{"line":208,"column":4},"end":{"line":211,"column":5}},"69":{"start":{"line":209,"column":6},"end":{"line":209,"column":31}},"70":{"start":{"line":210,"column":6},"end":{"line":210,"column":12}},"71":{"start":{"line":214,"column":2},"end":{"line":218,"column":4}},"72":{"start":{"line":228,"column":0},"end":{"line":241,"column":2}},"73":{"start":{"line":229,"column":2},"end":{"line":229,"column":26}},"74":{"start":{"line":230,"column":2},"end":{"line":230,"column":15}},"75":{"start":{"line":231,"column":2},"end":{"line":236,"column":3}},"76":{"start":{"line":232,"column":4},"end":{"line":234,"column":5}},"77":{"start":{"line":233,"column":6},"end":{"line":233,"column":80}},"78":{"start":{"line":235,"column":4},"end":{"line":235,"column":26}},"79":{"start":{"line":237,"column":2},"end":{"line":240,"column":3}},"80":{"start":{"line":238,"column":4},"end":{"line":238,"column":32}},"81":{"start":{"line":239,"column":4},"end":{"line":239,"column":25}},"82":{"start":{"line":250,"column":0},"end":{"line":258,"column":1}},"83":{"start":{"line":251,"column":2},"end":{"line":251,"column":73}},"84":{"start":{"line":253,"column":2},"end":{"line":254,"column":84}},"85":{"start":{"line":255,"column":2},"end":{"line":255,"column":66}},"86":{"start":{"line":257,"column":2},"end":{"line":257,"column":27}},"87":{"start":{"line":259,"column":0},"end":{"line":259,"column":102}},"88":{"start":{"line":265,"column":0},"end":{"line":302,"column":2}},"89":{"start":{"line":266,"column":2},"end":{"line":266,"column":69}},"90":{"start":{"line":270,"column":2},"end":{"line":270,"column":31}},"91":{"start":{"line":275,"column":2},"end":{"line":275,"column":20}},"92":{"start":{"line":276,"column":2},"end":{"line":278,"column":3}},"93":{"start":{"line":277,"column":4},"end":{"line":277,"column":55}},"94":{"start":{"line":282,"column":2},"end":{"line":282,"column":44}},"95":{"start":{"line":286,"column":2},"end":{"line":286,"column":19}},"96":{"start":{"line":287,"column":2},"end":{"line":299,"column":3}},"97":{"start":{"line":288,"column":4},"end":{"line":288,"column":27}},"98":{"start":{"line":289,"column":4},"end":{"line":289,"column":28}},"99":{"start":{"line":290,"column":4},"end":{"line":298,"column":5}},"100":{"start":{"line":291,"column":6},"end":{"line":295,"column":7}},"101":{"start":{"line":292,"column":8},"end":{"line":292,"column":34}},"102":{"start":{"line":294,"column":8},"end":{"line":294,"column":47}},"103":{"start":{"line":297,"column":6},"end":{"line":297,"column":28}},"104":{"start":{"line":300,"column":2},"end":{"line":300,"column":72}},"105":{"start":{"line":301,"column":2},"end":{"line":301,"column":17}},"106":{"start":{"line":311,"column":0},"end":{"line":319,"column":1}},"107":{"start":{"line":312,"column":2},"end":{"line":312,"column":71}},"108":{"start":{"line":314,"column":2},"end":{"line":315,"column":84}},"109":{"start":{"line":316,"column":2},"end":{"line":316,"column":66}},"110":{"start":{"line":318,"column":2},"end":{"line":318,"column":27}},"111":{"start":{"line":320,"column":0},"end":{"line":320,"column":98}},"112":{"start":{"line":326,"column":0},"end":{"line":377,"column":2}},"113":{"start":{"line":327,"column":2},"end":{"line":327,"column":71}},"114":{"start":{"line":328,"column":2},"end":{"line":328,"column":8}},"115":{"start":{"line":332,"column":2},"end":{"line":332,"column":17}},"116":{"start":{"line":333,"column":2},"end":{"line":342,"column":3}},"117":{"start":{"line":334,"column":4},"end":{"line":334,"column":30}},"118":{"start":{"line":335,"column":4},"end":{"line":341,"column":5}},"119":{"start":{"line":336,"column":6},"end":{"line":338,"column":7}},"120":{"start":{"line":337,"column":8},"end":{"line":337,"column":53}},"121":{"start":{"line":340,"column":6},"end":{"line":340,"column":48}},"122":{"start":{"line":346,"column":2},"end":{"line":346,"column":31}},"123":{"start":{"line":347,"column":2},"end":{"line":347,"column":70}},"124":{"start":{"line":350,"column":2},"end":{"line":356,"column":3}},"125":{"start":{"line":351,"column":4},"end":{"line":355,"column":5}},"126":{"start":{"line":352,"column":6},"end":{"line":352,"column":64}},"127":{"start":{"line":353,"column":6},"end":{"line":353,"column":37}},"128":{"start":{"line":354,"column":6},"end":{"line":354,"column":29}},"129":{"start":{"line":359,"column":2},"end":{"line":365,"column":3}},"130":{"start":{"line":360,"column":4},"end":{"line":364,"column":5}},"131":{"start":{"line":361,"column":6},"end":{"line":361,"column":59}},"132":{"start":{"line":362,"column":6},"end":{"line":362,"column":37}},"133":{"start":{"line":363,"column":6},"end":{"line":363,"column":29}},"134":{"start":{"line":368,"column":2},"end":{"line":368,"column":19}},"135":{"start":{"line":369,"column":2},"end":{"line":371,"column":3}},"136":{"start":{"line":370,"column":4},"end":{"line":370,"column":49}},"137":{"start":{"line":373,"column":2},"end":{"line":373,"column":65}},"138":{"start":{"line":375,"column":2},"end":{"line":375,"column":66}},"139":{"start":{"line":376,"column":2},"end":{"line":376,"column":16}},"140":{"start":{"line":396,"column":0},"end":{"line":422,"column":2}},"141":{"start":{"line":397,"column":2},"end":{"line":397,"column":32}},"142":{"start":{"line":398,"column":2},"end":{"line":400,"column":3}},"143":{"start":{"line":399,"column":4},"end":{"line":399,"column":29}},"144":{"start":{"line":402,"column":2},"end":{"line":402,"column":17}},"145":{"start":{"line":403,"column":2},"end":{"line":405,"column":3}},"146":{"start":{"line":404,"column":4},"end":{"line":404,"column":22}},"147":{"start":{"line":406,"column":2},"end":{"line":406,"column":13}},"148":{"start":{"line":408,"column":2},"end":{"line":408,"column":15}},"149":{"start":{"line":409,"column":2},"end":{"line":419,"column":3}},"150":{"start":{"line":410,"column":4},"end":{"line":410,"column":28}},"151":{"start":{"line":411,"column":4},"end":{"line":411,"column":16}},"152":{"start":{"line":413,"column":4},"end":{"line":415,"column":5}},"153":{"start":{"line":414,"column":6},"end":{"line":414,"column":15}},"154":{"start":{"line":416,"column":4},"end":{"line":416,"column":18}},"155":{"start":{"line":418,"column":4},"end":{"line":418,"column":10}},"156":{"start":{"line":421,"column":2},"end":{"line":421,"column":29}},"157":{"start":{"line":437,"column":0},"end":{"line":455,"column":2}},"158":{"start":{"line":438,"column":2},"end":{"line":438,"column":32}},"159":{"start":{"line":440,"column":2},"end":{"line":440,"column":40}},"160":{"start":{"line":441,"column":2},"end":{"line":443,"column":3}},"161":{"start":{"line":442,"column":4},"end":{"line":442,"column":23}},"162":{"start":{"line":445,"column":2},"end":{"line":452,"column":3}},"163":{"start":{"line":446,"column":4},"end":{"line":446,"column":14}},"164":{"start":{"line":447,"column":4},"end":{"line":451,"column":46}},"165":{"start":{"line":448,"column":6},"end":{"line":448,"column":46}},"166":{"start":{"line":449,"column":6},"end":{"line":449,"column":13}},"167":{"start":{"line":450,"column":6},"end":{"line":450,"column":25}},"168":{"start":{"line":454,"column":2},"end":{"line":454,"column":11}},"169":{"start":{"line":467,"column":0},"end":{"line":471,"column":2}},"170":{"start":{"line":468,"column":2},"end":{"line":468,"column":46}},"171":{"start":{"line":469,"column":2},"end":{"line":469,"column":66}},"172":{"start":{"line":470,"column":2},"end":{"line":470,"column":45}},"173":{"start":{"line":473,"column":0},"end":{"line":478,"column":2}},"174":{"start":{"line":474,"column":2},"end":{"line":474,"column":47}},"175":{"start":{"line":475,"column":2},"end":{"line":475,"column":75}},"176":{"start":{"line":476,"column":2},"end":{"line":476,"column":26}},"177":{"start":{"line":477,"column":2},"end":{"line":477,"column":13}},"178":{"start":{"line":519,"column":0},"end":{"line":524,"column":2}},"179":{"start":{"line":526,"column":0},"end":{"line":560,"column":2}},"180":{"start":{"line":527,"column":2},"end":{"line":527,"column":35}},"181":{"start":{"line":529,"column":2},"end":{"line":537,"column":3}},"182":{"start":{"line":530,"column":4},"end":{"line":530,"column":45}},"183":{"start":{"line":531,"column":9},"end":{"line":537,"column":3}},"184":{"start":{"line":532,"column":4},"end":{"line":532,"column":45}},"185":{"start":{"line":533,"column":9},"end":{"line":537,"column":3}},"186":{"start":{"line":534,"column":4},"end":{"line":534,"column":56}},"187":{"start":{"line":536,"column":4},"end":{"line":536,"column":57}},"188":{"start":{"line":539,"column":2},"end":{"line":555,"column":3}},"189":{"start":{"line":540,"column":4},"end":{"line":540,"column":74}},"190":{"start":{"line":543,"column":4},"end":{"line":548,"column":5}},"191":{"start":{"line":544,"column":6},"end":{"line":544,"column":79}},"192":{"start":{"line":546,"column":6},"end":{"line":546,"column":65}},"193":{"start":{"line":547,"column":6},"end":{"line":547,"column":51}},"194":{"start":{"line":550,"column":4},"end":{"line":552,"column":5}},"195":{"start":{"line":551,"column":6},"end":{"line":551,"column":56}},"196":{"start":{"line":554,"column":4},"end":{"line":554,"column":50}},"197":{"start":{"line":557,"column":2},"end":{"line":557,"column":45}},"198":{"start":{"line":559,"column":2},"end":{"line":559,"column":51}},"199":{"start":{"line":562,"column":0},"end":{"line":600,"column":2}},"200":{"start":{"line":563,"column":2},"end":{"line":563,"column":34}},"201":{"start":{"line":565,"column":2},"end":{"line":565,"column":40}},"202":{"start":{"line":566,"column":2},"end":{"line":576,"column":3}},"203":{"start":{"line":567,"column":4},"end":{"line":567,"column":45}},"204":{"start":{"line":568,"column":9},"end":{"line":576,"column":3}},"205":{"start":{"line":569,"column":4},"end":{"line":573,"column":5}},"206":{"start":{"line":570,"column":6},"end":{"line":570,"column":47}},"207":{"start":{"line":572,"column":6},"end":{"line":572,"column":58}},"208":{"start":{"line":575,"column":4},"end":{"line":575,"column":57}},"209":{"start":{"line":578,"column":2},"end":{"line":597,"column":3}},"210":{"start":{"line":579,"column":4},"end":{"line":579,"column":85}},"211":{"start":{"line":580,"column":4},"end":{"line":580,"column":22}},"212":{"start":{"line":583,"column":4},"end":{"line":583,"column":74}},"213":{"start":{"line":584,"column":4},"end":{"line":586,"column":5}},"214":{"start":{"line":585,"column":6},"end":{"line":585,"column":48}},"215":{"start":{"line":588,"column":4},"end":{"line":594,"column":5}},"216":{"start":{"line":589,"column":6},"end":{"line":589,"column":53}},"217":{"start":{"line":590,"column":11},"end":{"line":594,"column":5}},"218":{"start":{"line":591,"column":6},"end":{"line":591,"column":30}},"219":{"start":{"line":593,"column":6},"end":{"line":593,"column":24}},"220":{"start":{"line":596,"column":4},"end":{"line":596,"column":47}},"221":{"start":{"line":599,"column":2},"end":{"line":599,"column":16}},"222":{"start":{"line":624,"column":0},"end":{"line":624,"column":34}},"223":{"start":{"line":627,"column":0},"end":{"line":629,"column":2}},"224":{"start":{"line":628,"column":2},"end":{"line":628,"column":45}},"225":{"start":{"line":631,"column":0},"end":{"line":669,"column":2}},"226":{"start":{"line":633,"column":2},"end":{"line":666,"column":3}},"227":{"start":{"line":635,"column":4},"end":{"line":635,"column":46}},"228":{"start":{"line":638,"column":4},"end":{"line":638,"column":52}},"229":{"start":{"line":643,"column":4},"end":{"line":660,"column":5}},"230":{"start":{"line":644,"column":6},"end":{"line":644,"column":43}},"231":{"start":{"line":645,"column":6},"end":{"line":650,"column":7}},"232":{"start":{"line":646,"column":8},"end":{"line":646,"column":42}},"233":{"start":{"line":648,"column":8},"end":{"line":648,"column":43}},"234":{"start":{"line":649,"column":8},"end":{"line":649,"column":36}},"235":{"start":{"line":652,"column":6},"end":{"line":659,"column":9}},"236":{"start":{"line":665,"column":4},"end":{"line":665,"column":21}},"237":{"start":{"line":668,"column":2},"end":{"line":668,"column":9}},"238":{"start":{"line":677,"column":0},"end":{"line":683,"column":2}},"239":{"start":{"line":678,"column":2},"end":{"line":678,"column":45}},"240":{"start":{"line":679,"column":2},"end":{"line":679,"column":27}},"241":{"start":{"line":680,"column":2},"end":{"line":680,"column":25}},"242":{"start":{"line":681,"column":2},"end":{"line":681,"column":27}},"243":{"start":{"line":682,"column":2},"end":{"line":682,"column":27}},"244":{"start":{"line":686,"column":0},"end":{"line":738,"column":2}},"245":{"start":{"line":689,"column":2},"end":{"line":710,"column":3}},"246":{"start":{"line":690,"column":4},"end":{"line":694,"column":5}},"247":{"start":{"line":691,"column":6},"end":{"line":691,"column":71}},"248":{"start":{"line":692,"column":6},"end":{"line":692,"column":43}},"249":{"start":{"line":693,"column":6},"end":{"line":693,"column":13}},"250":{"start":{"line":695,"column":4},"end":{"line":695,"column":29}},"251":{"start":{"line":700,"column":7},"end":{"line":710,"column":3}},"252":{"start":{"line":701,"column":4},"end":{"line":701,"column":28}},"253":{"start":{"line":702,"column":4},"end":{"line":702,"column":28}},"254":{"start":{"line":703,"column":4},"end":{"line":703,"column":32}},"255":{"start":{"line":704,"column":4},"end":{"line":704,"column":27}},"256":{"start":{"line":709,"column":4},"end":{"line":709,"column":21}},"257":{"start":{"line":715,"column":2},"end":{"line":735,"column":3}},"258":{"start":{"line":716,"column":4},"end":{"line":718,"column":8}},"259":{"start":{"line":717,"column":6},"end":{"line":717,"column":24}},"260":{"start":{"line":719,"column":4},"end":{"line":725,"column":5}},"261":{"start":{"line":720,"column":6},"end":{"line":720,"column":44}},"262":{"start":{"line":722,"column":6},"end":{"line":722,"column":68}},"263":{"start":{"line":723,"column":6},"end":{"line":723,"column":46}},"264":{"start":{"line":724,"column":6},"end":{"line":724,"column":13}},"265":{"start":{"line":726,"column":4},"end":{"line":733,"column":7}},"266":{"start":{"line":734,"column":4},"end":{"line":734,"column":29}},"267":{"start":{"line":737,"column":2},"end":{"line":737,"column":9}},"268":{"start":{"line":743,"column":0},"end":{"line":782,"column":2}},"269":{"start":{"line":784,"column":0},"end":{"line":820,"column":2}},"270":{"start":{"line":826,"column":0},"end":{"line":838,"column":1}},"271":{"start":{"line":827,"column":2},"end":{"line":827,"column":15}},"272":{"start":{"line":828,"column":2},"end":{"line":830,"column":3}},"273":{"start":{"line":829,"column":4},"end":{"line":829,"column":30}},"274":{"start":{"line":832,"column":2},"end":{"line":832,"column":38}},"275":{"start":{"line":833,"column":2},"end":{"line":835,"column":3}},"276":{"start":{"line":834,"column":4},"end":{"line":834,"column":42}},"277":{"start":{"line":837,"column":2},"end":{"line":837,"column":22}},"278":{"start":{"line":841,"column":0},"end":{"line":850,"column":1}},"279":{"start":{"line":842,"column":2},"end":{"line":842,"column":18}},"280":{"start":{"line":843,"column":2},"end":{"line":843,"column":17}},"281":{"start":{"line":844,"column":2},"end":{"line":848,"column":34}},"282":{"start":{"line":845,"column":4},"end":{"line":845,"column":59}},"283":{"start":{"line":846,"column":4},"end":{"line":846,"column":58}},"284":{"start":{"line":847,"column":4},"end":{"line":847,"column":24}},"285":{"start":{"line":849,"column":2},"end":{"line":849,"column":16}},"286":{"start":{"line":853,"column":0},"end":{"line":859,"column":1}},"287":{"start":{"line":854,"column":2},"end":{"line":854,"column":17}},"288":{"start":{"line":855,"column":2},"end":{"line":857,"column":3}},"289":{"start":{"line":856,"column":4},"end":{"line":856,"column":29}},"290":{"start":{"line":858,"column":2},"end":{"line":858,"column":15}}},"branchMap":{"1":{"line":42,"type":"binary-expr","locations":[{"start":{"line":42,"column":16},"end":{"line":42,"column":21}},{"start":{"line":42,"column":25},"end":{"line":42,"column":51}}]},"2":{"line":50,"type":"binary-expr","locations":[{"start":{"line":50,"column":10},"end":{"line":50,"column":59}},{"start":{"line":50,"column":65},"end":{"line":50,"column":86}}]},"3":{"line":117,"type":"if","locations":[{"start":{"line":117,"column":2},"end":{"line":117,"column":2}},{"start":{"line":117,"column":2},"end":{"line":117,"column":2}}]},"4":{"line":122,"type":"if","locations":[{"start":{"line":122,"column":4},"end":{"line":122,"column":4}},{"start":{"line":122,"column":4},"end":{"line":122,"column":4}}]},"5":{"line":135,"type":"if","locations":[{"start":{"line":135,"column":4},"end":{"line":135,"column":4}},{"start":{"line":135,"column":4},"end":{"line":135,"column":4}}]},"6":{"line":141,"type":"if","locations":[{"start":{"line":141,"column":4},"end":{"line":141,"column":4}},{"start":{"line":141,"column":4},"end":{"line":141,"column":4}}]},"7":{"line":142,"type":"if","locations":[{"start":{"line":142,"column":6},"end":{"line":142,"column":6}},{"start":{"line":142,"column":6},"end":{"line":142,"column":6}}]},"8":{"line":169,"type":"if","locations":[{"start":{"line":169,"column":2},"end":{"line":169,"column":2}},{"start":{"line":169,"column":2},"end":{"line":169,"column":2}}]},"9":{"line":171,"type":"if","locations":[{"start":{"line":171,"column":4},"end":{"line":171,"column":4}},{"start":{"line":171,"column":4},"end":{"line":171,"column":4}}]},"10":{"line":184,"type":"if","locations":[{"start":{"line":184,"column":2},"end":{"line":184,"column":2}},{"start":{"line":184,"column":2},"end":{"line":184,"column":2}}]},"11":{"line":186,"type":"if","locations":[{"start":{"line":186,"column":4},"end":{"line":186,"column":4}},{"start":{"line":186,"column":4},"end":{"line":186,"column":4}}]},"12":{"line":208,"type":"if","locations":[{"start":{"line":208,"column":4},"end":{"line":208,"column":4}},{"start":{"line":208,"column":4},"end":{"line":208,"column":4}}]},"13":{"line":232,"type":"if","locations":[{"start":{"line":232,"column":4},"end":{"line":232,"column":4}},{"start":{"line":232,"column":4},"end":{"line":232,"column":4}}]},"14":{"line":251,"type":"binary-expr","locations":[{"start":{"line":251,"column":15},"end":{"line":251,"column":18}},{"start":{"line":251,"column":22},"end":{"line":251,"column":34}}]},"15":{"line":253,"type":"cond-expr","locations":[{"start":{"line":253,"column":44},"end":{"line":253,"column":82}},{"start":{"line":254,"column":44},"end":{"line":254,"column":83}}]},"16":{"line":290,"type":"if","locations":[{"start":{"line":290,"column":4},"end":{"line":290,"column":4}},{"start":{"line":290,"column":4},"end":{"line":290,"column":4}}]},"17":{"line":291,"type":"if","locations":[{"start":{"line":291,"column":6},"end":{"line":291,"column":6}},{"start":{"line":291,"column":6},"end":{"line":291,"column":6}}]},"18":{"line":312,"type":"binary-expr","locations":[{"start":{"line":312,"column":15},"end":{"line":312,"column":18}},{"start":{"line":312,"column":22},"end":{"line":312,"column":34}}]},"19":{"line":314,"type":"cond-expr","locations":[{"start":{"line":314,"column":44},"end":{"line":314,"column":82}},{"start":{"line":315,"column":44},"end":{"line":315,"column":83}}]},"20":{"line":335,"type":"if","locations":[{"start":{"line":335,"column":4},"end":{"line":335,"column":4}},{"start":{"line":335,"column":4},"end":{"line":335,"column":4}}]},"21":{"line":351,"type":"if","locations":[{"start":{"line":351,"column":4},"end":{"line":351,"column":4}},{"start":{"line":351,"column":4},"end":{"line":351,"column":4}}]},"22":{"line":360,"type":"if","locations":[{"start":{"line":360,"column":4},"end":{"line":360,"column":4}},{"start":{"line":360,"column":4},"end":{"line":360,"column":4}}]},"23":{"line":398,"type":"if","locations":[{"start":{"line":398,"column":2},"end":{"line":398,"column":2}},{"start":{"line":398,"column":2},"end":{"line":398,"column":2}}]},"24":{"line":403,"type":"if","locations":[{"start":{"line":403,"column":2},"end":{"line":403,"column":2}},{"start":{"line":403,"column":2},"end":{"line":403,"column":2}}]},"25":{"line":413,"type":"if","locations":[{"start":{"line":413,"column":4},"end":{"line":413,"column":4}},{"start":{"line":413,"column":4},"end":{"line":413,"column":4}}]},"26":{"line":441,"type":"if","locations":[{"start":{"line":441,"column":2},"end":{"line":441,"column":2}},{"start":{"line":441,"column":2},"end":{"line":441,"column":2}}]},"27":{"line":445,"type":"if","locations":[{"start":{"line":445,"column":2},"end":{"line":445,"column":2}},{"start":{"line":445,"column":2},"end":{"line":445,"column":2}}]},"28":{"line":529,"type":"if","locations":[{"start":{"line":529,"column":2},"end":{"line":529,"column":2}},{"start":{"line":529,"column":2},"end":{"line":529,"column":2}}]},"29":{"line":531,"type":"if","locations":[{"start":{"line":531,"column":9},"end":{"line":531,"column":9}},{"start":{"line":531,"column":9},"end":{"line":531,"column":9}}]},"30":{"line":533,"type":"if","locations":[{"start":{"line":533,"column":9},"end":{"line":533,"column":9}},{"start":{"line":533,"column":9},"end":{"line":533,"column":9}}]},"31":{"line":539,"type":"if","locations":[{"start":{"line":539,"column":2},"end":{"line":539,"column":2}},{"start":{"line":539,"column":2},"end":{"line":539,"column":2}}]},"32":{"line":543,"type":"if","locations":[{"start":{"line":543,"column":4},"end":{"line":543,"column":4}},{"start":{"line":543,"column":4},"end":{"line":543,"column":4}}]},"33":{"line":550,"type":"if","locations":[{"start":{"line":550,"column":4},"end":{"line":550,"column":4}},{"start":{"line":550,"column":4},"end":{"line":550,"column":4}}]},"34":{"line":566,"type":"if","locations":[{"start":{"line":566,"column":2},"end":{"line":566,"column":2}},{"start":{"line":566,"column":2},"end":{"line":566,"column":2}}]},"35":{"line":568,"type":"if","locations":[{"start":{"line":568,"column":9},"end":{"line":568,"column":9}},{"start":{"line":568,"column":9},"end":{"line":568,"column":9}}]},"36":{"line":569,"type":"if","locations":[{"start":{"line":569,"column":4},"end":{"line":569,"column":4}},{"start":{"line":569,"column":4},"end":{"line":569,"column":4}}]},"37":{"line":578,"type":"if","locations":[{"start":{"line":578,"column":2},"end":{"line":578,"column":2}},{"start":{"line":578,"column":2},"end":{"line":578,"column":2}}]},"38":{"line":584,"type":"if","locations":[{"start":{"line":584,"column":4},"end":{"line":584,"column":4}},{"start":{"line":584,"column":4},"end":{"line":584,"column":4}}]},"39":{"line":588,"type":"if","locations":[{"start":{"line":588,"column":4},"end":{"line":588,"column":4}},{"start":{"line":588,"column":4},"end":{"line":588,"column":4}}]},"40":{"line":590,"type":"if","locations":[{"start":{"line":590,"column":11},"end":{"line":590,"column":11}},{"start":{"line":590,"column":11},"end":{"line":590,"column":11}}]},"41":{"line":633,"type":"if","locations":[{"start":{"line":633,"column":2},"end":{"line":633,"column":2}},{"start":{"line":633,"column":2},"end":{"line":633,"column":2}}]},"42":{"line":633,"type":"binary-expr","locations":[{"start":{"line":633,"column":6},"end":{"line":633,"column":30}},{"start":{"line":633,"column":34},"end":{"line":633,"column":63}}]},"43":{"line":645,"type":"if","locations":[{"start":{"line":645,"column":6},"end":{"line":645,"column":6}},{"start":{"line":645,"column":6},"end":{"line":645,"column":6}}]},"44":{"line":689,"type":"if","locations":[{"start":{"line":689,"column":2},"end":{"line":689,"column":2}},{"start":{"line":689,"column":2},"end":{"line":689,"column":2}}]},"45":{"line":690,"type":"if","locations":[{"start":{"line":690,"column":4},"end":{"line":690,"column":4}},{"start":{"line":690,"column":4},"end":{"line":690,"column":4}}]},"46":{"line":690,"type":"binary-expr","locations":[{"start":{"line":690,"column":9},"end":{"line":690,"column":34}},{"start":{"line":690,"column":40},"end":{"line":690,"column":69}}]},"47":{"line":700,"type":"if","locations":[{"start":{"line":700,"column":7},"end":{"line":700,"column":7}},{"start":{"line":700,"column":7},"end":{"line":700,"column":7}}]},"48":{"line":700,"type":"binary-expr","locations":[{"start":{"line":700,"column":12},"end":{"line":700,"column":36}},{"start":{"line":700,"column":42},"end":{"line":700,"column":71}}]},"49":{"line":715,"type":"if","locations":[{"start":{"line":715,"column":2},"end":{"line":715,"column":2}},{"start":{"line":715,"column":2},"end":{"line":715,"column":2}}]},"50":{"line":715,"type":"binary-expr","locations":[{"start":{"line":715,"column":6},"end":{"line":715,"column":22}},{"start":{"line":715,"column":27},"end":{"line":715,"column":50}},{"start":{"line":715,"column":54},"end":{"line":715,"column":82}}]}}},"/data/upstream/node-http2/lib/logging.js":{"path":"/data/upstream/node-http2/lib/logging.js","s":{"1":1,"2":1,"3":0,"4":0,"5":0,"6":1,"7":1,"8":105,"9":1},"b":{"1":[0,1]},"f":{"1":1090,"2":105},"fnMap":{"1":{"name":"noop","line":15,"loc":{"start":{"line":15,"column":2},"end":{"line":15,"column":18}}},"2":{"name":"(anonymous_2)","line":24,"loc":{"start":{"line":24,"column":11},"end":{"line":24,"column":22}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":22}},"2":{"start":{"line":3,"column":0},"end":{"line":28,"column":1}},"3":{"start":{"line":4,"column":2},"end":{"line":4,"column":33}},"4":{"start":{"line":6,"column":2},"end":{"line":10,"column":5}},"5":{"start":{"line":12,"column":2},"end":{"line":12,"column":49}},"6":{"start":{"line":15,"column":2},"end":{"line":15,"column":20}},"7":{"start":{"line":16,"column":2},"end":{"line":25,"column":4}},"8":{"start":{"line":24,"column":24},"end":{"line":24,"column":36}},"9":{"start":{"line":27,"column":2},"end":{"line":27,"column":27}}},"branchMap":{"1":{"line":3,"type":"if","locations":[{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},{"start":{"line":3,"column":0},"end":{"line":3,"column":0}}]}}},"/data/upstream/node-http2/lib/connection.js":{"path":"/data/upstream/node-http2/lib/connection.js","s":{"1":1,"2":1,"3":1,"4":1,"5":18,"6":18,"7":18,"8":18,"9":18,"10":18,"11":1,"12":1,"13":1,"14":18,"15":18,"16":18,"17":18,"18":18,"19":18,"20":18,"21":18,"22":1,"23":139,"24":1,"25":23,"26":23,"27":23,"28":0,"29":0,"30":1,"31":16,"32":16,"33":1,"34":1,"35":1,"36":1,"37":16,"38":16,"39":16,"40":16,"41":16,"42":1,"43":16,"44":16,"45":16,"46":1,"47":9,"48":9,"49":2,"50":2,"51":0,"52":7,"53":7,"54":7,"55":7,"56":7,"57":1,"58":9,"59":9,"60":9,"61":9,"62":9,"63":1,"64":9,"65":0,"66":9,"67":9,"68":9,"69":3,"70":3,"71":3,"72":9,"73":9,"74":0,"75":9,"76":9,"77":9,"78":1,"79":123,"80":123,"81":123,"82":120,"83":120,"84":120,"85":120,"86":120,"87":26,"88":26,"89":3,"90":3,"91":26,"92":26,"93":26,"94":0,"95":26,"96":0,"97":123,"98":1,"99":47,"100":47,"101":47,"102":6,"103":46,"104":3,"105":45,"106":45,"107":1,"108":1,"109":18,"110":18,"111":18,"112":18,"113":18,"114":0,"115":0,"116":18,"117":1,"118":18,"119":34,"120":1,"121":18,"122":1,"123":18,"124":18,"125":18,"126":1,"127":2,"128":2,"129":2,"130":32,"131":2,"132":1,"133":2,"134":2,"135":2,"136":2,"137":2,"138":1,"139":4,"140":2,"141":2,"142":2,"143":2,"144":2,"145":0,"146":2,"147":2,"148":1,"149":0,"150":0,"151":0,"152":1,"153":0,"154":0,"155":1,"156":18,"157":18,"158":16,"159":18,"160":18,"161":18,"162":1,"163":1,"164":18,"165":0,"166":0,"167":18,"168":18,"169":18,"170":24,"171":1,"172":2,"173":2,"174":2,"175":0,"176":0,"177":0},"b":{"1":[18,2],"2":[23,0],"3":[23,5,1,1],"4":[2,7],"5":[9,7],"6":[0,9],"7":[0,9],"8":[3,23],"9":[0,26],"10":[0,26],"11":[6,41],"12":[3,43],"13":[18,2],"14":[18,0],"15":[18,18],"16":[2,2],"17":[2,0],"18":[0,0],"19":[0,18],"20":[18,0],"21":[2,0],"22":[0,0]},"f":{"1":18,"2":18,"3":139,"4":23,"5":16,"6":1,"7":16,"8":16,"9":9,"10":9,"11":9,"12":3,"13":3,"14":9,"15":123,"16":47,"17":18,"18":18,"19":18,"20":18,"21":18,"22":2,"23":2,"24":4,"25":0,"26":0,"27":18,"28":16,"29":18,"30":18,"31":24,"32":2},"fnMap":{"1":{"name":"Connection","line":36,"loc":{"start":{"line":36,"column":0},"end":{"line":36,"column":50}}},"2":{"name":"_initializeStreamManagement","line":96,"loc":{"start":{"line":96,"column":51},"end":{"line":96,"column":103}}},"3":{"name":"_getIdOf","line":121,"loc":{"start":{"line":121,"column":32},"end":{"line":121,"column":58}}},"4":{"name":"_writeControlFrame","line":127,"loc":{"start":{"line":127,"column":42},"end":{"line":127,"column":77}}},"5":{"name":"_updateStreamLimit","line":139,"loc":{"start":{"line":139,"column":42},"end":{"line":139,"column":86}}},"6":{"name":"_decreaseStreamCount","line":145,"loc":{"start":{"line":145,"column":44},"end":{"line":145,"column":76}}},"7":{"name":"_newStream","line":158,"loc":{"start":{"line":158,"column":34},"end":{"line":158,"column":58}}},"8":{"name":"_activateStream","line":166,"loc":{"start":{"line":166,"column":39},"end":{"line":166,"column":72}}},"9":{"name":"_createIncomingStream","line":179,"loc":{"start":{"line":179,"column":45},"end":{"line":179,"column":80}}},"10":{"name":"createStream","line":196,"loc":{"start":{"line":196,"column":36},"end":{"line":196,"column":60}}},"11":{"name":"tryToActivate","line":209,"loc":{"start":{"line":209,"column":2},"end":{"line":209,"column":27}}},"12":{"name":"(anonymous_12)","line":221,"loc":{"start":{"line":221,"column":35},"end":{"line":221,"column":46}}},"13":{"name":"(anonymous_13)","line":223,"loc":{"start":{"line":223,"column":32},"end":{"line":223,"column":43}}},"14":{"name":"(anonymous_14)","line":228,"loc":{"start":{"line":228,"column":24},"end":{"line":228,"column":35}}},"15":{"name":"_send","line":247,"loc":{"start":{"line":247,"column":29},"end":{"line":247,"column":46}}},"16":{"name":"_receive","line":280,"loc":{"start":{"line":280,"column":32},"end":{"line":280,"column":63}}},"17":{"name":"_initializeSettingsManagement","line":310,"loc":{"start":{"line":310,"column":53},"end":{"line":310,"column":102}}},"18":{"name":"(anonymous_18)","line":316,"loc":{"start":{"line":316,"column":25},"end":{"line":316,"column":41}}},"19":{"name":"_receiveSettings","line":330,"loc":{"start":{"line":330,"column":40},"end":{"line":330,"column":73}}},"20":{"name":"set","line":337,"loc":{"start":{"line":337,"column":27},"end":{"line":337,"column":50}}},"21":{"name":"_initializeLifecycleManagement","line":355,"loc":{"start":{"line":355,"column":54},"end":{"line":355,"column":96}}},"22":{"name":"_generatePingId","line":362,"loc":{"start":{"line":362,"column":39},"end":{"line":362,"column":66}}},"23":{"name":"ping","line":373,"loc":{"start":{"line":373,"column":28},"end":{"line":373,"column":52}}},"24":{"name":"_receivePing","line":390,"loc":{"start":{"line":390,"column":36},"end":{"line":390,"column":65}}},"25":{"name":"close","line":415,"loc":{"start":{"line":415,"column":29},"end":{"line":415,"column":51}}},"26":{"name":"_receiveGoaway","line":426,"loc":{"start":{"line":426,"column":38},"end":{"line":426,"column":69}}},"27":{"name":"_initializeFlowControl","line":434,"loc":{"start":{"line":434,"column":46},"end":{"line":434,"column":80}}},"28":{"name":"(anonymous_28)","line":437,"loc":{"start":{"line":437,"column":24},"end":{"line":437,"column":41}}},"29":{"name":"noop","line":442,"loc":{"start":{"line":442,"column":50},"end":{"line":442,"column":66}}},"30":{"name":"_setInitialStreamWindowSize","line":455,"loc":{"start":{"line":455,"column":51},"end":{"line":455,"column":94}}},"31":{"name":"(anonymous_31)","line":462,"loc":{"start":{"line":462,"column":29},"end":{"line":462,"column":46}}},"32":{"name":"_setStreamFlowControl","line":470,"loc":{"start":{"line":470,"column":45},"end":{"line":470,"column":85}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":35}},"2":{"start":{"line":10,"column":0},"end":{"line":10,"column":34}},"3":{"start":{"line":12,"column":0},"end":{"line":12,"column":32}},"4":{"start":{"line":36,"column":0},"end":{"line":56,"column":1}},"5":{"start":{"line":38,"column":2},"end":{"line":38,"column":21}},"6":{"start":{"line":41,"column":2},"end":{"line":41,"column":71}},"7":{"start":{"line":44,"column":2},"end":{"line":44,"column":50}},"8":{"start":{"line":47,"column":2},"end":{"line":47,"column":47}},"9":{"start":{"line":50,"column":2},"end":{"line":50,"column":40}},"10":{"start":{"line":53,"column":2},"end":{"line":53,"column":32}},"11":{"start":{"line":57,"column":0},"end":{"line":57,"column":93}},"12":{"start":{"line":93,"column":0},"end":{"line":93,"column":41}},"13":{"start":{"line":96,"column":0},"end":{"line":119,"column":2}},"14":{"start":{"line":103,"column":2},"end":{"line":103,"column":24}},"15":{"start":{"line":105,"column":2},"end":{"line":105,"column":30}},"16":{"start":{"line":108,"column":2},"end":{"line":108,"column":37}},"17":{"start":{"line":109,"column":2},"end":{"line":109,"column":31}},"18":{"start":{"line":112,"column":2},"end":{"line":112,"column":84}},"19":{"start":{"line":116,"column":2},"end":{"line":116,"column":24}},"20":{"start":{"line":117,"column":2},"end":{"line":117,"column":31}},"21":{"start":{"line":118,"column":2},"end":{"line":118,"column":70}},"22":{"start":{"line":121,"column":0},"end":{"line":123,"column":2}},"23":{"start":{"line":122,"column":2},"end":{"line":122,"column":42}},"24":{"start":{"line":127,"column":0},"end":{"line":136,"column":2}},"25":{"start":{"line":128,"column":2},"end":{"line":135,"column":3}},"26":{"start":{"line":130,"column":4},"end":{"line":130,"column":74}},"27":{"start":{"line":131,"column":4},"end":{"line":131,"column":33}},"28":{"start":{"line":133,"column":4},"end":{"line":133,"column":72}},"29":{"start":{"line":134,"column":4},"end":{"line":134,"column":41}},"30":{"start":{"line":139,"column":0},"end":{"line":142,"column":2}},"31":{"start":{"line":140,"column":2},"end":{"line":140,"column":37}},"32":{"start":{"line":141,"column":2},"end":{"line":141,"column":34}},"33":{"start":{"line":145,"column":0},"end":{"line":148,"column":2}},"34":{"start":{"line":146,"column":2},"end":{"line":146,"column":25}},"35":{"start":{"line":147,"column":2},"end":{"line":147,"column":34}},"36":{"start":{"line":158,"column":0},"end":{"line":164,"column":2}},"37":{"start":{"line":159,"column":2},"end":{"line":159,"column":59}},"38":{"start":{"line":160,"column":2},"end":{"line":160,"column":62}},"39":{"start":{"line":161,"column":2},"end":{"line":161,"column":32}},"40":{"start":{"line":162,"column":2},"end":{"line":162,"column":38}},"41":{"start":{"line":163,"column":2},"end":{"line":163,"column":16}},"42":{"start":{"line":166,"column":0},"end":{"line":170,"column":2}},"43":{"start":{"line":167,"column":2},"end":{"line":167,"column":78}},"44":{"start":{"line":168,"column":2},"end":{"line":168,"column":38}},"45":{"start":{"line":169,"column":2},"end":{"line":169,"column":58}},"46":{"start":{"line":179,"column":0},"end":{"line":193,"column":2}},"47":{"start":{"line":180,"column":2},"end":{"line":180,"column":61}},"48":{"start":{"line":182,"column":2},"end":{"line":186,"column":3}},"49":{"start":{"line":183,"column":4},"end":{"line":183,"column":116}},"50":{"start":{"line":184,"column":4},"end":{"line":184,"column":41}},"51":{"start":{"line":185,"column":4},"end":{"line":185,"column":21}},"52":{"start":{"line":188,"column":2},"end":{"line":188,"column":32}},"53":{"start":{"line":189,"column":2},"end":{"line":189,"column":35}},"54":{"start":{"line":190,"column":2},"end":{"line":190,"column":31}},"55":{"start":{"line":191,"column":2},"end":{"line":191,"column":34}},"56":{"start":{"line":192,"column":2},"end":{"line":192,"column":16}},"57":{"start":{"line":196,"column":0},"end":{"line":240,"column":2}},"58":{"start":{"line":198,"column":2},"end":{"line":198,"column":30}},"59":{"start":{"line":199,"column":2},"end":{"line":199,"column":26}},"60":{"start":{"line":201,"column":2},"end":{"line":201,"column":70}},"61":{"start":{"line":204,"column":2},"end":{"line":204,"column":35}},"62":{"start":{"line":208,"column":2},"end":{"line":208,"column":18}},"63":{"start":{"line":209,"column":2},"end":{"line":215,"column":3}},"64":{"start":{"line":210,"column":4},"end":{"line":214,"column":5}},"65":{"start":{"line":211,"column":6},"end":{"line":211,"column":53}},"66":{"start":{"line":213,"column":6},"end":{"line":213,"column":35}},"67":{"start":{"line":220,"column":2},"end":{"line":220,"column":29}},"68":{"start":{"line":221,"column":2},"end":{"line":226,"column":5}},"69":{"start":{"line":222,"column":4},"end":{"line":222,"column":26}},"70":{"start":{"line":223,"column":4},"end":{"line":225,"column":7}},"71":{"start":{"line":224,"column":6},"end":{"line":224,"column":29}},"72":{"start":{"line":228,"column":2},"end":{"line":234,"column":5}},"73":{"start":{"line":229,"column":4},"end":{"line":233,"column":5}},"74":{"start":{"line":230,"column":6},"end":{"line":230,"column":49}},"75":{"start":{"line":232,"column":6},"end":{"line":232,"column":22}},"76":{"start":{"line":237,"column":2},"end":{"line":237,"column":64}},"77":{"start":{"line":239,"column":2},"end":{"line":239,"column":16}},"78":{"start":{"line":247,"column":0},"end":{"line":276,"column":2}},"79":{"start":{"line":248,"column":2},"end":{"line":248,"column":62}},"80":{"start":{"line":251,"column":0},"end":{"line":273,"column":3}},"81":{"start":{"line":252,"column":2},"end":{"line":273,"column":3}},"82":{"start":{"line":253,"column":4},"end":{"line":253,"column":43}},"83":{"start":{"line":254,"column":4},"end":{"line":254,"column":35}},"84":{"start":{"line":255,"column":4},"end":{"line":255,"column":14}},"85":{"start":{"line":256,"column":4},"end":{"line":256,"column":73}},"86":{"start":{"line":257,"column":4},"end":{"line":272,"column":5}},"87":{"start":{"line":258,"column":6},"end":{"line":258,"column":24}},"88":{"start":{"line":259,"column":6},"end":{"line":262,"column":7}},"89":{"start":{"line":260,"column":8},"end":{"line":260,"column":51}},"90":{"start":{"line":261,"column":8},"end":{"line":261,"column":69}},"91":{"start":{"line":264,"column":6},"end":{"line":264,"column":91}},"92":{"start":{"line":265,"column":6},"end":{"line":265,"column":59}},"93":{"start":{"line":267,"column":6},"end":{"line":271,"column":7}},"94":{"start":{"line":268,"column":8},"end":{"line":268,"column":29}},"95":{"start":{"line":269,"column":13},"end":{"line":271,"column":7}},"96":{"start":{"line":270,"column":8},"end":{"line":270,"column":26}},"97":{"start":{"line":275,"column":2},"end":{"line":275,"column":90}},"98":{"start":{"line":280,"column":0},"end":{"line":300,"column":2}},"99":{"start":{"line":281,"column":2},"end":{"line":281,"column":65}},"100":{"start":{"line":284,"column":2},"end":{"line":284,"column":46}},"101":{"start":{"line":287,"column":2},"end":{"line":289,"column":3}},"102":{"start":{"line":288,"column":4},"end":{"line":288,"column":54}},"103":{"start":{"line":292,"column":2},"end":{"line":294,"column":3}},"104":{"start":{"line":293,"column":4},"end":{"line":293,"column":78}},"105":{"start":{"line":297,"column":2},"end":{"line":297,"column":31}},"106":{"start":{"line":299,"column":2},"end":{"line":299,"column":9}},"107":{"start":{"line":305,"column":0},"end":{"line":307,"column":2}},"108":{"start":{"line":310,"column":0},"end":{"line":327,"column":2}},"109":{"start":{"line":312,"column":2},"end":{"line":312,"column":87}},"110":{"start":{"line":313,"column":2},"end":{"line":313,"column":40}},"111":{"start":{"line":316,"column":2},"end":{"line":323,"column":5}},"112":{"start":{"line":317,"column":4},"end":{"line":322,"column":5}},"113":{"start":{"line":318,"column":6},"end":{"line":318,"column":93}},"114":{"start":{"line":320,"column":6},"end":{"line":320,"column":99}},"115":{"start":{"line":321,"column":6},"end":{"line":321,"column":25}},"116":{"start":{"line":326,"column":2},"end":{"line":326,"column":45}},"117":{"start":{"line":330,"column":0},"end":{"line":334,"column":2}},"118":{"start":{"line":331,"column":2},"end":{"line":333,"column":3}},"119":{"start":{"line":332,"column":4},"end":{"line":332,"column":42}},"120":{"start":{"line":337,"column":0},"end":{"line":343,"column":2}},"121":{"start":{"line":338,"column":2},"end":{"line":342,"column":5}},"122":{"start":{"line":355,"column":0},"end":{"line":359,"column":2}},"123":{"start":{"line":356,"column":2},"end":{"line":356,"column":19}},"124":{"start":{"line":357,"column":2},"end":{"line":357,"column":37}},"125":{"start":{"line":358,"column":2},"end":{"line":358,"column":41}},"126":{"start":{"line":362,"column":0},"end":{"line":370,"column":2}},"127":{"start":{"line":363,"column":2},"end":{"line":368,"column":29}},"128":{"start":{"line":364,"column":4},"end":{"line":364,"column":16}},"129":{"start":{"line":365,"column":4},"end":{"line":367,"column":5}},"130":{"start":{"line":366,"column":6},"end":{"line":366,"column":54}},"131":{"start":{"line":369,"column":2},"end":{"line":369,"column":12}},"132":{"start":{"line":373,"column":0},"end":{"line":387,"column":2}},"133":{"start":{"line":374,"column":2},"end":{"line":374,"column":34}},"134":{"start":{"line":375,"column":2},"end":{"line":375,"column":35}},"135":{"start":{"line":376,"column":2},"end":{"line":376,"column":29}},"136":{"start":{"line":378,"column":2},"end":{"line":378,"column":51}},"137":{"start":{"line":379,"column":2},"end":{"line":386,"column":5}},"138":{"start":{"line":390,"column":0},"end":{"line":412,"column":2}},"139":{"start":{"line":391,"column":2},"end":{"line":411,"column":3}},"140":{"start":{"line":392,"column":4},"end":{"line":392,"column":40}},"141":{"start":{"line":393,"column":4},"end":{"line":399,"column":5}},"142":{"start":{"line":394,"column":6},"end":{"line":394,"column":76}},"143":{"start":{"line":395,"column":6},"end":{"line":395,"column":24}},"144":{"start":{"line":396,"column":6},"end":{"line":396,"column":29}},"145":{"start":{"line":398,"column":6},"end":{"line":398,"column":71}},"146":{"start":{"line":402,"column":4},"end":{"line":402,"column":61}},"147":{"start":{"line":403,"column":4},"end":{"line":410,"column":7}},"148":{"start":{"line":415,"column":0},"end":{"line":424,"column":2}},"149":{"start":{"line":416,"column":2},"end":{"line":416,"column":61}},"150":{"start":{"line":417,"column":2},"end":{"line":422,"column":5}},"151":{"start":{"line":423,"column":2},"end":{"line":423,"column":18}},"152":{"start":{"line":426,"column":0},"end":{"line":429,"column":2}},"153":{"start":{"line":427,"column":2},"end":{"line":427,"column":76}},"154":{"start":{"line":428,"column":2},"end":{"line":428,"column":18}},"155":{"start":{"line":434,"column":0},"end":{"line":446,"column":2}},"156":{"start":{"line":436,"column":2},"end":{"line":436,"column":61}},"157":{"start":{"line":437,"column":2},"end":{"line":439,"column":5}},"158":{"start":{"line":438,"column":4},"end":{"line":438,"column":68}},"159":{"start":{"line":440,"column":2},"end":{"line":440,"column":76}},"160":{"start":{"line":441,"column":2},"end":{"line":441,"column":71}},"161":{"start":{"line":442,"column":2},"end":{"line":442,"column":69}},"162":{"start":{"line":449,"column":0},"end":{"line":449,"column":39}},"163":{"start":{"line":455,"column":0},"end":{"line":466,"column":2}},"164":{"start":{"line":456,"column":2},"end":{"line":465,"column":3}},"165":{"start":{"line":457,"column":4},"end":{"line":457,"column":112}},"166":{"start":{"line":458,"column":4},"end":{"line":458,"column":45}},"167":{"start":{"line":460,"column":4},"end":{"line":460,"column":76}},"168":{"start":{"line":461,"column":4},"end":{"line":461,"column":41}},"169":{"start":{"line":462,"column":4},"end":{"line":464,"column":7}},"170":{"start":{"line":463,"column":6},"end":{"line":463,"column":45}},"171":{"start":{"line":470,"column":0},"end":{"line":478,"column":2}},"172":{"start":{"line":471,"column":2},"end":{"line":477,"column":3}},"173":{"start":{"line":472,"column":4},"end":{"line":472,"column":35}},"174":{"start":{"line":473,"column":4},"end":{"line":473,"column":47}},"175":{"start":{"line":474,"column":9},"end":{"line":477,"column":3}},"176":{"start":{"line":475,"column":4},"end":{"line":475,"column":81}},"177":{"start":{"line":476,"column":4},"end":{"line":476,"column":45}}},"branchMap":{"1":{"line":41,"type":"binary-expr","locations":[{"start":{"line":41,"column":15},"end":{"line":41,"column":18}},{"start":{"line":41,"column":22},"end":{"line":41,"column":34}}]},"2":{"line":128,"type":"if","locations":[{"start":{"line":128,"column":2},"end":{"line":128,"column":2}},{"start":{"line":128,"column":2},"end":{"line":128,"column":2}}]},"3":{"line":128,"type":"binary-expr","locations":[{"start":{"line":128,"column":7},"end":{"line":128,"column":32}},{"start":{"line":128,"column":38},"end":{"line":128,"column":59}},{"start":{"line":129,"column":7},"end":{"line":129,"column":30}},{"start":{"line":129,"column":36},"end":{"line":129,"column":66}}]},"4":{"line":182,"type":"if","locations":[{"start":{"line":182,"column":2},"end":{"line":182,"column":2}},{"start":{"line":182,"column":2},"end":{"line":182,"column":2}}]},"5":{"line":182,"type":"binary-expr","locations":[{"start":{"line":182,"column":7},"end":{"line":182,"column":37}},{"start":{"line":182,"column":43},"end":{"line":182,"column":78}}]},"6":{"line":210,"type":"if","locations":[{"start":{"line":210,"column":4},"end":{"line":210,"column":4}},{"start":{"line":210,"column":4},"end":{"line":210,"column":4}}]},"7":{"line":229,"type":"if","locations":[{"start":{"line":229,"column":4},"end":{"line":229,"column":4}},{"start":{"line":229,"column":4},"end":{"line":229,"column":4}}]},"8":{"line":259,"type":"if","locations":[{"start":{"line":259,"column":6},"end":{"line":259,"column":6}},{"start":{"line":259,"column":6},"end":{"line":259,"column":6}}]},"9":{"line":267,"type":"if","locations":[{"start":{"line":267,"column":6},"end":{"line":267,"column":6}},{"start":{"line":267,"column":6},"end":{"line":267,"column":6}}]},"10":{"line":269,"type":"if","locations":[{"start":{"line":269,"column":13},"end":{"line":269,"column":13}},{"start":{"line":269,"column":13},"end":{"line":269,"column":13}}]},"11":{"line":287,"type":"if","locations":[{"start":{"line":287,"column":2},"end":{"line":287,"column":2}},{"start":{"line":287,"column":2},"end":{"line":287,"column":2}}]},"12":{"line":292,"type":"if","locations":[{"start":{"line":292,"column":2},"end":{"line":292,"column":2}},{"start":{"line":292,"column":2},"end":{"line":292,"column":2}}]},"13":{"line":313,"type":"binary-expr","locations":[{"start":{"line":313,"column":11},"end":{"line":313,"column":19}},{"start":{"line":313,"column":23},"end":{"line":313,"column":38}}]},"14":{"line":317,"type":"if","locations":[{"start":{"line":317,"column":4},"end":{"line":317,"column":4}},{"start":{"line":317,"column":4},"end":{"line":317,"column":4}}]},"15":{"line":317,"type":"binary-expr","locations":[{"start":{"line":317,"column":9},"end":{"line":317,"column":27}},{"start":{"line":317,"column":33},"end":{"line":317,"column":58}}]},"16":{"line":391,"type":"if","locations":[{"start":{"line":391,"column":2},"end":{"line":391,"column":2}},{"start":{"line":391,"column":2},"end":{"line":391,"column":2}}]},"17":{"line":393,"type":"if","locations":[{"start":{"line":393,"column":4},"end":{"line":393,"column":4}},{"start":{"line":393,"column":4},"end":{"line":393,"column":4}}]},"18":{"line":421,"type":"binary-expr","locations":[{"start":{"line":421,"column":11},"end":{"line":421,"column":16}},{"start":{"line":421,"column":20},"end":{"line":421,"column":30}}]},"19":{"line":456,"type":"if","locations":[{"start":{"line":456,"column":2},"end":{"line":456,"column":2}},{"start":{"line":456,"column":2},"end":{"line":456,"column":2}}]},"20":{"line":456,"type":"binary-expr","locations":[{"start":{"line":456,"column":7},"end":{"line":456,"column":49}},{"start":{"line":456,"column":55},"end":{"line":456,"column":72}}]},"21":{"line":471,"type":"if","locations":[{"start":{"line":471,"column":2},"end":{"line":471,"column":2}},{"start":{"line":471,"column":2},"end":{"line":471,"column":2}}]},"22":{"line":474,"type":"if","locations":[{"start":{"line":474,"column":9},"end":{"line":474,"column":9}},{"start":{"line":474,"column":9},"end":{"line":474,"column":9}}]}}},"/data/upstream/node-http2/lib/flow.js":{"path":"/data/upstream/node-http2/lib/flow.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":42,"8":42,"9":42,"10":42,"11":42,"12":42,"13":42,"14":1,"15":1,"16":0,"17":1,"18":77,"19":77,"20":6,"21":77,"22":8,"23":8,"24":8,"25":7,"26":8,"27":69,"28":75,"29":5,"30":1,"31":7,"32":7,"33":3,"34":3,"35":1,"36":0,"37":0,"38":1,"39":1,"40":0,"41":1,"42":341,"43":341,"44":0,"45":0,"46":341,"47":1,"48":27,"49":27,"50":27,"51":0,"52":27,"53":1,"54":83,"55":83,"56":83,"57":83,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":83,"66":83,"67":83,"68":83,"69":12,"70":12,"71":12,"72":83,"73":83,"74":83,"75":0,"76":83,"77":1,"78":57,"79":0,"80":57,"81":57,"82":57,"83":57,"84":57,"85":0,"86":0,"87":1,"88":3,"89":3,"90":1,"91":1,"92":29,"93":2,"94":2,"95":27,"96":27,"97":27,"98":0,"99":0,"100":27,"101":1,"102":5,"103":1,"104":22,"105":22,"106":1,"107":0},"b":{"1":[0,1],"2":[6,71],"3":[8,69],"4":[77,18,10],"5":[7,1],"6":[5,70],"7":[75,7,3],"8":[3,4],"9":[7,3,3],"10":[341,0],"11":[27,27],"12":[83,0],"13":[83,0],"14":[83,83,16,16],"15":[0,0],"16":[83,0],"17":[12,71],"18":[83,83,16],"19":[0,83],"20":[0,57],"21":[57,50],"22":[57,0],"23":[3,3],"24":[2,27],"25":[29,2],"26":[0,27],"27":[27,23],"28":[0,5]},"f":{"1":12,"2":42,"3":0,"4":77,"5":8,"6":7,"7":0,"8":0,"9":341,"10":27,"11":83,"12":57,"13":3,"14":29,"15":5,"16":22,"17":0},"fnMap":{"1":{"name":"noop","line":1,"loc":{"start":{"line":1,"column":45},"end":{"line":1,"column":76}}},"2":{"name":"Flow","line":73,"loc":{"start":{"line":73,"column":0},"end":{"line":73,"column":29}}},"3":{"name":"_receive","line":90,"loc":{"start":{"line":90,"column":26},"end":{"line":90,"column":61}}},"4":{"name":"_write","line":98,"loc":{"start":{"line":98,"column":24},"end":{"line":98,"column":67}}},"5":{"name":"(anonymous_5)","line":106,"loc":{"start":{"line":106,"column":25},"end":{"line":106,"column":36}}},"6":{"name":"_restoreWindow","line":127,"loc":{"start":{"line":127,"column":32},"end":{"line":127,"column":58}}},"7":{"name":"disableRemoteFlowControl","line":141,"loc":{"start":{"line":141,"column":42},"end":{"line":141,"column":78}}},"8":{"name":"_send","line":173,"loc":{"start":{"line":173,"column":23},"end":{"line":173,"column":40}}},"9":{"name":"_read","line":181,"loc":{"start":{"line":181,"column":23},"end":{"line":181,"column":40}}},"10":{"name":"_onWindowIncrease","line":194,"loc":{"start":{"line":194,"column":35},"end":{"line":194,"column":64}}},"11":{"name":"_push","line":212,"loc":{"start":{"line":212,"column":23},"end":{"line":212,"column":64}}},"12":{"name":"push","line":261,"loc":{"start":{"line":261,"column":22},"end":{"line":261,"column":43}}},"13":{"name":"getLastQueuedFrame","line":280,"loc":{"start":{"line":280,"column":36},"end":{"line":280,"column":66}}},"14":{"name":"_increaseWindow","line":298,"loc":{"start":{"line":298,"column":33},"end":{"line":298,"column":64}}},"15":{"name":"_updateWindow","line":322,"loc":{"start":{"line":322,"column":31},"end":{"line":322,"column":61}}},"16":{"name":"setInitialWindow","line":330,"loc":{"start":{"line":330,"column":34},"end":{"line":330,"column":75}}},"17":{"name":"disableLocalFlowControl","line":336,"loc":{"start":{"line":336,"column":41},"end":{"line":336,"column":76}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":79}},"2":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"3":{"start":{"line":11,"column":0},"end":{"line":11,"column":39}},"4":{"start":{"line":13,"column":0},"end":{"line":13,"column":20}},"5":{"start":{"line":70,"column":0},"end":{"line":70,"column":32}},"6":{"start":{"line":73,"column":0},"end":{"line":83,"column":1}},"7":{"start":{"line":74,"column":2},"end":{"line":74,"column":42}},"8":{"start":{"line":76,"column":2},"end":{"line":76,"column":59}},"9":{"start":{"line":77,"column":2},"end":{"line":77,"column":38}},"10":{"start":{"line":78,"column":2},"end":{"line":78,"column":19}},"11":{"start":{"line":80,"column":2},"end":{"line":80,"column":22}},"12":{"start":{"line":81,"column":2},"end":{"line":81,"column":21}},"13":{"start":{"line":82,"column":2},"end":{"line":82,"column":42}},"14":{"start":{"line":84,"column":0},"end":{"line":84,"column":83}},"15":{"start":{"line":90,"column":0},"end":{"line":92,"column":2}},"16":{"start":{"line":91,"column":2},"end":{"line":91,"column":99}},"17":{"start":{"line":98,"column":0},"end":{"line":123,"column":2}},"18":{"start":{"line":99,"column":2},"end":{"line":99,"column":32}},"19":{"start":{"line":101,"column":2},"end":{"line":103,"column":3}},"20":{"start":{"line":102,"column":4},"end":{"line":102,"column":23}},"21":{"start":{"line":105,"column":2},"end":{"line":117,"column":3}},"22":{"start":{"line":106,"column":4},"end":{"line":112,"column":18}},"23":{"start":{"line":107,"column":6},"end":{"line":107,"column":42}},"24":{"start":{"line":108,"column":6},"end":{"line":110,"column":7}},"25":{"start":{"line":109,"column":8},"end":{"line":109,"column":80}},"26":{"start":{"line":111,"column":6},"end":{"line":111,"column":17}},"27":{"start":{"line":116,"column":4},"end":{"line":116,"column":35}},"28":{"start":{"line":119,"column":2},"end":{"line":122,"column":3}},"29":{"start":{"line":121,"column":4},"end":{"line":121,"column":30}},"30":{"start":{"line":127,"column":0},"end":{"line":137,"column":2}},"31":{"start":{"line":128,"column":2},"end":{"line":128,"column":34}},"32":{"start":{"line":129,"column":2},"end":{"line":136,"column":3}},"33":{"start":{"line":130,"column":4},"end":{"line":134,"column":7}},"34":{"start":{"line":135,"column":4},"end":{"line":135,"column":23}},"35":{"start":{"line":141,"column":0},"end":{"line":150,"column":2}},"36":{"start":{"line":142,"column":2},"end":{"line":142,"column":41}},"37":{"start":{"line":143,"column":2},"end":{"line":149,"column":5}},"38":{"start":{"line":170,"column":0},"end":{"line":170,"column":34}},"39":{"start":{"line":173,"column":0},"end":{"line":175,"column":2}},"40":{"start":{"line":174,"column":2},"end":{"line":174,"column":81}},"41":{"start":{"line":181,"column":0},"end":{"line":189,"column":2}},"42":{"start":{"line":182,"column":2},"end":{"line":187,"column":3}},"43":{"start":{"line":183,"column":4},"end":{"line":183,"column":17}},"44":{"start":{"line":185,"column":4},"end":{"line":185,"column":31}},"45":{"start":{"line":186,"column":4},"end":{"line":186,"column":43}},"46":{"start":{"line":188,"column":2},"end":{"line":188,"column":38}},"47":{"start":{"line":194,"column":0},"end":{"line":203,"column":2}},"48":{"start":{"line":195,"column":2},"end":{"line":195,"column":31}},"49":{"start":{"line":197,"column":2},"end":{"line":197,"column":63}},"50":{"start":{"line":198,"column":2},"end":{"line":200,"column":3}},"51":{"start":{"line":199,"column":4},"end":{"line":199,"column":53}},"52":{"start":{"line":202,"column":2},"end":{"line":202,"column":15}},"53":{"start":{"line":212,"column":0},"end":{"line":258,"column":2}},"54":{"start":{"line":213,"column":2},"end":{"line":251,"column":36}},"55":{"start":{"line":214,"column":4},"end":{"line":214,"column":55}},"56":{"start":{"line":215,"column":4},"end":{"line":236,"column":5}},"57":{"start":{"line":217,"column":6},"end":{"line":217,"column":26}},"58":{"start":{"line":220,"column":9},"end":{"line":236,"column":5}},"59":{"start":{"line":221,"column":6},"end":{"line":221,"column":24}},"60":{"start":{"line":225,"column":6},"end":{"line":225,"column":68}},"61":{"start":{"line":226,"column":6},"end":{"line":230,"column":8}},"62":{"start":{"line":232,"column":6},"end":{"line":233,"column":73}},"63":{"start":{"line":234,"column":6},"end":{"line":234,"column":47}},"64":{"start":{"line":235,"column":6},"end":{"line":235,"column":24}},"65":{"start":{"line":238,"column":4},"end":{"line":238,"column":26}},"66":{"start":{"line":239,"column":4},"end":{"line":248,"column":5}},"67":{"start":{"line":240,"column":6},"end":{"line":240,"column":85}},"68":{"start":{"line":241,"column":6},"end":{"line":246,"column":7}},"69":{"start":{"line":242,"column":8},"end":{"line":243,"column":65}},"70":{"start":{"line":244,"column":8},"end":{"line":244,"column":48}},"71":{"start":{"line":245,"column":8},"end":{"line":245,"column":34}},"72":{"start":{"line":247,"column":6},"end":{"line":247,"column":65}},"73":{"start":{"line":250,"column":4},"end":{"line":250,"column":22}},"74":{"start":{"line":253,"column":2},"end":{"line":255,"column":3}},"75":{"start":{"line":254,"column":4},"end":{"line":254,"column":33}},"76":{"start":{"line":257,"column":2},"end":{"line":257,"column":20}},"77":{"start":{"line":261,"column":0},"end":{"line":276,"column":2}},"78":{"start":{"line":262,"column":2},"end":{"line":268,"column":3}},"79":{"start":{"line":263,"column":4},"end":{"line":263,"column":57}},"80":{"start":{"line":265,"column":4},"end":{"line":265,"column":36}},"81":{"start":{"line":266,"column":4},"end":{"line":266,"column":67}},"82":{"start":{"line":267,"column":4},"end":{"line":267,"column":32}},"83":{"start":{"line":270,"column":2},"end":{"line":275,"column":3}},"84":{"start":{"line":271,"column":4},"end":{"line":271,"column":65}},"85":{"start":{"line":273,"column":4},"end":{"line":273,"column":28}},"86":{"start":{"line":274,"column":4},"end":{"line":274,"column":16}},"87":{"start":{"line":280,"column":0},"end":{"line":283,"column":2}},"88":{"start":{"line":281,"column":2},"end":{"line":281,"column":49}},"89":{"start":{"line":282,"column":2},"end":{"line":282,"column":88}},"90":{"start":{"line":296,"column":0},"end":{"line":296,"column":44}},"91":{"start":{"line":298,"column":0},"end":{"line":312,"column":2}},"92":{"start":{"line":299,"column":2},"end":{"line":311,"column":3}},"93":{"start":{"line":300,"column":4},"end":{"line":300,"column":97}},"94":{"start":{"line":301,"column":4},"end":{"line":301,"column":45}},"95":{"start":{"line":303,"column":4},"end":{"line":303,"column":96}},"96":{"start":{"line":304,"column":4},"end":{"line":304,"column":25}},"97":{"start":{"line":305,"column":4},"end":{"line":310,"column":5}},"98":{"start":{"line":306,"column":6},"end":{"line":306,"column":61}},"99":{"start":{"line":307,"column":6},"end":{"line":307,"column":47}},"100":{"start":{"line":309,"column":6},"end":{"line":309,"column":31}},"101":{"start":{"line":322,"column":0},"end":{"line":324,"column":2}},"102":{"start":{"line":323,"column":2},"end":{"line":323,"column":84}},"103":{"start":{"line":330,"column":0},"end":{"line":333,"column":2}},"104":{"start":{"line":331,"column":2},"end":{"line":331,"column":60}},"105":{"start":{"line":332,"column":2},"end":{"line":332,"column":38}},"106":{"start":{"line":336,"column":0},"end":{"line":338,"column":2}},"107":{"start":{"line":337,"column":2},"end":{"line":337,"column":33}}},"branchMap":{"1":{"line":1,"type":"cond-expr","locations":[{"start":{"line":1,"column":40},"end":{"line":1,"column":57}},{"start":{"line":1,"column":45},"end":{"line":1,"column":78}}]},"2":{"line":101,"type":"if","locations":[{"start":{"line":101,"column":2},"end":{"line":101,"column":2}},{"start":{"line":101,"column":2},"end":{"line":101,"column":2}}]},"3":{"line":105,"type":"if","locations":[{"start":{"line":105,"column":2},"end":{"line":105,"column":2}},{"start":{"line":105,"column":2},"end":{"line":105,"column":2}}]},"4":{"line":105,"type":"binary-expr","locations":[{"start":{"line":105,"column":7},"end":{"line":105,"column":28}},{"start":{"line":105,"column":34},"end":{"line":105,"column":55}},{"start":{"line":105,"column":60},"end":{"line":105,"column":92}}]},"5":{"line":108,"type":"if","locations":[{"start":{"line":108,"column":6},"end":{"line":108,"column":6}},{"start":{"line":108,"column":6},"end":{"line":108,"column":6}}]},"6":{"line":119,"type":"if","locations":[{"start":{"line":119,"column":2},"end":{"line":119,"column":2}},{"start":{"line":119,"column":2},"end":{"line":119,"column":2}}]},"7":{"line":119,"type":"binary-expr","locations":[{"start":{"line":119,"column":7},"end":{"line":119,"column":37}},{"start":{"line":120,"column":8},"end":{"line":120,"column":41}},{"start":{"line":120,"column":47},"end":{"line":120,"column":83}}]},"8":{"line":129,"type":"if","locations":[{"start":{"line":129,"column":2},"end":{"line":129,"column":2}},{"start":{"line":129,"column":2},"end":{"line":129,"column":2}}]},"9":{"line":129,"type":"binary-expr","locations":[{"start":{"line":129,"column":6},"end":{"line":129,"column":18}},{"start":{"line":129,"column":22},"end":{"line":129,"column":54}},{"start":{"line":129,"column":59},"end":{"line":129,"column":77}}]},"10":{"line":182,"type":"if","locations":[{"start":{"line":182,"column":2},"end":{"line":182,"column":2}},{"start":{"line":182,"column":2},"end":{"line":182,"column":2}}]},"11":{"line":198,"type":"binary-expr","locations":[{"start":{"line":198,"column":9},"end":{"line":198,"column":19}},{"start":{"line":198,"column":24},"end":{"line":198,"column":51}}]},"12":{"line":251,"type":"binary-expr","locations":[{"start":{"line":251,"column":11},"end":{"line":251,"column":20}},{"start":{"line":251,"column":24},"end":{"line":251,"column":34}}]},"13":{"line":215,"type":"if","locations":[{"start":{"line":215,"column":4},"end":{"line":215,"column":4}},{"start":{"line":215,"column":4},"end":{"line":215,"column":4}}]},"14":{"line":215,"type":"binary-expr","locations":[{"start":{"line":215,"column":9},"end":{"line":215,"column":23}},{"start":{"line":215,"column":29},"end":{"line":215,"column":50}},{"start":{"line":216,"column":10},"end":{"line":216,"column":43}},{"start":{"line":216,"column":49},"end":{"line":216,"column":91}}]},"15":{"line":220,"type":"if","locations":[{"start":{"line":220,"column":9},"end":{"line":220,"column":9}},{"start":{"line":220,"column":9},"end":{"line":220,"column":9}}]},"16":{"line":239,"type":"if","locations":[{"start":{"line":239,"column":4},"end":{"line":239,"column":4}},{"start":{"line":239,"column":4},"end":{"line":239,"column":4}}]},"17":{"line":241,"type":"if","locations":[{"start":{"line":241,"column":6},"end":{"line":241,"column":6}},{"start":{"line":241,"column":6},"end":{"line":241,"column":6}}]},"18":{"line":241,"type":"binary-expr","locations":[{"start":{"line":241,"column":10},"end":{"line":241,"column":21}},{"start":{"line":241,"column":26},"end":{"line":241,"column":53}},{"start":{"line":241,"column":59},"end":{"line":241,"column":84}}]},"19":{"line":253,"type":"if","locations":[{"start":{"line":253,"column":2},"end":{"line":253,"column":2}},{"start":{"line":253,"column":2},"end":{"line":253,"column":2}}]},"20":{"line":262,"type":"if","locations":[{"start":{"line":262,"column":2},"end":{"line":262,"column":2}},{"start":{"line":262,"column":2},"end":{"line":262,"column":2}}]},"21":{"line":265,"type":"binary-expr","locations":[{"start":{"line":265,"column":18},"end":{"line":265,"column":29}},{"start":{"line":265,"column":33},"end":{"line":265,"column":35}}]},"22":{"line":270,"type":"if","locations":[{"start":{"line":270,"column":2},"end":{"line":270,"column":2}},{"start":{"line":270,"column":2},"end":{"line":270,"column":2}}]},"23":{"line":282,"type":"binary-expr","locations":[{"start":{"line":282,"column":9},"end":{"line":282,"column":44}},{"start":{"line":282,"column":48},"end":{"line":282,"column":87}}]},"24":{"line":299,"type":"if","locations":[{"start":{"line":299,"column":2},"end":{"line":299,"column":2}},{"start":{"line":299,"column":2},"end":{"line":299,"column":2}}]},"25":{"line":299,"type":"binary-expr","locations":[{"start":{"line":299,"column":7},"end":{"line":299,"column":32}},{"start":{"line":299,"column":38},"end":{"line":299,"column":55}}]},"26":{"line":305,"type":"if","locations":[{"start":{"line":305,"column":4},"end":{"line":305,"column":4}},{"start":{"line":305,"column":4},"end":{"line":305,"column":4}}]},"27":{"line":305,"type":"binary-expr","locations":[{"start":{"line":305,"column":9},"end":{"line":305,"column":34}},{"start":{"line":305,"column":40},"end":{"line":305,"column":72}}]},"28":{"line":323,"type":"cond-expr","locations":[{"start":{"line":323,"column":54},"end":{"line":323,"column":62}},{"start":{"line":323,"column":65},"end":{"line":323,"column":82}}]}}},"/data/upstream/node-http2/lib/stream.js":{"path":"/data/upstream/node-http2/lib/stream.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":24,"7":24,"8":24,"9":24,"10":24,"11":1,"12":1,"13":24,"14":4,"15":24,"16":11,"17":11,"18":1,"19":3,"20":3,"21":1,"22":13,"23":13,"24":1,"25":8,"26":1,"27":1,"28":24,"29":24,"30":24,"31":24,"32":24,"33":24,"34":24,"35":24,"36":1,"37":30,"38":30,"39":30,"40":10,"41":10,"42":0,"43":0,"44":20,"45":30,"46":3,"47":30,"48":30,"49":1,"50":11,"51":0,"52":0,"53":0,"54":1,"55":5,"56":5,"57":5,"58":0,"59":1,"60":218,"61":0,"62":0,"63":0,"64":1,"65":1,"66":3,"67":3,"68":3,"69":0,"70":0,"71":0,"72":3,"73":1,"74":24,"75":24,"76":24,"77":24,"78":1,"79":1,"80":26,"81":26,"82":26,"83":26,"84":26,"85":26,"86":26,"87":15,"88":11,"89":2,"90":1,"91":64,"92":64,"93":64,"94":64,"95":64,"96":18,"97":18,"98":24,"99":24,"100":1,"101":1,"102":8,"103":8,"104":0,"105":0,"106":7,"107":7,"108":0,"109":0,"110":0,"111":0,"112":6,"113":6,"114":64,"115":15,"116":11,"117":11,"118":0,"119":4,"120":15,"121":7,"122":3,"123":4,"124":0,"125":4,"126":4,"127":7,"128":1,"129":0,"130":1,"131":1,"132":0,"133":0,"134":1,"135":24,"136":4,"137":20,"138":0,"139":24,"140":7,"141":2,"142":5,"143":0,"144":7,"145":2,"146":0,"147":2,"148":0,"149":2,"150":8,"151":0,"152":8,"153":64,"154":3,"155":64,"156":5,"157":5,"158":64,"159":8,"160":8,"161":0,"162":0,"163":8,"164":8,"165":8,"166":8},"b":{"1":[0,1],"2":[24,8],"3":[10,20],"4":[0,10],"5":[3,27],"6":[30,0],"7":[0,11],"8":[5,0],"9":[0,218],"10":[0,3],"11":[3,0,0],"12":[26,0],"13":[15,11],"14":[26,20],"15":[2,9],"16":[11,6],"17":[18,24,1,8,0,7,0,0,6],"18":[15,7,1,24,7,2,8],"19":[11,4],"20":[0,11],"21":[0,0],"22":[3,4],"23":[7,3],"24":[0,4],"25":[0,4],"26":[4,4],"27":[0,1],"28":[1,0],"29":[1,1],"30":[0,0],"31":[0,0],"32":[4,20],"33":[3,1],"34":[0,20],"35":[2,5],"36":[7,7,6],"37":[5,0],"38":[5,1,1,1],"39":[0,2],"40":[2,2,1],"41":[2,0],"42":[2,1,1,0],"43":[8,0],"44":[8,8,0,0,0,0,0],"45":[3,61],"46":[64,30,30],"47":[5,59],"48":[64,7],"49":[3,2],"50":[8,56],"51":[0,8]},"f":{"1":5,"2":24,"3":24,"4":4,"5":11,"6":3,"7":13,"8":8,"9":24,"10":30,"11":11,"12":5,"13":218,"14":3,"15":24,"16":26,"17":64},"fnMap":{"1":{"name":"noop","line":1,"loc":{"start":{"line":1,"column":45},"end":{"line":1,"column":76}}},"2":{"name":"Stream","line":42,"loc":{"start":{"line":42,"column":0},"end":{"line":42,"column":21}}},"3":{"name":"_initializeManagement","line":65,"loc":{"start":{"line":65,"column":41},"end":{"line":65,"column":74}}},"4":{"name":"(anonymous_4)","line":66,"loc":{"start":{"line":66,"column":26},"end":{"line":66,"column":42}}},"5":{"name":"(anonymous_5)","line":69,"loc":{"start":{"line":69,"column":21},"end":{"line":69,"column":37}}},"6":{"name":"promise","line":78,"loc":{"start":{"line":78,"column":27},"end":{"line":78,"column":61}}},"7":{"name":"headers","line":87,"loc":{"start":{"line":87,"column":27},"end":{"line":87,"column":63}}},"8":{"name":"reset","line":96,"loc":{"start":{"line":96,"column":25},"end":{"line":96,"column":47}}},"9":{"name":"_initializeDataFlow","line":138,"loc":{"start":{"line":138,"column":39},"end":{"line":138,"column":70}}},"10":{"name":"_receive","line":151,"loc":{"start":{"line":151,"column":28},"end":{"line":151,"column":60}}},"11":{"name":"_read","line":183,"loc":{"start":{"line":183,"column":25},"end":{"line":183,"column":42}}},"12":{"name":"_write","line":192,"loc":{"start":{"line":192,"column":26},"end":{"line":192,"column":67}}},"13":{"name":"_send","line":210,"loc":{"start":{"line":210,"column":25},"end":{"line":210,"column":42}}},"14":{"name":"_finishing","line":227,"loc":{"start":{"line":227,"column":30},"end":{"line":227,"column":52}}},"15":{"name":"_initializeState","line":269,"loc":{"start":{"line":269,"column":36},"end":{"line":269,"column":64}}},"16":{"name":"transition","line":280,"loc":{"start":{"line":280,"column":29},"end":{"line":280,"column":56}}},"17":{"name":"transition","line":300,"loc":{"start":{"line":300,"column":31},"end":{"line":300,"column":67}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":79}},"2":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"3":{"start":{"line":13,"column":0},"end":{"line":13,"column":38}},"4":{"start":{"line":15,"column":0},"end":{"line":15,"column":24}},"5":{"start":{"line":42,"column":0},"end":{"line":56,"column":1}},"6":{"start":{"line":43,"column":2},"end":{"line":43,"column":20}},"7":{"start":{"line":46,"column":2},"end":{"line":46,"column":67}},"8":{"start":{"line":49,"column":2},"end":{"line":49,"column":31}},"9":{"start":{"line":52,"column":2},"end":{"line":52,"column":29}},"10":{"start":{"line":55,"column":2},"end":{"line":55,"column":26}},"11":{"start":{"line":58,"column":0},"end":{"line":58,"column":87}},"12":{"start":{"line":65,"column":0},"end":{"line":73,"column":2}},"13":{"start":{"line":66,"column":2},"end":{"line":68,"column":5}},"14":{"start":{"line":67,"column":4},"end":{"line":67,"column":63}},"15":{"start":{"line":69,"column":2},"end":{"line":72,"column":5}},"16":{"start":{"line":70,"column":4},"end":{"line":70,"column":35}},"17":{"start":{"line":71,"column":4},"end":{"line":71,"column":40}},"18":{"start":{"line":78,"column":0},"end":{"line":85,"column":2}},"19":{"start":{"line":79,"column":2},"end":{"line":79,"column":35}},"20":{"start":{"line":80,"column":2},"end":{"line":84,"column":5}},"21":{"start":{"line":87,"column":0},"end":{"line":94,"column":2}},"22":{"start":{"line":88,"column":2},"end":{"line":92,"column":5}},"23":{"start":{"line":93,"column":2},"end":{"line":93,"column":27}},"24":{"start":{"line":96,"column":0},"end":{"line":101,"column":2}},"25":{"start":{"line":97,"column":2},"end":{"line":100,"column":5}},"26":{"start":{"line":136,"column":0},"end":{"line":136,"column":34}},"27":{"start":{"line":138,"column":0},"end":{"line":148,"column":2}},"28":{"start":{"line":139,"column":2},"end":{"line":139,"column":29}},"29":{"start":{"line":140,"column":2},"end":{"line":140,"column":33}},"30":{"start":{"line":141,"column":2},"end":{"line":141,"column":46}},"31":{"start":{"line":142,"column":2},"end":{"line":142,"column":52}},"32":{"start":{"line":143,"column":2},"end":{"line":143,"column":63}},"33":{"start":{"line":144,"column":2},"end":{"line":144,"column":67}},"34":{"start":{"line":145,"column":2},"end":{"line":145,"column":59}},"35":{"start":{"line":147,"column":2},"end":{"line":147,"column":37}},"36":{"start":{"line":151,"column":0},"end":{"line":179,"column":2}},"37":{"start":{"line":152,"column":2},"end":{"line":152,"column":55}},"38":{"start":{"line":154,"column":2},"end":{"line":154,"column":23}},"39":{"start":{"line":158,"column":2},"end":{"line":169,"column":3}},"40":{"start":{"line":159,"column":4},"end":{"line":159,"column":43}},"41":{"start":{"line":160,"column":4},"end":{"line":163,"column":5}},"42":{"start":{"line":161,"column":6},"end":{"line":161,"column":32}},"43":{"start":{"line":162,"column":6},"end":{"line":162,"column":24}},"44":{"start":{"line":168,"column":4},"end":{"line":168,"column":33}},"45":{"start":{"line":172,"column":2},"end":{"line":174,"column":3}},"46":{"start":{"line":173,"column":4},"end":{"line":173,"column":20}},"47":{"start":{"line":176,"column":2},"end":{"line":178,"column":3}},"48":{"start":{"line":177,"column":4},"end":{"line":177,"column":12}},"49":{"start":{"line":183,"column":0},"end":{"line":189,"column":2}},"50":{"start":{"line":184,"column":2},"end":{"line":188,"column":3}},"51":{"start":{"line":185,"column":4},"end":{"line":185,"column":40}},"52":{"start":{"line":186,"column":4},"end":{"line":186,"column":29}},"53":{"start":{"line":187,"column":4},"end":{"line":187,"column":18}},"54":{"start":{"line":192,"column":0},"end":{"line":205,"column":2}},"55":{"start":{"line":194,"column":2},"end":{"line":197,"column":5}},"56":{"start":{"line":200,"column":2},"end":{"line":204,"column":3}},"57":{"start":{"line":201,"column":4},"end":{"line":201,"column":12}},"58":{"start":{"line":203,"column":4},"end":{"line":203,"column":27}},"59":{"start":{"line":210,"column":0},"end":{"line":216,"column":2}},"60":{"start":{"line":211,"column":2},"end":{"line":215,"column":3}},"61":{"start":{"line":212,"column":4},"end":{"line":212,"column":34}},"62":{"start":{"line":213,"column":4},"end":{"line":213,"column":26}},"63":{"start":{"line":214,"column":4},"end":{"line":214,"column":15}},"64":{"start":{"line":222,"column":0},"end":{"line":226,"column":2}},"65":{"start":{"line":227,"column":0},"end":{"line":237,"column":2}},"66":{"start":{"line":228,"column":2},"end":{"line":228,"column":25}},"67":{"start":{"line":229,"column":2},"end":{"line":229,"column":53}},"68":{"start":{"line":230,"column":2},"end":{"line":236,"column":3}},"69":{"start":{"line":231,"column":4},"end":{"line":231,"column":86}},"70":{"start":{"line":232,"column":4},"end":{"line":232,"column":38}},"71":{"start":{"line":233,"column":4},"end":{"line":233,"column":37}},"72":{"start":{"line":235,"column":4},"end":{"line":235,"column":33}},"73":{"start":{"line":269,"column":0},"end":{"line":274,"column":2}},"74":{"start":{"line":270,"column":2},"end":{"line":270,"column":22}},"75":{"start":{"line":271,"column":2},"end":{"line":271,"column":29}},"76":{"start":{"line":272,"column":2},"end":{"line":272,"column":56}},"77":{"start":{"line":273,"column":2},"end":{"line":273,"column":59}},"78":{"start":{"line":278,"column":0},"end":{"line":278,"column":72}},"79":{"start":{"line":280,"column":0},"end":{"line":295,"column":2}},"80":{"start":{"line":281,"column":2},"end":{"line":294,"column":3}},"81":{"start":{"line":282,"column":4},"end":{"line":282,"column":73}},"82":{"start":{"line":284,"column":4},"end":{"line":284,"column":63}},"83":{"start":{"line":285,"column":4},"end":{"line":285,"column":57}},"84":{"start":{"line":286,"column":4},"end":{"line":286,"column":23}},"85":{"start":{"line":288,"column":4},"end":{"line":288,"column":30}},"86":{"start":{"line":289,"column":4},"end":{"line":293,"column":5}},"87":{"start":{"line":290,"column":6},"end":{"line":290,"column":26}},"88":{"start":{"line":291,"column":11},"end":{"line":293,"column":5}},"89":{"start":{"line":292,"column":6},"end":{"line":292,"column":28}},"90":{"start":{"line":300,"column":0},"end":{"line":498,"column":2}},"91":{"start":{"line":301,"column":2},"end":{"line":301,"column":27}},"92":{"start":{"line":302,"column":2},"end":{"line":302,"column":24}},"93":{"start":{"line":304,"column":2},"end":{"line":304,"column":92}},"94":{"start":{"line":305,"column":2},"end":{"line":305,"column":80}},"95":{"start":{"line":306,"column":2},"end":{"line":316,"column":3}},"96":{"start":{"line":307,"column":26},"end":{"line":307,"column":47}},"97":{"start":{"line":307,"column":48},"end":{"line":307,"column":54}},"98":{"start":{"line":308,"column":26},"end":{"line":308,"column":47}},"99":{"start":{"line":308,"column":48},"end":{"line":308,"column":54}},"100":{"start":{"line":309,"column":26},"end":{"line":309,"column":47}},"101":{"start":{"line":309,"column":48},"end":{"line":309,"column":54}},"102":{"start":{"line":310,"column":26},"end":{"line":310,"column":47}},"103":{"start":{"line":310,"column":48},"end":{"line":310,"column":54}},"104":{"start":{"line":311,"column":26},"end":{"line":311,"column":47}},"105":{"start":{"line":311,"column":48},"end":{"line":311,"column":54}},"106":{"start":{"line":312,"column":26},"end":{"line":312,"column":47}},"107":{"start":{"line":312,"column":48},"end":{"line":312,"column":54}},"108":{"start":{"line":313,"column":26},"end":{"line":313,"column":47}},"109":{"start":{"line":313,"column":48},"end":{"line":313,"column":54}},"110":{"start":{"line":314,"column":26},"end":{"line":314,"column":47}},"111":{"start":{"line":314,"column":48},"end":{"line":314,"column":54}},"112":{"start":{"line":315,"column":26},"end":{"line":315,"column":47}},"113":{"start":{"line":315,"column":48},"end":{"line":315,"column":54}},"114":{"start":{"line":318,"column":2},"end":{"line":458,"column":3}},"115":{"start":{"line":325,"column":6},"end":{"line":332,"column":7}},"116":{"start":{"line":326,"column":8},"end":{"line":326,"column":31}},"117":{"start":{"line":327,"column":8},"end":{"line":329,"column":9}},"118":{"start":{"line":328,"column":10},"end":{"line":328,"column":79}},"119":{"start":{"line":331,"column":8},"end":{"line":331,"column":33}},"120":{"start":{"line":333,"column":6},"end":{"line":333,"column":12}},"121":{"start":{"line":345,"column":6},"end":{"line":353,"column":7}},"122":{"start":{"line":346,"column":8},"end":{"line":346,"column":45}},"123":{"start":{"line":347,"column":13},"end":{"line":353,"column":7}},"124":{"start":{"line":348,"column":8},"end":{"line":348,"column":33}},"125":{"start":{"line":349,"column":13},"end":{"line":353,"column":7}},"126":{"start":{"line":352,"column":8},"end":{"line":352,"column":33}},"127":{"start":{"line":354,"column":6},"end":{"line":354,"column":12}},"128":{"start":{"line":364,"column":6},"end":{"line":372,"column":7}},"129":{"start":{"line":365,"column":8},"end":{"line":365,"column":33}},"130":{"start":{"line":366,"column":13},"end":{"line":372,"column":7}},"131":{"start":{"line":367,"column":8},"end":{"line":367,"column":44}},"132":{"start":{"line":368,"column":13},"end":{"line":372,"column":7}},"133":{"start":{"line":371,"column":8},"end":{"line":371,"column":33}},"134":{"start":{"line":373,"column":6},"end":{"line":373,"column":12}},"135":{"start":{"line":385,"column":6},"end":{"line":391,"column":7}},"136":{"start":{"line":386,"column":8},"end":{"line":386,"column":77}},"137":{"start":{"line":387,"column":13},"end":{"line":391,"column":7}},"138":{"start":{"line":388,"column":8},"end":{"line":388,"column":33}},"139":{"start":{"line":392,"column":6},"end":{"line":392,"column":12}},"140":{"start":{"line":401,"column":6},"end":{"line":407,"column":7}},"141":{"start":{"line":402,"column":8},"end":{"line":402,"column":33}},"142":{"start":{"line":403,"column":13},"end":{"line":407,"column":7}},"143":{"start":{"line":406,"column":8},"end":{"line":406,"column":33}},"144":{"start":{"line":408,"column":6},"end":{"line":408,"column":12}},"145":{"start":{"line":421,"column":6},"end":{"line":427,"column":7}},"146":{"start":{"line":422,"column":8},"end":{"line":422,"column":33}},"147":{"start":{"line":423,"column":13},"end":{"line":427,"column":7}},"148":{"start":{"line":426,"column":8},"end":{"line":426,"column":33}},"149":{"start":{"line":428,"column":6},"end":{"line":428,"column":12}},"150":{"start":{"line":451,"column":6},"end":{"line":456,"column":7}},"151":{"start":{"line":455,"column":8},"end":{"line":455,"column":32}},"152":{"start":{"line":457,"column":6},"end":{"line":457,"column":12}},"153":{"start":{"line":463,"column":2},"end":{"line":465,"column":3}},"154":{"start":{"line":464,"column":4},"end":{"line":464,"column":30}},"155":{"start":{"line":473,"column":2},"end":{"line":477,"column":3}},"156":{"start":{"line":474,"column":4},"end":{"line":475,"column":86}},"157":{"start":{"line":476,"column":4},"end":{"line":476,"column":84}},"158":{"start":{"line":480,"column":2},"end":{"line":497,"column":3}},"159":{"start":{"line":481,"column":4},"end":{"line":481,"column":65}},"160":{"start":{"line":484,"column":4},"end":{"line":496,"column":5}},"161":{"start":{"line":485,"column":6},"end":{"line":485,"column":68}},"162":{"start":{"line":486,"column":6},"end":{"line":486,"column":97}},"163":{"start":{"line":492,"column":6},"end":{"line":492,"column":69}},"164":{"start":{"line":493,"column":6},"end":{"line":493,"column":28}},"165":{"start":{"line":494,"column":6},"end":{"line":494,"column":24}},"166":{"start":{"line":495,"column":6},"end":{"line":495,"column":32}}},"branchMap":{"1":{"line":1,"type":"cond-expr","locations":[{"start":{"line":1,"column":40},"end":{"line":1,"column":57}},{"start":{"line":1,"column":45},"end":{"line":1,"column":78}}]},"2":{"line":46,"type":"binary-expr","locations":[{"start":{"line":46,"column":15},"end":{"line":46,"column":18}},{"start":{"line":46,"column":22},"end":{"line":46,"column":34}}]},"3":{"line":158,"type":"if","locations":[{"start":{"line":158,"column":2},"end":{"line":158,"column":2}},{"start":{"line":158,"column":2},"end":{"line":158,"column":2}}]},"4":{"line":160,"type":"if","locations":[{"start":{"line":160,"column":4},"end":{"line":160,"column":4}},{"start":{"line":160,"column":4},"end":{"line":160,"column":4}}]},"5":{"line":172,"type":"if","locations":[{"start":{"line":172,"column":2},"end":{"line":172,"column":2}},{"start":{"line":172,"column":2},"end":{"line":172,"column":2}}]},"6":{"line":176,"type":"if","locations":[{"start":{"line":176,"column":2},"end":{"line":176,"column":2}},{"start":{"line":176,"column":2},"end":{"line":176,"column":2}}]},"7":{"line":184,"type":"if","locations":[{"start":{"line":184,"column":2},"end":{"line":184,"column":2}},{"start":{"line":184,"column":2},"end":{"line":184,"column":2}}]},"8":{"line":200,"type":"if","locations":[{"start":{"line":200,"column":2},"end":{"line":200,"column":2}},{"start":{"line":200,"column":2},"end":{"line":200,"column":2}}]},"9":{"line":211,"type":"if","locations":[{"start":{"line":211,"column":2},"end":{"line":211,"column":2}},{"start":{"line":211,"column":2},"end":{"line":211,"column":2}}]},"10":{"line":230,"type":"if","locations":[{"start":{"line":230,"column":2},"end":{"line":230,"column":2}},{"start":{"line":230,"column":2},"end":{"line":230,"column":2}}]},"11":{"line":230,"type":"binary-expr","locations":[{"start":{"line":230,"column":6},"end":{"line":230,"column":15}},{"start":{"line":230,"column":21},"end":{"line":230,"column":46}},{"start":{"line":230,"column":52},"end":{"line":230,"column":80}}]},"12":{"line":281,"type":"if","locations":[{"start":{"line":281,"column":2},"end":{"line":281,"column":2}},{"start":{"line":281,"column":2},"end":{"line":281,"column":2}}]},"13":{"line":289,"type":"if","locations":[{"start":{"line":289,"column":4},"end":{"line":289,"column":4}},{"start":{"line":289,"column":4},"end":{"line":289,"column":4}}]},"14":{"line":289,"type":"binary-expr","locations":[{"start":{"line":289,"column":8},"end":{"line":289,"column":18}},{"start":{"line":289,"column":22},"end":{"line":289,"column":30}}]},"15":{"line":291,"type":"if","locations":[{"start":{"line":291,"column":11},"end":{"line":291,"column":11}},{"start":{"line":291,"column":11},"end":{"line":291,"column":11}}]},"16":{"line":291,"type":"binary-expr","locations":[{"start":{"line":291,"column":15},"end":{"line":291,"column":24}},{"start":{"line":291,"column":28},"end":{"line":291,"column":37}}]},"17":{"line":306,"type":"switch","locations":[{"start":{"line":307,"column":4},"end":{"line":307,"column":54}},{"start":{"line":308,"column":4},"end":{"line":308,"column":54}},{"start":{"line":309,"column":4},"end":{"line":309,"column":54}},{"start":{"line":310,"column":4},"end":{"line":310,"column":54}},{"start":{"line":311,"column":4},"end":{"line":311,"column":54}},{"start":{"line":312,"column":4},"end":{"line":312,"column":54}},{"start":{"line":313,"column":4},"end":{"line":313,"column":54}},{"start":{"line":314,"column":4},"end":{"line":314,"column":54}},{"start":{"line":315,"column":4},"end":{"line":315,"column":54}}]},"18":{"line":318,"type":"switch","locations":[{"start":{"line":324,"column":4},"end":{"line":333,"column":12}},{"start":{"line":344,"column":4},"end":{"line":354,"column":12}},{"start":{"line":363,"column":4},"end":{"line":373,"column":12}},{"start":{"line":384,"column":4},"end":{"line":392,"column":12}},{"start":{"line":400,"column":4},"end":{"line":408,"column":12}},{"start":{"line":420,"column":4},"end":{"line":428,"column":12}},{"start":{"line":450,"column":4},"end":{"line":457,"column":12}}]},"19":{"line":325,"type":"if","locations":[{"start":{"line":325,"column":6},"end":{"line":325,"column":6}},{"start":{"line":325,"column":6},"end":{"line":325,"column":6}}]},"20":{"line":327,"type":"if","locations":[{"start":{"line":327,"column":8},"end":{"line":327,"column":8}},{"start":{"line":327,"column":8},"end":{"line":327,"column":8}}]},"21":{"line":328,"type":"cond-expr","locations":[{"start":{"line":328,"column":35},"end":{"line":328,"column":54}},{"start":{"line":328,"column":57},"end":{"line":328,"column":77}}]},"22":{"line":345,"type":"if","locations":[{"start":{"line":345,"column":6},"end":{"line":345,"column":6}},{"start":{"line":345,"column":6},"end":{"line":345,"column":6}}]},"23":{"line":345,"type":"binary-expr","locations":[{"start":{"line":345,"column":10},"end":{"line":345,"column":17}},{"start":{"line":345,"column":21},"end":{"line":345,"column":28}}]},"24":{"line":347,"type":"if","locations":[{"start":{"line":347,"column":13},"end":{"line":347,"column":13}},{"start":{"line":347,"column":13},"end":{"line":347,"column":13}}]},"25":{"line":349,"type":"if","locations":[{"start":{"line":349,"column":13},"end":{"line":349,"column":13}},{"start":{"line":349,"column":13},"end":{"line":349,"column":13}}]},"26":{"line":349,"type":"binary-expr","locations":[{"start":{"line":349,"column":17},"end":{"line":349,"column":26}},{"start":{"line":349,"column":30},"end":{"line":349,"column":38}}]},"27":{"line":364,"type":"if","locations":[{"start":{"line":364,"column":6},"end":{"line":364,"column":6}},{"start":{"line":364,"column":6},"end":{"line":364,"column":6}}]},"28":{"line":366,"type":"if","locations":[{"start":{"line":366,"column":13},"end":{"line":366,"column":13}},{"start":{"line":366,"column":13},"end":{"line":366,"column":13}}]},"29":{"line":366,"type":"binary-expr","locations":[{"start":{"line":366,"column":17},"end":{"line":366,"column":26}},{"start":{"line":366,"column":30},"end":{"line":366,"column":37}}]},"30":{"line":368,"type":"if","locations":[{"start":{"line":368,"column":13},"end":{"line":368,"column":13}},{"start":{"line":368,"column":13},"end":{"line":368,"column":13}}]},"31":{"line":368,"type":"binary-expr","locations":[{"start":{"line":368,"column":17},"end":{"line":368,"column":24}},{"start":{"line":368,"column":28},"end":{"line":368,"column":36}}]},"32":{"line":385,"type":"if","locations":[{"start":{"line":385,"column":6},"end":{"line":385,"column":6}},{"start":{"line":385,"column":6},"end":{"line":385,"column":6}}]},"33":{"line":386,"type":"cond-expr","locations":[{"start":{"line":386,"column":33},"end":{"line":386,"column":52}},{"start":{"line":386,"column":55},"end":{"line":386,"column":75}}]},"34":{"line":387,"type":"if","locations":[{"start":{"line":387,"column":13},"end":{"line":387,"column":13}},{"start":{"line":387,"column":13},"end":{"line":387,"column":13}}]},"35":{"line":401,"type":"if","locations":[{"start":{"line":401,"column":6},"end":{"line":401,"column":6}},{"start":{"line":401,"column":6},"end":{"line":401,"column":6}}]},"36":{"line":401,"type":"binary-expr","locations":[{"start":{"line":401,"column":10},"end":{"line":401,"column":20}},{"start":{"line":401,"column":25},"end":{"line":401,"column":34}},{"start":{"line":401,"column":38},"end":{"line":401,"column":60}}]},"37":{"line":403,"type":"if","locations":[{"start":{"line":403,"column":13},"end":{"line":403,"column":13}},{"start":{"line":403,"column":13},"end":{"line":403,"column":13}}]},"38":{"line":403,"type":"binary-expr","locations":[{"start":{"line":403,"column":17},"end":{"line":403,"column":26}},{"start":{"line":403,"column":31},"end":{"line":403,"column":38}},{"start":{"line":403,"column":43},"end":{"line":403,"column":51}},{"start":{"line":403,"column":55},"end":{"line":403,"column":68}}]},"39":{"line":421,"type":"if","locations":[{"start":{"line":421,"column":6},"end":{"line":421,"column":6}},{"start":{"line":421,"column":6},"end":{"line":421,"column":6}}]},"40":{"line":421,"type":"binary-expr","locations":[{"start":{"line":421,"column":10},"end":{"line":421,"column":20}},{"start":{"line":421,"column":25},"end":{"line":421,"column":32}},{"start":{"line":421,"column":36},"end":{"line":421,"column":58}}]},"41":{"line":423,"type":"if","locations":[{"start":{"line":423,"column":13},"end":{"line":423,"column":13}},{"start":{"line":423,"column":13},"end":{"line":423,"column":13}}]},"42":{"line":423,"type":"binary-expr","locations":[{"start":{"line":423,"column":17},"end":{"line":423,"column":24}},{"start":{"line":423,"column":29},"end":{"line":423,"column":38}},{"start":{"line":423,"column":43},"end":{"line":423,"column":56}},{"start":{"line":423,"column":60},"end":{"line":423,"column":68}}]},"43":{"line":451,"type":"if","locations":[{"start":{"line":451,"column":6},"end":{"line":451,"column":6}},{"start":{"line":451,"column":6},"end":{"line":451,"column":6}}]},"44":{"line":451,"type":"binary-expr","locations":[{"start":{"line":451,"column":11},"end":{"line":451,"column":18}},{"start":{"line":451,"column":22},"end":{"line":451,"column":32}},{"start":{"line":451,"column":38},"end":{"line":451,"column":47}},{"start":{"line":451,"column":51},"end":{"line":451,"column":70}},{"start":{"line":452,"column":11},"end":{"line":452,"column":20}},{"start":{"line":452,"column":25},"end":{"line":452,"column":38}},{"start":{"line":452,"column":42},"end":{"line":452,"column":50}}]},"45":{"line":463,"type":"if","locations":[{"start":{"line":463,"column":2},"end":{"line":463,"column":2}},{"start":{"line":463,"column":2},"end":{"line":463,"column":2}}]},"46":{"line":463,"type":"binary-expr","locations":[{"start":{"line":463,"column":6},"end":{"line":463,"column":15}},{"start":{"line":463,"column":20},"end":{"line":463,"column":30}},{"start":{"line":463,"column":34},"end":{"line":463,"column":56}}]},"47":{"line":473,"type":"if","locations":[{"start":{"line":473,"column":2},"end":{"line":473,"column":2}},{"start":{"line":473,"column":2},"end":{"line":473,"column":2}}]},"48":{"line":473,"type":"binary-expr","locations":[{"start":{"line":473,"column":6},"end":{"line":473,"column":18}},{"start":{"line":473,"column":22},"end":{"line":473,"column":28}}]},"49":{"line":476,"type":"cond-expr","locations":[{"start":{"line":476,"column":46},"end":{"line":476,"column":62}},{"start":{"line":476,"column":65},"end":{"line":476,"column":82}}]},"50":{"line":480,"type":"if","locations":[{"start":{"line":480,"column":2},"end":{"line":480,"column":2}},{"start":{"line":480,"column":2},"end":{"line":480,"column":2}}]},"51":{"line":484,"type":"if","locations":[{"start":{"line":484,"column":4},"end":{"line":484,"column":4}},{"start":{"line":484,"column":4},"end":{"line":484,"column":4}}]}}},"/data/upstream/node-http2/lib/endpoint.js":{"path":"/data/upstream/node-http2/lib/endpoint.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":4,"11":4,"12":4,"13":2,"14":2,"15":2,"16":0,"17":4,"18":4,"19":4,"20":1,"21":1,"22":1,"23":2,"24":2,"25":1,"26":2,"27":2,"28":2,"29":2,"30":48,"31":0,"32":0,"33":0,"34":48,"35":2,"36":2,"37":2,"38":2,"39":2,"40":1,"41":4,"42":4,"43":2,"44":2,"45":2,"46":2,"47":2,"48":2,"49":4,"50":4,"51":4,"52":4,"53":4,"54":4,"55":4,"56":4,"57":1,"58":29,"59":29,"60":16,"61":1,"62":10,"63":1,"64":4,"65":1,"66":1,"67":1,"68":4,"69":4,"70":4,"71":4,"72":4,"73":1,"74":0,"75":0,"76":1,"77":0},"b":{"1":[4,0],"2":[2,2],"3":[2,0],"4":[50,48],"5":[0,48],"6":[2,0],"7":[2,2],"8":[45,45]},"f":{"1":4,"2":2,"3":2,"4":2,"5":4,"6":29,"7":10,"8":4,"9":1,"10":4,"11":0,"12":0},"fnMap":{"1":{"name":"Endpoint","line":15,"loc":{"start":{"line":15,"column":0},"end":{"line":15,"column":39}}},"2":{"name":"_writePrelude","line":50,"loc":{"start":{"line":50,"column":35},"end":{"line":50,"column":60}}},"3":{"name":"_readPrelude","line":56,"loc":{"start":{"line":56,"column":34},"end":{"line":56,"column":58}}},"4":{"name":"_temporalWrite","line":61,"loc":{"start":{"line":61,"column":16},"end":{"line":61,"column":63}}},"5":{"name":"_initializeDataFlow","line":119,"loc":{"start":{"line":119,"column":41},"end":{"line":119,"column":86}}},"6":{"name":"_read","line":143,"loc":{"start":{"line":143,"column":27},"end":{"line":143,"column":44}}},"7":{"name":"_write","line":150,"loc":{"start":{"line":150,"column":28},"end":{"line":150,"column":67}}},"8":{"name":"_initializeManagement","line":157,"loc":{"start":{"line":157,"column":43},"end":{"line":157,"column":76}}},"9":{"name":"createStream","line":161,"loc":{"start":{"line":161,"column":34},"end":{"line":161,"column":58}}},"10":{"name":"_initializeErrorHandling","line":168,"loc":{"start":{"line":168,"column":46},"end":{"line":168,"column":82}}},"11":{"name":"_error","line":176,"loc":{"start":{"line":176,"column":28},"end":{"line":176,"column":62}}},"12":{"name":"close","line":181,"loc":{"start":{"line":181,"column":27},"end":{"line":181,"column":49}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":40}},"2":{"start":{"line":2,"column":0},"end":{"line":2,"column":50}},"3":{"start":{"line":3,"column":0},"end":{"line":3,"column":52}},"4":{"start":{"line":4,"column":0},"end":{"line":4,"column":54}},"5":{"start":{"line":5,"column":0},"end":{"line":5,"column":56}},"6":{"start":{"line":6,"column":0},"end":{"line":6,"column":54}},"7":{"start":{"line":7,"column":0},"end":{"line":7,"column":44}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":28}},"9":{"start":{"line":15,"column":0},"end":{"line":41,"column":1}},"10":{"start":{"line":16,"column":2},"end":{"line":16,"column":20}},"11":{"start":{"line":19,"column":2},"end":{"line":19,"column":69}},"12":{"start":{"line":23,"column":2},"end":{"line":29,"column":3}},"13":{"start":{"line":24,"column":4},"end":{"line":24,"column":25}},"14":{"start":{"line":25,"column":9},"end":{"line":29,"column":3}},"15":{"start":{"line":26,"column":4},"end":{"line":26,"column":24}},"16":{"start":{"line":28,"column":4},"end":{"line":28,"column":45}},"17":{"start":{"line":34,"column":2},"end":{"line":34,"column":43}},"18":{"start":{"line":37,"column":2},"end":{"line":37,"column":31}},"19":{"start":{"line":40,"column":2},"end":{"line":40,"column":34}},"20":{"start":{"line":42,"column":0},"end":{"line":42,"column":91}},"21":{"start":{"line":47,"column":0},"end":{"line":47,"column":68}},"22":{"start":{"line":50,"column":0},"end":{"line":53,"column":2}},"23":{"start":{"line":51,"column":2},"end":{"line":51,"column":66}},"24":{"start":{"line":52,"column":2},"end":{"line":52,"column":28}},"25":{"start":{"line":56,"column":0},"end":{"line":84,"column":2}},"26":{"start":{"line":58,"column":2},"end":{"line":58,"column":17}},"27":{"start":{"line":61,"column":2},"end":{"line":83,"column":4}},"28":{"start":{"line":64,"column":4},"end":{"line":64,"column":24}},"29":{"start":{"line":65,"column":4},"end":{"line":73,"column":5}},"30":{"start":{"line":66,"column":6},"end":{"line":71,"column":7}},"31":{"start":{"line":67,"column":8},"end":{"line":68,"column":76}},"32":{"start":{"line":69,"column":8},"end":{"line":69,"column":85}},"33":{"start":{"line":70,"column":8},"end":{"line":70,"column":15}},"34":{"start":{"line":72,"column":6},"end":{"line":72,"column":18}},"35":{"start":{"line":77,"column":4},"end":{"line":82,"column":5}},"36":{"start":{"line":78,"column":6},"end":{"line":78,"column":84}},"37":{"start":{"line":79,"column":6},"end":{"line":79,"column":25}},"38":{"start":{"line":80,"column":6},"end":{"line":80,"column":43}},"39":{"start":{"line":81,"column":6},"end":{"line":81,"column":41}},"40":{"start":{"line":119,"column":0},"end":{"line":141,"column":2}},"41":{"start":{"line":120,"column":2},"end":{"line":120,"column":54}},"42":{"start":{"line":121,"column":2},"end":{"line":129,"column":3}},"43":{"start":{"line":122,"column":4},"end":{"line":122,"column":22}},"44":{"start":{"line":123,"column":4},"end":{"line":123,"column":31}},"45":{"start":{"line":124,"column":4},"end":{"line":124,"column":34}},"46":{"start":{"line":126,"column":4},"end":{"line":126,"column":22}},"47":{"start":{"line":127,"column":4},"end":{"line":127,"column":32}},"48":{"start":{"line":128,"column":4},"end":{"line":128,"column":33}},"49":{"start":{"line":131,"column":2},"end":{"line":131,"column":49}},"50":{"start":{"line":132,"column":2},"end":{"line":132,"column":51}},"51":{"start":{"line":133,"column":2},"end":{"line":133,"column":65}},"52":{"start":{"line":134,"column":2},"end":{"line":134,"column":69}},"53":{"start":{"line":135,"column":2},"end":{"line":135,"column":74}},"54":{"start":{"line":137,"column":2},"end":{"line":137,"column":65}},"55":{"start":{"line":138,"column":2},"end":{"line":138,"column":69}},"56":{"start":{"line":140,"column":2},"end":{"line":140,"column":57}},"57":{"start":{"line":143,"column":0},"end":{"line":148,"column":2}},"58":{"start":{"line":144,"column":2},"end":{"line":144,"column":31}},"59":{"start":{"line":145,"column":2},"end":{"line":147,"column":3}},"60":{"start":{"line":146,"column":4},"end":{"line":146,"column":34}},"61":{"start":{"line":150,"column":0},"end":{"line":152,"column":2}},"62":{"start":{"line":151,"column":2},"end":{"line":151,"column":50}},"63":{"start":{"line":157,"column":0},"end":{"line":159,"column":2}},"64":{"start":{"line":158,"column":2},"end":{"line":158,"column":64}},"65":{"start":{"line":161,"column":0},"end":{"line":163,"column":2}},"66":{"start":{"line":162,"column":2},"end":{"line":162,"column":41}},"67":{"start":{"line":168,"column":0},"end":{"line":174,"column":2}},"68":{"start":{"line":169,"column":2},"end":{"line":169,"column":69}},"69":{"start":{"line":170,"column":2},"end":{"line":170,"column":73}},"70":{"start":{"line":171,"column":2},"end":{"line":171,"column":69}},"71":{"start":{"line":172,"column":2},"end":{"line":172,"column":73}},"72":{"start":{"line":173,"column":2},"end":{"line":173,"column":69}},"73":{"start":{"line":176,"column":0},"end":{"line":179,"column":2}},"74":{"start":{"line":177,"column":2},"end":{"line":177,"column":95}},"75":{"start":{"line":178,"column":2},"end":{"line":178,"column":20}},"76":{"start":{"line":181,"column":0},"end":{"line":183,"column":2}},"77":{"start":{"line":182,"column":2},"end":{"line":182,"column":32}}},"branchMap":{"1":{"line":19,"type":"binary-expr","locations":[{"start":{"line":19,"column":15},"end":{"line":19,"column":18}},{"start":{"line":19,"column":22},"end":{"line":19,"column":34}}]},"2":{"line":23,"type":"if","locations":[{"start":{"line":23,"column":2},"end":{"line":23,"column":2}},{"start":{"line":23,"column":2},"end":{"line":23,"column":2}}]},"3":{"line":25,"type":"if","locations":[{"start":{"line":25,"column":9},"end":{"line":25,"column":9}},{"start":{"line":25,"column":9},"end":{"line":25,"column":9}}]},"4":{"line":65,"type":"binary-expr","locations":[{"start":{"line":65,"column":10},"end":{"line":65,"column":40}},{"start":{"line":65,"column":44},"end":{"line":65,"column":76}}]},"5":{"line":66,"type":"if","locations":[{"start":{"line":66,"column":6},"end":{"line":66,"column":6}},{"start":{"line":66,"column":6},"end":{"line":66,"column":6}}]},"6":{"line":77,"type":"if","locations":[{"start":{"line":77,"column":4},"end":{"line":77,"column":4}},{"start":{"line":77,"column":4},"end":{"line":77,"column":4}}]},"7":{"line":121,"type":"if","locations":[{"start":{"line":121,"column":2},"end":{"line":121,"column":2}},{"start":{"line":121,"column":2},"end":{"line":121,"column":2}}]},"8":{"line":145,"type":"binary-expr","locations":[{"start":{"line":145,"column":9},"end":{"line":145,"column":19}},{"start":{"line":145,"column":24},"end":{"line":145,"column":55}}]}}},"/data/upstream/node-http2/lib/framer.js":{"path":"/data/upstream/node-http2/lib/framer.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":5,"8":5,"9":1,"10":1,"11":18,"12":18,"13":18,"14":18,"15":18,"16":18,"17":38,"18":38,"19":18,"20":1,"21":5,"22":5,"23":5,"24":1,"25":1,"26":41,"27":41,"28":41,"29":41,"30":23,"31":1,"32":25,"33":25,"34":25,"35":48,"36":48,"37":48,"38":48,"39":48,"40":18,"41":18,"42":48,"43":18,"44":18,"45":18,"46":0,"47":0,"48":18,"49":18,"50":0,"51":18,"52":25,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":28,"61":28,"62":28,"63":30,"64":28,"65":28,"66":28,"67":28,"68":28,"69":28,"70":29,"71":29,"72":29,"73":5,"74":28,"75":28,"76":28,"77":28,"78":1,"79":28,"80":28,"81":28,"82":28,"83":28,"84":28,"85":38,"86":28,"87":1,"88":1,"89":1,"90":1,"91":4,"92":1,"93":4,"94":1,"95":1,"96":1,"97":1,"98":6,"99":2,"100":2,"101":2,"102":2,"103":6,"104":1,"105":6,"106":2,"107":2,"108":4,"109":1,"110":1,"111":1,"112":1,"113":2,"114":2,"115":2,"116":1,"117":2,"118":1,"119":1,"120":1,"121":1,"122":2,"123":2,"124":2,"125":2,"126":2,"127":1,"128":2,"129":1,"130":1,"131":1,"132":1,"133":6,"134":6,"135":18,"136":12,"137":12,"138":12,"139":6,"140":6,"141":6,"142":12,"143":12,"144":6,"145":1,"146":6,"147":6,"148":0,"149":6,"150":12,"151":12,"152":12,"153":12,"154":0,"155":12,"156":1,"157":1,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":2,"165":2,"166":2,"167":2,"168":2,"169":1,"170":2,"171":2,"172":1,"173":1,"174":1,"175":1,"176":2,"177":2,"178":1,"179":2,"180":0,"181":2,"182":1,"183":1,"184":1,"185":1,"186":2,"187":2,"188":2,"189":2,"190":2,"191":2,"192":2,"193":1,"194":2,"195":2,"196":1,"197":1,"198":1,"199":1,"200":2,"201":2,"202":2,"203":2,"204":1,"205":2,"206":1,"207":1,"208":1,"209":0,"210":0,"211":0,"212":0,"213":0,"214":0,"215":0,"216":0,"217":0,"218":0,"219":0,"220":0,"221":0,"222":0,"223":0,"224":0,"225":0,"226":0,"227":1,"228":0},"b":{"1":[0,1],"2":[5,1],"3":[5,1],"4":[23,18],"5":[18,30],"6":[48,35],"7":[18,30],"8":[48,18],"9":[18,0],"10":[0,18],"11":[5,24],"12":[28,4],"13":[2,4],"14":[2,2],"15":[2,4],"16":[2,2],"17":[12,6],"18":[4,8],"19":[0,6],"20":[0,12],"21":[12,12],"22":[4,8],"23":[2,2],"24":[2,2],"25":[0,2],"26":[2,2],"27":[2,2],"28":[2,2],"29":[0,0],"30":[0,0],"31":[0,0],"32":[0,0],"33":[0,0],"34":[0,0]},"f":{"1":123,"2":5,"3":18,"4":5,"5":41,"6":25,"7":28,"8":28,"9":4,"10":4,"11":6,"12":6,"13":2,"14":2,"15":2,"16":2,"17":6,"18":18,"19":6,"20":2,"21":2,"22":2,"23":2,"24":2,"25":2,"26":2,"27":2,"28":0,"29":0,"30":0,"31":0},"fnMap":{"1":{"name":"noop","line":5,"loc":{"start":{"line":5,"column":60},"end":{"line":5,"column":76}}},"2":{"name":"Serializer","line":25,"loc":{"start":{"line":25,"column":0},"end":{"line":25,"column":25}}},"3":{"name":"_transform","line":34,"loc":{"start":{"line":34,"column":34},"end":{"line":34,"column":77}}},"4":{"name":"Deserializer","line":62,"loc":{"start":{"line":62,"column":0},"end":{"line":62,"column":27}}},"5":{"name":"(anonymous_5)","line":74,"loc":{"start":{"line":74,"column":31},"end":{"line":74,"column":46}}},"6":{"name":"_transform","line":85,"loc":{"start":{"line":85,"column":36},"end":{"line":85,"column":79}}},"7":{"name":"writeCommonHeader","line":189,"loc":{"start":{"line":189,"column":26},"end":{"line":189,"column":69}}},"8":{"name":"readCommonHeader","line":218,"loc":{"start":{"line":218,"column":28},"end":{"line":218,"column":69}}},"9":{"name":"writeData","line":263,"loc":{"start":{"line":263,"column":18},"end":{"line":263,"column":53}}},"10":{"name":"readData","line":267,"loc":{"start":{"line":267,"column":20},"end":{"line":267,"column":53}}},"11":{"name":"writeHeadersPriority","line":306,"loc":{"start":{"line":306,"column":21},"end":{"line":306,"column":67}}},"12":{"name":"readHeadersPriority","line":316,"loc":{"start":{"line":316,"column":23},"end":{"line":316,"column":67}}},"13":{"name":"writePriority","line":346,"loc":{"start":{"line":346,"column":22},"end":{"line":346,"column":61}}},"14":{"name":"readPriority","line":352,"loc":{"start":{"line":352,"column":24},"end":{"line":352,"column":61}}},"15":{"name":"writeRstStream","line":378,"loc":{"start":{"line":378,"column":24},"end":{"line":378,"column":64}}},"16":{"name":"readRstStream","line":386,"loc":{"start":{"line":386,"column":26},"end":{"line":386,"column":64}}},"17":{"name":"writeSettings","line":422,"loc":{"start":{"line":422,"column":22},"end":{"line":422,"column":61}}},"18":{"name":"(anonymous_18)","line":424,"loc":{"start":{"line":424,"column":26},"end":{"line":424,"column":48}}},"19":{"name":"readSettings","line":442,"loc":{"start":{"line":442,"column":24},"end":{"line":442,"column":61}}},"20":{"name":"writePushPromise","line":506,"loc":{"start":{"line":506,"column":26},"end":{"line":506,"column":68}}},"21":{"name":"readPushPromise","line":514,"loc":{"start":{"line":514,"column":28},"end":{"line":514,"column":68}}},"22":{"name":"writePing","line":538,"loc":{"start":{"line":538,"column":18},"end":{"line":538,"column":53}}},"23":{"name":"readPing","line":543,"loc":{"start":{"line":543,"column":20},"end":{"line":543,"column":53}}},"24":{"name":"writeGoaway","line":578,"loc":{"start":{"line":578,"column":20},"end":{"line":578,"column":57}}},"25":{"name":"readGoaway","line":591,"loc":{"start":{"line":591,"column":22},"end":{"line":591,"column":57}}},"26":{"name":"writeWindowUpdate","line":618,"loc":{"start":{"line":618,"column":27},"end":{"line":618,"column":70}}},"27":{"name":"readWindowUpdate","line":625,"loc":{"start":{"line":625,"column":29},"end":{"line":625,"column":70}}},"28":{"name":"(anonymous_28)","line":654,"loc":{"start":{"line":654,"column":28},"end":{"line":654,"column":44}}},"29":{"name":"(anonymous_29)","line":667,"loc":{"start":{"line":667,"column":71},"end":{"line":667,"column":86}}},"30":{"name":"(anonymous_30)","line":683,"loc":{"start":{"line":683,"column":57},"end":{"line":683,"column":72}}},"31":{"name":"(anonymous_31)","line":691,"loc":{"start":{"line":691,"column":27},"end":{"line":691,"column":42}}}},"statementMap":{"1":{"start":{"line":5,"column":0},"end":{"line":5,"column":79}},"2":{"start":{"line":6,"column":0},"end":{"line":6,"column":35}},"3":{"start":{"line":8,"column":0},"end":{"line":8,"column":44}},"4":{"start":{"line":10,"column":0},"end":{"line":10,"column":32}},"5":{"start":{"line":11,"column":0},"end":{"line":11,"column":36}},"6":{"start":{"line":25,"column":0},"end":{"line":28,"column":1}},"7":{"start":{"line":26,"column":2},"end":{"line":26,"column":71}},"8":{"start":{"line":27,"column":2},"end":{"line":27,"column":45}},"9":{"start":{"line":29,"column":0},"end":{"line":29,"column":98}},"10":{"start":{"line":34,"column":0},"end":{"line":49,"column":2}},"11":{"start":{"line":35,"column":2},"end":{"line":35,"column":54}},"12":{"start":{"line":37,"column":2},"end":{"line":37,"column":72}},"13":{"start":{"line":39,"column":2},"end":{"line":39,"column":19}},"14":{"start":{"line":40,"column":2},"end":{"line":40,"column":41}},"15":{"start":{"line":41,"column":2},"end":{"line":41,"column":42}},"16":{"start":{"line":43,"column":2},"end":{"line":46,"column":3}},"17":{"start":{"line":44,"column":4},"end":{"line":44,"column":59}},"18":{"start":{"line":45,"column":4},"end":{"line":45,"column":26}},"19":{"start":{"line":48,"column":2},"end":{"line":48,"column":9}},"20":{"start":{"line":62,"column":0},"end":{"line":66,"column":1}},"21":{"start":{"line":63,"column":2},"end":{"line":63,"column":73}},"22":{"start":{"line":64,"column":2},"end":{"line":64,"column":45}},"23":{"start":{"line":65,"column":2},"end":{"line":65,"column":33}},"24":{"start":{"line":67,"column":0},"end":{"line":67,"column":102}},"25":{"start":{"line":74,"column":0},"end":{"line":81,"column":2}},"26":{"start":{"line":75,"column":2},"end":{"line":75,"column":19}},"27":{"start":{"line":76,"column":2},"end":{"line":76,"column":34}},"28":{"start":{"line":77,"column":2},"end":{"line":77,"column":51}},"29":{"start":{"line":78,"column":2},"end":{"line":80,"column":3}},"30":{"start":{"line":79,"column":4},"end":{"line":79,"column":21}},"31":{"start":{"line":85,"column":0},"end":{"line":131,"column":2}},"32":{"start":{"line":86,"column":2},"end":{"line":86,"column":17}},"33":{"start":{"line":88,"column":2},"end":{"line":88,"column":52}},"34":{"start":{"line":90,"column":2},"end":{"line":128,"column":3}},"35":{"start":{"line":93,"column":4},"end":{"line":93,"column":85}},"36":{"start":{"line":94,"column":4},"end":{"line":94,"column":68}},"37":{"start":{"line":95,"column":4},"end":{"line":95,"column":27}},"38":{"start":{"line":96,"column":4},"end":{"line":96,"column":21}},"39":{"start":{"line":103,"column":4},"end":{"line":106,"column":5}},"40":{"start":{"line":104,"column":6},"end":{"line":104,"column":59}},"41":{"start":{"line":105,"column":6},"end":{"line":105,"column":37}},"42":{"start":{"line":113,"column":4},"end":{"line":127,"column":5}},"43":{"start":{"line":114,"column":6},"end":{"line":125,"column":7}},"44":{"start":{"line":115,"column":8},"end":{"line":115,"column":78}},"45":{"start":{"line":116,"column":8},"end":{"line":122,"column":9}},"46":{"start":{"line":117,"column":10},"end":{"line":117,"column":58}},"47":{"start":{"line":118,"column":10},"end":{"line":118,"column":47}},"48":{"start":{"line":120,"column":10},"end":{"line":120,"column":68}},"49":{"start":{"line":121,"column":10},"end":{"line":121,"column":33}},"50":{"start":{"line":124,"column":8},"end":{"line":124,"column":78}},"51":{"start":{"line":126,"column":6},"end":{"line":126,"column":37}},"52":{"start":{"line":130,"column":2},"end":{"line":130,"column":9}},"53":{"start":{"line":178,"column":0},"end":{"line":178,"column":27}},"54":{"start":{"line":179,"column":0},"end":{"line":179,"column":29}},"55":{"start":{"line":181,"column":0},"end":{"line":181,"column":20}},"56":{"start":{"line":183,"column":0},"end":{"line":183,"column":20}},"57":{"start":{"line":185,"column":0},"end":{"line":185,"column":62}},"58":{"start":{"line":187,"column":0},"end":{"line":187,"column":32}},"59":{"start":{"line":189,"column":0},"end":{"line":216,"column":2}},"60":{"start":{"line":190,"column":2},"end":{"line":190,"column":52}},"61":{"start":{"line":192,"column":2},"end":{"line":192,"column":15}},"62":{"start":{"line":193,"column":2},"end":{"line":195,"column":3}},"63":{"start":{"line":194,"column":4},"end":{"line":194,"column":30}},"64":{"start":{"line":196,"column":2},"end":{"line":196,"column":73}},"65":{"start":{"line":197,"column":2},"end":{"line":197,"column":38}},"66":{"start":{"line":199,"column":2},"end":{"line":199,"column":46}},"67":{"start":{"line":200,"column":2},"end":{"line":200,"column":37}},"68":{"start":{"line":202,"column":2},"end":{"line":202,"column":19}},"69":{"start":{"line":203,"column":2},"end":{"line":209,"column":3}},"70":{"start":{"line":204,"column":4},"end":{"line":204,"column":56}},"71":{"start":{"line":205,"column":4},"end":{"line":205,"column":87}},"72":{"start":{"line":206,"column":4},"end":{"line":208,"column":5}},"73":{"start":{"line":207,"column":6},"end":{"line":207,"column":34}},"74":{"start":{"line":210,"column":2},"end":{"line":210,"column":39}},"75":{"start":{"line":212,"column":2},"end":{"line":212,"column":76}},"76":{"start":{"line":213,"column":2},"end":{"line":213,"column":51}},"77":{"start":{"line":215,"column":2},"end":{"line":215,"column":32}},"78":{"start":{"line":218,"column":0},"end":{"line":231,"column":2}},"79":{"start":{"line":219,"column":2},"end":{"line":219,"column":40}},"80":{"start":{"line":221,"column":2},"end":{"line":221,"column":47}},"81":{"start":{"line":223,"column":2},"end":{"line":223,"column":19}},"82":{"start":{"line":224,"column":2},"end":{"line":224,"column":37}},"83":{"start":{"line":225,"column":2},"end":{"line":225,"column":44}},"84":{"start":{"line":226,"column":2},"end":{"line":228,"column":3}},"85":{"start":{"line":227,"column":4},"end":{"line":227,"column":64}},"86":{"start":{"line":230,"column":2},"end":{"line":230,"column":53}},"87":{"start":{"line":257,"column":0},"end":{"line":257,"column":25}},"88":{"start":{"line":259,"column":0},"end":{"line":259,"column":45}},"89":{"start":{"line":261,"column":0},"end":{"line":261,"column":39}},"90":{"start":{"line":263,"column":0},"end":{"line":265,"column":2}},"91":{"start":{"line":264,"column":2},"end":{"line":264,"column":27}},"92":{"start":{"line":267,"column":0},"end":{"line":269,"column":2}},"93":{"start":{"line":268,"column":2},"end":{"line":268,"column":22}},"94":{"start":{"line":290,"column":0},"end":{"line":290,"column":28}},"95":{"start":{"line":292,"column":0},"end":{"line":292,"column":75}},"96":{"start":{"line":294,"column":0},"end":{"line":294,"column":65}},"97":{"start":{"line":306,"column":0},"end":{"line":314,"column":2}},"98":{"start":{"line":307,"column":2},"end":{"line":312,"column":3}},"99":{"start":{"line":308,"column":4},"end":{"line":308,"column":31}},"100":{"start":{"line":309,"column":4},"end":{"line":309,"column":68}},"101":{"start":{"line":310,"column":4},"end":{"line":310,"column":44}},"102":{"start":{"line":311,"column":4},"end":{"line":311,"column":25}},"103":{"start":{"line":313,"column":2},"end":{"line":313,"column":27}},"104":{"start":{"line":316,"column":0},"end":{"line":323,"column":2}},"105":{"start":{"line":317,"column":2},"end":{"line":322,"column":3}},"106":{"start":{"line":318,"column":4},"end":{"line":318,"column":57}},"107":{"start":{"line":319,"column":4},"end":{"line":319,"column":33}},"108":{"start":{"line":321,"column":4},"end":{"line":321,"column":24}},"109":{"start":{"line":332,"column":0},"end":{"line":332,"column":29}},"110":{"start":{"line":334,"column":0},"end":{"line":334,"column":25}},"111":{"start":{"line":336,"column":0},"end":{"line":336,"column":47}},"112":{"start":{"line":346,"column":0},"end":{"line":350,"column":2}},"113":{"start":{"line":347,"column":2},"end":{"line":347,"column":29}},"114":{"start":{"line":348,"column":2},"end":{"line":348,"column":42}},"115":{"start":{"line":349,"column":2},"end":{"line":349,"column":23}},"116":{"start":{"line":352,"column":0},"end":{"line":354,"column":2}},"117":{"start":{"line":353,"column":2},"end":{"line":353,"column":42}},"118":{"start":{"line":363,"column":0},"end":{"line":363,"column":31}},"119":{"start":{"line":365,"column":0},"end":{"line":365,"column":27}},"120":{"start":{"line":367,"column":0},"end":{"line":367,"column":46}},"121":{"start":{"line":378,"column":0},"end":{"line":384,"column":2}},"122":{"start":{"line":379,"column":2},"end":{"line":379,"column":29}},"123":{"start":{"line":380,"column":2},"end":{"line":380,"column":45}},"124":{"start":{"line":381,"column":2},"end":{"line":381,"column":46}},"125":{"start":{"line":382,"column":2},"end":{"line":382,"column":32}},"126":{"start":{"line":383,"column":2},"end":{"line":383,"column":23}},"127":{"start":{"line":386,"column":0},"end":{"line":388,"column":2}},"128":{"start":{"line":387,"column":2},"end":{"line":387,"column":51}},"129":{"start":{"line":398,"column":0},"end":{"line":398,"column":29}},"130":{"start":{"line":400,"column":0},"end":{"line":400,"column":25}},"131":{"start":{"line":402,"column":0},"end":{"line":402,"column":47}},"132":{"start":{"line":422,"column":0},"end":{"line":440,"column":2}},"133":{"start":{"line":423,"column":2},"end":{"line":423,"column":64}},"134":{"start":{"line":424,"column":2},"end":{"line":430,"column":5}},"135":{"start":{"line":425,"column":4},"end":{"line":429,"column":5}},"136":{"start":{"line":426,"column":6},"end":{"line":426,"column":65}},"137":{"start":{"line":427,"column":6},"end":{"line":427,"column":47}},"138":{"start":{"line":428,"column":6},"end":{"line":428,"column":78}},"139":{"start":{"line":431,"column":2},"end":{"line":431,"column":84}},"140":{"start":{"line":433,"column":2},"end":{"line":433,"column":47}},"141":{"start":{"line":434,"column":2},"end":{"line":437,"column":3}},"142":{"start":{"line":435,"column":4},"end":{"line":435,"column":57}},"143":{"start":{"line":436,"column":4},"end":{"line":436,"column":53}},"144":{"start":{"line":439,"column":2},"end":{"line":439,"column":23}},"145":{"start":{"line":442,"column":0},"end":{"line":457,"column":2}},"146":{"start":{"line":443,"column":2},"end":{"line":443,"column":22}},"147":{"start":{"line":445,"column":2},"end":{"line":447,"column":3}},"148":{"start":{"line":446,"column":4},"end":{"line":446,"column":36}},"149":{"start":{"line":448,"column":2},"end":{"line":456,"column":3}},"150":{"start":{"line":449,"column":4},"end":{"line":449,"column":49}},"151":{"start":{"line":450,"column":4},"end":{"line":450,"column":38}},"152":{"start":{"line":451,"column":4},"end":{"line":451,"column":45}},"153":{"start":{"line":452,"column":4},"end":{"line":454,"column":5}},"154":{"start":{"line":453,"column":6},"end":{"line":453,"column":15}},"155":{"start":{"line":455,"column":4},"end":{"line":455,"column":79}},"156":{"start":{"line":460,"column":0},"end":{"line":460,"column":25}},"157":{"start":{"line":464,"column":0},"end":{"line":464,"column":78}},"158":{"start":{"line":468,"column":0},"end":{"line":468,"column":75}},"159":{"start":{"line":474,"column":0},"end":{"line":474,"column":76}},"160":{"start":{"line":488,"column":0},"end":{"line":488,"column":33}},"161":{"start":{"line":490,"column":0},"end":{"line":490,"column":47}},"162":{"start":{"line":492,"column":0},"end":{"line":492,"column":77}},"163":{"start":{"line":506,"column":0},"end":{"line":512,"column":2}},"164":{"start":{"line":507,"column":2},"end":{"line":507,"column":29}},"165":{"start":{"line":508,"column":2},"end":{"line":508,"column":80}},"166":{"start":{"line":509,"column":2},"end":{"line":509,"column":49}},"167":{"start":{"line":510,"column":2},"end":{"line":510,"column":23}},"168":{"start":{"line":511,"column":2},"end":{"line":511,"column":27}},"169":{"start":{"line":514,"column":0},"end":{"line":517,"column":2}},"170":{"start":{"line":515,"column":2},"end":{"line":515,"column":62}},"171":{"start":{"line":516,"column":2},"end":{"line":516,"column":31}},"172":{"start":{"line":530,"column":0},"end":{"line":530,"column":25}},"173":{"start":{"line":532,"column":0},"end":{"line":532,"column":27}},"174":{"start":{"line":534,"column":0},"end":{"line":534,"column":39}},"175":{"start":{"line":538,"column":0},"end":{"line":541,"column":2}},"176":{"start":{"line":539,"column":2},"end":{"line":539,"column":101}},"177":{"start":{"line":540,"column":2},"end":{"line":540,"column":27}},"178":{"start":{"line":543,"column":0},"end":{"line":548,"column":2}},"179":{"start":{"line":544,"column":2},"end":{"line":546,"column":3}},"180":{"start":{"line":545,"column":4},"end":{"line":545,"column":37}},"181":{"start":{"line":547,"column":2},"end":{"line":547,"column":22}},"182":{"start":{"line":557,"column":0},"end":{"line":557,"column":27}},"183":{"start":{"line":559,"column":0},"end":{"line":559,"column":23}},"184":{"start":{"line":561,"column":0},"end":{"line":561,"column":57}},"185":{"start":{"line":578,"column":0},"end":{"line":589,"column":2}},"186":{"start":{"line":579,"column":2},"end":{"line":579,"column":29}},"187":{"start":{"line":581,"column":2},"end":{"line":581,"column":72}},"188":{"start":{"line":582,"column":2},"end":{"line":582,"column":45}},"189":{"start":{"line":584,"column":2},"end":{"line":584,"column":45}},"190":{"start":{"line":585,"column":2},"end":{"line":585,"column":46}},"191":{"start":{"line":586,"column":2},"end":{"line":586,"column":32}},"192":{"start":{"line":588,"column":2},"end":{"line":588,"column":23}},"193":{"start":{"line":591,"column":0},"end":{"line":594,"column":2}},"194":{"start":{"line":592,"column":2},"end":{"line":592,"column":58}},"195":{"start":{"line":593,"column":2},"end":{"line":593,"column":51}},"196":{"start":{"line":607,"column":0},"end":{"line":607,"column":34}},"197":{"start":{"line":609,"column":0},"end":{"line":609,"column":48}},"198":{"start":{"line":611,"column":0},"end":{"line":611,"column":55}},"199":{"start":{"line":618,"column":0},"end":{"line":623,"column":2}},"200":{"start":{"line":619,"column":2},"end":{"line":619,"column":29}},"201":{"start":{"line":620,"column":2},"end":{"line":620,"column":72}},"202":{"start":{"line":621,"column":2},"end":{"line":621,"column":45}},"203":{"start":{"line":622,"column":2},"end":{"line":622,"column":23}},"204":{"start":{"line":625,"column":0},"end":{"line":627,"column":2}},"205":{"start":{"line":626,"column":2},"end":{"line":626,"column":58}},"206":{"start":{"line":632,"column":0},"end":{"line":643,"column":2}},"207":{"start":{"line":653,"column":0},"end":{"line":653,"column":21}},"208":{"start":{"line":654,"column":0},"end":{"line":688,"column":2}},"209":{"start":{"line":655,"column":2},"end":{"line":657,"column":3}},"210":{"start":{"line":656,"column":4},"end":{"line":656,"column":16}},"211":{"start":{"line":659,"column":2},"end":{"line":661,"column":3}},"212":{"start":{"line":660,"column":4},"end":{"line":660,"column":20}},"213":{"start":{"line":663,"column":2},"end":{"line":663,"column":26}},"214":{"start":{"line":664,"column":2},"end":{"line":664,"column":20}},"215":{"start":{"line":666,"column":2},"end":{"line":666,"column":34}},"216":{"start":{"line":667,"column":2},"end":{"line":669,"column":5}},"217":{"start":{"line":668,"column":4},"end":{"line":668,"column":33}},"218":{"start":{"line":671,"column":2},"end":{"line":681,"column":3}},"219":{"start":{"line":672,"column":4},"end":{"line":676,"column":5}},"220":{"start":{"line":673,"column":6},"end":{"line":673,"column":70}},"221":{"start":{"line":675,"column":6},"end":{"line":675,"column":49}},"222":{"start":{"line":678,"column":4},"end":{"line":680,"column":5}},"223":{"start":{"line":679,"column":6},"end":{"line":679,"column":42}},"224":{"start":{"line":683,"column":2},"end":{"line":685,"column":5}},"225":{"start":{"line":684,"column":4},"end":{"line":684,"column":38}},"226":{"start":{"line":687,"column":2},"end":{"line":687,"column":18}},"227":{"start":{"line":691,"column":0},"end":{"line":693,"column":2}},"228":{"start":{"line":692,"column":2},"end":{"line":692,"column":30}}},"branchMap":{"1":{"line":5,"type":"cond-expr","locations":[{"start":{"line":5,"column":40},"end":{"line":5,"column":57}},{"start":{"line":5,"column":60},"end":{"line":5,"column":78}}]},"2":{"line":26,"type":"binary-expr","locations":[{"start":{"line":26,"column":15},"end":{"line":26,"column":18}},{"start":{"line":26,"column":22},"end":{"line":26,"column":34}}]},"3":{"line":63,"type":"binary-expr","locations":[{"start":{"line":63,"column":15},"end":{"line":63,"column":18}},{"start":{"line":63,"column":22},"end":{"line":63,"column":34}}]},"4":{"line":78,"type":"if","locations":[{"start":{"line":78,"column":2},"end":{"line":78,"column":2}},{"start":{"line":78,"column":2},"end":{"line":78,"column":2}}]},"5":{"line":103,"type":"if","locations":[{"start":{"line":103,"column":4},"end":{"line":103,"column":4}},{"start":{"line":103,"column":4},"end":{"line":103,"column":4}}]},"6":{"line":103,"type":"binary-expr","locations":[{"start":{"line":103,"column":9},"end":{"line":103,"column":45}},{"start":{"line":103,"column":50},"end":{"line":103,"column":72}}]},"7":{"line":113,"type":"if","locations":[{"start":{"line":113,"column":4},"end":{"line":113,"column":4}},{"start":{"line":113,"column":4},"end":{"line":113,"column":4}}]},"8":{"line":113,"type":"binary-expr","locations":[{"start":{"line":113,"column":9},"end":{"line":113,"column":45}},{"start":{"line":113,"column":50},"end":{"line":113,"column":73}}]},"9":{"line":114,"type":"if","locations":[{"start":{"line":114,"column":6},"end":{"line":114,"column":6}},{"start":{"line":114,"column":6},"end":{"line":114,"column":6}}]},"10":{"line":116,"type":"if","locations":[{"start":{"line":116,"column":8},"end":{"line":116,"column":8}},{"start":{"line":116,"column":8},"end":{"line":116,"column":8}}]},"11":{"line":206,"type":"if","locations":[{"start":{"line":206,"column":4},"end":{"line":206,"column":4}},{"start":{"line":206,"column":4},"end":{"line":206,"column":4}}]},"12":{"line":213,"type":"binary-expr","locations":[{"start":{"line":213,"column":29},"end":{"line":213,"column":41}},{"start":{"line":213,"column":45},"end":{"line":213,"column":46}}]},"13":{"line":307,"type":"if","locations":[{"start":{"line":307,"column":2},"end":{"line":307,"column":2}},{"start":{"line":307,"column":2},"end":{"line":307,"column":2}}]},"14":{"line":309,"type":"binary-expr","locations":[{"start":{"line":309,"column":12},"end":{"line":309,"column":31}},{"start":{"line":309,"column":37},"end":{"line":309,"column":65}}]},"15":{"line":317,"type":"if","locations":[{"start":{"line":317,"column":2},"end":{"line":317,"column":2}},{"start":{"line":317,"column":2},"end":{"line":317,"column":2}}]},"16":{"line":381,"type":"binary-expr","locations":[{"start":{"line":381,"column":10},"end":{"line":381,"column":19}},{"start":{"line":381,"column":25},"end":{"line":381,"column":43}}]},"17":{"line":425,"type":"if","locations":[{"start":{"line":425,"column":4},"end":{"line":425,"column":4}},{"start":{"line":425,"column":4},"end":{"line":425,"column":4}}]},"18":{"line":428,"type":"cond-expr","locations":[{"start":{"line":428,"column":52},"end":{"line":428,"column":66}},{"start":{"line":428,"column":69},"end":{"line":428,"column":74}}]},"19":{"line":445,"type":"if","locations":[{"start":{"line":445,"column":2},"end":{"line":445,"column":2}},{"start":{"line":445,"column":2},"end":{"line":445,"column":2}}]},"20":{"line":452,"type":"if","locations":[{"start":{"line":452,"column":4},"end":{"line":452,"column":4}},{"start":{"line":452,"column":4},"end":{"line":452,"column":4}}]},"21":{"line":452,"type":"binary-expr","locations":[{"start":{"line":452,"column":8},"end":{"line":452,"column":16}},{"start":{"line":452,"column":21},"end":{"line":452,"column":51}}]},"22":{"line":455,"type":"cond-expr","locations":[{"start":{"line":455,"column":50},"end":{"line":455,"column":70}},{"start":{"line":455,"column":73},"end":{"line":455,"column":78}}]},"23":{"line":508,"type":"binary-expr","locations":[{"start":{"line":508,"column":10},"end":{"line":508,"column":36}},{"start":{"line":508,"column":42},"end":{"line":508,"column":77}}]},"24":{"line":539,"type":"binary-expr","locations":[{"start":{"line":539,"column":10},"end":{"line":539,"column":25}},{"start":{"line":539,"column":31},"end":{"line":539,"column":54}}]},"25":{"line":544,"type":"if","locations":[{"start":{"line":544,"column":2},"end":{"line":544,"column":2}},{"start":{"line":544,"column":2},"end":{"line":544,"column":2}}]},"26":{"line":581,"type":"binary-expr","locations":[{"start":{"line":581,"column":10},"end":{"line":581,"column":32}},{"start":{"line":581,"column":38},"end":{"line":581,"column":69}}]},"27":{"line":585,"type":"binary-expr","locations":[{"start":{"line":585,"column":10},"end":{"line":585,"column":19}},{"start":{"line":585,"column":25},"end":{"line":585,"column":43}}]},"28":{"line":620,"type":"binary-expr","locations":[{"start":{"line":620,"column":10},"end":{"line":620,"column":32}},{"start":{"line":620,"column":38},"end":{"line":620,"column":69}}]},"29":{"line":655,"type":"if","locations":[{"start":{"line":655,"column":2},"end":{"line":655,"column":2}},{"start":{"line":655,"column":2},"end":{"line":655,"column":2}}]},"30":{"line":659,"type":"if","locations":[{"start":{"line":659,"column":2},"end":{"line":659,"column":2}},{"start":{"line":659,"column":2},"end":{"line":659,"column":2}}]},"31":{"line":671,"type":"if","locations":[{"start":{"line":671,"column":2},"end":{"line":671,"column":2}},{"start":{"line":671,"column":2},"end":{"line":671,"column":2}}]},"32":{"line":672,"type":"if","locations":[{"start":{"line":672,"column":4},"end":{"line":672,"column":4}},{"start":{"line":672,"column":4},"end":{"line":672,"column":4}}]},"33":{"line":678,"type":"if","locations":[{"start":{"line":678,"column":4},"end":{"line":678,"column":4}},{"start":{"line":678,"column":4},"end":{"line":678,"column":4}}]},"34":{"line":683,"type":"binary-expr","locations":[{"start":{"line":683,"column":31},"end":{"line":683,"column":42}},{"start":{"line":683,"column":46},"end":{"line":683,"column":48}}]}}},"/data/upstream/node-http2/lib/http.js":{"path":"/data/upstream/node-http2/lib/http.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":2,"19":2,"20":2,"21":2,"22":2,"23":2,"24":2,"25":2,"26":1,"27":1,"28":1,"29":2,"30":2,"31":2,"32":2,"33":2,"34":1,"35":1,"36":1,"37":1,"38":0,"39":1,"40":2,"41":1,"42":1,"43":1,"44":0,"45":0,"46":0,"47":1,"48":0,"49":0,"50":0,"51":1,"52":0,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":0,"75":1,"76":0,"77":0,"78":0,"79":0,"80":0,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":0,"96":0,"97":0,"98":0,"99":1,"100":1,"101":1,"102":1,"103":0,"104":0,"105":1,"106":1,"107":0,"108":0,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"119":1,"120":4,"121":4,"122":0,"123":0,"124":0,"125":4,"126":4,"127":1,"128":1,"129":7,"130":7,"131":0,"132":0,"133":0,"134":1,"135":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":0,"148":1,"149":1,"150":1,"151":0,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":2,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":0,"171":0,"172":0,"173":0,"174":0,"175":0,"176":0,"177":0,"178":0,"179":0,"180":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"189":1,"190":1,"191":1,"192":1,"193":1,"194":1,"195":1,"196":1,"197":1,"198":1,"199":1,"200":1,"201":1,"202":1,"203":1,"204":0,"205":0,"206":1,"207":1,"208":1,"209":1,"210":1,"211":0,"212":0,"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":0,"220":1,"221":1,"222":1,"223":1,"224":1,"225":1,"226":1,"227":1,"228":1,"229":1,"230":1,"231":1,"232":0,"233":1,"234":1,"235":1,"236":1,"237":0,"238":1,"239":1,"240":1,"241":1,"242":1,"243":1,"244":1,"245":1,"246":1,"247":1,"248":1,"249":1,"250":1,"251":1,"252":1,"253":1,"254":0,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"266":1,"267":1,"268":1,"269":1,"270":0,"271":1,"272":1,"273":1,"274":1,"275":1,"276":1,"277":1,"278":1,"279":1,"280":1,"281":1,"282":0,"283":0,"284":0,"285":0,"286":0,"287":1,"288":0,"289":0,"290":1,"291":0,"292":0,"293":1,"294":0,"295":0,"296":1,"297":1,"298":1,"299":1,"300":1,"301":1,"302":1,"303":1,"304":0,"305":0,"306":0,"307":1,"308":1,"309":1,"310":1,"311":1,"312":0,"313":0,"314":0,"315":0,"316":1,"317":0,"318":0,"319":0,"320":0,"321":0,"322":0,"323":0,"324":0,"325":1,"326":1,"327":0},"b":{"1":[1,0],"2":[1,1],"3":[0,0],"4":[0,0],"5":[1,0],"6":[1,1],"7":[1,0],"8":[1,1,0],"9":[1,0],"10":[0,0],"11":[0,1],"12":[0,1],"13":[1,0],"14":[0,4],"15":[4,4],"16":[0,7],"17":[0,1],"18":[1,1],"19":[1,0],"20":[1,1],"21":[1,1],"22":[0,0],"23":[0,0],"24":[0,0],"25":[0,0],"26":[0,0],"27":[0,0,0],"28":[1,1],"29":[1,1],"30":[1,0],"31":[1,1],"32":[1,0],"33":[1,0,0],"34":[1,0],"35":[1,0],"36":[0,1],"37":[1,0],"38":[0,1],"39":[0,1],"40":[1,0],"41":[1,0],"42":[1,0],"43":[1,0],"44":[1,0],"45":[1,1],"46":[0,0],"47":[0,0],"48":[0,0],"49":[0,1],"50":[1,1],"51":[0,0]},"f":{"1":2,"2":0,"3":2,"4":1,"5":2,"6":0,"7":0,"8":0,"9":0,"10":1,"11":1,"12":1,"13":1,"14":0,"15":1,"16":0,"17":1,"18":1,"19":1,"20":1,"21":1,"22":2,"23":1,"24":1,"25":1,"26":0,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":0,"35":1,"36":1,"37":1,"38":0,"39":0,"40":0,"41":0,"42":1,"43":1,"44":0,"45":0,"46":0,"47":0},"fnMap":{"1":{"name":"IncomingMessage","line":131,"loc":{"start":{"line":131,"column":0},"end":{"line":131,"column":38}}},"2":{"name":"noop","line":150,"loc":{"start":{"line":150,"column":39},"end":{"line":150,"column":55}}},"3":{"name":"OutgoingMessage","line":155,"loc":{"start":{"line":155,"column":0},"end":{"line":155,"column":30}}},"4":{"name":"_write","line":167,"loc":{"start":{"line":167,"column":35},"end":{"line":167,"column":78}}},"5":{"name":"_finish","line":175,"loc":{"start":{"line":175,"column":36},"end":{"line":175,"column":55}}},"6":{"name":"setHeader","line":183,"loc":{"start":{"line":183,"column":38},"end":{"line":183,"column":70}}},"7":{"name":"removeHeader","line":191,"loc":{"start":{"line":191,"column":41},"end":{"line":191,"column":69}}},"8":{"name":"getHeader","line":199,"loc":{"start":{"line":199,"column":38},"end":{"line":199,"column":63}}},"9":{"name":"noop","line":203,"loc":{"start":{"line":203,"column":39},"end":{"line":203,"column":55}}},"10":{"name":"Server","line":217,"loc":{"start":{"line":217,"column":0},"end":{"line":217,"column":25}}},"11":{"name":"(anonymous_11)","line":233,"loc":{"start":{"line":233,"column":40},"end":{"line":233,"column":57}}},"12":{"name":"_start","line":260,"loc":{"start":{"line":260,"column":26},"end":{"line":260,"column":50}}},"13":{"name":"_onStream","line":269,"loc":{"start":{"line":269,"column":24},"end":{"line":269,"column":51}}},"14":{"name":"_fallback","line":279,"loc":{"start":{"line":279,"column":29},"end":{"line":279,"column":56}}},"15":{"name":"listen","line":293,"loc":{"start":{"line":293,"column":26},"end":{"line":293,"column":58}}},"16":{"name":"close","line":299,"loc":{"start":{"line":299,"column":25},"end":{"line":299,"column":50}}},"17":{"name":"createServer","line":304,"loc":{"start":{"line":304,"column":0},"end":{"line":304,"column":48}}},"18":{"name":"IncomingRequest","line":322,"loc":{"start":{"line":322,"column":0},"end":{"line":322,"column":38}}},"19":{"name":"_onHeaders","line":328,"loc":{"start":{"line":328,"column":39},"end":{"line":328,"column":68}}},"20":{"name":"OutgoingResponse","line":394,"loc":{"start":{"line":394,"column":0},"end":{"line":394,"column":49}}},"21":{"name":"writeHead","line":406,"loc":{"start":{"line":406,"column":39},"end":{"line":406,"column":93}}},"22":{"name":"_implicitHeaders","line":432,"loc":{"start":{"line":432,"column":46},"end":{"line":432,"column":74}}},"23":{"name":"write","line":438,"loc":{"start":{"line":438,"column":35},"end":{"line":438,"column":52}}},"24":{"name":"end","line":443,"loc":{"start":{"line":443,"column":33},"end":{"line":443,"column":48}}},"25":{"name":"_onRequestHeaders","line":448,"loc":{"start":{"line":448,"column":47},"end":{"line":448,"column":83}}},"26":{"name":"push","line":452,"loc":{"start":{"line":452,"column":34},"end":{"line":452,"column":57}}},"27":{"name":"Agent","line":493,"loc":{"start":{"line":493,"column":0},"end":{"line":493,"column":24}}},"28":{"name":"request","line":512,"loc":{"start":{"line":512,"column":26},"end":{"line":512,"column":62}}},"29":{"name":"(anonymous_29)","line":552,"loc":{"start":{"line":552,"column":30},"end":{"line":552,"column":47}}},"30":{"name":"negotiated","line":560,"loc":{"start":{"line":560,"column":21},"end":{"line":560,"column":43}}},"31":{"name":"(anonymous_31)","line":577,"loc":{"start":{"line":577,"column":19},"end":{"line":577,"column":38}}},"32":{"name":"get","line":590,"loc":{"start":{"line":590,"column":22},"end":{"line":590,"column":54}}},"33":{"name":"unbundleSocket","line":596,"loc":{"start":{"line":596,"column":0},"end":{"line":596,"column":32}}},"34":{"name":"request","line":609,"loc":{"start":{"line":609,"column":0},"end":{"line":609,"column":36}}},"35":{"name":"get","line":613,"loc":{"start":{"line":613,"column":0},"end":{"line":613,"column":32}}},"36":{"name":"OutgoingRequest","line":620,"loc":{"start":{"line":620,"column":0},"end":{"line":620,"column":30}}},"37":{"name":"_start","line":630,"loc":{"start":{"line":630,"column":35},"end":{"line":630,"column":68}}},"38":{"name":"_fallback","line":656,"loc":{"start":{"line":656,"column":38},"end":{"line":656,"column":66}}},"39":{"name":"setNoDelay","line":667,"loc":{"start":{"line":667,"column":39},"end":{"line":667,"column":68}}},"40":{"name":"setSocketKeepAlive","line":673,"loc":{"start":{"line":673,"column":47},"end":{"line":673,"column":97}}},"41":{"name":"setTimeout","line":679,"loc":{"start":{"line":679,"column":39},"end":{"line":679,"column":78}}},"42":{"name":"IncomingResponse","line":689,"loc":{"start":{"line":689,"column":0},"end":{"line":689,"column":39}}},"43":{"name":"_onHeaders","line":696,"loc":{"start":{"line":696,"column":40},"end":{"line":696,"column":69}}},"44":{"name":"_onPromise","line":722,"loc":{"start":{"line":722,"column":40},"end":{"line":722,"column":77}}},"45":{"name":"IncomingPromise","line":735,"loc":{"start":{"line":735,"column":0},"end":{"line":735,"column":62}}},"46":{"name":"noop","line":737,"loc":{"start":{"line":737,"column":17},"end":{"line":737,"column":33}}},"47":{"name":"cancel","line":751,"loc":{"start":{"line":751,"column":35},"end":{"line":751,"column":53}}}},"statementMap":{"1":{"start":{"line":102,"column":0},"end":{"line":102,"column":25}},"2":{"start":{"line":103,"column":0},"end":{"line":103,"column":25}},"3":{"start":{"line":104,"column":0},"end":{"line":104,"column":27}},"4":{"start":{"line":105,"column":0},"end":{"line":105,"column":50}},"5":{"start":{"line":106,"column":0},"end":{"line":106,"column":48}},"6":{"start":{"line":107,"column":0},"end":{"line":107,"column":42}},"7":{"start":{"line":108,"column":0},"end":{"line":108,"column":42}},"8":{"start":{"line":109,"column":0},"end":{"line":109,"column":46}},"9":{"start":{"line":110,"column":0},"end":{"line":110,"column":35}},"10":{"start":{"line":111,"column":0},"end":{"line":111,"column":27}},"11":{"start":{"line":112,"column":0},"end":{"line":112,"column":29}},"12":{"start":{"line":114,"column":0},"end":{"line":114,"column":41}},"13":{"start":{"line":115,"column":0},"end":{"line":115,"column":42}},"14":{"start":{"line":116,"column":0},"end":{"line":116,"column":42}},"15":{"start":{"line":120,"column":0},"end":{"line":120,"column":45}},"16":{"start":{"line":124,"column":0},"end":{"line":126,"column":2}},"17":{"start":{"line":131,"column":0},"end":{"line":147,"column":1}},"18":{"start":{"line":133,"column":2},"end":{"line":133,"column":25}},"19":{"start":{"line":134,"column":2},"end":{"line":134,"column":20}},"20":{"start":{"line":135,"column":2},"end":{"line":135,"column":23}},"21":{"start":{"line":137,"column":2},"end":{"line":137,"column":18}},"22":{"start":{"line":141,"column":2},"end":{"line":141,"column":27}},"23":{"start":{"line":142,"column":2},"end":{"line":142,"column":28}},"24":{"start":{"line":143,"column":2},"end":{"line":143,"column":28}},"25":{"start":{"line":146,"column":2},"end":{"line":146,"column":53}},"26":{"start":{"line":148,"column":0},"end":{"line":148,"column":110}},"27":{"start":{"line":150,"column":0},"end":{"line":150,"column":58}},"28":{"start":{"line":155,"column":0},"end":{"line":164,"column":1}},"29":{"start":{"line":157,"column":2},"end":{"line":157,"column":22}},"30":{"start":{"line":159,"column":2},"end":{"line":159,"column":18}},"31":{"start":{"line":160,"column":2},"end":{"line":160,"column":21}},"32":{"start":{"line":161,"column":2},"end":{"line":161,"column":27}},"33":{"start":{"line":163,"column":2},"end":{"line":163,"column":45}},"34":{"start":{"line":165,"column":0},"end":{"line":165,"column":107}},"35":{"start":{"line":167,"column":0},"end":{"line":173,"column":2}},"36":{"start":{"line":168,"column":2},"end":{"line":172,"column":3}},"37":{"start":{"line":169,"column":4},"end":{"line":169,"column":49}},"38":{"start":{"line":171,"column":4},"end":{"line":171,"column":75}},"39":{"start":{"line":175,"column":0},"end":{"line":181,"column":2}},"40":{"start":{"line":176,"column":2},"end":{"line":180,"column":3}},"41":{"start":{"line":177,"column":4},"end":{"line":177,"column":22}},"42":{"start":{"line":179,"column":4},"end":{"line":179,"column":49}},"43":{"start":{"line":183,"column":0},"end":{"line":189,"column":2}},"44":{"start":{"line":184,"column":2},"end":{"line":188,"column":3}},"45":{"start":{"line":185,"column":4},"end":{"line":185,"column":63}},"46":{"start":{"line":187,"column":4},"end":{"line":187,"column":46}},"47":{"start":{"line":191,"column":0},"end":{"line":197,"column":2}},"48":{"start":{"line":192,"column":2},"end":{"line":196,"column":3}},"49":{"start":{"line":193,"column":4},"end":{"line":193,"column":66}},"50":{"start":{"line":195,"column":4},"end":{"line":195,"column":45}},"51":{"start":{"line":199,"column":0},"end":{"line":201,"column":2}},"52":{"start":{"line":200,"column":2},"end":{"line":200,"column":43}},"53":{"start":{"line":203,"column":0},"end":{"line":203,"column":58}},"54":{"start":{"line":208,"column":0},"end":{"line":208,"column":36}},"55":{"start":{"line":209,"column":0},"end":{"line":209,"column":24}},"56":{"start":{"line":210,"column":0},"end":{"line":210,"column":42}},"57":{"start":{"line":211,"column":0},"end":{"line":211,"column":44}},"58":{"start":{"line":212,"column":0},"end":{"line":212,"column":42}},"59":{"start":{"line":217,"column":0},"end":{"line":256,"column":1}},"60":{"start":{"line":218,"column":2},"end":{"line":218,"column":26}},"61":{"start":{"line":220,"column":2},"end":{"line":220,"column":73}},"62":{"start":{"line":221,"column":2},"end":{"line":221,"column":36}},"63":{"start":{"line":223,"column":2},"end":{"line":223,"column":37}},"64":{"start":{"line":224,"column":2},"end":{"line":224,"column":43}},"65":{"start":{"line":227,"column":2},"end":{"line":253,"column":3}},"66":{"start":{"line":228,"column":4},"end":{"line":228,"column":58}},"67":{"start":{"line":229,"column":4},"end":{"line":229,"column":72}},"68":{"start":{"line":230,"column":4},"end":{"line":230,"column":47}},"69":{"start":{"line":231,"column":4},"end":{"line":231,"column":79}},"70":{"start":{"line":232,"column":4},"end":{"line":232,"column":56}},"71":{"start":{"line":233,"column":4},"end":{"line":239,"column":7}},"72":{"start":{"line":234,"column":6},"end":{"line":238,"column":7}},"73":{"start":{"line":235,"column":8},"end":{"line":235,"column":22}},"74":{"start":{"line":237,"column":8},"end":{"line":237,"column":25}},"75":{"start":{"line":240,"column":4},"end":{"line":240,"column":64}},"76":{"start":{"line":244,"column":7},"end":{"line":253,"column":3}},"77":{"start":{"line":245,"column":4},"end":{"line":245,"column":60}},"78":{"start":{"line":246,"column":4},"end":{"line":246,"column":43}},"79":{"start":{"line":251,"column":4},"end":{"line":251,"column":81}},"80":{"start":{"line":252,"column":4},"end":{"line":252,"column":95}},"81":{"start":{"line":255,"column":2},"end":{"line":255,"column":58}},"82":{"start":{"line":257,"column":0},"end":{"line":257,"column":93}},"83":{"start":{"line":260,"column":0},"end":{"line":277,"column":2}},"84":{"start":{"line":261,"column":2},"end":{"line":261,"column":92}},"85":{"start":{"line":262,"column":2},"end":{"line":262,"column":44}},"86":{"start":{"line":264,"column":2},"end":{"line":264,"column":64}},"87":{"start":{"line":266,"column":2},"end":{"line":266,"column":39}},"88":{"start":{"line":268,"column":2},"end":{"line":268,"column":18}},"89":{"start":{"line":269,"column":2},"end":{"line":274,"column":5}},"90":{"start":{"line":270,"column":4},"end":{"line":270,"column":66}},"91":{"start":{"line":271,"column":4},"end":{"line":271,"column":54}},"92":{"start":{"line":273,"column":4},"end":{"line":273,"column":78}},"93":{"start":{"line":276,"column":2},"end":{"line":276,"column":44}},"94":{"start":{"line":279,"column":0},"end":{"line":288,"column":2}},"95":{"start":{"line":280,"column":2},"end":{"line":281,"column":49}},"96":{"start":{"line":283,"column":2},"end":{"line":285,"column":3}},"97":{"start":{"line":284,"column":4},"end":{"line":284,"column":64}},"98":{"start":{"line":287,"column":2},"end":{"line":287,"column":34}},"99":{"start":{"line":293,"column":0},"end":{"line":297,"column":2}},"100":{"start":{"line":294,"column":2},"end":{"line":295,"column":55}},"101":{"start":{"line":296,"column":2},"end":{"line":296,"column":53}},"102":{"start":{"line":299,"column":0},"end":{"line":302,"column":2}},"103":{"start":{"line":300,"column":2},"end":{"line":300,"column":35}},"104":{"start":{"line":301,"column":2},"end":{"line":301,"column":31}},"105":{"start":{"line":304,"column":0},"end":{"line":317,"column":1}},"106":{"start":{"line":305,"column":2},"end":{"line":308,"column":3}},"107":{"start":{"line":306,"column":4},"end":{"line":306,"column":30}},"108":{"start":{"line":307,"column":4},"end":{"line":307,"column":24}},"109":{"start":{"line":310,"column":2},"end":{"line":310,"column":35}},"110":{"start":{"line":312,"column":2},"end":{"line":314,"column":3}},"111":{"start":{"line":313,"column":4},"end":{"line":313,"column":42}},"112":{"start":{"line":316,"column":2},"end":{"line":316,"column":16}},"113":{"start":{"line":322,"column":0},"end":{"line":324,"column":1}},"114":{"start":{"line":323,"column":2},"end":{"line":323,"column":42}},"115":{"start":{"line":325,"column":0},"end":{"line":325,"column":114}},"116":{"start":{"line":328,"column":0},"end":{"line":389,"column":2}},"117":{"start":{"line":332,"column":2},"end":{"line":332,"column":25}},"118":{"start":{"line":344,"column":2},"end":{"line":349,"column":4}},"119":{"start":{"line":350,"column":2},"end":{"line":359,"column":3}},"120":{"start":{"line":351,"column":4},"end":{"line":351,"column":43}},"121":{"start":{"line":352,"column":4},"end":{"line":356,"column":5}},"122":{"start":{"line":353,"column":6},"end":{"line":353,"column":88}},"123":{"start":{"line":354,"column":6},"end":{"line":354,"column":50}},"124":{"start":{"line":355,"column":6},"end":{"line":355,"column":13}},"125":{"start":{"line":357,"column":4},"end":{"line":357,"column":27}},"126":{"start":{"line":358,"column":4},"end":{"line":358,"column":38}},"127":{"start":{"line":364,"column":2},"end":{"line":372,"column":4}},"128":{"start":{"line":373,"column":2},"end":{"line":380,"column":3}},"129":{"start":{"line":374,"column":4},"end":{"line":374,"column":35}},"130":{"start":{"line":375,"column":4},"end":{"line":379,"column":5}},"131":{"start":{"line":376,"column":6},"end":{"line":376,"column":84}},"132":{"start":{"line":377,"column":6},"end":{"line":377,"column":50}},"133":{"start":{"line":378,"column":6},"end":{"line":378,"column":13}},"134":{"start":{"line":383,"column":2},"end":{"line":383,"column":27}},"135":{"start":{"line":386,"column":2},"end":{"line":387,"column":59}},"136":{"start":{"line":388,"column":2},"end":{"line":388,"column":21}},"137":{"start":{"line":394,"column":0},"end":{"line":403,"column":1}},"138":{"start":{"line":395,"column":2},"end":{"line":395,"column":34}},"139":{"start":{"line":397,"column":2},"end":{"line":397,"column":27}},"140":{"start":{"line":398,"column":2},"end":{"line":398,"column":23}},"141":{"start":{"line":399,"column":2},"end":{"line":399,"column":30}},"142":{"start":{"line":400,"column":2},"end":{"line":400,"column":23}},"143":{"start":{"line":402,"column":2},"end":{"line":402,"column":65}},"144":{"start":{"line":404,"column":0},"end":{"line":404,"column":116}},"145":{"start":{"line":406,"column":0},"end":{"line":430,"column":2}},"146":{"start":{"line":407,"column":2},"end":{"line":411,"column":3}},"147":{"start":{"line":408,"column":4},"end":{"line":408,"column":93}},"148":{"start":{"line":410,"column":4},"end":{"line":410,"column":27}},"149":{"start":{"line":413,"column":2},"end":{"line":413,"column":26}},"150":{"start":{"line":415,"column":2},"end":{"line":417,"column":3}},"151":{"start":{"line":416,"column":4},"end":{"line":416,"column":54}},"152":{"start":{"line":419,"column":2},"end":{"line":421,"column":3}},"153":{"start":{"line":420,"column":4},"end":{"line":420,"column":52}},"154":{"start":{"line":423,"column":2},"end":{"line":423,"column":92}},"155":{"start":{"line":425,"column":2},"end":{"line":425,"column":58}},"156":{"start":{"line":427,"column":2},"end":{"line":427,"column":37}},"157":{"start":{"line":429,"column":2},"end":{"line":429,"column":26}},"158":{"start":{"line":432,"column":0},"end":{"line":436,"column":2}},"159":{"start":{"line":433,"column":2},"end":{"line":435,"column":3}},"160":{"start":{"line":434,"column":4},"end":{"line":434,"column":36}},"161":{"start":{"line":438,"column":0},"end":{"line":441,"column":2}},"162":{"start":{"line":439,"column":2},"end":{"line":439,"column":26}},"163":{"start":{"line":440,"column":2},"end":{"line":440,"column":64}},"164":{"start":{"line":443,"column":0},"end":{"line":446,"column":2}},"165":{"start":{"line":444,"column":2},"end":{"line":444,"column":26}},"166":{"start":{"line":445,"column":2},"end":{"line":445,"column":62}},"167":{"start":{"line":448,"column":0},"end":{"line":450,"column":2}},"168":{"start":{"line":449,"column":2},"end":{"line":449,"column":33}},"169":{"start":{"line":452,"column":0},"end":{"line":477,"column":2}},"170":{"start":{"line":453,"column":2},"end":{"line":456,"column":3}},"171":{"start":{"line":454,"column":4},"end":{"line":455,"column":40}},"172":{"start":{"line":458,"column":2},"end":{"line":460,"column":3}},"173":{"start":{"line":459,"column":4},"end":{"line":459,"column":33}},"174":{"start":{"line":462,"column":2},"end":{"line":464,"column":3}},"175":{"start":{"line":463,"column":4},"end":{"line":463,"column":51}},"176":{"start":{"line":466,"column":2},"end":{"line":471,"column":22}},"177":{"start":{"line":473,"column":2},"end":{"line":473,"column":48}},"178":{"start":{"line":474,"column":2},"end":{"line":474,"column":50}},"179":{"start":{"line":476,"column":2},"end":{"line":476,"column":68}},"180":{"start":{"line":482,"column":0},"end":{"line":482,"column":26}},"181":{"start":{"line":483,"column":0},"end":{"line":483,"column":18}},"182":{"start":{"line":484,"column":0},"end":{"line":484,"column":22}},"183":{"start":{"line":485,"column":0},"end":{"line":485,"column":40}},"184":{"start":{"line":486,"column":0},"end":{"line":486,"column":42}},"185":{"start":{"line":487,"column":0},"end":{"line":487,"column":44}},"186":{"start":{"line":488,"column":0},"end":{"line":488,"column":32}},"187":{"start":{"line":493,"column":0},"end":{"line":509,"column":1}},"188":{"start":{"line":494,"column":2},"end":{"line":494,"column":26}},"189":{"start":{"line":496,"column":2},"end":{"line":496,"column":26}},"190":{"start":{"line":498,"column":2},"end":{"line":498,"column":36}},"191":{"start":{"line":499,"column":2},"end":{"line":499,"column":73}},"192":{"start":{"line":500,"column":2},"end":{"line":500,"column":23}},"193":{"start":{"line":506,"column":2},"end":{"line":508,"column":5}},"194":{"start":{"line":510,"column":0},"end":{"line":510,"column":91}},"195":{"start":{"line":512,"column":0},"end":{"line":588,"column":2}},"196":{"start":{"line":513,"column":2},"end":{"line":515,"column":3}},"197":{"start":{"line":514,"column":4},"end":{"line":514,"column":33}},"198":{"start":{"line":517,"column":2},"end":{"line":517,"column":59}},"199":{"start":{"line":518,"column":2},"end":{"line":518,"column":49}},"200":{"start":{"line":519,"column":2},"end":{"line":519,"column":65}},"201":{"start":{"line":520,"column":2},"end":{"line":520,"column":37}},"202":{"start":{"line":521,"column":2},"end":{"line":521,"column":37}},"203":{"start":{"line":523,"column":2},"end":{"line":526,"column":3}},"204":{"start":{"line":524,"column":4},"end":{"line":524,"column":85}},"205":{"start":{"line":525,"column":4},"end":{"line":525,"column":70}},"206":{"start":{"line":528,"column":2},"end":{"line":528,"column":50}},"207":{"start":{"line":530,"column":2},"end":{"line":532,"column":3}},"208":{"start":{"line":531,"column":4},"end":{"line":531,"column":37}},"209":{"start":{"line":534,"column":2},"end":{"line":534,"column":51}},"210":{"start":{"line":537,"column":2},"end":{"line":585,"column":3}},"211":{"start":{"line":538,"column":4},"end":{"line":538,"column":40}},"212":{"start":{"line":539,"column":4},"end":{"line":539,"column":53}},"213":{"start":{"line":548,"column":4},"end":{"line":548,"column":24}},"214":{"start":{"line":549,"column":4},"end":{"line":549,"column":72}},"215":{"start":{"line":550,"column":4},"end":{"line":550,"column":37}},"216":{"start":{"line":551,"column":4},"end":{"line":551,"column":46}},"217":{"start":{"line":552,"column":4},"end":{"line":558,"column":7}},"218":{"start":{"line":553,"column":6},"end":{"line":557,"column":7}},"219":{"start":{"line":554,"column":8},"end":{"line":554,"column":21}},"220":{"start":{"line":556,"column":8},"end":{"line":556,"column":47}},"221":{"start":{"line":560,"column":4},"end":{"line":575,"column":17}},"222":{"start":{"line":561,"column":6},"end":{"line":574,"column":7}},"223":{"start":{"line":562,"column":8},"end":{"line":573,"column":9}},"224":{"start":{"line":563,"column":10},"end":{"line":563,"column":50}},"225":{"start":{"line":564,"column":10},"end":{"line":564,"column":46}},"226":{"start":{"line":565,"column":10},"end":{"line":565,"column":86}},"227":{"start":{"line":566,"column":10},"end":{"line":566,"column":72}},"228":{"start":{"line":567,"column":10},"end":{"line":567,"column":48}},"229":{"start":{"line":568,"column":10},"end":{"line":568,"column":56}},"230":{"start":{"line":569,"column":10},"end":{"line":569,"column":42}},"231":{"start":{"line":570,"column":10},"end":{"line":570,"column":35}},"232":{"start":{"line":572,"column":10},"end":{"line":572,"column":36}},"233":{"start":{"line":577,"column":4},"end":{"line":584,"column":7}},"234":{"start":{"line":578,"column":6},"end":{"line":578,"column":21}},"235":{"start":{"line":579,"column":6},"end":{"line":583,"column":7}},"236":{"start":{"line":580,"column":8},"end":{"line":580,"column":57}},"237":{"start":{"line":582,"column":8},"end":{"line":582,"column":40}},"238":{"start":{"line":587,"column":2},"end":{"line":587,"column":17}},"239":{"start":{"line":590,"column":0},"end":{"line":594,"column":2}},"240":{"start":{"line":591,"column":2},"end":{"line":591,"column":48}},"241":{"start":{"line":592,"column":2},"end":{"line":592,"column":16}},"242":{"start":{"line":593,"column":2},"end":{"line":593,"column":17}},"243":{"start":{"line":596,"column":0},"end":{"line":605,"column":1}},"244":{"start":{"line":597,"column":2},"end":{"line":597,"column":36}},"245":{"start":{"line":598,"column":2},"end":{"line":598,"column":35}},"246":{"start":{"line":599,"column":2},"end":{"line":599,"column":40}},"247":{"start":{"line":600,"column":2},"end":{"line":600,"column":37}},"248":{"start":{"line":601,"column":2},"end":{"line":601,"column":37}},"249":{"start":{"line":602,"column":2},"end":{"line":602,"column":18}},"250":{"start":{"line":603,"column":2},"end":{"line":603,"column":23}},"251":{"start":{"line":604,"column":2},"end":{"line":604,"column":22}},"252":{"start":{"line":607,"column":0},"end":{"line":607,"column":52}},"253":{"start":{"line":609,"column":0},"end":{"line":611,"column":1}},"254":{"start":{"line":610,"column":2},"end":{"line":610,"column":48}},"255":{"start":{"line":613,"column":0},"end":{"line":615,"column":1}},"256":{"start":{"line":614,"column":2},"end":{"line":614,"column":44}},"257":{"start":{"line":620,"column":0},"end":{"line":627,"column":1}},"258":{"start":{"line":621,"column":2},"end":{"line":621,"column":34}},"259":{"start":{"line":623,"column":2},"end":{"line":623,"column":26}},"260":{"start":{"line":624,"column":2},"end":{"line":624,"column":26}},"261":{"start":{"line":625,"column":2},"end":{"line":625,"column":27}},"262":{"start":{"line":626,"column":2},"end":{"line":626,"column":26}},"263":{"start":{"line":628,"column":0},"end":{"line":628,"column":114}},"264":{"start":{"line":630,"column":0},"end":{"line":654,"column":2}},"265":{"start":{"line":631,"column":2},"end":{"line":631,"column":109}},"266":{"start":{"line":632,"column":2},"end":{"line":632,"column":58}},"267":{"start":{"line":634,"column":2},"end":{"line":634,"column":23}},"268":{"start":{"line":636,"column":2},"end":{"line":636,"column":19}},"269":{"start":{"line":637,"column":2},"end":{"line":639,"column":3}},"270":{"start":{"line":638,"column":4},"end":{"line":638,"column":40}},"271":{"start":{"line":640,"column":2},"end":{"line":640,"column":22}},"272":{"start":{"line":641,"column":2},"end":{"line":641,"column":40}},"273":{"start":{"line":642,"column":2},"end":{"line":642,"column":38}},"274":{"start":{"line":643,"column":2},"end":{"line":643,"column":38}},"275":{"start":{"line":644,"column":2},"end":{"line":644,"column":34}},"276":{"start":{"line":646,"column":2},"end":{"line":647,"column":95}},"277":{"start":{"line":648,"column":2},"end":{"line":648,"column":31}},"278":{"start":{"line":650,"column":2},"end":{"line":650,"column":35}},"279":{"start":{"line":652,"column":2},"end":{"line":652,"column":59}},"280":{"start":{"line":653,"column":2},"end":{"line":653,"column":69}},"281":{"start":{"line":656,"column":0},"end":{"line":664,"column":2}},"282":{"start":{"line":657,"column":2},"end":{"line":657,"column":49}},"283":{"start":{"line":659,"column":2},"end":{"line":659,"column":25}},"284":{"start":{"line":660,"column":2},"end":{"line":660,"column":31}},"285":{"start":{"line":661,"column":2},"end":{"line":661,"column":38}},"286":{"start":{"line":663,"column":2},"end":{"line":663,"column":21}},"287":{"start":{"line":667,"column":0},"end":{"line":671,"column":2}},"288":{"start":{"line":668,"column":2},"end":{"line":670,"column":3}},"289":{"start":{"line":669,"column":4},"end":{"line":669,"column":37}},"290":{"start":{"line":673,"column":0},"end":{"line":677,"column":2}},"291":{"start":{"line":674,"column":2},"end":{"line":676,"column":3}},"292":{"start":{"line":675,"column":4},"end":{"line":675,"column":58}},"293":{"start":{"line":679,"column":0},"end":{"line":683,"column":2}},"294":{"start":{"line":680,"column":2},"end":{"line":682,"column":3}},"295":{"start":{"line":681,"column":4},"end":{"line":681,"column":47}},"296":{"start":{"line":689,"column":0},"end":{"line":692,"column":1}},"297":{"start":{"line":690,"column":2},"end":{"line":690,"column":42}},"298":{"start":{"line":691,"column":2},"end":{"line":691,"column":51}},"299":{"start":{"line":693,"column":0},"end":{"line":693,"column":116}},"300":{"start":{"line":696,"column":0},"end":{"line":720,"column":2}},"301":{"start":{"line":700,"column":2},"end":{"line":700,"column":25}},"302":{"start":{"line":708,"column":2},"end":{"line":708,"column":38}},"303":{"start":{"line":709,"column":2},"end":{"line":713,"column":3}},"304":{"start":{"line":710,"column":4},"end":{"line":710,"column":83}},"305":{"start":{"line":711,"column":4},"end":{"line":711,"column":48}},"306":{"start":{"line":712,"column":4},"end":{"line":712,"column":11}},"307":{"start":{"line":714,"column":2},"end":{"line":714,"column":31}},"308":{"start":{"line":715,"column":2},"end":{"line":715,"column":28}},"309":{"start":{"line":718,"column":2},"end":{"line":718,"column":79}},"310":{"start":{"line":719,"column":2},"end":{"line":719,"column":21}},"311":{"start":{"line":722,"column":0},"end":{"line":730,"column":2}},"312":{"start":{"line":723,"column":2},"end":{"line":723,"column":64}},"313":{"start":{"line":725,"column":2},"end":{"line":729,"column":3}},"314":{"start":{"line":726,"column":4},"end":{"line":726,"column":31}},"315":{"start":{"line":728,"column":4},"end":{"line":728,"column":21}},"316":{"start":{"line":735,"column":0},"end":{"line":748,"column":1}},"317":{"start":{"line":736,"column":2},"end":{"line":736,"column":30}},"318":{"start":{"line":737,"column":2},"end":{"line":737,"column":36}},"319":{"start":{"line":738,"column":2},"end":{"line":738,"column":20}},"320":{"start":{"line":740,"column":2},"end":{"line":740,"column":42}},"321":{"start":{"line":742,"column":2},"end":{"line":742,"column":41}},"322":{"start":{"line":744,"column":2},"end":{"line":744,"column":40}},"323":{"start":{"line":746,"column":2},"end":{"line":746,"column":65}},"324":{"start":{"line":747,"column":2},"end":{"line":747,"column":69}},"325":{"start":{"line":749,"column":0},"end":{"line":749,"column":114}},"326":{"start":{"line":751,"column":0},"end":{"line":753,"column":2}},"327":{"start":{"line":752,"column":2},"end":{"line":752,"column":39}}},"branchMap":{"1":{"line":168,"type":"if","locations":[{"start":{"line":168,"column":2},"end":{"line":168,"column":2}},{"start":{"line":168,"column":2},"end":{"line":168,"column":2}}]},"2":{"line":176,"type":"if","locations":[{"start":{"line":176,"column":2},"end":{"line":176,"column":2}},{"start":{"line":176,"column":2},"end":{"line":176,"column":2}}]},"3":{"line":184,"type":"if","locations":[{"start":{"line":184,"column":2},"end":{"line":184,"column":2}},{"start":{"line":184,"column":2},"end":{"line":184,"column":2}}]},"4":{"line":192,"type":"if","locations":[{"start":{"line":192,"column":2},"end":{"line":192,"column":2}},{"start":{"line":192,"column":2},"end":{"line":192,"column":2}}]},"5":{"line":218,"type":"binary-expr","locations":[{"start":{"line":218,"column":12},"end":{"line":218,"column":19}},{"start":{"line":218,"column":23},"end":{"line":218,"column":25}}]},"6":{"line":220,"type":"binary-expr","locations":[{"start":{"line":220,"column":15},"end":{"line":220,"column":26}},{"start":{"line":220,"column":30},"end":{"line":220,"column":42}}]},"7":{"line":227,"type":"if","locations":[{"start":{"line":227,"column":2},"end":{"line":227,"column":2}},{"start":{"line":227,"column":2},"end":{"line":227,"column":2}}]},"8":{"line":227,"type":"binary-expr","locations":[{"start":{"line":227,"column":7},"end":{"line":227,"column":18}},{"start":{"line":227,"column":22},"end":{"line":227,"column":34}},{"start":{"line":227,"column":39},"end":{"line":227,"column":50}}]},"9":{"line":234,"type":"if","locations":[{"start":{"line":234,"column":6},"end":{"line":234,"column":6}},{"start":{"line":234,"column":6},"end":{"line":234,"column":6}}]},"10":{"line":244,"type":"if","locations":[{"start":{"line":244,"column":7},"end":{"line":244,"column":7}},{"start":{"line":244,"column":7},"end":{"line":244,"column":7}}]},"11":{"line":294,"type":"cond-expr","locations":[{"start":{"line":294,"column":58},"end":{"line":294,"column":79}},{"start":{"line":294,"column":83},"end":{"line":294,"column":87}}]},"12":{"line":305,"type":"if","locations":[{"start":{"line":305,"column":2},"end":{"line":305,"column":2}},{"start":{"line":305,"column":2},"end":{"line":305,"column":2}}]},"13":{"line":312,"type":"if","locations":[{"start":{"line":312,"column":2},"end":{"line":312,"column":2}},{"start":{"line":312,"column":2},"end":{"line":312,"column":2}}]},"14":{"line":352,"type":"if","locations":[{"start":{"line":352,"column":4},"end":{"line":352,"column":4}},{"start":{"line":352,"column":4},"end":{"line":352,"column":4}}]},"15":{"line":352,"type":"binary-expr","locations":[{"start":{"line":352,"column":9},"end":{"line":352,"column":34}},{"start":{"line":352,"column":40},"end":{"line":352,"column":58}}]},"16":{"line":375,"type":"if","locations":[{"start":{"line":375,"column":4},"end":{"line":375,"column":4}},{"start":{"line":375,"column":4},"end":{"line":375,"column":4}}]},"17":{"line":407,"type":"if","locations":[{"start":{"line":407,"column":2},"end":{"line":407,"column":2}},{"start":{"line":407,"column":2},"end":{"line":407,"column":2}}]},"18":{"line":413,"type":"binary-expr","locations":[{"start":{"line":413,"column":12},"end":{"line":413,"column":19}},{"start":{"line":413,"column":23},"end":{"line":413,"column":25}}]},"19":{"line":419,"type":"if","locations":[{"start":{"line":419,"column":2},"end":{"line":419,"column":2}},{"start":{"line":419,"column":2},"end":{"line":419,"column":2}}]},"20":{"line":419,"type":"binary-expr","locations":[{"start":{"line":419,"column":6},"end":{"line":419,"column":19}},{"start":{"line":419,"column":23},"end":{"line":419,"column":49}}]},"21":{"line":433,"type":"if","locations":[{"start":{"line":433,"column":2},"end":{"line":433,"column":2}},{"start":{"line":433,"column":2},"end":{"line":433,"column":2}}]},"22":{"line":453,"type":"if","locations":[{"start":{"line":453,"column":2},"end":{"line":453,"column":2}},{"start":{"line":453,"column":2},"end":{"line":453,"column":2}}]},"23":{"line":458,"type":"if","locations":[{"start":{"line":458,"column":2},"end":{"line":458,"column":2}},{"start":{"line":458,"column":2},"end":{"line":458,"column":2}}]},"24":{"line":462,"type":"if","locations":[{"start":{"line":462,"column":2},"end":{"line":462,"column":2}},{"start":{"line":462,"column":2},"end":{"line":462,"column":2}}]},"25":{"line":467,"type":"binary-expr","locations":[{"start":{"line":467,"column":16},"end":{"line":467,"column":30}},{"start":{"line":467,"column":34},"end":{"line":467,"column":39}}]},"26":{"line":468,"type":"binary-expr","locations":[{"start":{"line":468,"column":15},"end":{"line":468,"column":31}},{"start":{"line":468,"column":35},"end":{"line":468,"column":66}}]},"27":{"line":469,"type":"binary-expr","locations":[{"start":{"line":469,"column":13},"end":{"line":469,"column":29}},{"start":{"line":469,"column":33},"end":{"line":469,"column":45}},{"start":{"line":469,"column":49},"end":{"line":469,"column":78}}]},"28":{"line":496,"type":"binary-expr","locations":[{"start":{"line":496,"column":12},"end":{"line":496,"column":19}},{"start":{"line":496,"column":23},"end":{"line":496,"column":25}}]},"29":{"line":499,"type":"binary-expr","locations":[{"start":{"line":499,"column":15},"end":{"line":499,"column":26}},{"start":{"line":499,"column":30},"end":{"line":499,"column":42}}]},"30":{"line":513,"type":"if","locations":[{"start":{"line":513,"column":2},"end":{"line":513,"column":2}},{"start":{"line":513,"column":2},"end":{"line":513,"column":2}}]},"31":{"line":517,"type":"binary-expr","locations":[{"start":{"line":517,"column":20},"end":{"line":517,"column":34}},{"start":{"line":517,"column":38},"end":{"line":517,"column":43}}]},"32":{"line":518,"type":"binary-expr","locations":[{"start":{"line":518,"column":21},"end":{"line":518,"column":37}},{"start":{"line":518,"column":41},"end":{"line":518,"column":48}}]},"33":{"line":519,"type":"binary-expr","locations":[{"start":{"line":519,"column":17},"end":{"line":519,"column":33}},{"start":{"line":519,"column":37},"end":{"line":519,"column":49}},{"start":{"line":519,"column":53},"end":{"line":519,"column":64}}]},"34":{"line":520,"type":"binary-expr","locations":[{"start":{"line":520,"column":17},"end":{"line":520,"column":29}},{"start":{"line":520,"column":33},"end":{"line":520,"column":36}}]},"35":{"line":521,"type":"binary-expr","locations":[{"start":{"line":521,"column":17},"end":{"line":521,"column":29}},{"start":{"line":521,"column":33},"end":{"line":521,"column":36}}]},"36":{"line":523,"type":"if","locations":[{"start":{"line":523,"column":2},"end":{"line":523,"column":2}},{"start":{"line":523,"column":2},"end":{"line":523,"column":2}}]},"37":{"line":530,"type":"if","locations":[{"start":{"line":530,"column":2},"end":{"line":530,"column":2}},{"start":{"line":530,"column":2},"end":{"line":530,"column":2}}]},"38":{"line":537,"type":"if","locations":[{"start":{"line":537,"column":2},"end":{"line":537,"column":2}},{"start":{"line":537,"column":2},"end":{"line":537,"column":2}}]},"39":{"line":553,"type":"if","locations":[{"start":{"line":553,"column":6},"end":{"line":553,"column":6}},{"start":{"line":553,"column":6},"end":{"line":553,"column":6}}]},"40":{"line":561,"type":"if","locations":[{"start":{"line":561,"column":6},"end":{"line":561,"column":6}},{"start":{"line":561,"column":6},"end":{"line":561,"column":6}}]},"41":{"line":562,"type":"if","locations":[{"start":{"line":562,"column":8},"end":{"line":562,"column":8}},{"start":{"line":562,"column":8},"end":{"line":562,"column":8}}]},"42":{"line":579,"type":"if","locations":[{"start":{"line":579,"column":6},"end":{"line":579,"column":6}},{"start":{"line":579,"column":6},"end":{"line":579,"column":6}}]},"43":{"line":631,"type":"binary-expr","locations":[{"start":{"line":631,"column":42},"end":{"line":631,"column":58}},{"start":{"line":631,"column":62},"end":{"line":631,"column":74}}]},"44":{"line":631,"type":"binary-expr","locations":[{"start":{"line":631,"column":85},"end":{"line":631,"column":97}},{"start":{"line":631,"column":101},"end":{"line":631,"column":103}}]},"45":{"line":647,"type":"binary-expr","locations":[{"start":{"line":647,"column":50},"end":{"line":647,"column":65}},{"start":{"line":647,"column":69},"end":{"line":647,"column":71}}]},"46":{"line":668,"type":"if","locations":[{"start":{"line":668,"column":2},"end":{"line":668,"column":2}},{"start":{"line":668,"column":2},"end":{"line":668,"column":2}}]},"47":{"line":674,"type":"if","locations":[{"start":{"line":674,"column":2},"end":{"line":674,"column":2}},{"start":{"line":674,"column":2},"end":{"line":674,"column":2}}]},"48":{"line":680,"type":"if","locations":[{"start":{"line":680,"column":2},"end":{"line":680,"column":2}},{"start":{"line":680,"column":2},"end":{"line":680,"column":2}}]},"49":{"line":709,"type":"if","locations":[{"start":{"line":709,"column":2},"end":{"line":709,"column":2}},{"start":{"line":709,"column":2},"end":{"line":709,"column":2}}]},"50":{"line":709,"type":"binary-expr","locations":[{"start":{"line":709,"column":7},"end":{"line":709,"column":37}},{"start":{"line":709,"column":43},"end":{"line":709,"column":66}}]},"51":{"line":725,"type":"if","locations":[{"start":{"line":725,"column":2},"end":{"line":725,"column":2}},{"start":{"line":725,"column":2},"end":{"line":725,"column":2}}]}}}} \ No newline at end of file diff --git a/coverage/lcov-report/index.html b/coverage/lcov-report/index.html index adf62cca..bc1852a1 100644 --- a/coverage/lcov-report/index.html +++ b/coverage/lcov-report/index.html @@ -183,16 +183,16 @@

Code coverage report for All files

- Statements: 91.18% (775 / 850)      + Statements: 86.53% (1195 / 1381)      - Branches: 84.69% (249 / 294)      + Branches: 73.43% (387 / 527)      - Functions: 88.03% (103 / 117)      + Functions: 84.9% (163 / 192)      - Lines: 91.18% (775 / 850)      + Lines: 86.66% (1189 / 1372)     

@@ -216,15 +216,15 @@

lib/ - - 91.18% - (775 / 850) - 84.69% - (249 / 294) - 88.03% - (103 / 117) - 91.18% - (775 / 850) + + 86.53% + (1195 / 1381) + 73.43% + (387 / 527) + 84.9% + (163 / 192) + 86.66% + (1189 / 1372) @@ -232,7 +232,7 @@

diff --git a/coverage/lcov-report/lib/compressor.js.html b/coverage/lcov-report/lib/compressor.js.html index 8bb639d5..34af9787 100644 --- a/coverage/lcov-report/lib/compressor.js.html +++ b/coverage/lcov-report/lib/compressor.js.html @@ -183,16 +183,16 @@

Code coverage report for lib/compressor.js

- Statements: 100% (262 / 262)      + Statements: 98.62% (286 / 290)      Branches: 100% (101 / 101)      - Functions: 100% (31 / 31)      + Functions: 100% (34 / 34)      - Lines: 100% (262 / 262)      + Lines: 98.62% (286 / 290)     

All files » lib/ » compressor.js
@@ -1006,7 +1006,59 @@

805 806 807 -808  +808 +809 +810 +811 +812 +813 +814 +815 +816 +817 +818 +819 +820 +821 +822 +823 +824 +825 +826 +827 +828 +829 +830 +831 +832 +833 +834 +835 +836 +837 +838 +839 +840 +841 +842 +843 +844 +845 +846 +847 +848 +849 +850 +851 +852 +853 +854 +855 +856 +857 +858 +859 +860        @@ -1023,7 +1075,6 @@

  1 1 -1   1 1 @@ -1046,33 +1097,34 @@

1   1 -10 -10 -10 -10 +14 +14 +14 +14 +14         1 -1421 +1643       1 -43 -136 +47 +142         1 -43 +47         -43 +47 154   98 @@ -1082,7 +1134,7 @@

      -43 +47 98 98   @@ -1112,14 +1164,17 @@

    1 -172 +184 +    +184           -172 +  +184 52 52 139 @@ -1137,41 +1192,41 @@

      -120 -35 +132 +47   85     -120 -119 +132 +131 88   -31 +43   -119 -119 +131 +131     -120 +132           1 -36 -90 +42 +97           1 -58 +64   -58 -58 +64 +64 5 5 1 @@ -1182,14 +1237,14 @@

      -57 -57 -1029 +63 +63 +1251   -57 -31 -31 -15 +63 +37 +37 +21       @@ -1231,15 +1286,15 @@

    1 -119 -119 -119 -2345 -192 +131 +131 +131 +2789 +204   -2345 +2789   -119 +131 218 218   @@ -1253,13 +1308,13 @@

    1 -6 +8   -6 +8   -6 +8   -6 +8   1   @@ -1268,42 +1323,42 @@

    1 -23 +25       -23 +25         -23 -23 -90 +25 +25 +96         -23 +25       -23 -23 -90 -90 -90 +25 +25 +96 +96 +96 17 8   9     -73 +79     -23 -23 +25 +25       @@ -1314,13 +1369,13 @@

    1 -4 +6   -4 +6   -4 +6   -4 +6   1   @@ -1329,30 +1384,30 @@

    1 -20 -20 +22 +22       -20 -20 -64 -64 +22 +22 +70 +70 8 24     -56 +62           -20 -20 +22 +22     -20 +22 46 24 24 @@ -1361,24 +1416,24 @@

      -20 -80 -58 -58 -58 +22 +86 +64 +64 +64         -20 -20 -82 +22 +22 +88     -20 +22   -20 -20 +22 +22       @@ -1399,31 +1454,31 @@

    1 -216 -216 -88 +234 +234 +94     -128 -128 +140 +140 2   -128 +140   -128 -128 -136 -136 +140 +140 +148 +148   -136 +148 8   -136 +148   -136 +148     -128 +140       @@ -1440,23 +1495,23 @@

    1 -234 +252   -234 -234 -100 +252 +252 +106     -234 -139 -139 -149 -149 -149 +252 +151 +151 +161 +161 +161       -234 +252       @@ -1470,16 +1525,16 @@

    1 -110 -110 -110 +116 +116 +116     1 -115 -115 -115 -115 +121 +121 +121 +121       @@ -1529,79 +1584,79 @@

    1 -90 +96   -90 +96 27 -63 +69 1 -62 +68 46   -16 +22     -90 +96 27     -63 -20 +69 +26   43 43     -63 -16 +69 +22     -63 +69     -90 +96   -90 +96     1 -98 +104   -98 -98 +104 +104 29 -69 +75 52 2   50     -17 +23     -98 +104 29 29     -69 -69 +75 +75 44     -69 -17 +75 +23 52 50   2     -69 +75     -98 +104       @@ -1630,31 +1685,31 @@

    1 -4 +6     1   -14 +18   -10 +12     -10 +12         -10 12 +14 +14 12 -10   2 2     -12 +14       @@ -1666,10 +1721,11 @@

      -4   +6   -14 +  +18       @@ -1679,57 +1735,66 @@

    1 -6 -6 -6 -6 -6 +8 +8 +8 +8 +8       1     -18 +22 3 1 +1 +1   -3 +2         -15 -11 -11 -11 -11 +19 +13 +13 +13 +13         -4 +6           -18 -10 +21 12 +14   -10 -10 +12 +12   +  +  +    +12         -10     -18 +  +12 +  +  +21       @@ -1813,6 +1878,45 @@

      +  +  +  +  +  +1 +34 +34 +333 +  +  +34 +34 +333 +  +  +34 +  +  +  +1 +12 +12 +12 +14 +14 +14 +  +12 +  +  +  +1 +14 +14 +  +  +14 +   
// HTTP/2 compression is implemented by two [Transform Stream][1] subclasses that operate in
 // [object mode][2]: the Compressor and the Decompressor. These provide a layer between the
 // [framer](framer.html) and the [connection handling component](connection.html) that
@@ -1828,7 +1932,6 @@ 

// [2]: http://nodejs.org/api/stream.html#stream_new_stream_readable_options // [3]: http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-00   -var utils = require('../lib/utils'); var logging = require('./logging'); var Transform = require('stream').Transform;   @@ -1852,7 +1955,8 @@

// `execute(command)`. var DEFAULT_HEADER_TABLE_LIMIT = 4096;   -function CompressionContext(table, limit) { +function CompressionContext(log, table, limit) { + this._log = log; this._table = table.slice(); this._limit = limit || DEFAULT_HEADER_TABLE_LIMIT; this._reference = []; @@ -1919,6 +2023,9 @@

// { name: 'A', value: 'Z', index: 123 } // substitution indexing   CompressionContext.prototype.execute = function execute(command) { + this._log.trace({ key: command.name, value: command.value, index: command.index }, + 'Executing a header representation'); +  var index, pair;   // * For an indexed representation, it checks whether the index is present in the working set. @@ -1977,29 +2084,29 @@

CompressionContext.prototype.generateAddCommand = function(pair) { var equal = CompressionContext.equal.bind(null, pair);   - var full_match = this._table.filter(equal); - if (full_match.length !== 0) { - var full_index = this._table.indexOf(full_match[0]); - if (!this._isShadowed(full_index)) { + var fullMatch = this._table.filter(equal); + if (fullMatch.length !== 0) { + var fullIndex = this._table.indexOf(fullMatch[0]); + if (!this._isShadowed(fullIndex)) { return { - name: full_index, - value: full_index, + name: fullIndex, + value: fullIndex, index: -1 }; } }   var name = pair[0].toLowerCase(); - var name_match = this._table.filter(function(entry) { + var nameMatch = this._table.filter(function(entry) { return entry[0].toLowerCase() === name; }); - if (name_match.length !== 0) { - var name_index = this._table.indexOf(name_match[0]); - if (!this._isShadowed(name_index)) { + if (nameMatch.length !== 0) { + var nameIndex = this._table.indexOf(nameMatch[0]); + if (!this._isShadowed(nameIndex)) { return { - name: name_index, + name: nameIndex, value: pair[1], - index: name_index + index: nameIndex }; } } @@ -2062,9 +2169,9 @@

function Decompressor(type, log) { this._log = (log || logging.root).child({ component: 'decompressor' });   - var initial_table = (type === 'REQUEST') ? CompressionContext.initialRequestTable - : CompressionContext.initialResponseTable; - this._context = new CompressionContext(initial_table); + var initialTable = (type === 'REQUEST') ? CompressionContext.initialRequestTable + : CompressionContext.initialResponseTable; + this._context = new CompressionContext(this._log, initialTable);   this._initializeStream(); } @@ -2109,7 +2216,7 @@

headers[name] = value; } } - this._log.debug({ headers: headers }, 'Header decompression is done'); + this._log.trace({ headers: headers }, 'Header decompression is done'); return headers; };   @@ -2123,9 +2230,9 @@

function Compressor(type, log) { this._log = (log || logging.root).child({ component: 'compressor' });   - var initial_table = (type === 'REQUEST') ? CompressionContext.initialRequestTable - : CompressionContext.initialResponseTable; - this._context = new CompressionContext(initial_table); + var initialTable = (type === 'REQUEST') ? CompressionContext.initialRequestTable + : CompressionContext.initialResponseTable; + this._context = new CompressionContext(this._log, initialTable);   this._initializeStream(); } @@ -2136,7 +2243,7 @@

// // The inverse of the decoding process goes follows: Compressor.prototype.compress = function compress(headers) { - this._log.debug({ headers: headers }, 'Starting header compression'); + this._log.trace({ headers: headers }, 'Starting header compression'); var i;   // * First, the usual node.js header set format (`{ name1: value1, name2: [value2, value3], ... }`) @@ -2146,10 +2253,10 @@

var value = headers[name]; if (value instanceof Array) { for (i = 0; i< value.length; i++) { - pairs.push([name, value[i]]); + pairs.push([String(name), String(value[i])]); } } else { - pairs.push([name, value]); + pairs.push([String(name), String(value)]); } }   @@ -2182,7 +2289,7 @@

buffers.push(Compressor.header(commands[i])); }   - var buffer = utils.concat(Array.prototype.concat.apply([], buffers)); // [[bufs]] -> [bufs] -> buf + var buffer = concat(Array.prototype.concat.apply([], buffers)); // [[bufs]] -> [bufs] -> buf   this._log.trace({ data: buffer }, 'Header compression is done'); return buffer; @@ -2277,9 +2384,9 @@

// 2. The string value represented as a list of UTF-8 characters.   Compressor.string = function writeString(str) { - var encoded_string = new Buffer(str, 'utf8'); - var encoded_length = Compressor.integer(encoded_string.length, 0); - return encoded_length.concat(encoded_string); + var encodedString = new Buffer(str, 'utf8'); + var encodedLength = Compressor.integer(encodedString.length, 0); + return encodedLength.concat(encodedString); };   Decompressor.string = function readString(buffer) { @@ -2331,8 +2438,8 @@

var representations = { indexed : { prefix: 7, pattern: 0x80 }, literal : { prefix: 5, pattern: 0x60 }, - literal_incremental : { prefix: 5, pattern: 0x40 }, - literal_substitution: { prefix: 6, pattern: 0x00 } + literalIncremental : { prefix: 5, pattern: 0x40 }, + literalSubstitution : { prefix: 6, pattern: 0x00 } };   Compressor.header = function writeString(header) { @@ -2343,9 +2450,9 @@

} else if (header.index === -1) { representation = representations.literal; } else if (header.index === Infinity) { - representation = representations.literal_incremental; + representation = representations.literalIncremental; } else { - representation = representations.literal_substitution; + representation = representations.literalSubstitution; }   if (representation === representations.indexed) { @@ -2359,7 +2466,7 @@

buffers.push(Compressor.string(header.name)); }   - if (representation === representations.literal_substitution) { + if (representation === representations.literalSubstitution) { buffers.push(Compressor.integer(header.index, 0)); }   @@ -2374,17 +2481,17 @@

Decompressor.header = function readString(buffer) { var representation, header = {};   - var first_byte = buffer[buffer.cursor]; - if (first_byte & 0x80) { + var firstByte = buffer[buffer.cursor]; + if (firstByte & 0x80) { representation = representations.indexed; - } else if (first_byte & 0x40) { - if (first_byte & 0x20) { + } else if (firstByte & 0x40) { + if (firstByte & 0x20) { representation = representations.literal; } else { - representation = representations.literal_incremental; + representation = representations.literalIncremental; } } else { - representation = representations.literal_substitution; + representation = representations.literalSubstitution; }   if (representation === representations.indexed) { @@ -2397,9 +2504,9 @@

header.name = Decompressor.string(buffer); }   - if (representation === representations.literal_substitution) { + if (representation === representations.literalSubstitution) { header.index = Decompressor.integer(buffer, 0); - } else if (representation === representations.literal_incremental) { + } else if (representation === representations.literalIncremental) { header.index = Infinity; } else { header.index = -1; @@ -2447,13 +2554,13 @@

var buffer = this.compress(frame.headers);   // * cuts the header block into `chunks` that are not larger than `MAX_HTTP_PAYLOAD_SIZE` - var chunks = utils.cut(buffer, MAX_HTTP_PAYLOAD_SIZE); + var chunks = cut(buffer, MAX_HTTP_PAYLOAD_SIZE);   - // * for each `chunk`, it pushes out a `chunk_frame` that is identical to the original, except + // * for each chunk, it pushes out a chunk frame that is identical to the original, except // the `data` property which holds the given chunk, the END_HEADERS/END_PUSH_STREAM flag that // marks the last frame and the END_STREAM flag which is always false before the end for (var i = 0; i < chunks.length; i++) { - var flags = utils.shallow_copy(frame.flags); + var flags = shallowCopy(frame.flags); if (i === chunks.length - 1) { flags['END_' + frame.type] = true; } else { @@ -2466,6 +2573,7 @@

flags: flags, stream: frame.stream, priority: frame.priority, + promised_stream: frame.promised_stream, data: chunks[i] }); } @@ -2482,12 +2590,12 @@

// The Decompressor is a stateful transform stream, since it has to collect multiple frames first, // and the decoding comes after unifying the payload of those frames. // -// If there's a frame in progress, `this._in_progress` is `true`. The frames are collected in +// If there's a frame in progress, `this._inProgress` is `true`. The frames are collected in // `this._frames`, and the type of the frame and the stream identifier is stored in `this._type` // and `this._stream` respectively. Decompressor.prototype._initializeStream = function _initializeStream() { Transform.call(this, { objectMode: true }); - this._in_progress = false; + this._inProgress = false; this._type = undefined; this._stream = undefined; this._frames = undefined; @@ -2495,19 +2603,21 @@

  // When a `frame` arrives Decompressor.prototype._transform = function _transform(frame, encoding, done) { - // * and the collection process is already `_in_progress`, the frame is simply stored, except if + // * and the collection process is already `_inProgress`, the frame is simply stored, except if // it's an illegal frame - if (this._in_progress) { - if (frame.type !== this._type || frame.stream !== this._stream) { - this.emit('error', 'A series of header frames must not be interleaved with other frames!'); + if (this._inProgress) { + if ((frame.type !== this._type) || (frame.stream !== this._stream)) { + this._log.error('A series of HEADER frames were not continuous'); + this.emit('error', 'PROTOCOL_ERROR'); + return; } this._frames.push(frame); }   - // * and the collection process is not `_in_progress`, but the new frame's type is HEADERS or + // * and the collection process is not `_inProgress`, but the new frame's type is HEADERS or // PUSH_PROMISE, a new collection process begins - else if (frame.type === 'HEADERS' || frame.type === 'PUSH_PROMISE') { - this._in_progress = true; + else if ((frame.type === 'HEADERS') || (frame.type === 'PUSH_PROMISE')) { + this._inProgress = true; this._type = frame.type; this._stream = frame.stream; this._frames = [frame]; @@ -2521,19 +2631,26 @@

// When the frame signals that it's the last in the series, the header block chunks are // concatenated, the headers are decompressed, and a new frame gets pushed out with the // decompressed headers. - if (this._in_progress && (frame.flags.END_HEADERS || frame.flags.END_PUSH_PROMISE)) { - var buffer = utils.concat(this._frames.map(function(frame) { + if (this._inProgress && (frame.flags.END_HEADERS || frame.flags.END_PUSH_PROMISE)) { + var buffer = concat(this._frames.map(function(frame) { return frame.data; })); - var headers = this.decompress(buffer); + try { + var headers = this.decompress(buffer); + } catch(error) { + this._log.error({ err: error }, 'Header decompression error'); + this.emit('error', 'COMPRESSION_ERROR'); + return; + } this.push({ type: frame.type, flags: frame.flags, stream: frame.stream, priority: frame.priority, + promised_stream: frame.promised_stream, headers: headers }); - this._in_progress = false; + this._inProgress = false; }   done(); @@ -2620,12 +2737,51 @@

[ 'warning' , '' ], [ 'www-authenticate' , '' ] ]; +  +// Helper functions +// ---------------- +  +// Concatenate an array of buffers into a new buffer +function concat(buffers) { + var size = 0; + for (var i = 0; i < buffers.length; i++) { + size += buffers[i].length; + } +  + var concatenated = new Buffer(size); + for (var cursor = 0, j = 0; j < buffers.length; cursor += buffers[j].length, j++) { + buffers[j].copy(concatenated, cursor); + } +  + return concatenated; +} +  +// Cut `buffer` into chunks not larger than `size` +function cut(buffer, size) { + var chunks = []; + var cursor = 0; + do { + var chunkSize = Math.min(size, buffer.length - cursor); + chunks.push(buffer.slice(cursor, cursor + chunkSize)); + cursor += chunkSize; + } while(cursor < buffer.length); + return chunks; +} +  +// Shallow copy inspired by underscore's [clone](http://underscorejs.org/#clone) +function shallowCopy(object) { + var clone = {}; + for (var key in object) { + clone[key] = object[key]; + } + return clone; +}  

diff --git a/coverage/lcov-report/lib/connection.js.html b/coverage/lcov-report/lib/connection.js.html index 4eadb90f..cc7f9448 100644 --- a/coverage/lcov-report/lib/connection.js.html +++ b/coverage/lcov-report/lib/connection.js.html @@ -179,20 +179,20 @@ -
+

Code coverage report for lib/connection.js

- Statements: 75.86% (88 / 116)      + Statements: 88.7% (157 / 177)      - Branches: 60.71% (17 / 28)      + Branches: 69.57% (32 / 46)      - Functions: 71.43% (15 / 21)      + Functions: 93.75% (30 / 32)      - Lines: 75.86% (88 / 116)      + Lines: 88.7% (157 / 177)     

All files » lib/ » connection.js
@@ -494,9 +494,245 @@

293 294 295 -2961 +296 +297 +298 +299 +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 +310 +311 +312 +313 +314 +315 +316 +317 +318 +319 +320 +321 +322 +323 +324 +325 +326 +327 +328 +329 +330 +331 +332 +333 +334 +335 +336 +337 +338 +339 +340 +341 +342 +343 +344 +345 +346 +347 +348 +349 +350 +351 +352 +353 +354 +355 +356 +357 +358 +359 +360 +361 +362 +363 +364 +365 +366 +367 +368 +369 +370 +371 +372 +373 +374 +375 +376 +377 +378 +379 +380 +381 +382 +383 +384 +385 +386 +387 +388 +389 +390 +391 +392 +393 +394 +395 +396 +397 +398 +399 +400 +401 +402 +403 +404 +405 +406 +407 +408 +409 +410 +411 +412 +413 +414 +415 +416 +417 +418 +419 +420 +421 +422 +423 +424 +425 +426 +427 +428 +429 +430 +431 +432 +433 +434 +435 +436 +437 +438 +439 +440 +441 +442 +443 +444 +445 +446 +447 +448 +449 +450 +451 +452 +453 +454 +455 +456 +457 +458 +459 +460 +461 +462 +463 +464 +465 +466 +467 +468 +469 +470 +471 +472 +473 +474 +475 +476 +477 +478 +4791 +  +  +  +  +  +  +  +  +1 +  1 +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  1 +  +18 +  +  +18 +  +  +18 +  +  +18 +  +  +18 +  +  +18 +  +  +  1     @@ -538,50 +774,53 @@

  1   -6     -6     -6   +18   -6 +18     -6 +18 +18     -6 +18   -1     +18 +18 +18     1 -6 -6 -12 -12 +139   -6 -6   -6 -6     1 -2 -2 -2 -2 -2 +23 +  +23 +23 +  +  +  +  +      1 +16 +16 +  +  +  1 1 1 @@ -590,100 +829,172 @@

      +  +  +  +  +  1 -26 +16 +16 +16 +16 +16   -26 -26 -41 -41 -41 +  +1 +16 16 16         -26 -26 -26     -  -  -        +1 +9 +  +9 +2 +2       +7 +7 +7 +7 +7 +    -1 -16   -16 -1 -1 1   +9 +9   -16 +9   -16   -16 +9       +9 +1 +9 +    +9   -1 -6   -6 -6         -6 -6 -6 +9 +9 +3 +3 +3 +  +    +9 +9     +9 +  +  +  +  +9 +  +9 +  +  +      -6     1 +123 +  +  +123 +123 +120 +120 +120 +120 +120 +26 +26 +3 +3 +  +  +26 +26 +  +26 +  +26 +  +        +123 +  +      1 +47 +  +  +47 +  +  +47 6 -6 -6 +  +  +  +46 +3 +  +  +  +45 +  +45 +  +  +      1 -  -  -  -      -      1 -  -  -  +  +18 +18 +  +  +18 +18 +18       @@ -691,24 +1002,26 @@

      +18 +  +  +  +1 +18 +34         1 -  -  -  -  -  -  +18 +  +  +    -        -  -        @@ -719,17 +1032,30 @@

    1 +18 +18 +18 +      1 +2 +2 +2 +32     +2       1 +2 +2 +2   -6 +2 +2       @@ -738,13 +1064,28 @@

      -6 -6 +  +  +1 +4 +2 +2 +2 +2 +2 +  +  +  +  +  +2 +2 +  +          -1       @@ -758,12 +1099,26 @@

      +  +  +  1 -6 +  +  +          +1 +  +18 +18 +16 +  +18 +18 +18       @@ -771,28 +1126,92 @@

    1 -6 -6   -    -6 +      1 -16 -2 +18 +      -2 +18 +18 +18 +24     -16   - 
var utils   = require('./utils');
-var logging = require('./logging');
-var Stream  = require('./stream').Stream;
-var Duplex  = require('stream').Duplex;
+ 
+ 
+ 
+1
+2
+2
+2
+ 
+ 
+ 
+ 
+ 
+ 
var logging = require('./logging');
+ 
+// The Connection class
+// ====================
+ 
+// The Connection class manages HTTP/2 connections. Each instance corresponds to one transport
+// stream (TCP stream). It operates by sending and receiving frames and is implemented as a
+// [Flow](flow.html) subclass.
+ 
+var Flow = require('./flow').Flow;
+ 
+exports.Connection = Connection;
+ 
+// Public API
+// ----------
+ 
+// * **new Connection(firstStreamId, settings, [log])**: create a new Connection
+//
+// * **Event: 'error' (type)**: signals a connection level error
+//
+// * **Event: 'stream' (stream)**: signals that there's an incoming stream
+//
+// * **createStream(): stream**: initiate a new stream
+//
+// * **set(settings)**: change the value of one or more settings according to the key-value pairs
+//   of `settings`
+//
+// * **ping(callback)**: send a ping and call callback when the answer arrives
+//
+// * **close([error])**: close the stream with an error code
+ 
+// Constructor
+// -----------
+ 
+// The main aspects of managing the connection are:
+function Connection(firstStreamId, settings, log) {
+  // * initializing the base class
+  Flow.call(this, 0);
+ 
+  // * logging: every method uses the common logger object
+  this._log = (log || logging.root).child({ component: 'connection' });
+ 
+  // * stream management
+  this._initializeStreamManagement(firstStreamId);
+ 
+  // * settings management
+  this._initializeSettingsManagement(settings);
+ 
+  // * lifecycle management
+  this._initializeLifecycleManagement();
+ 
+  // * flow control
+  this._initializeFlowControl();
+ 
+  // * multiplexing
+}
+Connection.prototype = Object.create(Flow.prototype, { constructor: { value: Connection } });
  
 // Overview
 // --------
@@ -825,106 +1244,213 @@ 

// read() | | write() // v |   -// Connection -// ---------- -  -exports.Connection = Connection; +// Stream management +// -----------------   -// The main aspects of managing the connection are: -function Connection(firstStreamId, settings, log) { - // * handling IO, particularly multiplexing/demultiplexing incoming and outgoing frames - Duplex.call(this, { objectMode: true }); +var Stream = require('./stream').Stream;   - // * logging: every method uses the common logger object - this._log = (log || logging.root).child({ component: 'connection' }); +// Initialization: +Connection.prototype._initializeStreamManagement = function _initializeStreamManagement(firstStreamId) { + // * streams are stored in two data structures: + // * `_streamsIds` is the primary registry of streams. It's a sparse array that serves as an + // id -> stream map. + // + // * `_streamPriorities` is an ordered set of streams that are allowed to send data. The order + // is determined by stream priorities. (currently, it's order of creation) + this._streamsIds = [];   - // * stream management - this._initializeStreamManagement(firstStreamId); + this._streamPriorities = [];   - // * settings management - this._initializeSettingsManagement(settings); + // * The next outbound stream ID and the last inbound stream id + this._nextStreamId = firstStreamId; + this._lastIncomingStream = 0;   - // * lifecycle management - this._initializeLifecycleManagement(); + // * Calling `_writeControlFrame` when there's an incoming stream with 0 as stream ID + this._streamsIds[0] = { upstream: { write: this._writeControlFrame.bind(this) } };   - // * flow control - this._initializeFlowControl(); -} -Connection.prototype = Object.create(Duplex.prototype, { constructor: { value: Connection } }); + // * By default, the number of concurrent outbound streams is not limited. The `_streamLimit` can + // be set by the SETTINGS_MAX_CONCURRENT_STREAMS setting. + this._streamCount = 0; + this._streamLimit = Infinity; + this.on('SETTINGS_MAX_CONCURRENT_STREAMS', this._updateStreamLimit); +};   -// Stream management -// ----------------- +Connection.prototype._getIdOf = function _getIdOf(stream) { + return this._streamsIds.indexOf(stream); +};   -Connection.prototype._initializeStreamManagement = function _initializeStreamManagement(firstStreamId) { - this._control = new Duplex({ objectMode: true }); - this._control._write = function(frame, encoding, done) { +// `_writeControlFrame` is called when there's an incoming frame in the `_control` stream. It +// broadcasts the message by creating an event on it. +Connection.prototype._writeControlFrame = function _writeControlFrame(frame) { + Eif ((frame.type === 'SETTINGS') || (frame.type === 'PING') || + (frame.type === 'GOAWAY') || (frame.type === 'WINDOW_UPDATE')) { + this._log.debug({ frame: frame }, 'Receiving connection level frame'); this.emit(frame.type, frame); - done(); - }; - this._control._read = utils.noop; - this._control.on('readable', this.emit.bind(this, 'stream_readable')); + } else { + this._log.error({ frame: frame }, 'Invalid connection level frame'); + this.emit('error', 'PROTOCOL_ERROR'); + } +}; +  +// Changing the stream count limit +Connection.prototype._updateStreamLimit = function _updateStreamLimit(newStreamLimit) { + this._streamLimit = newStreamLimit; + this.emit('stream_slot_change'); +};   - this.streams = [{ upstream: this._control }]; - this._next_stream_id = firstStreamId; +// Freeing a slot in the stream pool +Connection.prototype._decreaseStreamCount = function _decreaseStreamCount() { + this._streamCount -= 1; + this.emit('stream_slot_change'); };   +// Creating a new *inbound or outbound* stream with the given `id` consists of two steps: +// +// 1. `var newstream = this._newStream(id);` +// * creates the new stream and registers it in `this._streamsIds` +// 2. `this._activateStream(newstream);` +// * adds it to `_streamPriorities` (in the appropriate position) +// * transforms 'readable' events on the stream to 'stream_readable' events on the connection +  Connection.prototype._newStream = function _newStream(id) { - var stream = new Stream(this._log.child({ stream: id })); - this._log.trace({ id: id }, 'Adding new stream.'); - this.streams[id] = stream; - stream.upstream.on('readable', this.emit.bind(this, 'stream_readable')); + this._log.trace({ stream_id: id }, 'Adding new stream.'); + var stream = new Stream(this._log.child({ stream_id: id })); + this._streamsIds[id] = stream; + this.emit('new_stream', stream, id); + return stream; +}; +  +Connection.prototype._activateStream = function _activateStream(stream) { + this._log.trace({ stream_id: this._getIdOf(stream) }, 'Activating stream.'); + this._streamPriorities.push(stream); + stream.upstream.on('readable', this.read.bind(this, 0)); +}; +  +// Creating an *inbound* stream with the given ID. It is called when there's an incoming frame to +// a previously nonexistent stream. +// +// * Incoming stream IDs have to be greater than any previous incoming stream ID, and have to be of +// different parity than IDs used for outbound streams. +// * It creates and activates the stream. +// * Emits 'stream' event with the new stream. +Connection.prototype._createIncomingStream = function _createIncomingStream(id) { + this._log.debug({ stream_id: id }, 'New incoming stream.'); +  + if ((id <= this._lastIncomingStream) || ((id - this._nextStreamId) % 2 === 0)) { + this._log.error({ stream_id: id, lastIncomingStream: this._lastIncomingStream }, 'Invalid incoming stream ID.'); + this.emit('error', 'PROTOCOL_ERROR'); + return undefined; + } +  + this._lastIncomingStream = id; + var stream = this._newStream(id); + this._activateStream(stream); + this.emit('stream', stream, id); return stream; };   +// Creating an *outbound* stream with the next available ID Connection.prototype.createStream = function createStream() { - var id = this._next_stream_id; - this._next_stream_id += 2; - return this._newStream(id); + // * Allocating a new ID with the appropriate parity. + var id = this._nextStreamId; + this._nextStreamId += 2; +  + this._log.trace({ stream_id: id }, 'Creating new outbound stream.'); +  + // * Creating a new Stream. + var stream = this._newStream(id); +  + // * Activating the created stream is only possible when there's enough space in the stream pool. + // `tryToActivate` tries to activate the stream until it finally succeeds. + var self = this; + function tryToActivate() { + Iif (self._streamCount >= self._streamLimit) { + self.once('stream_slot_change', tryToActivate); + } else { + self._activateStream(stream); + } + } +  + // * Starting activation process when + // * it becomes 'active' (tries to send a frame) + // * and if it is a promised stream, the PUSH_PROMISE is sent + var promisePending = false; + stream.once('promise_initiated', function() { + promisePending = true; + stream.once('promise_sent', function() { + promisePending = false; + }); + }); +  + stream.once('active', function() { + Iif (promisePending) { + stream.once('promise_sent', tryToActivate); + } else { + tryToActivate(); + } + }); +  + // * When the stream becomes inactive, decreasing the `_streamCount` + stream.once('inactive', this._decreaseStreamCount.bind(this)); +  + return stream; };   // Multiplexing // ------------   -Connection.prototype._read = function _read() { // TODO: prioritization +// The `_send` method is a virtual method of the [Flow class](flow.html) that has to be implemented +// by child classes. It reads frames from streams and pushes them to the output buffer. +Connection.prototype._send = function _send() { this._log.trace('Starting forwarding frames from streams.');   - var more_needed = true, stream, frame; - for (var id = 0; id < this.streams.length && more_needed; id++) { - stream = this.streams[id]; - Eif (stream) { - while (frame = stream.upstream.read()) { - frame.stream = id; - more_needed = this._send(frame); + // * Looping through the active streams in priority order and forwarding frames from streams +stream_loop: + for (var i = 0; i < this._streamPriorities.length; i++) { + var stream = this._streamPriorities[i]; + var id = this._getIdOf(stream); + var frame; + var unshiftRemainder = stream.upstream.unshift.bind(stream.upstream); + while (frame = stream.upstream.read()) { + frame.stream = id; + if (frame.type === 'PUSH_PROMISE') { + frame.promised_stream.emit('promise_sent'); + frame.promised_stream = this._getIdOf(frame.promised_stream); } - } - }   - Eif (more_needed === true) { - this._log.trace('More chunk is needed, but we could not provide more.'); - this.once('stream_readable', this._read.bind(this)); - } + this._log.trace({ stream_id: id, frame: frame }, 'Trying to forward outgoing frame'); + var moreNeeded = this._push(frame, unshiftRemainder);   - else if (more_needed === null) { - this._log.trace('We could not send more because of insufficient flow control window.'); // TODO: push back frame - this.once('window_update', this._read.bind(this)); + Iif (moreNeeded === null) { + continue stream_loop; + } else Iif (moreNeeded === false) { + break stream_loop; + } + } }   - else { - this._log.trace('No more chunk needed, stopping forwarding.'); - } + this._log.trace({ moreNeeded: moreNeeded }, 'Stopping forwarding frames from streams.'); };   -Connection.prototype._write = function write(frame, encoding, done) { - var stream = this.streams[frame.stream]; +// The `_receive` method is another virtual method of the [Flow class](flow.html) that has to be +// implemented by child classes. It forwards the given frame to the appropriate stream: +Connection.prototype._receive = function _receive(frame, done) { + this._log.trace({ frame: frame }, 'Forwarding incoming frame'); +  + // * gets the appropriate stream from the stream registry + var stream = this._streamsIds[frame.stream];   + // * or creates one if it's not in `this.streams` if (!stream) { - stream = this._newStream(frame.stream); - this.emit('incoming_stream', stream); - this._log.debug({ id: frame.stream }, 'New incoming stream.'); + stream = this._createIncomingStream(frame.stream); }   - this.emit('receiving', frame); + // * in case of PUSH_PROMISE, replaces the promised stream id with a new incoming stream + if (frame.type === 'PUSH_PROMISE') { + frame.promised_stream = this._createIncomingStream(frame.promised_stream); + }   + // * and writes it to the `stream`'s `upstream` stream.upstream.write(frame);   done(); @@ -933,77 +1459,106 @@

// Settings management // -------------------   -Connection.prototype._initializeSettingsManagement = function _initializeSettingsManagement(settings) { - this._settings = settings; +var defaultSettings = { + SETTINGS_FLOW_CONTROL_OPTIONS: true +};   +// Settings management initialization: +Connection.prototype._initializeSettingsManagement = function _initializeSettingsManagement(settings) { + // * Sending the initial settings. this._log.info('Sending the first SETTINGS frame as part of the connection header.'); - this._control.push({ - type: 'SETTINGS', - settings: this._settings - }); + this.set(settings || defaultSettings);   + // * Checking that the first frame the other endpoint sends is SETTINGS this.once('receiving', function(frame) { - Eif (frame.stream === 0 && frame.type === 'SETTINGS') { + Eif ((frame.stream === 0) && (frame.type === 'SETTINGS')) { this._log.info('Receiving the first SETTINGS frame as part of the connection header.'); } else { - this.reset(); + this._log.fatal({ frame: frame }, 'Invalid connection header: first frame is not SETTINGS.'); + this.emit('error'); } });   - this._control.on('SETTINGS', this._receiveSettings.bind(this)); + // * Forwarding SETTINGS frames to the `_receiveSettings` method + this.on('SETTINGS', this._receiveSettings); };   +// Handling of incoming SETTINGS frames. Connection.prototype._receiveSettings = function _receiveSettings(frame) { + for (var name in frame.settings) { + this.emit(name, frame.settings[name]); + } +}; +  +// Changing one or more settings value and sending out a SETTINGS frame +Connection.prototype.set = function set(settings) { + this.push({ + stream: 0, + type: 'SETTINGS', + settings: settings + }); };   // Lifecycle management // --------------------   +// The main responsibilities of lifecycle management code: +// +// * keeping the connection alive by +// * sending PINGs when the connection is idle +// * answering PINGs +// * ending the connection +  Connection.prototype._initializeLifecycleManagement = function _initializeLifecycleManagement() { this._pings = {}; - this._control.on('PING', this._receivePing.bind(this)); - this._control.on('GOAWAY', this._receiveGoaway.bind(this)); + this.on('PING', this._receivePing); + this.on('GOAWAY', this._receiveGoaway); };   -Connection.prototype._generatePingId = function _generatePingId() { - do { - var id = ''; - for (var i = 0; i < 16; i++) { - id += Math.floor(Math.random()*16).toString(16); +// Generating a string of length 16 with random hexadecimal digits +Connection.prototype._generatePingId = function _generatePingId() { + do { + var id = ''; + for (var i = 0; i < 16; i++) { + id += Math.floor(Math.random()*16).toString(16); } - } while(!(id in this._pings)); - return id; + } while(id in this._pings); + return id; };   -Connection.prototype.ping = function ping(callback) { - var id = this._generatePingId(); - var data = new Buffer(id, 'hex'); - this._pings[id] = callback; +// Sending a ping and calling `callback` when the answer arrives +Connection.prototype.ping = function ping(callback) { + var id = this._generatePingId(); + var data = new Buffer(id, 'hex'); + this._pings[id] = callback;   - this._log.debug({ data: data }, 'Sending PING.') - this._control.push({ + this._log.debug({ data: data }, 'Sending PING.'); + this.push({ + stream: 0, type: 'PING', flags: { PONG: false }, - data: new Buffer(id, 'hex') + data: data }); };   -Connection.prototype._receivePing = function _receivePing(frame) { - if (frame.flags.PONG) { - var id = frame.data.toString('hex'); - if (id in this._pings) { - this._log.debug({ data: frame.data }, 'Receiving answer for a PING.'); - this._pings[id](); - delete this._pings[id]; +// Answering pings +Connection.prototype._receivePing = function _receivePing(frame) { + if (frame.flags.PONG) { + var id = frame.data.toString('hex'); + Eif (id in this._pings) { + this._log.debug({ data: frame.data }, 'Receiving answer for a PING.'); + this._pings[id](); + delete this._pings[id]; } else { - this._log.warning({ data: frame.data }, 'Unsolicited PING answer.'); + this._log.warn({ data: frame.data }, 'Unsolicited PING answer.'); }   } else { - this._log.debug({ data: frame.data }, 'Answering PING.') - this._control.push({ + this._log.debug({ data: frame.data }, 'Answering PING.'); + this.push({ + stream: 0, type: 'PING', flags: { PONG: true @@ -1013,83 +1568,77 @@

} };   -Connection.prototype.reset = function reset() { +// Terminating the connection +Connection.prototype.close = function close(error) { + this._log.info({ error: error }, 'Closing the connection'); + this.push({ + stream: 0, + type: 'GOAWAY', + last_stream: this._lastIncomingStream, + error: error || 'NO_ERROR' + }); + this.push(null); };   Connection.prototype._receiveGoaway = function _receiveGoaway(frame) { + this._log.info({ error: frame.error }, 'Other end closed the connection'); + this.push(null); };   // Flow control // ------------   Connection.prototype._initializeFlowControl = function _initializeFlowControl() { - // Turning off flow control for incoming frames (not yet supported): - this._control.push({ - type: 'WINDOW_UPDATE', - flags: { - END_FLOW_CONTROL: true - }, - window_size: 0 + // Handling of initial window size of individual streams. + this._initialStreamWindowSize = INITIAL_STREAM_WINDOW_SIZE; + this.on('new_stream', function(stream) { + stream.upstream.setInitialWindow(this._initialStreamWindowSize); }); + this.on('SETTINGS_INITIAL_WINDOW_SIZE', this._setInitialStreamWindowSize); + this.on('SETTINGS_FLOW_CONTROL_OPTIONS', this._setStreamFlowControl); + this._streamsIds[0].upstream.setInitialWindow = function noop() {};   - // Initializing flow control for outgoing frames - this._window = INITIAL_WINDOW_SIZE; - this._control.on('WINDOW_UPDATE', this._updateWindow.bind(this)); + // Flow control for incoming frames is not yet supported, and is turned off in the initial + // SETTINGS frame. };   -// When a HTTP/2.0 connection is first established, new streams are created with an initial flow -// control window size of 65535 bytes. -var INITIAL_WINDOW_SIZE = 65535; +// The initial connection flow control window is 65535 bytes. +var INITIAL_STREAM_WINDOW_SIZE = 65535;   // A SETTINGS frame can alter the initial flow control window size for all current streams. When the -// value of SETTINGS_INITIAL_WINDOW_SIZE changes, a receiver MUST adjust the size of all stream by -// calling the `setInitialWindowSize` method. The window size has to be modified by the difference -// between the new value and the old value. -Connection.prototype.setInitialWindowSize = function setInitialWindowSize(initialWindowSize) { - this._window = this._window - this._initialWindowSize + initialWindowSize; - this._initialWindowSize = initialWindowSize; -}; -  -// Flow control can be disabled for all streams on the connection using the `disableFlowControl` -// method. This may happen when there's a SETTINGS frame received with the -// SETTINGS_FLOW_CONTROL_OPTIONS setting. -Connection.prototype.disableFlowControl = function disableFlowControl() { - this._window = Infinity; -}; -  -// The `_updateWindow` method gets called every time there's an incoming WINDOW_UPDATE frame. It -// modifies the modifies the flow control window: -// -// * Flow control can be disabled for an individual stream by sending a WINDOW_UPDATE with the -// END_FLOW_CONTROL flag set. The payload of a WINDOW_UPDATE frame that has the END_FLOW_CONTROL -// flag set is ignored. -// * A sender that receives a WINDOW_UPDATE frame updates the corresponding window by the amount -// specified in the frame. -Connection.prototype._updateWindow = function _updateWindow(frame) { - Eif (frame.flags.END_FLOW_CONTROL) { - this.disableFlowControl(); +// value of SETTINGS_INITIAL_WINDOW_SIZE changes, a receiver MUST adjust the window size of all +// stream by calling the `setInitialStreamWindowSize` method. The window size has to be modified by +// the difference between the new value and the old value. +Connection.prototype._setInitialStreamWindowSize = function _setInitialStreamWindowSize(size) { + Iif ((this._initialStreamWindowSize === Infinity) && (size !== Infinity)) { + this._log.error('Trying to manipulate initial flow control window size after flow control was turned off.'); + this.emit('error', 'FLOW_CONTROL_ERROR'); } else { - this._window += frame.window_size; + this._log.debug({ size: size }, 'Changing stream initial window size.'); + this._initialStreamWindowSize = size; + this._streamsIds.forEach(function(stream) { + stream.upstream.setInitialWindow(size); + }); } - this.emit('window_update'); };   -Connection.prototype._send = function _send(frame) { - if (frame && frame.type === 'DATA') { - Iif (frame.data.length > this._window) { - return null; - } - this._window -= frame.data.length; +// `_setStreamFlowControl()` may be used to disable/enable flow control. In practice, it is just +// for turning off flow control since it can not be turned on. +Connection.prototype._setStreamFlowControl = function _setStreamFlowControl(disable) { + Eif (disable) { + this._increaseWindow(Infinity); + this._setInitialStreamWindowSize(Infinity); + } else if (this._initialStreamWindowSize === Infinity) { + this._log.error('Trying to re-enable flow control after it was turned off.'); + this.emit('error', 'FLOW_CONTROL_ERROR'); } -  - return this.push(frame); };  

diff --git a/coverage/lcov-report/lib/endpoint.js.html b/coverage/lcov-report/lib/endpoint.js.html index 31f1cb9b..3e7ac06f 100644 --- a/coverage/lcov-report/lib/endpoint.js.html +++ b/coverage/lcov-report/lib/endpoint.js.html @@ -183,16 +183,16 @@

Code coverage report for lib/endpoint.js

- Statements: 90.28% (65 / 72)      + Statements: 90.91% (70 / 77)      - Branches: 72.22% (13 / 18)      + Branches: 75% (12 / 16)      - Functions: 88.89% (8 / 9)      + Functions: 83.33% (10 / 12)      - Lines: 90.28% (65 / 72)      + Lines: 90.91% (70 / 77)     

All files » lib/ » endpoint.js
@@ -367,7 +367,22 @@

166 167 168 -1691 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +1841 1 1 1 @@ -382,17 +397,17 @@

    1 -2 +4     -2 +4       +4 +2 +2 2 -1 -1 -1       @@ -400,10 +415,13 @@

      -2 +4     -2 +4 +  +  +4   1   @@ -414,37 +432,37 @@

    1 -1 -1 +2 +2       1   -1 +2     -1 +2     -1 -1 -24 +2 +2 +48           -24 +48         -1 -1 -1 -1 -1 +2 +2 +2 +2 +2       @@ -483,56 +501,68 @@

    1 +4 +4 2 2 -1 -1 -1 -  -1 -1 -1 -  -  -2 2 +  2 2 2   -2 -2 +  +4 +4 +4 +4 +4 +  +4 +4 +  +4     1 -12 -12 -8 +29 +29 +16 +  +  +  +1 +10     -12 -12       1 -7 +4 +  +  +1 +1           1 -2 -2 -2 -2 -2 +4 +4 +4 +4 +4     1     +  +  +1      
var logging      = require('./logging');
@@ -569,6 +599,9 @@ 

// sending the first SETTINGS frame. This is done by the connection class right after // initialization. this._initializeDataFlow(role, settings); +  + // * Initialization of management code. + this._initializeManagement();   // * Initializing error handling. this._initializeErrorHandling(); @@ -670,16 +703,14 @@

  this._connection.pipe(this._compressor).pipe(this._serializer); this._deserializer.pipe(this._decompressor).pipe(this._connection); -};   -Endpoint.prototype._read = function _read(size) { - var more_needed = true, chunk; - while (more_needed && (chunk = this._serializer.read(size))) { - more_needed = this.push(chunk); - } + this._serializer.on('readable', this._read.bind(this)); +};   - Eif (more_needed) { - this._serializer.once('readable', this._read.bind(this)); +Endpoint.prototype._read = function _read() { + var moreNeeded = true, chunk; + while (moreNeeded && (chunk = this._serializer.read())) { + moreNeeded = this.push(chunk); } };   @@ -687,6 +718,17 @@

this._deserializer.write(chunk, encoding, done); };   +// Management +// -------------- +  +Endpoint.prototype._initializeManagement = function _initializeManagement() { + this._connection.on('stream', this.emit.bind(this, 'stream')); +}; +  +Endpoint.prototype.createStream = function createStream() { + return this._connection.createStream(); +}; +  // Error handling // --------------   @@ -698,17 +740,20 @@

this._connection.on('error', this._error.bind(this, 'connection')); };   -Endpoint.prototype._error = function _error(component, message) { - this._log.fatal({ component: component, message: message }, 'Fatal error, closing connection'); - this.push(null); - this.emit('error', component, message); +Endpoint.prototype._error = function _error(component, error) { + this._log.fatal({ component: component, message: error }, 'Fatal error, closing connection'); + this.close(error); +}; +  +Endpoint.prototype.close = function close(error) { + this._connection.close(error); };  

diff --git a/coverage/lcov-report/lib/framer.js.html b/coverage/lcov-report/lib/framer.js.html index 8a6c0f62..58fe5144 100644 --- a/coverage/lcov-report/lib/framer.js.html +++ b/coverage/lcov-report/lib/framer.js.html @@ -183,16 +183,16 @@

Code coverage report for lib/framer.js

- Statements: 90.23% (194 / 215)      + Statements: 89.04% (203 / 228)      - Branches: 75% (42 / 56)      + Branches: 73.53% (50 / 68)      - Functions: 86.67% (26 / 30)      + Functions: 87.1% (27 / 31)      - Lines: 90.23% (194 / 215)      + Lines: 89.04% (203 / 228)     

All files » lib/ » framer.js
@@ -874,11 +874,30 @@

673 674 675 -676  +676 +677 +678 +679 +680 +681 +682 +683 +684 +685 +686 +687 +688 +689 +690 +691 +692 +693 +694        1 +1   1   @@ -898,8 +917,8 @@

    1 -3 -3 +5 +5   1   @@ -907,22 +926,20 @@

    1 -14 -  -14 -  +18   +18   -14 -14 -14 +18 +18 +18   -14 -30 -30 +18 +38 +38     -14 +18       @@ -937,9 +954,9 @@

    1 -3 -3 -3 +5 +5 +5   1   @@ -949,37 +966,37 @@

    1 -31 -31 -31 -31 -17 +41 +41 +41 +41 +23           1 -22 +25   -22 +25   -22 +25     -39 -39 -39 -39 +48 +48 +48 +48             -39 -14 -14 +48 +18 +18       @@ -987,24 +1004,24 @@

      -39 -14 -14 -14 -14 -14 -  +48 +18 +18 +18       +18 +18 +        -14 +18       -22 +25       @@ -1064,53 +1081,47 @@

1   1 -24 -  -24 -24 -26 -  -24 -  -  -24 +28   -24 -24 +28 +28 +30   -24 -24 28 28 -    28 -4 +28   +28 +28 +29 +29 +29 +5   -24   -24 -  +28   -24 +28 +28   -24 +28     1 -24 +28   -24 +28   -24 -24 -24 -24 28 +28 +28 +28 +38     -24 +28       @@ -1144,11 +1155,11 @@

1   1 -2 +4     1 -2 +4       @@ -1187,20 +1198,21 @@

    1 -4 +6 +2 2 2 2   -4 +6     1 -4 +6 2 2   -2 +4       @@ -1261,6 +1273,8 @@

2 2 2 +2 +2     1 @@ -1300,44 +1314,40 @@

    1 -4 -4 -12 6 6 -6 -  +18 +12 +12 +12   -4 -    +6   -4 -4 6 6 +12 +12     -4 +6     1 -4 -  -4 -  -  -4 -6 -6 6 +  6     6 +12 +12 +12 +12 +    +12   -4       @@ -1392,6 +1402,7 @@

2 2 2 +2     1 @@ -1420,8 +1431,6 @@

  1 2 -  -  2     @@ -1462,8 +1471,14 @@

  1 2 +  +2 +2 +  +2 2 2 +  2     @@ -1495,13 +1510,14 @@

    1 -4 -4 -4 +2 +2 +2 +2     1 -4 +2       @@ -1529,14 +1545,34 @@

    1 +1     +  +  +              +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +        @@ -1553,6 +1589,7 @@

// the Serializer and the Deserializer // [1]: http://nodejs.org/api/stream.html#stream_class_stream_transform // [2]: http://nodejs.org/api/stream.html#stream_new_stream_readable_options +var assert = process.env.HTTP2_ASSERT ? require('assert') : function noop() {}; var logging = require('./logging');   var Transform = require('stream').Transform; @@ -1582,18 +1619,16 @@

// frame (payload), and then then adds the header part which holds fields that are common to all // frame types (like the length of the payload). Serializer.prototype._transform = function _transform(frame, encoding, done) { - this._log.debug({ frame: frame }, 'Outgoing frame'); + this._log.trace({ frame: frame }, 'Outgoing frame');   - Iif (!(frame.type in Serializer)) { - throw new Error('Unknown frame type: ' + frame.type); - } + assert(frame.type in Serializer, 'Unknown frame type: ' + frame.type);   var buffers = []; Serializer[frame.type](frame, buffers); Serializer.commonHeader(frame, buffers);   for (var i = 0; i < buffers.length; i++) { - this._log.trace({ data: buffers[i] }, 'Outgoing data.'); + this._log.trace({ data: buffers[i] }, 'Outgoing data'); this.push(buffers[i]); }   @@ -1619,15 +1654,15 @@

Deserializer.prototype = Object.create(Transform.prototype, { constructor: { value: Deserializer } });   // The Deserializer is stateful, and it's two main alternating states are: *waiting for header* and -// *waiting for payload*. The state is stored in the boolean property `_waiting_for_header`. +// *waiting for payload*. The state is stored in the boolean property `_waitingForHeader`. // // When entering a new state, a `_buffer` is created that will hold the accumulated data (header or // payload). The `_cursor` is used to track the progress. Deserializer.prototype._next = function(size) { this._cursor = 0; this._buffer = new Buffer(size); - this._waiting_for_header = !this._waiting_for_header; - if (this._waiting_for_header) { + this._waitingForHeader = !this._waitingForHeader; + if (this._waitingForHeader) { this._frame = {}; } }; @@ -1637,22 +1672,22 @@

Deserializer.prototype._transform = function _transform(chunk, encoding, done) { var cursor = 0;   - this._log.trace({ data: chunk }, 'Incoming data.'); + this._log.trace({ data: chunk }, 'Incoming data');   while(cursor < chunk.length) { // The content of an incoming buffer is first copied to `_buffer`. If it can't hold the full // chunk, then only a part of it is copied. - var to_copy = Math.min(chunk.length - cursor, this._buffer.length - this._cursor); - chunk.copy(this._buffer, this._cursor, cursor, cursor + to_copy); - this._cursor += to_copy; - cursor += to_copy; + var toCopy = Math.min(chunk.length - cursor, this._buffer.length - this._cursor); + chunk.copy(this._buffer, this._cursor, cursor, cursor + toCopy); + this._cursor += toCopy; + cursor += toCopy;   // When `_buffer` is full, it's content gets parsed either as header or payload depending on // the actual state.   // If it's header then the parsed data is stored in a temporary variable and then the // deserializer waits for the specified length payload. - if (this._cursor === this._buffer.length && this._waiting_for_header) { + if ((this._cursor === this._buffer.length) && this._waitingForHeader) { Deserializer.commonHeader(this._buffer, this._frame); this._next(this._frame.length); } @@ -1662,15 +1697,15 @@

// // Note: If we just finished the parsing of a header and the payload length is 0, this branch // will also run. - if (this._cursor === this._buffer.length && !this._waiting_for_header) { + if ((this._cursor === this._buffer.length) && !this._waitingForHeader) { Eif (this._frame.type) { - try { - Deserializer[this._frame.type](this._buffer, this._frame); - this._log.debug({ frame: this._frame }, 'Incoming frame'); + var error = Deserializer[this._frame.type](this._buffer, this._frame); + Iif (error) { + this._log.error('Incoming frame parsing error'); + this.emit('error', 'PROTOCOL_ERROR'); + } else { + this._log.trace({ frame: this._frame }, 'Incoming frame'); this.push(this._frame); - } catch(error) { - this._log.error({ err: error }, 'Incoming frame parsing error'); - this.emit('error', error); } } else { this._log.warn({ frame: this._frame }, 'Unknown type incoming frame'); @@ -1730,59 +1765,53 @@

var COMMON_HEADER_SIZE = 8; var MAX_PAYLOAD_SIZE = 65535;   -var frame_types = []; +var frameTypes = [];   -var frame_flags = {}; +var frameFlags = {};   -var generic_attributes = ['length', 'type', 'flags', 'stream']; +var genericAttributes = ['length', 'type', 'flags', 'stream'];   -var type_specific_attributes = {}; +var typeSpecificAttributes = {};   Serializer.commonHeader = function writeCommonHeader(frame, buffers) { - var header_buffer = new Buffer(COMMON_HEADER_SIZE); + var headerBuffer = new Buffer(COMMON_HEADER_SIZE);   var size = 0; for (var i = 0; i < buffers.length; i++) { size += buffers[i].length; } - Iif (size > MAX_PAYLOAD_SIZE) { - throw new Error('Too large frame: ' + size + ' bytes'); - } - header_buffer.writeUInt16BE(size, 0); + assert(size < MAX_PAYLOAD_SIZE, 'Too large frame: ' + size + ' bytes'); + headerBuffer.writeUInt16BE(size, 0);   - var type_id = frame_types.indexOf(frame.type); // If we are here then the type is valid for sure - header_buffer.writeUInt8(type_id, 2); + var typeId = frameTypes.indexOf(frame.type); // If we are here then the type is valid for sure + headerBuffer.writeUInt8(typeId, 2);   - var flag_byte = 0; + var flagByte = 0; for (var flag in frame.flags) { - var position = frame_flags[frame.type].indexOf(flag); - Iif (position === -1) { - throw new Error('Unknown flag for frame type ' + frame.type + ': ' + flag); - } + var position = frameFlags[frame.type].indexOf(flag); + assert(position !== -1, 'Unknown flag for frame type ' + frame.type + ': ' + flag); if (frame.flags[flag]) { - flag_byte |= (1 << position); + flagByte |= (1 << position); } } - header_buffer.writeUInt8(flag_byte, 3); + headerBuffer.writeUInt8(flagByte, 3);   - Iif (frame.stream > 0x7fffffff) { - throw new Error('Too large stream ID: ' + frame.stream); - } - header_buffer.writeUInt32BE(frame.stream || 0, 4); + assert(frame.stream < 0x7fffffff, 'Too large stream ID: ' + frame.stream); + headerBuffer.writeUInt32BE(frame.stream || 0, 4);   - buffers.unshift(header_buffer); + buffers.unshift(headerBuffer); };   Deserializer.commonHeader = function readCommonHeader(buffer, frame) { frame.length = buffer.readUInt16BE(0);   - frame.type = frame_types[buffer.readUInt8(2)]; + frame.type = frameTypes[buffer.readUInt8(2)];   frame.flags = {}; - var flag_byte = buffer.readUInt8(3); - var defined_flags = frame_flags[frame.type]; - for (var i = 0; i < defined_flags.length; i++) { - frame.flags[defined_flags[i]] = Boolean(flag_byte & (1 << i)); + var flagByte = buffer.readUInt8(3); + var definedFlags = frameFlags[frame.type]; + for (var i = 0; i < definedFlags.length; i++) { + frame.flags[definedFlags[i]] = Boolean(flagByte & (1 << i)); }   frame.stream = buffer.readUInt32BE(4) & 0x7fffffff; @@ -1793,9 +1822,9 @@

  // Every frame type is registered in the following places: // -// * `frame_types`: a register of frame type codes (used by `commonHeader()`) -// * `frame_flags`: a register of valid flags for frame types (used by `commonHeader()`) -// * `type_specific_attributes`: a register of frame specific frame object attributes (used by +// * `frameTypes`: a register of frame type codes (used by `commonHeader()`) +// * `frameFlags`: a register of valid flags for frame types (used by `commonHeader()`) +// * `typeSpecificAttributes`: a register of frame specific frame object attributes (used by // logging code and also serves as documentation for frame objects)   // [DATA Frames](http://http2.github.io/http2-spec/#DataFrames) @@ -1812,11 +1841,11 @@

// * RESERVED (0x2): // Bit 2 is reserved for future use.   -frame_types[0x0] = 'DATA'; +frameTypes[0x0] = 'DATA';   -frame_flags.DATA = ['END_STREAM', 'RESERVED']; +frameFlags.DATA = ['END_STREAM', 'RESERVED'];   -type_specific_attributes.DATA = ['data']; +typeSpecificAttributes.DATA = ['data'];   Serializer.DATA = function writeData(frame, buffers) { buffers.push(frame.data); @@ -1845,11 +1874,11 @@

// Bit 4 being set indicates that the first four octets of this frame contain a single reserved // bit and a 31-bit priority.   -frame_types[0x1] = 'HEADERS'; +frameTypes[0x1] = 'HEADERS';   -frame_flags.HEADERS = ['END_STREAM', 'RESERVED', 'END_HEADERS', 'PRIORITY']; +frameFlags.HEADERS = ['END_STREAM', 'RESERVED', 'END_HEADERS', 'PRIORITY'];   -type_specific_attributes.HEADERS = ['priority', 'headers', 'data']; +typeSpecificAttributes.HEADERS = ['priority', 'headers', 'data'];   // 0 1 2 3 // 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 @@ -1864,7 +1893,8 @@

Serializer.HEADERS = function writeHeadersPriority(frame, buffers) { if (frame.flags.PRIORITY) { var buffer = new Buffer(4); - buffer.writeUInt32BE(frame.priority & 0x7fffffff, 0); + assert((0 <= frame.priority) && (frame.priority <= 0xffffffff)); + buffer.writeUInt32BE(frame.priority, 0); buffers.push(buffer); } buffers.push(frame.data); @@ -1886,11 +1916,11 @@

// // The PRIORITY frame does not define any flags.   -frame_types[0x2] = 'PRIORITY'; +frameTypes[0x2] = 'PRIORITY';   -frame_flags.PRIORITY = []; +frameFlags.PRIORITY = [];   -type_specific_attributes.PRIORITY = ['priority']; +typeSpecificAttributes.PRIORITY = ['priority'];   // 0 1 2 3 // 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 @@ -1917,11 +1947,11 @@

// // No type-flags are defined.   -frame_types[0x3] = 'RST_STREAM'; +frameTypes[0x3] = 'RST_STREAM';   -frame_flags.RST_STREAM = []; +frameFlags.RST_STREAM = [];   -type_specific_attributes.RST_STREAM = ['error']; +typeSpecificAttributes.RST_STREAM = ['error'];   // 0 1 2 3 // 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 @@ -1934,12 +1964,14 @@

  Serializer.RST_STREAM = function writeRstStream(frame, buffers) { var buffer = new Buffer(4); - buffer.writeUInt32BE(error_codes.indexOf(frame.error), 0); + var code = errorCodes.indexOf(frame.error); + assert((0 <= code) && (code <= 0xffffffff)); + buffer.writeUInt32BE(code, 0); buffers.push(buffer); };   Deserializer.RST_STREAM = function readRstStream(buffer, frame) { - frame.error = error_codes[buffer.readUInt32BE(0)]; + frame.error = errorCodes[buffer.readUInt32BE(0)]; };   // [SETTINGS](http://http2.github.io/http2-spec/#SETTINGS) @@ -1950,11 +1982,11 @@

// // The SETTINGS frame does not define any flags.   -frame_types[0x4] = 'SETTINGS'; +frameTypes[0x4] = 'SETTINGS';   -frame_flags.SETTINGS = []; +frameFlags.SETTINGS = [];   -type_specific_attributes.SETTINGS = ['settings']; +typeSpecificAttributes.SETTINGS = ['settings'];   // The payload of a SETTINGS frame consists of zero or more settings. Each setting consists of an // 8-bit reserved field, an unsigned 24-bit setting identifier, and an unsigned 32-bit value. @@ -1975,17 +2007,15 @@

// one.   Serializer.SETTINGS = function writeSettings(frame, buffers) { - var settings = [], settings_left = Object.keys(frame.settings); - defined_settings.forEach(function(setting, id) { + var settings = [], settingsLeft = Object.keys(frame.settings); + definedSettings.forEach(function(setting, id) { if (setting.name in frame.settings) { - settings_left.splice(settings_left.indexOf(setting.name), 1); + settingsLeft.splice(settingsLeft.indexOf(setting.name), 1); var value = frame.settings[setting.name]; settings.push({ id: id, value: setting.flag ? Boolean(value) : value }); } }); - Iif (settings_left.length !== 0) { - throw new Error('Unknown settings: ' + settings_left.join(', ')); - } + assert(settingsLeft.length === 0, 'Unknown settings: ' + settingsLeft.join(', '));   var buffer = new Buffer(settings.length * 8); for (var i = 0; i < settings.length; i++) { @@ -2000,37 +2030,35 @@

frame.settings = {};   Iif (buffer.length % 8 !== 0) { - throw new Error('Invalid SETTINGS frame.'); + return 'Invalid SETTINGS frame'; } for (var i = 0; i < buffer.length / 8; i++) { var id = buffer.readUInt32BE(i*8) & 0xffffff; - var setting = defined_settings[id]; + var setting = definedSettings[id]; var value = buffer.readUInt32BE(i*8 + 4); - Iif (!setting || setting.name in frame.settings) { + Iif (!setting || (setting.name in frame.settings)) { continue; } frame.settings[setting.name] = setting.flag ? Boolean(value & 0x1) : value; } -  - return frame; };   // The following settings are defined: -var defined_settings = []; +var definedSettings = [];   // * SETTINGS_MAX_CONCURRENT_STREAMS (4): // indicates the maximum number of concurrent streams that the sender will allow. -defined_settings[4] = { name: 'SETTINGS_MAX_CONCURRENT_STREAMS', flag: false }; +definedSettings[4] = { name: 'SETTINGS_MAX_CONCURRENT_STREAMS', flag: false };   // * SETTINGS_INITIAL_WINDOW_SIZE (7): // indicates the sender's initial stream window size (in bytes) for new streams. -defined_settings[7] = { name: 'SETTINGS_INITIAL_WINDOW_SIZE', flag: false }; +definedSettings[7] = { name: 'SETTINGS_INITIAL_WINDOW_SIZE', flag: false };   // * SETTINGS_FLOW_CONTROL_OPTIONS (10): // indicates that streams directed to the sender will not be subject to flow control. The least // significant bit (0x1) is set to indicate that new streams are not flow controlled. All other // bits are reserved. -defined_settings[10] = { name: 'SETTINGS_FLOW_CONTROL_OPTIONS', flag: true }; +definedSettings[10] = { name: 'SETTINGS_FLOW_CONTROL_OPTIONS', flag: true };   // [PUSH_PROMISE](http://http2.github.io/http2-spec/#PUSH_PROMISE) // --------------------------------------------------------------- @@ -2044,11 +2072,11 @@

// The END_PUSH_PROMISE bit indicates that this frame contains the entire payload necessary to // provide a complete set of headers.   -frame_types[0x5] = 'PUSH_PROMISE'; +frameTypes[0x5] = 'PUSH_PROMISE';   -frame_flags.PUSH_PROMISE = ['END_PUSH_PROMISE']; +frameFlags.PUSH_PROMISE = ['END_PUSH_PROMISE'];   -type_specific_attributes.PUSH_PROMISE = ['promised_stream', 'headers', 'data']; +typeSpecificAttributes.PUSH_PROMISE = ['promised_stream', 'headers', 'data'];   // 0 1 2 3 // 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 @@ -2064,7 +2092,8 @@

  Serializer.PUSH_PROMISE = function writePushPromise(frame, buffers) { var buffer = new Buffer(4); - buffer.writeUInt32BE(frame.promised_stream & 0x7fffffff, 0); + assert((0 <= frame.promised_stream) && (frame.promised_stream <= 0x7fffffff)); + buffer.writeUInt32BE(frame.promised_stream, 0); buffers.push(buffer); buffers.push(frame.data); }; @@ -2085,24 +2114,22 @@

// * PONG (0x2): // Bit 2 being set indicates that this PING frame is a PING response.   -frame_types[0x6] = 'PING'; +frameTypes[0x6] = 'PING';   -frame_flags.PING = ['PONG']; +frameFlags.PING = ['PONG'];   -type_specific_attributes.PING = ['data']; +typeSpecificAttributes.PING = ['data'];   // In addition to the frame header, PING frames MUST contain 8 additional octets of opaque data.   Serializer.PING = function writePing(frame, buffers) { - Iif (!frame.data || frame.data.length !== 8) { - throw new Error('PING frames must carry an 8 byte payload.'); - } + assert(('data' in frame) && (frame.data.length === 8), 'PING frames must carry an 8 byte payload'); buffers.push(frame.data); };   Deserializer.PING = function readPing(buffer, frame) { Iif (buffer.length !== 8) { - throw new Error('Invalid size PING frame.'); + return 'Invalid size PING frame'; } frame.data = buffer; }; @@ -2114,11 +2141,11 @@

// // The GOAWAY frame does not define any flags.   -frame_types[0x7] = 'GOAWAY'; +frameTypes[0x7] = 'GOAWAY';   -frame_flags.GOAWAY = []; +frameFlags.GOAWAY = [];   -type_specific_attributes.GOAWAY = ['last_stream', 'error']; +typeSpecificAttributes.GOAWAY = ['last_stream', 'error'];   // 0 1 2 3 // 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 @@ -2137,14 +2164,20 @@

  Serializer.GOAWAY = function writeGoaway(frame, buffers) { var buffer = new Buffer(8); - buffer.writeUInt32BE(frame.last_stream & 0x7fffffff, 0); - buffer.writeUInt32BE(error_codes.indexOf(frame.error), 4); +  + assert((0 <= frame.last_stream) && (frame.last_stream <= 0x7fffffff)); + buffer.writeUInt32BE(frame.last_stream, 0); +  + var code = errorCodes.indexOf(frame.error); + assert((0 <= code) && (code <= 0xffffffff)); + buffer.writeUInt32BE(code, 4); +  buffers.push(buffer); };   Deserializer.GOAWAY = function readGoaway(buffer, frame) { frame.last_stream = buffer.readUInt32BE(0) & 0x7fffffff; - frame.error = error_codes[buffer.readUInt32BE(4)]; + frame.error = errorCodes[buffer.readUInt32BE(4)]; };   // [WINDOW_UPDATE](http://http2.github.io/http2-spec/#WINDOW_UPDATE) @@ -2158,11 +2191,11 @@

// Bit 1 being set indicates that flow control for the identified stream // or connection has been ended; subsequent frames do not need to be flow controlled.   -frame_types[0x9] = 'WINDOW_UPDATE'; +frameTypes[0x9] = 'WINDOW_UPDATE';   -frame_flags.WINDOW_UPDATE = ['END_FLOW_CONTROL']; +frameFlags.WINDOW_UPDATE = ['END_FLOW_CONTROL'];   -type_specific_attributes.WINDOW_UPDATE = ['window_size']; +typeSpecificAttributes.WINDOW_UPDATE = ['window_size'];   // The payload of a WINDOW_UPDATE frame is a 32-bit value indicating the additional number of bytes // that the sender can transmit in addition to the existing flow control window. The legal range @@ -2171,7 +2204,8 @@

  Serializer.WINDOW_UPDATE = function writeWindowUpdate(frame, buffers) { var buffer = new Buffer(4); - buffer.writeUInt32BE(frame.window_size & 0x7fffffff, 0); + assert((0 <= frame.window_size) && (frame.window_size <= 0x7fffffff)); + buffer.writeUInt32BE(frame.window_size, 0); buffers.push(buffer); };   @@ -2182,7 +2216,7 @@

// [Error Codes](http://http2.github.io/http2-spec/#ErrorCodes) // ------------------------------------------------------------   -var error_codes = [ +var errorCodes = [ 'NO_ERROR', 'PROTOCOL_ERROR', 'INTERNAL_ERROR', @@ -2203,21 +2237,41 @@

  // * `frame` serializer: it transforms data attributes from Buffers to hex strings and filters out // flags that are not present. +var frameCounter = 0; logging.serializers.frame = function(frame) { - var log_entry = {}; - generic_attributes.concat(type_specific_attributes[frame.type]).forEach(function(name) { - log_entry[name] = frame[name]; + if (!frame) { + return null; + } +  + if ('id' in frame) { + return frame.id; + } +  + frame.id = frameCounter; + frameCounter += 1; +  + var logEntry = { id: frame.id }; + genericAttributes.concat(typeSpecificAttributes[frame.type]).forEach(function(name) { + logEntry[name] = frame[name]; });   if (frame.data instanceof Buffer) { - log_entry.data = frame.data.toString('hex'); + if (logEntry.data.length > 50) { + logEntry.data = frame.data.slice(0, 47).toString('hex') + '...'; + } else { + logEntry.data = frame.data.toString('hex'); + } +  + if (!('length' in logEntry)) { + logEntry.length = frame.data.length; + } }   - log_entry.flags = Object.keys(frame.flags || {}).filter(function(name) { + logEntry.flags = Object.keys(frame.flags || {}).filter(function(name) { return frame.flags[name] === true; });   - return log_entry; + return logEntry; };   // * `data` serializer: it simply transforms a buffer to a hex string. @@ -2229,7 +2283,7 @@

diff --git a/coverage/lcov-report/lib/index.html b/coverage/lcov-report/lib/index.html index 14d03551..d36ed6da 100644 --- a/coverage/lcov-report/lib/index.html +++ b/coverage/lcov-report/lib/index.html @@ -183,16 +183,16 @@

Code coverage report for lib/

- Statements: 91.18% (775 / 850)      + Statements: 86.53% (1195 / 1381)      - Branches: 84.69% (249 / 294)      + Branches: 73.43% (387 / 527)      - Functions: 88.03% (103 / 117)      + Functions: 84.9% (163 / 192)      - Lines: 91.18% (775 / 850)      + Lines: 86.66% (1189 / 1372)     

All files » lib/
@@ -216,54 +216,80 @@

compressor.js - - 100% - (262 / 262) + + 98.62% + (286 / 290) 100% (101 / 101) 100% - (31 / 31) - 100% - (262 / 262) + (34 / 34) + 98.62% + (286 / 290) - connection.js - - 75.86% - (88 / 116) - 60.71% - (17 / 28) - 71.43% - (15 / 21) - 75.86% - (88 / 116) + connection.js + + 88.7% + (157 / 177) + 69.57% + (32 / 46) + 93.75% + (30 / 32) + 88.7% + (157 / 177) endpoint.js - - 90.28% - (65 / 72) - 72.22% - (13 / 18) - 88.89% - (8 / 9) - 90.28% - (65 / 72) + + 90.91% + (70 / 77) + 75% + (12 / 16) + 83.33% + (10 / 12) + 90.91% + (70 / 77) + + + + flow.js + + 80.37% + (86 / 107) + 80.65% + (50 / 62) + 76.47% + (13 / 17) + 80.37% + (86 / 107) framer.js - - 90.23% - (194 / 215) - 75% - (42 / 56) - 86.67% - (26 / 30) - 90.23% - (194 / 215) + + 89.04% + (203 / 228) + 73.53% + (50 / 68) + 87.1% + (27 / 31) + 89.04% + (203 / 228) + + + + http.js + + 76.76% + (251 / 327) + 47.62% + (50 / 105) + 63.83% + (30 / 47) + 76.76% + (251 / 327) @@ -274,35 +300,22 @@

50% (1 / 2) 100% - (1 / 1) + (2 / 2) 66.67% (6 / 9) stream.js - - 90.2% - (138 / 153) - 84.27% - (75 / 89) - 85.71% - (18 / 21) - 90.2% - (138 / 153) - - - - utils.js - - 95.65% - (22 / 23) - 100% - (0 / 0) + + 81.93% + (136 / 166) + 71.65% + (91 / 127) 100% - (4 / 4) - 95.65% - (22 / 23) + (17 / 17) + 82.8% + (130 / 157) @@ -310,7 +323,7 @@

diff --git a/coverage/lcov-report/lib/logging.js.html b/coverage/lcov-report/lib/logging.js.html index 3d358f02..f831faf8 100644 --- a/coverage/lcov-report/lib/logging.js.html +++ b/coverage/lcov-report/lib/logging.js.html @@ -189,7 +189,7 @@

Branches: 50% (1 / 2)      - Functions: 100% (1 / 1)      + Functions: 100% (2 / 2)      Lines: 66.67% (6 / 9)      @@ -228,7 +228,6 @@

27 28 291 -1   1   @@ -243,6 +242,7 @@

    1 +1       @@ -250,13 +250,12 @@

      -53 +105     1   - 
var utils = require('./utils');
-var logging = exports;
+ 
var logging = exports;
  
 Iif (process.env.HTTP2_LOG) {
   var bunyan = require('bunyan');
@@ -270,13 +269,14 @@ 

logging.serializers = logging.root.serializers;   } else { + function noop() {} logging.root = { - fatal: utils.noop, - error: utils.noop, - warn : utils.noop, - info : utils.noop, - debug: utils.noop, - trace: utils.noop, + fatal: noop, + error: noop, + warn : noop, + info : noop, + debug: noop, + trace: noop,   child: function() { return this; } }; @@ -288,7 +288,7 @@

diff --git a/coverage/lcov-report/lib/stream.js.html b/coverage/lcov-report/lib/stream.js.html index fc4a2a72..147f6ee3 100644 --- a/coverage/lcov-report/lib/stream.js.html +++ b/coverage/lcov-report/lib/stream.js.html @@ -183,16 +183,16 @@

Code coverage report for lib/stream.js

- Statements: 90.2% (138 / 153)      + Statements: 81.93% (136 / 166)      - Branches: 84.27% (75 / 89)      + Branches: 71.65% (91 / 127)      - Functions: 85.71% (18 / 21)      + Functions: 100% (17 / 17)      - Lines: 90.2% (138 / 153)      + Lines: 82.8% (130 / 157)     

All files » lib/ » stream.js
@@ -640,10 +640,70 @@

439 440 441 -4421 +442 +443 +444 +445 +446 +447 +448 +449 +450 +451 +452 +453 +454 +455 +456 +457 +458 +459 +460 +461 +462 +463 +464 +465 +466 +467 +468 +469 +470 +471 +472 +473 +474 +475 +476 +477 +478 +479 +480 +481 +482 +483 +484 +485 +486 +487 +488 +489 +490 +491 +492 +493 +494 +495 +496 +497 +498 +4991 1   -1 +  +  +  +        @@ -654,27 +714,24 @@

1     -1 -23     -23     -23     -23     -23       -23     -1 +  +  +  +  +        @@ -682,87 +739,75 @@

    1 -23 -29 -4 -25 -7 -7 +24     -23 -  +24     +24     +24 +  +  +24     -1 1           +  1 -5 +24 +4 +  +24 +11 +11         -5     1 -17 +3 +3             +1 +13         +13     1 -23 -23 +8 +  +    -23 -23 -23     -23 -23 -29 -29 -29           -1 -27 -27 -27 -23       -1 -23 -23 -27 -27 -27   -23       @@ -770,18 +815,11 @@

      -1 -1 -5 -5 -            -5 -5       @@ -794,72 +832,119 @@

      +1 +  +1 +24 +24 +24 +24 +24 +24 +24   +24       +1 +30 +  +30       +30 +10 +10 +  +            +20       +30 +3     +30 +30 +          1 -23 -23 -23 +11 +  +  +          1 -18 -18 -18 -18 +  +5           +5 +5   -1 -56 -56 +    -56           +1 +218 +  +  +  +  +            -9 -4 -4 1   -5 -2   +  +  +1 +3 3 +3 +  +  +  +  +3 +  +  +  +  +  +  +  +  +  +  +  +    -9       @@ -870,14 +955,8 @@

      -6 -1 -5 -    -5   -6       @@ -886,45 +965,71 @@

      -5 -  -5 1 +24 +24 +24 +24   -4   -5     +1   +1 +26 +26   +26 +26 +26   +26 +26 +15 +11 +2             -4 -3 +  +1 +64 +64 +  +64 +64 +64 +18 +24 1 +8   +7 +  +  +6   -4   +64           -5 -3 -2 +  +15 +11 +11     -5   +4   +15       @@ -933,12 +1038,20 @@

      -10 +  +  +  +7 3 +4 +  +4 +  +  +4 +  7 -5   -10       @@ -947,75 +1060,75 @@

      +1 +  +1 +1 +      +    +1           -17 -  -17 -    -17       -56 -17     -17 -  +24 +4 +20         +24     -17 -17 -17             +7 +2 +5     +    +7     -1 -23 -23   -23 -23         -1           -1 +2   +2 +  +      +2         -1 -        @@ -1026,93 +1139,117 @@

      -1 -29 -4 -    -4   -4         -1   -4 -4   +8     -4 -4 -4 -4   +    +8           +64 +3   -4       -4 -4         +64 +5 +  +5 +  +  +  +64 +8 +    +8 +          -1 -29 -10     -29 -5 +8 +8 +8 +8 +      - 
var utils   = require('./utils');
+ 
var assert = process.env.HTTP2_ASSERT ? require('assert') : function noop() {};
 var logging = require('./logging');
  
-var MAX_HTTP_PAYLOAD_SIZE = 16383; // TODO: this is repeated in multiple files
+// The Stream class
+// ================
  
 // Stream is a [Duplex stream](http://nodejs.org/api/stream.html#stream_class_stream_duplex)
 // subclass that implements the [HTTP/2 Stream](http://http2.github.io/http2-spec/#rfc.section.3.4)
-// concept.
+// concept. It has two 'sides': one that is used by the user to send/receive data (the `stream`
+// object itself) and one that is used by a Connection to read/write frames to/from the other peer
+// (`stream.upstream`).
  
 var Duplex = require('stream').Duplex;
  
 exports.Stream = Stream;
  
+// Public API
+// ----------
+ 
+// * **Event: 'headers' (headers)**: signals incoming headers
+//
+// * **Event: 'promise' (stream, headers)**: signals an incoming push promise
+//
+// * **Event: 'error' (type)**: signals an error
+//
+// * **headers(headers, [priority])**: send headers
+//
+// * **promise(stream, headers)**: promise a stream
+//
+// * **reset(error)**: reset the stream with an error code
+//
+// * **upstream**: a [Flow](flow.js) that is used by the parent connection to write/read frames
+//   that are to be sent/arrived to/from the peer and are related to this stream.
+//
+// Headers are always in the [regular node.js header format][1].
+// [1]: http://nodejs.org/api/http.html#http_message_headers
+ 
+// Constructor
+// -----------
+ 
 // The main aspects of managing the stream are:
 function Stream(log) {
   Duplex.call(this);
  
   // * every method uses the common logger object
   this._log = (log || logging.root).child({ component: 'stream' });
- 
-  // * sending and receiving frames to/from the upstream connection
-  this._initializeUpstream();
  
   // * receiving and sending stream management commands
   this._initializeManagement();
+ 
+  // * sending and receiving frames to/from the upstream connection
+  this._initializeDataFlow();
  
   // * maintaining the state of the stream (idle, open, closed, etc.) and error detection
   this._initializeState();
- 
-  // * flow control, which includes forwarding data from/to the user on the Duplex stream interface
-  // (`write()`, `end()`, `pipe()`)
-  this._initializeFlowControl();
 }
  
 Stream.prototype = Object.create(Duplex.prototype, { constructor: { value: Stream } });
@@ -1123,31 +1260,29 @@ 

// PUSH_PROMISE and HEADERS are forwarded to the user through events. When error happens, we first // close the stream. Stream.prototype._initializeManagement = function _initializeManagement() { - this.upstream.on('receiving', function(frame) { - if (frame.type === 'PUSH_PROMISE') { - this.emit('promise', frame.headers); - } else if (frame.type === 'HEADERS') { - this.priority = frame.priority; - this.emit('headers', frame.headers); - } - }.bind(this)); - this.on('error', function() { - this.push(null); + this.on('PUSH_PROMISE', function(frame) { + this.emit('promise', frame.promised_stream, frame.headers); + }); + this.on('HEADERS', function(frame) { + this.priority = frame.priority; + this.emit('headers', frame.headers); }); };   -// For sending management frames, the `this._send(frame)` method is used. It notifies the state -// management code about the sent frames (using the 'sending' event) so we don't have to manage -// state transitions here. -Stream.prototype.promise = function promise(headers) { - this._send({ +// For sending management frames, the `this.upstream.push(frame)` method is used. It notifies the +// state management code about the sent frames (using the 'sending' event) so we don't have to +// manage state transitions here. +Stream.prototype.promise = function promise(stream, headers) { + stream.emit('promise_initiated'); + this.upstream.push({ type: 'PUSH_PROMISE', + promised_stream: stream, headers: headers }); };   -Stream.prototype.open = function open(headers, priority) { - this._send({ +Stream.prototype.headers = function headers(headers, priority) { + this.upstream.push({ type: 'HEADERS', priority: priority, headers: headers @@ -1156,73 +1291,145 @@

};   Stream.prototype.reset = function reset(error) { - this._send({ + this.upstream.push({ type: 'RST_STREAM', error: error }); };   -// Managing the upstream connection -// -------------------------------- +// Data flow +// ---------   // The incoming and the generated outgoing frames are received/transmitted on the `this.upsteam` -// Duplex stream which operates in [object mode][1]. The [Connection](connection.html) object -// instantiating the stream will read and write frames to/from it. -// [1]: http://nodejs.org/api/stream.html#stream_new_stream_readable_options -Stream.prototype._initializeUpstream = function _initializeUpstream() { - this._flush_timer = undefined; - this.on('finish', this._finishing.bind(this)); +// [Flow](flow.html). The [Connection](connection.html) object instantiating the stream will read +// and write frames to/from it. The stream itself is a regular [Duplex stream][1], and is used by +// the user to write or read the body of the request. +// [1]: http://nodejs.org/api/stream.html#stream_class_stream_duplex +  +// upstream side stream user side +// +// +------------------------------------+ +// | | +// +------------------+ | +// | upstream | | +// | | | +// +--+ | +--| +// read() | | _send() | _write() | | write(buf) +// <--------------|B |<--------------|--------------| B|<------------ +// | | | | | +// frames +--+ | +--| buffers +// | | | | | +// -------------->|B |---------------|------------->| B|------------> +// write(frame) | | _receive() | _read() | | read() +// +--+ | +--| +// | | | +// | | | +// +------------------+ | +// | | +// +------------------------------------+ +// +// B: input or output buffer +  +var Flow = require('./flow').Flow;   - this.upstream = new Duplex({ objectMode: true }); - this.upstream._queue = []; - this.upstream._read = utils.noop; +Stream.prototype._initializeDataFlow = function _initializeDataFlow() { + this.upstream = new Flow(); + this.upstream._log = this._log; + this.upstream._send = this._send.bind(this); + this.upstream._receive = this._receive.bind(this); + this.upstream.on('sending', this.emit.bind(this, 'sending')); + this.upstream.on('receiving', this.emit.bind(this, 'receiving')); + this.upstream.on('error', this.emit.bind(this, 'error'));   - // When there's an incoming frame, we let the world know this by emitting a 'receiving' event. - var log = this._log; - this.upstream._write = function(frame, encoding, done) { - log.debug({ frame: frame }, 'Receiving frame'); - this.emit('receiving', frame); - done(); - }; + this.on('finish', this._finishing); };   -// Frames can be sent upstream using the `_send` method. The frames to be sent are put into the -// `upstream._queue` first, and are flushed immediately on the beginning of the next turn. -Stream.prototype._send = function _send(frame) { - frame.flags = frame.flags || {}; - this.upstream._queue.push(frame); - if (!this._flush_timer) { - this._flush_timer = setImmediate(this._flush.bind(this)); +// The `_receive` method (= `upstream._receive`) gets called when there's an incoming frame. +Stream.prototype._receive = function _receive(frame, ready) { + this._log.debug({ frame: frame }, 'Receiving frame'); +  + var callReady = true; +  + // * If it's a DATA frame, then push the payload into the output buffer on the other side. + // Call ready when the other side is ready to receive more. + if (frame.type === 'DATA') { + var moreNeeded = this.push(frame.data); + Iif (!moreNeeded) { + this._receiveMore = ready; + callReady = false; + } + } +  + // * Otherwise it's a control frame. Emit an event to notify interested parties. + else { + this.emit(frame.type, frame); + } +  + // * Any frame may signal the end of the stream with the END_STREAM flag + if (frame.flags.END_STREAM) { + this.push(null); + } +  + Eif (callReady) { + ready(); } };   -Stream.prototype._flush = function _flush() { - var frame; - while(frame = this.upstream._queue.shift()) { - this.upstream.emit('sending', frame); - this._log.debug({ frame: frame }, 'Sending frame'); - this.upstream.push(frame); +// The `_read` method is called when the user side is ready to receive more data. If there's a +// pending write on the upstream, then call its pending ready callback to receive more frames. +Stream.prototype._read = function _read() { + Iif (this._receiveMore) { + var receiveMore = this._receiveMore; + delete this._receiveMore; + receiveMore(); } - this._flush_timer = undefined; };   -// The reason for using an output queue is this. When the stream is finishing (the user calls -// `end()` on it), then we have to set the `END_STREAM` flag on the last object. -// -// If there's no frame in the queue, then we create a 0 length DATA frame. We could do this -// all the time, but putting the flag on an existing frame is a nice optimization. -var empty_buffer = new Buffer(0); +// The `write` method gets called when there's a write request from the user. +Stream.prototype._write = function _write(buffer, encoding, ready) { + // * Chunking is done by the upstream Flow. + var moreNeeded = this.upstream.push({ + type: 'DATA', + data: buffer + }); +  + // * Call ready when upstream is ready to receive more frames. + Eif (moreNeeded) { + ready(); + } else { + this._sendMore = ready; + } +}; +  +// The `_send` (= `upstream._send`) method is called when upstream is ready to receive more frames. +// If there's a pending write on the user side, then call its pending ready callback to receive more +// writes. +Stream.prototype._send = function _send() { + Iif (this._sendMore) { + var sendMore = this._sendMore; + delete this._sendMore; + sendMore(); + } +}; +  +// When the stream is finishing (the user calls `end()` on it), then we have to set the `END_STREAM` +// flag on the last frame. If there's no frame in the queue, or if it doesn't support this flag, +// then we create a 0 length DATA frame. We could do this all the time, but putting the flag on an +// existing frame is a nice optimization. +var endFrame = { + type: 'DATA', + flags: { END_STREAM: true }, + data: new Buffer(0) +}; Stream.prototype._finishing = function _finishing() { - var length = this.upstream._queue.length; - Iif (length === 0) { - this._send({ - type: 'DATA', - flags: { END_STREAM: true }, - data: empty_buffer - }); + delete endFrame.stream; + var lastFrame = this.upstream.getLastQueuedFrame(); + Iif (lastFrame && ((lastFrame.type === 'DATA') || (lastFrame.type === 'HEADERS'))) { + this._log.trace({ frame: lastFrame }, 'Marking last frame with END_STREAM flag.'); + lastFrame.flags.END_STREAM = true; + this._transition(true, endFrame); } else { - var last_frame = this.upstream._queue[length - 1]; - last_frame.flags.END_STREAM = true; + this.upstream.push(endFrame); } };   @@ -1258,17 +1465,29 @@

// Streams begin in the IDLE state and transitions happen when there's an incoming or outgoing frame Stream.prototype._initializeState = function _initializeState() { this.state = 'IDLE'; - this.upstream.on('sending', this._transition.bind(this, true)); - this.upstream.on('receiving', this._transition.bind(this, false)); + this._closedByPeer = false; + this.on('sending', this._transition.bind(this, true)); + this.on('receiving', this._transition.bind(this, false)); };   // Only `_setState` should change `this.state` directly. It also logs the state change and notifies -// interested parties using the 'state' event. +// interested parties using the 'state', 'active' and 'inactive' event. +var ACTIVE_STATES = ['HALF_CLOSED_LOCAL', 'HALF_CLOSED_REMOTE', 'OPEN']; +  Stream.prototype._setState = function transition(state) { Eif (this.state !== state) { this._log.debug({ from: this.state, to: state }, 'State transition'); - this.emit('state', state); +  + var wasActive = (ACTIVE_STATES.indexOf(this.state) !== -1); + var isActive = (ACTIVE_STATES.indexOf(state) !== -1); this.state = state; +  + this.emit('state', state); + if (!wasActive && isActive) { + this.emit('active'); + } else if (wasActive && !isActive) { + this.emit('inactive'); + } } };   @@ -1278,26 +1497,34 @@

Stream.prototype._transition = function transition(sending, frame) { var receiving = !sending; var error = undefined; +  + var DATA = false, HEADERS = false, PRIORITY = false, RST_STREAM = false, SETTINGS = false; + var PUSH_PROMISE = false, PING = false, GOAWAY = false, WINDOW_UPDATE = false; + switch(frame.type) { + case 'DATA' : DATA = true; break; + case 'HEADERS' : HEADERS = true; break; + case 'PRIORITY' : PRIORITY = true; break; + case 'RST_STREAM' : RST_STREAM = true; break; + case 'SETTINGS' : SETTINGS = true; break; + case 'PUSH_PROMISE' : PUSH_PROMISE = true; break; + case 'PING' : PING = true; break; + case 'GOAWAY' : GOAWAY = true; break; + case 'WINDOW_UPDATE': WINDOW_UPDATE = true; break; + }   switch (this.state) { // All streams start in the **idle** state. In this state, no frames have been exchanged. // // * Sending or receiving a HEADERS frame causes the stream to become "open". - // * Sending a PUSH_PROMISE frame marks the associated stream for later use. The stream state - // for the reserved stream transitions to "reserved (local)". - // * Receiving a PUSH_PROMISE frame marks the associated stream as reserved by the remote peer. - // The state of the stream becomes "reserved (remote)". // // When the HEADERS frame contains the END_STREAM flags, then two state transitions happen. case 'IDLE': - if (frame.type === 'HEADERS') { + if (HEADERS) { this._setState('OPEN'); - if (frame.flags.END_STREAM) { - this._setState(sending ? 'HALF_CLOSED_LOCAL' : 'HALF_CLOSED_REMOTE'); + Iif (frame.flags.END_STREAM) { + this._setState(sending ? 'HALF_CLOSED_LOCAL' : 'HALF_CLOSED_REMOTE'); } - } else if (frame.type === 'PUSH_PROMISE') { - this._setState(sending ? 'RESERVED_LOCAL' : 'RESERVED_REMOTE'); - } else { // TODO: Not well defined. https://github.com/http2/http2-spec/issues/165 + } else { error = 'PROTOCOL_ERROR'; } break; @@ -1309,13 +1536,16 @@

// (remote)" state. // * Either endpoint can send a RST_STREAM frame to cause the stream to become "closed". This // releases the stream reservation. + // * An endpoint may receive PRIORITY frame in this state. // * An endpoint MUST NOT send any other type of frame in this state. case 'RESERVED_LOCAL': - if (sending && frame.type === 'HEADERS') { + if (sending && HEADERS) { this._setState('HALF_CLOSED_REMOTE'); - } else Iif (sending && frame.type === 'RST_STREAM') { + } else Iif (RST_STREAM) { this._setState('CLOSED'); - } else { // TODO: Not well defined. https://github.com/http2/http2-spec/issues/165 + } else Iif (receiving && PRIORITY) { + /* No state change */ + } else { error = 'PROTOCOL_ERROR'; } break; @@ -1325,14 +1555,17 @@

// * Either endpoint can send a RST_STREAM frame to cause the stream to become "closed". This // releases the stream reservation. // * Receiving a HEADERS frame causes the stream to transition to "half closed (local)". + // * An endpoint MAY send PRIORITY frames in this state to reprioritize the stream. // * Receiving any other type of frame MUST be treated as a stream error of type PROTOCOL_ERROR. case 'RESERVED_REMOTE': - Iif (frame.type === 'RST_STREAM') { + Iif (RST_STREAM) { this._setState('CLOSED'); - } else if (receiving && frame.type === 'HEADERS') { + } else Eif (receiving && HEADERS) { this._setState('HALF_CLOSED_LOCAL'); + } else if (sending && PRIORITY) { + /* No state change */ } else { - error = 'PROTOCOL_ERROR'; + error = 'PROTOCOL_ERROR'; } break;   @@ -1348,21 +1581,27 @@

case 'OPEN': if (frame.flags.END_STREAM) { this._setState(sending ? 'HALF_CLOSED_LOCAL' : 'HALF_CLOSED_REMOTE'); - } else Iif (frame.type === 'RST_STREAM') { + } else Iif (RST_STREAM) { this._setState('CLOSED'); - } // Anything else is OK + } else { + /* No state change */ + } break;   // A stream that is **half closed (local)** cannot be used for sending frames. // // * A stream transitions from this state to "closed" when a frame that contains a END_STREAM // flag is received, or when either peer sends a RST_STREAM frame. + // * An endpoint MAY send or receive PRIORITY frames in this state to reprioritize the stream. + // * WINDOW_UPDATE can be sent by a peer that has sent a frame bearing the END_STREAM flag. case 'HALF_CLOSED_LOCAL': - if (frame.type === 'RST_STREAM' || (receiving && frame.flags.END_STREAM)) { + if (RST_STREAM || (receiving && frame.flags.END_STREAM)) { this._setState('CLOSED'); - } else Iif (sending) { + } else Eif (receiving || (sending && (PRIORITY || WINDOW_UPDATE))) { + /* No state change */ + } else { error = 'PROTOCOL_ERROR'; - } // Receiving anything is OK + } break;   // A stream that is **half closed (remote)** is no longer being used by the peer to send frames. @@ -1373,12 +1612,16 @@

// respond with a stream error of type STREAM_CLOSED. // * A stream can transition from this state to "closed" by sending a frame that contains a // END_STREAM flag, or when either peer sends a RST_STREAM frame. + // * An endpoint MAY send or receive PRIORITY frames in this state to reprioritize the stream. + // * A receiver MAY receive a WINDOW_UPDATE frame on a "half closed (remote)" stream. case 'HALF_CLOSED_REMOTE': - if (frame.type === 'RST_STREAM' || (sending && frame.flags.END_STREAM)) { - this._setState('CLOSED'); - } else if (receiving) { - error = 'PROTOCOL_ERROR'; - } // Sending anything is OK + Iif (RST_STREAM || (sending && frame.flags.END_STREAM)) { + this._setState('CLOSED'); + } else Eif (sending || (receiving && (WINDOW_UPDATE || PRIORITY))) { + /* No state change */ + } else { + error = 'PROTOCOL_ERROR'; + } break;   // The **closed** state is the terminal state. @@ -1386,6 +1629,12 @@

// * An endpoint MUST NOT send frames on a closed stream. An endpoint that receives a frame // after receiving a RST_STREAM or a frame containing a END_STREAM flag on that stream MUST // treat that as a stream error of type STREAM_CLOSED. + // * WINDOW_UPDATE or PRIORITY frames can be received in this state for a short period after a + // frame containing an END_STREAM flag is sent. Until the remote peer receives and processes + // the frame bearing the END_STREAM flag, it might send either frame type. Endpoints MUST + // ignore WINDOW_UPDATE frames received in this state, though endpoints MAY choose to treat + // WINDOW_UPDATE frames that arrive a significant time after sending END_STREAM as a + // connection error of type PROTOCOL_ERROR. // * If this state is reached as a result of sending a RST_STREAM frame, the peer that receives // the RST_STREAM might have already sent - or enqueued for sending - frames on the stream // that cannot be withdrawn. An endpoint that sends a RST_STREAM frame MUST ignore frames that @@ -1396,13 +1645,33 @@

// causes a stream to become "reserved". If promised streams are not desired, a RST_STREAM // can be used to close any of those streams. case 'CLOSED': - Iif (receiving && frame.type === 'PUSH_PROMISE') { - this._setState('RESERVED_REMOTE'); - } else Iif (!(sending && frame.type === 'RST_STREAM')) { - error = 'PROTOCOL_ERROR'; - } // TODO: act based on the reason for termination. + Eif ((sending && RST_STREAM) || (receiving && !this._closedByPeer) || + (receiving && (WINDOW_UPDATE || PRIORITY))) { + /* No state change */ + } else { + error = 'STREAM_CLOSED'; + } break; } +  + // Noting that the connection was closed by the other endpoint. It may be important in edge cases. + // For example, when the peer tries to cancel a promised stream, but we already sent every data + // on it, then the stream is in CLOSED state, yet we want to ignore the incoming RST_STREAM. + if (receiving && (RST_STREAM || frame.flags.END_STREAM)) { + this._closedByPeer = true; + } +  + // Sending/receiving a PUSH_PROMISE + // + // * Sending a PUSH_PROMISE frame marks the associated stream for later use. The stream state + // for the reserved stream transitions to "reserved (local)". + // * Receiving a PUSH_PROMISE frame marks the associated stream as reserved by the remote peer. + // The state of the stream becomes "reserved (remote)". + if (PUSH_PROMISE && !error) { + assert(frame.promised_stream.state === 'IDLE', 'Promised stream is in invalid state (' + + frame.promised_stream.state + ')'); + frame.promised_stream._setState(sending ? 'RESERVED_LOCAL' : 'RESERVED_REMOTE'); + }   // Common error handling. if (error) { @@ -1420,114 +1689,16 @@

this._log.error(info, 'Stream error: received illegal frame.'); this.state = 'CLOSED'; this.reset(error); + this.emit('error', error); } } }; -  -// [Flow control](http://tools.ietf.org/id/draft-unicorn-httpbis-http2-01.html#rfc.section.6.9) -// -------------- -  -// Flow control in HTTP/2.0 is implemented using a window kept by each sender on every stream. -// The flow control window is a simple integer value that indicates how many bytes of data the -// sender is permitted to transmit. Two flow control windows are applicable; the stream flow control -// window and the connection flow control window. The stream only manages the flow control `window`. -Stream.prototype._initializeFlowControl = function _initializeFlowControl() { - this._read = utils.noop; - this.upstream.on('receiving', this._receiveData.bind(this)); -  - this._window = INITIAL_WINDOW_SIZE; - this.upstream.on('receiving', this._updateWindow.bind(this)); -}; -  -// When a HTTP/2.0 connection is first established, new streams are created with an initial flow -// control window size of 65535 bytes. -var INITIAL_WINDOW_SIZE = 65535; -  -// A SETTINGS frame can alter the initial flow control window size for all current streams. When the -// value of SETTINGS_INITIAL_WINDOW_SIZE changes, a receiver MUST adjust the size of all stream by -// calling the `setInitialWindowSize` method. The window size has to be modified by the difference -// between the new value and the old value. -Stream.prototype.setInitialWindowSize = function setInitialWindowSize(initialWindowSize) { - this._window = this._window - this._initialWindowSize + initialWindowSize; - this._initialWindowSize = initialWindowSize; -}; -  -// Flow control can be disabled for all streams on the connection using the `disableFlowControl` -// method. This may happen when there's a SETTINGS frame received with the -// SETTINGS_FLOW_CONTROL_OPTIONS setting. -Stream.prototype.disableFlowControl = function disableFlowControl() { - this._window = Infinity; -}; -  -// The `_updateWindow` method gets called every time there's an incoming frame. It filters out -// WINDOW_UPDATE frames, and then modifies the modifies the flow control window: -// -// * Flow control can be disabled for an individual stream by sending a WINDOW_UPDATE with the -// END_FLOW_CONTROL flag set. The payload of a WINDOW_UPDATE frame that has the END_FLOW_CONTROL -// flag set is ignored. -// * A sender that receives a WINDOW_UPDATE frame updates the corresponding window by the amount -// specified in the frame. -Stream.prototype._updateWindow = function _updateWindow(frame) { - if (frame.type === 'WINDOW_UPDATE') { - Iif (frame.flags.END_FLOW_CONTROL) { - this.disableFlowControl(); - } else { - this._window += frame.window_size; - } - this.emit('window_update'); - } -}; -  -// When the user wants to write a buffer into the stream -Stream.prototype._write = function _write(buffer, encoding, done) { - // * The incoming buffer is cut into pieces that are not larger than `MAX_HTTP_PAYLOAD_SIZE` - var chunks = utils.cut(buffer, MAX_HTTP_PAYLOAD_SIZE); - var sent = 0; -  - // * Chunks are wrapped in DATA frames and sent out until all of them are sent or the flow control - // `window` is not enough to send a chunk - while (chunks.length > 0 && chunks[0].length <= this._window) { - var chunk = chunks.shift(); - sent += chunk.length; - this._send({ - type: 'DATA', - flags: {}, - data: chunk - }); -  - // * After sending a flow controlled frame, the sender reduces the space available the window by - // the length of the transmitted frame. For flow control calculations, the 8 byte frame header - // is not counted. - this._window -= chunk.length; - } -  - // * If all of the chunks are sent, we are done - Eif (chunks.length === 0) { - done(); - } -  - // * Otherwise the process has to continue when a window_update occurs. It is guaranteed by - // the Duplex stream class, that there will be no more calls to `_write` until we are done - else { - this.once('window_update', this._write.bind(this, buffer.slice(sent), encoding, done)); - } -}; -  -Stream.prototype._receiveData = function _receiveData(frame) { - if (frame.type === 'DATA') { - this.push(frame.data); - } -  - if (frame.flags.END_STREAM) { - this.push(null); - } -};  

diff --git a/coverage/lcov-report/lib/utils.js.html b/coverage/lcov-report/lib/utils.js.html deleted file mode 100644 index acf0c16b..00000000 --- a/coverage/lcov-report/lib/utils.js.html +++ /dev/null @@ -1,422 +0,0 @@ - - - - Code coverage report for lib/utils.js - - - - - - - -
-

Code coverage report for lib/utils.js

-

- - Statements: 95.65% (22 / 23)      - - - Branches: 100% (0 / 0)      - - - Functions: 100% (4 / 4)      - - - Lines: 95.65% (22 / 23)      - -

-
All files » lib/ » utils.js
-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40  -1 -77 -77 -411 -  -  -77 -77 -411 -  -  -77 -  -  -  -1 -14 -14 -14 -16 -16 -16 -  -14 -  -  -  -1 -12 -12 -  -  -12 -  -  -  -1 -1 - 
// Concatenate an array of buffers into a new buffer
-exports.concat = function concat(buffers) {
-  var size = 0;
-  for (var i = 0; i < buffers.length; i++) {
-    size += buffers[i].length;
-  }
- 
-  var concatenated = new Buffer(size);
-  for (var cursor = 0, j = 0; j < buffers.length; cursor += buffers[j].length, j++) {
-    buffers[j].copy(concatenated, cursor);
-  }
- 
-  return concatenated;
-};
- 
-// Cut `buffer` into chunks not larger than `size`
-exports.cut = function cut(buffer, size) {
-  var chunks = [];
-  var cursor = 0;
-  do {
-    var chunk_size = Math.min(size, buffer.length - cursor);
-    chunks.push(buffer.slice(cursor, cursor + chunk_size));
-    cursor += chunk_size;
-  } while(cursor < buffer.length);
-  return chunks;
-};
- 
-// Shallow copy inspired by underscore's [clone](http://underscorejs.org/#clone)
-exports.shallow_copy = function shallow_copy(object) {
-  var clone = {};
-  for (var key in object) {
-    clone[key] = object[key];
-  }
-  return clone;
-};
- 
-// Placeholder no-op function
-function noop() {}
-exports.noop = noop;
- 
- -
- - - - - - - - diff --git a/coverage/lcov.info b/coverage/lcov.info index dfb0a22a..49db3d16 100644 --- a/coverage/lcov.info +++ b/coverage/lcov.info @@ -1,46 +1,6 @@ TN: -SF:/data/upstream/node-http2/lib/utils.js -FN:2,concat -FN:17,cut -FN:29,shallow_copy -FN:38,noop -FNF:4 -FNH:4 -FNDA:77,concat -FNDA:14,cut -FNDA:12,shallow_copy -FNDA:372,noop -DA:2,1 -DA:3,77 -DA:4,77 -DA:5,411 -DA:8,77 -DA:9,77 -DA:10,411 -DA:13,77 -DA:17,1 -DA:18,14 -DA:19,14 -DA:20,14 -DA:21,16 -DA:22,16 -DA:23,16 -DA:25,14 -DA:29,1 -DA:30,12 -DA:31,12 -DA:32,0 -DA:34,12 -DA:38,1 -DA:39,1 -LF:23 -LH:22 -BRF:0 -BRH:0 -end_of_record -TN: SF:/data/upstream/node-http2/lib/compressor.js -FN:40,CompressionContext +FN:39,CompressionContext FN:49,(anonymous_2) FN:54,getWorkingSet FN:55,(anonymous_4) @@ -49,961 +9,1350 @@ FN:67,(anonymous_6) FN:69,(anonymous_7) FN:77,(anonymous_8) FN:106,execute -FN:116,(anonymous_10) -FN:154,(anonymous_11) -FN:155,(anonymous_12) -FN:162,(anonymous_13) -FN:178,(anonymous_14) -FN:201,(anonymous_15) -FN:225,(anonymous_16) -FN:247,Decompressor -FN:262,decompress -FN:308,Compressor -FN:323,compress -FN:393,writeInteger -FN:434,readInteger -FN:464,writeString -FN:470,readString -FN:523,writeString -FN:559,readString -FN:624,_initializeStream -FN:628,_transform -FN:673,_initializeStream -FN:682,_transform -FN:710,(anonymous_31) -FNF:31 -FNH:31 -FNDA:10,CompressionContext -FNDA:1421,(anonymous_2) -FNDA:43,getWorkingSet -FNDA:136,(anonymous_4) -FNDA:43,reinitialize +FN:119,(anonymous_10) +FN:157,(anonymous_11) +FN:158,(anonymous_12) +FN:165,(anonymous_13) +FN:181,(anonymous_14) +FN:204,(anonymous_15) +FN:228,(anonymous_16) +FN:250,Decompressor +FN:265,decompress +FN:311,Compressor +FN:326,compress +FN:396,writeInteger +FN:437,readInteger +FN:467,writeString +FN:473,readString +FN:526,writeString +FN:562,readString +FN:627,_initializeStream +FN:631,_transform +FN:677,_initializeStream +FN:686,_transform +FN:716,(anonymous_31) +FN:826,concat +FN:841,cut +FN:853,shallowCopy +FNF:34 +FNH:34 +FNDA:14,CompressionContext +FNDA:1643,(anonymous_2) +FNDA:47,getWorkingSet +FNDA:142,(anonymous_4) +FNDA:47,reinitialize FNDA:154,(anonymous_6) FNDA:98,(anonymous_7) FNDA:98,(anonymous_8) -FNDA:172,execute +FNDA:184,execute FNDA:139,(anonymous_10) -FNDA:36,(anonymous_11) -FNDA:90,(anonymous_12) -FNDA:58,(anonymous_13) -FNDA:1029,(anonymous_14) +FNDA:42,(anonymous_11) +FNDA:97,(anonymous_12) +FNDA:64,(anonymous_13) +FNDA:1251,(anonymous_14) FNDA:24,(anonymous_15) -FNDA:119,(anonymous_16) -FNDA:6,Decompressor -FNDA:23,decompress -FNDA:4,Compressor -FNDA:20,compress -FNDA:216,writeInteger -FNDA:234,readInteger -FNDA:110,writeString -FNDA:115,readString -FNDA:90,writeString -FNDA:98,readString -FNDA:4,_initializeStream -FNDA:14,_transform +FNDA:131,(anonymous_16) +FNDA:8,Decompressor +FNDA:25,decompress +FNDA:6,Compressor +FNDA:22,compress +FNDA:234,writeInteger +FNDA:252,readInteger +FNDA:116,writeString +FNDA:121,readString +FNDA:96,writeString +FNDA:104,readString FNDA:6,_initializeStream FNDA:18,_transform -FNDA:12,(anonymous_31) +FNDA:8,_initializeStream +FNDA:22,_transform +FNDA:14,(anonymous_31) +FNDA:34,concat +FNDA:12,cut +FNDA:14,shallowCopy DA:16,1 DA:17,1 -DA:18,1 +DA:19,1 DA:20,1 DA:21,1 -DA:22,1 -DA:38,1 -DA:40,1 -DA:41,10 -DA:42,10 -DA:43,10 -DA:44,10 +DA:37,1 +DA:39,1 +DA:40,14 +DA:41,14 +DA:42,14 +DA:43,14 +DA:44,14 DA:49,1 -DA:50,1421 +DA:50,1643 DA:54,1 -DA:55,43 -DA:56,136 +DA:55,47 +DA:56,142 DA:61,1 -DA:62,43 -DA:67,43 +DA:62,47 +DA:67,47 DA:68,154 DA:70,98 -DA:77,43 +DA:77,47 DA:78,98 DA:79,98 DA:106,1 -DA:107,172 -DA:114,172 -DA:115,52 -DA:116,52 -DA:117,139 +DA:107,184 +DA:110,184 +DA:117,184 +DA:118,52 DA:119,52 -DA:120,2 -DA:121,2 -DA:123,50 -DA:132,120 -DA:133,35 -DA:135,85 -DA:138,120 -DA:139,119 -DA:140,88 -DA:142,31 -DA:144,119 -DA:145,119 -DA:148,120 -DA:154,1 -DA:155,36 -DA:156,90 -DA:162,1 -DA:163,58 -DA:165,58 -DA:166,58 -DA:167,5 -DA:168,5 -DA:169,1 -DA:177,57 -DA:178,57 -DA:179,1029 -DA:181,57 -DA:182,31 -DA:183,31 -DA:184,15 -DA:192,42 -DA:201,1 -DA:202,24 -DA:204,24 -DA:205,42 -DA:206,24 +DA:120,139 +DA:122,52 +DA:123,2 +DA:124,2 +DA:126,50 +DA:135,132 +DA:136,47 +DA:138,85 +DA:141,132 +DA:142,131 +DA:143,88 +DA:145,43 +DA:147,131 +DA:148,131 +DA:151,132 +DA:157,1 +DA:158,42 +DA:159,97 +DA:165,1 +DA:166,64 +DA:168,64 +DA:169,64 +DA:170,5 +DA:171,5 +DA:172,1 +DA:180,63 +DA:181,63 +DA:182,1251 +DA:184,63 +DA:185,37 +DA:186,37 +DA:187,21 +DA:195,42 +DA:204,1 +DA:205,24 DA:207,24 -DA:211,24 -DA:225,1 -DA:226,119 -DA:227,119 -DA:228,119 -DA:229,2345 -DA:230,192 -DA:232,2345 -DA:234,119 -DA:235,218 -DA:236,218 -DA:247,1 -DA:248,6 -DA:250,6 -DA:252,6 -DA:254,6 -DA:256,1 -DA:262,1 -DA:263,23 -DA:267,23 -DA:272,23 -DA:273,23 -DA:274,90 -DA:279,23 -DA:283,23 -DA:284,23 -DA:285,90 -DA:286,90 -DA:287,90 -DA:288,17 -DA:289,8 -DA:291,9 -DA:294,73 -DA:297,23 -DA:298,23 -DA:308,1 -DA:309,4 -DA:311,4 -DA:313,4 -DA:315,4 -DA:317,1 -DA:323,1 -DA:324,20 -DA:325,20 -DA:329,20 -DA:330,20 -DA:331,64 -DA:332,64 -DA:333,8 -DA:334,24 -DA:337,56 -DA:343,20 -DA:344,20 -DA:347,20 -DA:348,46 -DA:349,24 -DA:350,24 -DA:351,24 -DA:356,20 -DA:357,80 -DA:358,58 -DA:359,58 -DA:360,58 -DA:365,20 -DA:366,20 -DA:367,82 -DA:370,20 -DA:372,20 -DA:373,20 -DA:393,1 -DA:394,216 -DA:395,216 -DA:396,88 -DA:399,128 -DA:400,128 -DA:401,2 -DA:403,128 -DA:405,128 -DA:406,128 -DA:407,136 -DA:408,136 -DA:410,136 -DA:411,8 -DA:413,136 -DA:415,136 -DA:418,128 -DA:434,1 -DA:435,234 -DA:437,234 -DA:438,234 -DA:439,100 -DA:442,234 -DA:443,139 -DA:444,139 -DA:445,149 -DA:446,149 -DA:447,149 -DA:451,234 -DA:464,1 -DA:465,110 -DA:466,110 -DA:467,110 -DA:470,1 -DA:471,115 -DA:472,115 -DA:473,115 -DA:474,115 -DA:516,1 -DA:523,1 -DA:524,90 -DA:526,90 -DA:527,27 -DA:528,63 -DA:529,1 -DA:530,62 -DA:531,46 -DA:533,16 -DA:536,90 -DA:537,27 -DA:540,63 -DA:541,20 -DA:543,43 -DA:544,43 -DA:547,63 -DA:548,16 -DA:551,63 -DA:554,90 -DA:556,90 -DA:559,1 -DA:560,98 -DA:562,98 -DA:563,98 -DA:564,29 -DA:565,69 -DA:566,52 -DA:567,2 -DA:569,50 -DA:572,17 -DA:575,98 -DA:576,29 -DA:577,29 -DA:580,69 -DA:581,69 -DA:582,44 -DA:585,69 -DA:586,17 -DA:587,52 -DA:588,50 -DA:590,2 -DA:593,69 -DA:596,98 -DA:621,1 +DA:208,42 +DA:209,24 +DA:210,24 +DA:214,24 +DA:228,1 +DA:229,131 +DA:230,131 +DA:231,131 +DA:232,2789 +DA:233,204 +DA:235,2789 +DA:237,131 +DA:238,218 +DA:239,218 +DA:250,1 +DA:251,8 +DA:253,8 +DA:255,8 +DA:257,8 +DA:259,1 +DA:265,1 +DA:266,25 +DA:270,25 +DA:275,25 +DA:276,25 +DA:277,96 +DA:282,25 +DA:286,25 +DA:287,25 +DA:288,96 +DA:289,96 +DA:290,96 +DA:291,17 +DA:292,8 +DA:294,9 +DA:297,79 +DA:300,25 +DA:301,25 +DA:311,1 +DA:312,6 +DA:314,6 +DA:316,6 +DA:318,6 +DA:320,1 +DA:326,1 +DA:327,22 +DA:328,22 +DA:332,22 +DA:333,22 +DA:334,70 +DA:335,70 +DA:336,8 +DA:337,24 +DA:340,62 +DA:346,22 +DA:347,22 +DA:350,22 +DA:351,46 +DA:352,24 +DA:353,24 +DA:354,24 +DA:359,22 +DA:360,86 +DA:361,64 +DA:362,64 +DA:363,64 +DA:368,22 +DA:369,22 +DA:370,88 +DA:373,22 +DA:375,22 +DA:376,22 +DA:396,1 +DA:397,234 +DA:398,234 +DA:399,94 +DA:402,140 +DA:403,140 +DA:404,2 +DA:406,140 +DA:408,140 +DA:409,140 +DA:410,148 +DA:411,148 +DA:413,148 +DA:414,8 +DA:416,148 +DA:418,148 +DA:421,140 +DA:437,1 +DA:438,252 +DA:440,252 +DA:441,252 +DA:442,106 +DA:445,252 +DA:446,151 +DA:447,151 +DA:448,161 +DA:449,161 +DA:450,161 +DA:454,252 +DA:467,1 +DA:468,116 +DA:469,116 +DA:470,116 +DA:473,1 +DA:474,121 +DA:475,121 +DA:476,121 +DA:477,121 +DA:519,1 +DA:526,1 +DA:527,96 +DA:529,96 +DA:530,27 +DA:531,69 +DA:532,1 +DA:533,68 +DA:534,46 +DA:536,22 +DA:539,96 +DA:540,27 +DA:543,69 +DA:544,26 +DA:546,43 +DA:547,43 +DA:550,69 +DA:551,22 +DA:554,69 +DA:557,96 +DA:559,96 +DA:562,1 +DA:563,104 +DA:565,104 +DA:566,104 +DA:567,29 +DA:568,75 +DA:569,52 +DA:570,2 +DA:572,50 +DA:575,23 +DA:578,104 +DA:579,29 +DA:580,29 +DA:583,75 +DA:584,75 +DA:585,44 +DA:588,75 +DA:589,23 +DA:590,52 +DA:591,50 +DA:593,2 +DA:596,75 +DA:599,104 DA:624,1 -DA:625,4 -DA:628,1 -DA:630,14 -DA:632,10 -DA:635,10 -DA:640,10 -DA:641,12 -DA:642,12 -DA:643,10 -DA:645,2 -DA:646,2 -DA:649,12 -DA:661,4 -DA:664,14 -DA:673,1 -DA:674,6 -DA:675,6 -DA:676,6 -DA:677,6 -DA:678,6 -DA:682,1 -DA:685,18 -DA:686,3 -DA:687,1 -DA:689,3 -DA:694,15 -DA:695,11 -DA:696,11 -DA:697,11 -DA:698,11 -DA:703,4 -DA:709,18 -DA:710,10 -DA:711,12 -DA:713,10 -DA:714,10 -DA:721,10 -DA:724,18 -DA:730,1 -DA:771,1 -LF:262 -LH:262 -BRDA:42,1,0,10 -BRDA:42,1,1,10 -BRDA:50,2,0,1421 -BRDA:50,2,1,121 -BRDA:114,3,0,52 -BRDA:114,3,1,120 -BRDA:119,4,0,2 -BRDA:119,4,1,50 -BRDA:132,5,0,35 -BRDA:132,5,1,85 -BRDA:138,6,0,119 -BRDA:138,6,1,1 -BRDA:139,7,0,88 -BRDA:139,7,1,31 -BRDA:166,8,0,5 -BRDA:166,8,1,53 -BRDA:168,9,0,1 -BRDA:168,9,1,4 -BRDA:181,10,0,31 -BRDA:181,10,1,26 -BRDA:183,11,0,15 -BRDA:183,11,1,16 -BRDA:205,12,0,24 -BRDA:205,12,1,18 -BRDA:229,13,0,192 -BRDA:229,13,1,2153 -BRDA:248,14,0,6 -BRDA:248,14,1,4 -BRDA:250,15,0,4 -BRDA:250,15,1,2 -BRDA:287,16,0,17 -BRDA:287,16,1,73 -BRDA:288,17,0,8 -BRDA:288,17,1,9 -BRDA:309,18,0,4 -BRDA:309,18,1,2 -BRDA:311,19,0,2 -BRDA:311,19,1,2 -BRDA:332,20,0,8 -BRDA:332,20,1,56 -BRDA:348,21,0,24 -BRDA:348,21,1,22 -BRDA:357,22,0,58 -BRDA:357,22,1,22 -BRDA:395,23,0,88 -BRDA:395,23,1,128 -BRDA:400,24,0,2 -BRDA:400,24,1,126 -BRDA:410,25,0,8 -BRDA:410,25,1,128 -BRDA:438,26,0,100 -BRDA:438,26,1,134 -BRDA:442,27,0,139 -BRDA:442,27,1,95 -BRDA:526,28,0,27 -BRDA:526,28,1,63 -BRDA:528,29,0,1 -BRDA:528,29,1,62 -BRDA:530,30,0,46 -BRDA:530,30,1,16 -BRDA:536,31,0,27 -BRDA:536,31,1,63 -BRDA:540,32,0,20 -BRDA:540,32,1,43 -BRDA:547,33,0,16 -BRDA:547,33,1,47 -BRDA:563,34,0,29 -BRDA:563,34,1,69 -BRDA:565,35,0,52 -BRDA:565,35,1,17 -BRDA:566,36,0,2 -BRDA:566,36,1,50 -BRDA:575,37,0,29 -BRDA:575,37,1,69 -BRDA:581,38,0,44 -BRDA:581,38,1,25 -BRDA:585,39,0,17 -BRDA:585,39,1,52 -BRDA:587,40,0,50 -BRDA:587,40,1,2 -BRDA:630,41,0,10 -BRDA:630,41,1,4 -BRDA:630,42,0,14 -BRDA:630,42,1,9 -BRDA:642,43,0,10 -BRDA:642,43,1,2 -BRDA:685,44,0,3 -BRDA:685,44,1,15 -BRDA:686,45,0,1 -BRDA:686,45,1,2 -BRDA:686,46,0,3 -BRDA:686,46,1,2 -BRDA:694,47,0,11 -BRDA:694,47,1,4 -BRDA:694,48,0,15 -BRDA:694,48,1,9 -BRDA:709,49,0,10 -BRDA:709,49,1,8 -BRDA:709,50,0,18 -BRDA:709,50,1,14 -BRDA:709,50,2,9 +DA:627,1 +DA:628,6 +DA:631,1 +DA:633,18 +DA:635,12 +DA:638,12 +DA:643,12 +DA:644,14 +DA:645,14 +DA:646,12 +DA:648,2 +DA:649,2 +DA:652,14 +DA:665,6 +DA:668,18 +DA:677,1 +DA:678,8 +DA:679,8 +DA:680,8 +DA:681,8 +DA:682,8 +DA:686,1 +DA:689,22 +DA:690,3 +DA:691,1 +DA:692,1 +DA:693,1 +DA:695,2 +DA:700,19 +DA:701,13 +DA:702,13 +DA:703,13 +DA:704,13 +DA:709,6 +DA:715,21 +DA:716,12 +DA:717,14 +DA:719,12 +DA:720,12 +DA:722,0 +DA:723,0 +DA:724,0 +DA:726,12 +DA:734,12 +DA:737,21 +DA:743,1 +DA:784,1 +DA:826,1 +DA:827,34 +DA:828,34 +DA:829,333 +DA:832,34 +DA:833,34 +DA:834,333 +DA:837,34 +DA:841,1 +DA:842,12 +DA:843,12 +DA:844,12 +DA:845,14 +DA:846,14 +DA:847,14 +DA:849,12 +DA:853,1 +DA:854,14 +DA:855,14 +DA:856,0 +DA:858,14 +LF:290 +LH:286 +BRDA:42,1,0,14 +BRDA:42,1,1,14 +BRDA:50,2,0,1643 +BRDA:50,2,1,128 +BRDA:117,3,0,52 +BRDA:117,3,1,132 +BRDA:122,4,0,2 +BRDA:122,4,1,50 +BRDA:135,5,0,47 +BRDA:135,5,1,85 +BRDA:141,6,0,131 +BRDA:141,6,1,1 +BRDA:142,7,0,88 +BRDA:142,7,1,43 +BRDA:169,8,0,5 +BRDA:169,8,1,59 +BRDA:171,9,0,1 +BRDA:171,9,1,4 +BRDA:184,10,0,37 +BRDA:184,10,1,26 +BRDA:186,11,0,21 +BRDA:186,11,1,16 +BRDA:208,12,0,24 +BRDA:208,12,1,18 +BRDA:232,13,0,204 +BRDA:232,13,1,2585 +BRDA:251,14,0,8 +BRDA:251,14,1,4 +BRDA:253,15,0,5 +BRDA:253,15,1,3 +BRDA:290,16,0,17 +BRDA:290,16,1,79 +BRDA:291,17,0,8 +BRDA:291,17,1,9 +BRDA:312,18,0,6 +BRDA:312,18,1,2 +BRDA:314,19,0,3 +BRDA:314,19,1,3 +BRDA:335,20,0,8 +BRDA:335,20,1,62 +BRDA:351,21,0,24 +BRDA:351,21,1,22 +BRDA:360,22,0,64 +BRDA:360,22,1,22 +BRDA:398,23,0,94 +BRDA:398,23,1,140 +BRDA:403,24,0,2 +BRDA:403,24,1,138 +BRDA:413,25,0,8 +BRDA:413,25,1,140 +BRDA:441,26,0,106 +BRDA:441,26,1,146 +BRDA:445,27,0,151 +BRDA:445,27,1,101 +BRDA:529,28,0,27 +BRDA:529,28,1,69 +BRDA:531,29,0,1 +BRDA:531,29,1,68 +BRDA:533,30,0,46 +BRDA:533,30,1,22 +BRDA:539,31,0,27 +BRDA:539,31,1,69 +BRDA:543,32,0,26 +BRDA:543,32,1,43 +BRDA:550,33,0,22 +BRDA:550,33,1,47 +BRDA:566,34,0,29 +BRDA:566,34,1,75 +BRDA:568,35,0,52 +BRDA:568,35,1,23 +BRDA:569,36,0,2 +BRDA:569,36,1,50 +BRDA:578,37,0,29 +BRDA:578,37,1,75 +BRDA:584,38,0,44 +BRDA:584,38,1,31 +BRDA:588,39,0,23 +BRDA:588,39,1,52 +BRDA:590,40,0,50 +BRDA:590,40,1,2 +BRDA:633,41,0,12 +BRDA:633,41,1,6 +BRDA:633,42,0,18 +BRDA:633,42,1,11 +BRDA:645,43,0,12 +BRDA:645,43,1,2 +BRDA:689,44,0,3 +BRDA:689,44,1,19 +BRDA:690,45,0,1 +BRDA:690,45,1,2 +BRDA:690,46,0,3 +BRDA:690,46,1,2 +BRDA:700,47,0,13 +BRDA:700,47,1,6 +BRDA:700,48,0,19 +BRDA:700,48,1,11 +BRDA:715,49,0,12 +BRDA:715,49,1,9 +BRDA:715,50,0,21 +BRDA:715,50,1,15 +BRDA:715,50,2,8 BRF:101 BRH:101 end_of_record TN: SF:/data/upstream/node-http2/lib/logging.js -FN:24,(anonymous_1) -FNF:1 -FNH:1 -FNDA:53,(anonymous_1) +FN:15,noop +FN:24,(anonymous_2) +FNF:2 +FNH:2 +FNDA:1090,noop +FNDA:105,(anonymous_2) DA:1,1 -DA:2,1 -DA:4,1 -DA:5,0 -DA:7,0 -DA:13,0 +DA:3,1 +DA:4,0 +DA:6,0 +DA:12,0 +DA:15,1 DA:16,1 -DA:24,53 +DA:24,105 DA:27,1 LF:9 LH:6 -BRDA:4,1,0,0 -BRDA:4,1,1,1 +BRDA:3,1,0,0 +BRDA:3,1,1,1 BRF:2 BRH:1 end_of_record TN: SF:/data/upstream/node-http2/lib/connection.js -FN:43,Connection -FN:67,_initializeStreamManagement -FN:69,(anonymous_3) -FN:80,_newStream -FN:88,createStream -FN:97,_read -FN:126,write -FN:145,_initializeSettingsManagement -FN:154,(anonymous_9) -FN:165,_receiveSettings -FN:171,_initializeLifecycleManagement -FN:177,_generatePingId -FN:187,ping -FN:202,_receivePing -FN:225,reset -FN:228,_receiveGoaway -FN:234,_initializeFlowControl -FN:257,setInitialWindowSize -FN:265,disableFlowControl -FN:277,_updateWindow -FN:286,_send -FNF:21 -FNH:15 -FNDA:6,Connection -FNDA:6,_initializeStreamManagement -FNDA:12,(anonymous_3) -FNDA:2,_newStream -FNDA:1,createStream -FNDA:26,_read -FNDA:16,write -FNDA:6,_initializeSettingsManagement -FNDA:6,(anonymous_9) -FNDA:6,_receiveSettings -FNDA:6,_initializeLifecycleManagement -FNDA:0,_generatePingId -FNDA:0,ping -FNDA:0,_receivePing -FNDA:0,reset +FN:36,Connection +FN:96,_initializeStreamManagement +FN:121,_getIdOf +FN:127,_writeControlFrame +FN:139,_updateStreamLimit +FN:145,_decreaseStreamCount +FN:158,_newStream +FN:166,_activateStream +FN:179,_createIncomingStream +FN:196,createStream +FN:209,tryToActivate +FN:221,(anonymous_12) +FN:223,(anonymous_13) +FN:228,(anonymous_14) +FN:247,_send +FN:280,_receive +FN:310,_initializeSettingsManagement +FN:316,(anonymous_18) +FN:330,_receiveSettings +FN:337,set +FN:355,_initializeLifecycleManagement +FN:362,_generatePingId +FN:373,ping +FN:390,_receivePing +FN:415,close +FN:426,_receiveGoaway +FN:434,_initializeFlowControl +FN:437,(anonymous_28) +FN:442,noop +FN:455,_setInitialStreamWindowSize +FN:462,(anonymous_31) +FN:470,_setStreamFlowControl +FNF:32 +FNH:30 +FNDA:18,Connection +FNDA:18,_initializeStreamManagement +FNDA:139,_getIdOf +FNDA:23,_writeControlFrame +FNDA:16,_updateStreamLimit +FNDA:1,_decreaseStreamCount +FNDA:16,_newStream +FNDA:16,_activateStream +FNDA:9,_createIncomingStream +FNDA:9,createStream +FNDA:9,tryToActivate +FNDA:3,(anonymous_12) +FNDA:3,(anonymous_13) +FNDA:9,(anonymous_14) +FNDA:123,_send +FNDA:47,_receive +FNDA:18,_initializeSettingsManagement +FNDA:18,(anonymous_18) +FNDA:18,_receiveSettings +FNDA:18,set +FNDA:18,_initializeLifecycleManagement +FNDA:2,_generatePingId +FNDA:2,ping +FNDA:4,_receivePing +FNDA:0,close FNDA:0,_receiveGoaway -FNDA:6,_initializeFlowControl -FNDA:0,setInitialWindowSize -FNDA:6,disableFlowControl -FNDA:6,_updateWindow -FNDA:16,_send +FNDA:18,_initializeFlowControl +FNDA:16,(anonymous_28) +FNDA:18,noop +FNDA:18,_setInitialStreamWindowSize +FNDA:24,(anonymous_31) +FNDA:2,_setStreamFlowControl +DA:1,1 +DA:10,1 +DA:12,1 +DA:36,1 +DA:38,18 +DA:41,18 +DA:44,18 +DA:47,18 +DA:50,18 +DA:53,18 +DA:57,1 +DA:93,1 +DA:96,1 +DA:103,18 +DA:105,18 +DA:108,18 +DA:109,18 +DA:112,18 +DA:116,18 +DA:117,18 +DA:118,18 +DA:121,1 +DA:122,139 +DA:127,1 +DA:128,23 +DA:130,23 +DA:131,23 +DA:133,0 +DA:134,0 +DA:139,1 +DA:140,16 +DA:141,16 +DA:145,1 +DA:146,1 +DA:147,1 +DA:158,1 +DA:159,16 +DA:160,16 +DA:161,16 +DA:162,16 +DA:163,16 +DA:166,1 +DA:167,16 +DA:168,16 +DA:169,16 +DA:179,1 +DA:180,9 +DA:182,9 +DA:183,2 +DA:184,2 +DA:185,0 +DA:188,7 +DA:189,7 +DA:190,7 +DA:191,7 +DA:192,7 +DA:196,1 +DA:198,9 +DA:199,9 +DA:201,9 +DA:204,9 +DA:208,9 +DA:209,1 +DA:210,9 +DA:211,0 +DA:213,9 +DA:220,9 +DA:221,9 +DA:222,3 +DA:223,3 +DA:224,3 +DA:228,9 +DA:229,9 +DA:230,0 +DA:232,9 +DA:237,9 +DA:239,9 +DA:247,1 +DA:248,123 +DA:251,123 +DA:252,123 +DA:253,120 +DA:254,120 +DA:255,120 +DA:256,120 +DA:257,120 +DA:258,26 +DA:259,26 +DA:260,3 +DA:261,3 +DA:264,26 +DA:265,26 +DA:267,26 +DA:268,0 +DA:269,26 +DA:270,0 +DA:275,123 +DA:280,1 +DA:281,47 +DA:284,47 +DA:287,47 +DA:288,6 +DA:292,46 +DA:293,3 +DA:297,45 +DA:299,45 +DA:305,1 +DA:310,1 +DA:312,18 +DA:313,18 +DA:316,18 +DA:317,18 +DA:318,18 +DA:320,0 +DA:321,0 +DA:326,18 +DA:330,1 +DA:331,18 +DA:332,34 +DA:337,1 +DA:338,18 +DA:355,1 +DA:356,18 +DA:357,18 +DA:358,18 +DA:362,1 +DA:363,2 +DA:364,2 +DA:365,2 +DA:366,32 +DA:369,2 +DA:373,1 +DA:374,2 +DA:375,2 +DA:376,2 +DA:378,2 +DA:379,2 +DA:390,1 +DA:391,4 +DA:392,2 +DA:393,2 +DA:394,2 +DA:395,2 +DA:396,2 +DA:398,0 +DA:402,2 +DA:403,2 +DA:415,1 +DA:416,0 +DA:417,0 +DA:423,0 +DA:426,1 +DA:427,0 +DA:428,0 +DA:434,1 +DA:436,18 +DA:437,18 +DA:438,16 +DA:440,18 +DA:441,18 +DA:442,18 +DA:449,1 +DA:455,1 +DA:456,18 +DA:457,0 +DA:458,0 +DA:460,18 +DA:461,18 +DA:462,18 +DA:463,24 +DA:470,1 +DA:471,2 +DA:472,2 +DA:473,2 +DA:474,0 +DA:475,0 +DA:476,0 +LF:177 +LH:157 +BRDA:41,1,0,18 +BRDA:41,1,1,2 +BRDA:128,2,0,23 +BRDA:128,2,1,0 +BRDA:128,3,0,23 +BRDA:128,3,1,5 +BRDA:128,3,2,1 +BRDA:128,3,3,1 +BRDA:182,4,0,2 +BRDA:182,4,1,7 +BRDA:182,5,0,9 +BRDA:182,5,1,7 +BRDA:210,6,0,0 +BRDA:210,6,1,9 +BRDA:229,7,0,0 +BRDA:229,7,1,9 +BRDA:259,8,0,3 +BRDA:259,8,1,23 +BRDA:267,9,0,0 +BRDA:267,9,1,26 +BRDA:269,10,0,0 +BRDA:269,10,1,26 +BRDA:287,11,0,6 +BRDA:287,11,1,41 +BRDA:292,12,0,3 +BRDA:292,12,1,43 +BRDA:313,13,0,18 +BRDA:313,13,1,2 +BRDA:317,14,0,18 +BRDA:317,14,1,0 +BRDA:317,15,0,18 +BRDA:317,15,1,18 +BRDA:391,16,0,2 +BRDA:391,16,1,2 +BRDA:393,17,0,2 +BRDA:393,17,1,0 +BRDA:421,18,0,0 +BRDA:421,18,1,0 +BRDA:456,19,0,0 +BRDA:456,19,1,18 +BRDA:456,20,0,18 +BRDA:456,20,1,0 +BRDA:471,21,0,2 +BRDA:471,21,1,0 +BRDA:474,22,0,0 +BRDA:474,22,1,0 +BRF:46 +BRH:32 +end_of_record +TN: +SF:/data/upstream/node-http2/lib/flow.js +FN:1,noop +FN:73,Flow +FN:90,_receive +FN:98,_write +FN:106,(anonymous_5) +FN:127,_restoreWindow +FN:141,disableRemoteFlowControl +FN:173,_send +FN:181,_read +FN:194,_onWindowIncrease +FN:212,_push +FN:261,push +FN:280,getLastQueuedFrame +FN:298,_increaseWindow +FN:322,_updateWindow +FN:330,setInitialWindow +FN:336,disableLocalFlowControl +FNF:17 +FNH:13 +FNDA:12,noop +FNDA:42,Flow +FNDA:0,_receive +FNDA:77,_write +FNDA:8,(anonymous_5) +FNDA:7,_restoreWindow +FNDA:0,disableRemoteFlowControl +FNDA:0,_send +FNDA:341,_read +FNDA:27,_onWindowIncrease +FNDA:83,_push +FNDA:57,push +FNDA:3,getLastQueuedFrame +FNDA:29,_increaseWindow +FNDA:5,_updateWindow +FNDA:22,setInitialWindow +FNDA:0,disableLocalFlowControl DA:1,1 DA:2,1 -DA:3,1 -DA:4,1 -DA:40,1 -DA:43,1 -DA:45,6 -DA:48,6 -DA:51,6 -DA:54,6 -DA:57,6 -DA:60,6 -DA:62,1 -DA:67,1 -DA:68,6 -DA:69,6 -DA:70,12 -DA:71,12 -DA:73,6 -DA:74,6 -DA:76,6 -DA:77,6 -DA:80,1 -DA:81,2 -DA:82,2 -DA:83,2 -DA:84,2 -DA:85,2 -DA:88,1 -DA:89,1 +DA:11,1 +DA:13,1 +DA:70,1 +DA:73,1 +DA:74,42 +DA:76,42 +DA:77,42 +DA:78,42 +DA:80,42 +DA:81,42 +DA:82,42 +DA:84,1 DA:90,1 -DA:91,1 -DA:97,1 -DA:98,26 -DA:100,26 -DA:101,26 -DA:102,41 -DA:103,41 -DA:104,41 -DA:105,16 -DA:106,16 -DA:111,26 -DA:112,26 -DA:113,26 -DA:116,0 -DA:117,0 -DA:118,0 -DA:122,0 -DA:126,1 -DA:127,16 -DA:129,16 -DA:130,1 -DA:131,1 -DA:132,1 -DA:135,16 -DA:137,16 -DA:139,16 -DA:145,1 -DA:146,6 -DA:148,6 -DA:149,6 -DA:154,6 -DA:155,6 -DA:156,6 -DA:158,0 -DA:162,6 -DA:165,1 -DA:171,1 -DA:172,6 -DA:173,6 -DA:174,6 -DA:177,1 -DA:178,0 -DA:179,0 -DA:180,0 -DA:181,0 -DA:184,0 -DA:187,1 -DA:188,0 -DA:189,0 -DA:190,0 -DA:192,0 -DA:193,0 -DA:202,1 -DA:203,0 -DA:204,0 -DA:205,0 -DA:206,0 -DA:207,0 -DA:208,0 -DA:210,0 -DA:214,0 -DA:215,0 -DA:225,1 -DA:228,1 -DA:234,1 -DA:236,6 -DA:245,6 -DA:246,6 -DA:251,1 -DA:257,1 -DA:258,0 -DA:259,0 -DA:265,1 -DA:266,6 -DA:277,1 -DA:278,6 -DA:279,6 -DA:281,0 -DA:283,6 -DA:286,1 -DA:287,16 -DA:288,2 -DA:289,0 -DA:291,2 -DA:294,16 -LF:116 -LH:88 -BRDA:48,1,0,6 -BRDA:48,1,1,2 -BRDA:101,2,0,67 -BRDA:101,2,1,41 -BRDA:103,3,0,41 -BRDA:103,3,1,0 -BRDA:111,4,0,26 -BRDA:111,4,1,0 -BRDA:116,5,0,0 -BRDA:116,5,1,0 -BRDA:129,6,0,1 -BRDA:129,6,1,15 -BRDA:155,7,0,6 -BRDA:155,7,1,0 -BRDA:155,8,0,6 -BRDA:155,8,1,6 -BRDA:203,9,0,0 -BRDA:203,9,1,0 -BRDA:205,10,0,0 -BRDA:205,10,1,0 -BRDA:278,11,0,6 -BRDA:278,11,1,0 -BRDA:287,12,0,2 -BRDA:287,12,1,14 -BRDA:287,13,0,16 -BRDA:287,13,1,16 -BRDA:288,14,0,0 -BRDA:288,14,1,2 -BRF:28 -BRH:17 +DA:91,0 +DA:98,1 +DA:99,77 +DA:101,77 +DA:102,6 +DA:105,77 +DA:106,8 +DA:107,8 +DA:108,8 +DA:109,7 +DA:111,8 +DA:116,69 +DA:119,75 +DA:121,5 +DA:127,1 +DA:128,7 +DA:129,7 +DA:130,3 +DA:135,3 +DA:141,1 +DA:142,0 +DA:143,0 +DA:170,1 +DA:173,1 +DA:174,0 +DA:181,1 +DA:182,341 +DA:183,341 +DA:185,0 +DA:186,0 +DA:188,341 +DA:194,1 +DA:195,27 +DA:197,27 +DA:198,27 +DA:199,0 +DA:202,27 +DA:212,1 +DA:213,83 +DA:214,83 +DA:215,83 +DA:217,83 +DA:220,0 +DA:221,0 +DA:225,0 +DA:226,0 +DA:232,0 +DA:234,0 +DA:235,0 +DA:238,83 +DA:239,83 +DA:240,83 +DA:241,83 +DA:242,12 +DA:244,12 +DA:245,12 +DA:247,83 +DA:250,83 +DA:253,83 +DA:254,0 +DA:257,83 +DA:261,1 +DA:262,57 +DA:263,0 +DA:265,57 +DA:266,57 +DA:267,57 +DA:270,57 +DA:271,57 +DA:273,0 +DA:274,0 +DA:280,1 +DA:281,3 +DA:282,3 +DA:296,1 +DA:298,1 +DA:299,29 +DA:300,2 +DA:301,2 +DA:303,27 +DA:304,27 +DA:305,27 +DA:306,0 +DA:307,0 +DA:309,27 +DA:322,1 +DA:323,5 +DA:330,1 +DA:331,22 +DA:332,22 +DA:336,1 +DA:337,0 +LF:107 +LH:86 +BRDA:1,1,0,0 +BRDA:1,1,1,1 +BRDA:101,2,0,6 +BRDA:101,2,1,71 +BRDA:105,3,0,8 +BRDA:105,3,1,69 +BRDA:105,4,0,77 +BRDA:105,4,1,18 +BRDA:105,4,2,10 +BRDA:108,5,0,7 +BRDA:108,5,1,1 +BRDA:119,6,0,5 +BRDA:119,6,1,70 +BRDA:119,7,0,75 +BRDA:119,7,1,7 +BRDA:119,7,2,3 +BRDA:129,8,0,3 +BRDA:129,8,1,4 +BRDA:129,9,0,7 +BRDA:129,9,1,3 +BRDA:129,9,2,3 +BRDA:182,10,0,341 +BRDA:182,10,1,0 +BRDA:198,11,0,27 +BRDA:198,11,1,27 +BRDA:251,12,0,83 +BRDA:251,12,1,0 +BRDA:215,13,0,83 +BRDA:215,13,1,0 +BRDA:215,14,0,83 +BRDA:215,14,1,83 +BRDA:215,14,2,16 +BRDA:215,14,3,16 +BRDA:220,15,0,0 +BRDA:220,15,1,0 +BRDA:239,16,0,83 +BRDA:239,16,1,0 +BRDA:241,17,0,12 +BRDA:241,17,1,71 +BRDA:241,18,0,83 +BRDA:241,18,1,83 +BRDA:241,18,2,16 +BRDA:253,19,0,0 +BRDA:253,19,1,83 +BRDA:262,20,0,0 +BRDA:262,20,1,57 +BRDA:265,21,0,57 +BRDA:265,21,1,50 +BRDA:270,22,0,57 +BRDA:270,22,1,0 +BRDA:282,23,0,3 +BRDA:282,23,1,3 +BRDA:299,24,0,2 +BRDA:299,24,1,27 +BRDA:299,25,0,29 +BRDA:299,25,1,2 +BRDA:305,26,0,0 +BRDA:305,26,1,27 +BRDA:305,27,0,27 +BRDA:305,27,1,23 +BRDA:323,28,0,0 +BRDA:323,28,1,5 +BRF:62 +BRH:50 end_of_record TN: SF:/data/upstream/node-http2/lib/stream.js -FN:15,Stream -FN:42,_initializeManagement -FN:43,(anonymous_3) -FN:51,(anonymous_4) -FN:59,promise -FN:66,open -FN:75,reset -FN:89,_initializeUpstream -FN:99,(anonymous_9) -FN:108,_send -FN:116,_flush -FN:132,_finishing -FN:176,_initializeState -FN:184,transition -FN:195,transition -FN:351,_initializeFlowControl -FN:367,setInitialWindowSize -FN:375,disableFlowControl -FN:387,_updateWindow -FN:399,_write -FN:433,_receiveData -FNF:21 -FNH:18 -FNDA:23,Stream -FNDA:23,_initializeManagement -FNDA:29,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:1,promise -FNDA:5,open -FNDA:17,reset -FNDA:23,_initializeUpstream -FNDA:29,(anonymous_9) -FNDA:27,_send -FNDA:23,_flush -FNDA:5,_finishing -FNDA:23,_initializeState -FNDA:18,transition -FNDA:56,transition -FNDA:23,_initializeFlowControl -FNDA:0,setInitialWindowSize -FNDA:0,disableFlowControl -FNDA:29,_updateWindow -FNDA:4,_write -FNDA:29,_receiveData +FN:1,noop +FN:42,Stream +FN:65,_initializeManagement +FN:66,(anonymous_4) +FN:69,(anonymous_5) +FN:78,promise +FN:87,headers +FN:96,reset +FN:138,_initializeDataFlow +FN:151,_receive +FN:183,_read +FN:192,_write +FN:210,_send +FN:227,_finishing +FN:269,_initializeState +FN:280,transition +FN:300,transition +FNF:17 +FNH:17 +FNDA:5,noop +FNDA:24,Stream +FNDA:24,_initializeManagement +FNDA:4,(anonymous_4) +FNDA:11,(anonymous_5) +FNDA:3,promise +FNDA:13,headers +FNDA:8,reset +FNDA:24,_initializeDataFlow +FNDA:30,_receive +FNDA:11,_read +FNDA:5,_write +FNDA:218,_send +FNDA:3,_finishing +FNDA:24,_initializeState +FNDA:26,transition +FNDA:64,transition DA:1,1 DA:2,1 -DA:4,1 -DA:10,1 -DA:12,1 +DA:13,1 DA:15,1 -DA:16,23 -DA:19,23 -DA:22,23 -DA:25,23 -DA:28,23 -DA:32,23 -DA:35,1 DA:42,1 -DA:43,23 -DA:44,29 -DA:45,4 -DA:46,25 -DA:47,7 -DA:48,7 -DA:51,23 -DA:52,0 -DA:59,1 -DA:60,1 -DA:66,1 -DA:67,5 -DA:72,5 -DA:75,1 -DA:76,17 -DA:89,1 -DA:90,23 -DA:91,23 -DA:93,23 -DA:94,23 -DA:95,23 -DA:98,23 -DA:99,23 -DA:100,29 -DA:101,29 -DA:102,29 -DA:108,1 -DA:109,27 -DA:110,27 -DA:111,27 -DA:112,23 -DA:116,1 -DA:117,23 -DA:118,23 -DA:119,27 -DA:120,27 -DA:121,27 -DA:123,23 -DA:131,1 -DA:132,1 -DA:133,5 -DA:134,5 -DA:135,0 -DA:141,5 -DA:142,5 -DA:176,1 -DA:177,23 -DA:178,23 -DA:179,23 -DA:184,1 -DA:185,18 -DA:186,18 -DA:187,18 -DA:188,18 -DA:195,1 -DA:196,56 -DA:197,56 -DA:199,56 -DA:210,9 -DA:211,4 -DA:212,4 -DA:213,1 -DA:215,5 -DA:216,2 -DA:218,3 -DA:220,9 -DA:231,6 -DA:232,1 -DA:233,5 -DA:234,0 -DA:236,5 -DA:238,6 -DA:247,5 -DA:248,0 -DA:249,5 -DA:250,1 -DA:252,4 -DA:254,5 -DA:266,4 -DA:267,3 -DA:268,1 -DA:269,0 -DA:271,4 -DA:278,5 -DA:279,3 -DA:280,2 -DA:281,0 -DA:283,5 -DA:294,10 -DA:295,3 -DA:296,7 -DA:297,5 -DA:299,10 -DA:316,17 -DA:317,0 -DA:318,17 -DA:319,0 -DA:321,17 -DA:325,56 -DA:326,17 -DA:329,17 -DA:330,0 -DA:331,0 -DA:337,17 -DA:338,17 -DA:339,17 -DA:351,1 -DA:352,23 -DA:353,23 -DA:355,23 -DA:356,23 -DA:361,1 +DA:43,24 +DA:46,24 +DA:49,24 +DA:52,24 +DA:55,24 +DA:58,1 +DA:65,1 +DA:66,24 +DA:67,4 +DA:69,24 +DA:70,11 +DA:71,11 +DA:78,1 +DA:79,3 +DA:80,3 +DA:87,1 +DA:88,13 +DA:93,13 +DA:96,1 +DA:97,8 +DA:136,1 +DA:138,1 +DA:139,24 +DA:140,24 +DA:141,24 +DA:142,24 +DA:143,24 +DA:144,24 +DA:145,24 +DA:147,24 +DA:151,1 +DA:152,30 +DA:154,30 +DA:158,30 +DA:159,10 +DA:160,10 +DA:161,0 +DA:162,0 +DA:168,20 +DA:172,30 +DA:173,3 +DA:176,30 +DA:177,30 +DA:183,1 +DA:184,11 +DA:185,0 +DA:186,0 +DA:187,0 +DA:192,1 +DA:194,5 +DA:200,5 +DA:201,5 +DA:203,0 +DA:210,1 +DA:211,218 +DA:212,0 +DA:213,0 +DA:214,0 +DA:222,1 +DA:227,1 +DA:228,3 +DA:229,3 +DA:230,3 +DA:231,0 +DA:232,0 +DA:233,0 +DA:235,3 +DA:269,1 +DA:270,24 +DA:271,24 +DA:272,24 +DA:273,24 +DA:278,1 +DA:280,1 +DA:281,26 +DA:282,26 +DA:284,26 +DA:285,26 +DA:286,26 +DA:288,26 +DA:289,26 +DA:290,15 +DA:291,11 +DA:292,2 +DA:300,1 +DA:301,64 +DA:302,64 +DA:304,64 +DA:305,64 +DA:306,64 +DA:307,18 +DA:308,24 +DA:309,1 +DA:310,8 +DA:311,0 +DA:312,7 +DA:313,0 +DA:314,0 +DA:315,6 +DA:318,64 +DA:325,15 +DA:326,11 +DA:327,11 +DA:328,0 +DA:331,4 +DA:333,15 +DA:345,7 +DA:346,3 +DA:347,4 +DA:348,0 +DA:349,4 +DA:352,4 +DA:354,7 +DA:364,1 +DA:365,0 +DA:366,1 DA:367,1 DA:368,0 -DA:369,0 -DA:375,1 -DA:376,0 -DA:387,1 -DA:388,29 -DA:389,4 -DA:390,0 -DA:392,4 -DA:394,4 -DA:399,1 -DA:401,4 -DA:402,4 -DA:406,4 -DA:407,4 -DA:408,4 -DA:409,4 -DA:418,4 -DA:422,4 -DA:423,4 -DA:429,0 -DA:433,1 -DA:434,29 -DA:435,10 -DA:438,29 -DA:439,5 -LF:153 -LH:138 -BRDA:19,1,0,23 -BRDA:19,1,1,21 -BRDA:44,2,0,4 -BRDA:44,2,1,25 -BRDA:46,3,0,7 -BRDA:46,3,1,18 -BRDA:109,4,0,27 -BRDA:109,4,1,23 -BRDA:111,5,0,23 -BRDA:111,5,1,4 -BRDA:134,6,0,0 -BRDA:134,6,1,5 -BRDA:185,7,0,18 -BRDA:185,7,1,0 -BRDA:199,8,0,9 -BRDA:199,8,1,6 -BRDA:199,8,2,5 -BRDA:199,8,3,4 -BRDA:199,8,4,5 -BRDA:199,8,5,10 -BRDA:199,8,6,17 -BRDA:210,9,0,4 -BRDA:210,9,1,5 -BRDA:212,10,0,1 -BRDA:212,10,1,3 -BRDA:213,11,0,1 -BRDA:213,11,1,0 -BRDA:215,12,0,2 -BRDA:215,12,1,3 -BRDA:216,13,0,1 -BRDA:216,13,1,1 -BRDA:231,14,0,1 -BRDA:231,14,1,5 -BRDA:231,15,0,6 -BRDA:231,15,1,1 -BRDA:233,16,0,0 -BRDA:233,16,1,5 -BRDA:233,17,0,5 -BRDA:233,17,1,0 -BRDA:247,18,0,0 -BRDA:247,18,1,5 -BRDA:249,19,0,1 -BRDA:249,19,1,4 -BRDA:249,20,0,5 -BRDA:249,20,1,5 -BRDA:266,21,0,3 -BRDA:266,21,1,1 -BRDA:267,22,0,1 -BRDA:267,22,1,2 -BRDA:268,23,0,0 -BRDA:268,23,1,1 -BRDA:278,24,0,3 -BRDA:278,24,1,2 -BRDA:278,25,0,5 -BRDA:278,25,1,5 -BRDA:278,25,2,5 -BRDA:280,26,0,0 -BRDA:280,26,1,2 -BRDA:294,27,0,3 -BRDA:294,27,1,7 -BRDA:294,28,0,10 -BRDA:294,28,1,10 -BRDA:294,28,2,5 -BRDA:296,29,0,5 -BRDA:296,29,1,2 -BRDA:316,30,0,0 -BRDA:316,30,1,17 -BRDA:316,31,0,17 -BRDA:316,31,1,0 -BRDA:318,32,0,0 -BRDA:318,32,1,17 -BRDA:318,33,0,17 -BRDA:318,33,1,17 -BRDA:325,34,0,17 -BRDA:325,34,1,39 -BRDA:329,35,0,0 -BRDA:329,35,1,17 -BRDA:388,36,0,4 -BRDA:388,36,1,25 -BRDA:389,37,0,0 -BRDA:389,37,1,4 -BRDA:406,38,0,8 -BRDA:406,38,1,4 -BRDA:422,39,0,4 -BRDA:422,39,1,0 -BRDA:434,40,0,10 -BRDA:434,40,1,19 -BRDA:438,41,0,5 -BRDA:438,41,1,24 -BRF:89 -BRH:75 +DA:371,0 +DA:373,1 +DA:385,24 +DA:386,4 +DA:387,20 +DA:388,0 +DA:392,24 +DA:401,7 +DA:402,2 +DA:403,5 +DA:406,0 +DA:408,7 +DA:421,2 +DA:422,0 +DA:423,2 +DA:426,0 +DA:428,2 +DA:451,8 +DA:455,0 +DA:457,8 +DA:463,64 +DA:464,3 +DA:473,64 +DA:474,5 +DA:476,5 +DA:480,64 +DA:481,8 +DA:484,8 +DA:485,0 +DA:486,0 +DA:492,8 +DA:493,8 +DA:494,8 +DA:495,8 +LF:157 +LH:130 +BRDA:1,1,0,0 +BRDA:1,1,1,1 +BRDA:46,2,0,24 +BRDA:46,2,1,8 +BRDA:158,3,0,10 +BRDA:158,3,1,20 +BRDA:160,4,0,0 +BRDA:160,4,1,10 +BRDA:172,5,0,3 +BRDA:172,5,1,27 +BRDA:176,6,0,30 +BRDA:176,6,1,0 +BRDA:184,7,0,0 +BRDA:184,7,1,11 +BRDA:200,8,0,5 +BRDA:200,8,1,0 +BRDA:211,9,0,0 +BRDA:211,9,1,218 +BRDA:230,10,0,0 +BRDA:230,10,1,3 +BRDA:230,11,0,3 +BRDA:230,11,1,0 +BRDA:230,11,2,0 +BRDA:281,12,0,26 +BRDA:281,12,1,0 +BRDA:289,13,0,15 +BRDA:289,13,1,11 +BRDA:289,14,0,26 +BRDA:289,14,1,20 +BRDA:291,15,0,2 +BRDA:291,15,1,9 +BRDA:291,16,0,11 +BRDA:291,16,1,6 +BRDA:306,17,0,18 +BRDA:306,17,1,24 +BRDA:306,17,2,1 +BRDA:306,17,3,8 +BRDA:306,17,4,0 +BRDA:306,17,5,7 +BRDA:306,17,6,0 +BRDA:306,17,7,0 +BRDA:306,17,8,6 +BRDA:318,18,0,15 +BRDA:318,18,1,7 +BRDA:318,18,2,1 +BRDA:318,18,3,24 +BRDA:318,18,4,7 +BRDA:318,18,5,2 +BRDA:318,18,6,8 +BRDA:325,19,0,11 +BRDA:325,19,1,4 +BRDA:327,20,0,0 +BRDA:327,20,1,11 +BRDA:328,21,0,0 +BRDA:328,21,1,0 +BRDA:345,22,0,3 +BRDA:345,22,1,4 +BRDA:345,23,0,7 +BRDA:345,23,1,3 +BRDA:347,24,0,0 +BRDA:347,24,1,4 +BRDA:349,25,0,0 +BRDA:349,25,1,4 +BRDA:349,26,0,4 +BRDA:349,26,1,4 +BRDA:364,27,0,0 +BRDA:364,27,1,1 +BRDA:366,28,0,1 +BRDA:366,28,1,0 +BRDA:366,29,0,1 +BRDA:366,29,1,1 +BRDA:368,30,0,0 +BRDA:368,30,1,0 +BRDA:368,31,0,0 +BRDA:368,31,1,0 +BRDA:385,32,0,4 +BRDA:385,32,1,20 +BRDA:386,33,0,3 +BRDA:386,33,1,1 +BRDA:387,34,0,0 +BRDA:387,34,1,20 +BRDA:401,35,0,2 +BRDA:401,35,1,5 +BRDA:401,36,0,7 +BRDA:401,36,1,7 +BRDA:401,36,2,6 +BRDA:403,37,0,5 +BRDA:403,37,1,0 +BRDA:403,38,0,5 +BRDA:403,38,1,1 +BRDA:403,38,2,1 +BRDA:403,38,3,1 +BRDA:421,39,0,0 +BRDA:421,39,1,2 +BRDA:421,40,0,2 +BRDA:421,40,1,2 +BRDA:421,40,2,1 +BRDA:423,41,0,2 +BRDA:423,41,1,0 +BRDA:423,42,0,2 +BRDA:423,42,1,1 +BRDA:423,42,2,1 +BRDA:423,42,3,0 +BRDA:451,43,0,8 +BRDA:451,43,1,0 +BRDA:451,44,0,8 +BRDA:451,44,1,8 +BRDA:451,44,2,0 +BRDA:451,44,3,0 +BRDA:451,44,4,0 +BRDA:451,44,5,0 +BRDA:451,44,6,0 +BRDA:463,45,0,3 +BRDA:463,45,1,61 +BRDA:463,46,0,64 +BRDA:463,46,1,30 +BRDA:463,46,2,30 +BRDA:473,47,0,5 +BRDA:473,47,1,59 +BRDA:473,48,0,64 +BRDA:473,48,1,7 +BRDA:476,49,0,3 +BRDA:476,49,1,2 +BRDA:480,50,0,8 +BRDA:480,50,1,56 +BRDA:484,51,0,0 +BRDA:484,51,1,8 +BRF:127 +BRH:91 end_of_record TN: SF:/data/upstream/node-http2/lib/endpoint.js FN:15,Endpoint -FN:47,_writePrelude -FN:53,_readPrelude -FN:58,_temporalWrite -FN:116,_initializeDataFlow -FN:138,_read -FN:149,_write -FN:156,_initializeErrorHandling -FN:164,_error -FNF:9 -FNH:8 -FNDA:2,Endpoint -FNDA:1,_writePrelude -FNDA:1,_readPrelude -FNDA:1,_temporalWrite -FNDA:2,_initializeDataFlow -FNDA:12,_read -FNDA:7,_write -FNDA:2,_initializeErrorHandling +FN:50,_writePrelude +FN:56,_readPrelude +FN:61,_temporalWrite +FN:119,_initializeDataFlow +FN:143,_read +FN:150,_write +FN:157,_initializeManagement +FN:161,createStream +FN:168,_initializeErrorHandling +FN:176,_error +FN:181,close +FNF:12 +FNH:10 +FNDA:4,Endpoint +FNDA:2,_writePrelude +FNDA:2,_readPrelude +FNDA:2,_temporalWrite +FNDA:4,_initializeDataFlow +FNDA:29,_read +FNDA:10,_write +FNDA:4,_initializeManagement +FNDA:1,createStream +FNDA:4,_initializeErrorHandling FNDA:0,_error +FNDA:0,close DA:1,1 DA:2,1 DA:3,1 @@ -1013,429 +1362,994 @@ DA:6,1 DA:7,1 DA:9,1 DA:15,1 -DA:16,2 -DA:19,2 -DA:23,2 -DA:24,1 -DA:25,1 -DA:26,1 +DA:16,4 +DA:19,4 +DA:23,4 +DA:24,2 +DA:25,2 +DA:26,2 DA:28,0 -DA:34,2 -DA:37,2 -DA:39,1 -DA:44,1 +DA:34,4 +DA:37,4 +DA:40,4 +DA:42,1 DA:47,1 -DA:48,1 -DA:49,1 -DA:53,1 -DA:55,1 -DA:58,1 -DA:61,1 -DA:62,1 -DA:63,24 -DA:64,0 -DA:66,0 +DA:50,1 +DA:51,2 +DA:52,2 +DA:56,1 +DA:58,2 +DA:61,2 +DA:64,2 +DA:65,2 +DA:66,48 DA:67,0 -DA:69,24 -DA:74,1 -DA:75,1 -DA:76,1 -DA:77,1 -DA:78,1 -DA:116,1 -DA:117,2 -DA:118,2 +DA:69,0 +DA:70,0 +DA:72,48 +DA:77,2 +DA:78,2 +DA:79,2 +DA:80,2 +DA:81,2 DA:119,1 -DA:120,1 -DA:121,1 -DA:123,1 -DA:124,1 -DA:125,1 +DA:120,4 +DA:121,4 +DA:122,2 +DA:123,2 +DA:124,2 +DA:126,2 +DA:127,2 DA:128,2 -DA:129,2 -DA:130,2 -DA:131,2 -DA:132,2 -DA:134,2 -DA:135,2 -DA:138,1 -DA:139,12 -DA:140,12 -DA:141,8 -DA:144,12 -DA:145,12 -DA:149,1 -DA:150,7 -DA:156,1 -DA:157,2 -DA:158,2 -DA:159,2 -DA:160,2 -DA:161,2 -DA:164,1 -DA:165,0 -DA:166,0 -DA:167,0 -LF:72 -LH:65 -BRDA:19,1,0,2 +DA:131,4 +DA:132,4 +DA:133,4 +DA:134,4 +DA:135,4 +DA:137,4 +DA:138,4 +DA:140,4 +DA:143,1 +DA:144,29 +DA:145,29 +DA:146,16 +DA:150,1 +DA:151,10 +DA:157,1 +DA:158,4 +DA:161,1 +DA:162,1 +DA:168,1 +DA:169,4 +DA:170,4 +DA:171,4 +DA:172,4 +DA:173,4 +DA:176,1 +DA:177,0 +DA:178,0 +DA:181,1 +DA:182,0 +LF:77 +LH:70 +BRDA:19,1,0,4 BRDA:19,1,1,0 -BRDA:23,2,0,1 -BRDA:23,2,1,1 -BRDA:25,3,0,1 +BRDA:23,2,0,2 +BRDA:23,2,1,2 +BRDA:25,3,0,2 BRDA:25,3,1,0 -BRDA:62,4,0,25 -BRDA:62,4,1,24 -BRDA:63,5,0,0 -BRDA:63,5,1,24 -BRDA:74,6,0,1 -BRDA:74,6,1,0 -BRDA:118,7,0,1 -BRDA:118,7,1,1 -BRDA:140,8,0,20 -BRDA:140,8,1,20 -BRDA:144,9,0,12 -BRDA:144,9,1,0 -BRF:18 -BRH:13 +BRDA:65,4,0,50 +BRDA:65,4,1,48 +BRDA:66,5,0,0 +BRDA:66,5,1,48 +BRDA:77,6,0,2 +BRDA:77,6,1,0 +BRDA:121,7,0,2 +BRDA:121,7,1,2 +BRDA:145,8,0,45 +BRDA:145,8,1,45 +BRF:16 +BRH:12 end_of_record TN: SF:/data/upstream/node-http2/lib/framer.js -FN:24,Serializer -FN:33,_transform -FN:63,Deserializer -FN:75,(anonymous_4) -FN:86,_transform -FN:190,writeCommonHeader -FN:225,readCommonHeader -FN:270,writeData -FN:274,readData -FN:313,writeHeadersPriority -FN:322,readHeadersPriority -FN:352,writePriority -FN:358,readPriority -FN:384,writeRstStream -FN:390,readRstStream -FN:426,writeSettings -FN:428,(anonymous_17) -FN:448,readSettings -FN:514,writePushPromise -FN:521,readPushPromise -FN:545,writePing -FN:552,readPing -FN:587,writeGoaway -FN:594,readGoaway -FN:621,writeWindowUpdate -FN:627,readWindowUpdate -FN:655,(anonymous_27) -FN:657,(anonymous_28) -FN:665,(anonymous_29) -FN:673,(anonymous_30) -FNF:30 -FNH:26 -FNDA:3,Serializer -FNDA:14,_transform -FNDA:3,Deserializer -FNDA:31,(anonymous_4) -FNDA:22,_transform -FNDA:24,writeCommonHeader -FNDA:24,readCommonHeader -FNDA:2,writeData -FNDA:2,readData -FNDA:4,writeHeadersPriority -FNDA:4,readHeadersPriority +FN:5,noop +FN:25,Serializer +FN:34,_transform +FN:62,Deserializer +FN:74,(anonymous_5) +FN:85,_transform +FN:189,writeCommonHeader +FN:218,readCommonHeader +FN:263,writeData +FN:267,readData +FN:306,writeHeadersPriority +FN:316,readHeadersPriority +FN:346,writePriority +FN:352,readPriority +FN:378,writeRstStream +FN:386,readRstStream +FN:422,writeSettings +FN:424,(anonymous_18) +FN:442,readSettings +FN:506,writePushPromise +FN:514,readPushPromise +FN:538,writePing +FN:543,readPing +FN:578,writeGoaway +FN:591,readGoaway +FN:618,writeWindowUpdate +FN:625,readWindowUpdate +FN:654,(anonymous_28) +FN:667,(anonymous_29) +FN:683,(anonymous_30) +FN:691,(anonymous_31) +FNF:31 +FNH:27 +FNDA:123,noop +FNDA:5,Serializer +FNDA:18,_transform +FNDA:5,Deserializer +FNDA:41,(anonymous_5) +FNDA:25,_transform +FNDA:28,writeCommonHeader +FNDA:28,readCommonHeader +FNDA:4,writeData +FNDA:4,readData +FNDA:6,writeHeadersPriority +FNDA:6,readHeadersPriority FNDA:2,writePriority FNDA:2,readPriority FNDA:2,writeRstStream FNDA:2,readRstStream -FNDA:4,writeSettings -FNDA:12,(anonymous_17) -FNDA:4,readSettings +FNDA:6,writeSettings +FNDA:18,(anonymous_18) +FNDA:6,readSettings FNDA:2,writePushPromise FNDA:2,readPushPromise FNDA:2,writePing FNDA:2,readPing FNDA:2,writeGoaway FNDA:2,readGoaway -FNDA:4,writeWindowUpdate -FNDA:4,readWindowUpdate -FNDA:0,(anonymous_27) +FNDA:2,writeWindowUpdate +FNDA:2,readWindowUpdate FNDA:0,(anonymous_28) FNDA:0,(anonymous_29) FNDA:0,(anonymous_30) +FNDA:0,(anonymous_31) DA:5,1 -DA:7,1 -DA:9,1 +DA:6,1 +DA:8,1 DA:10,1 -DA:24,1 -DA:25,3 -DA:26,3 -DA:28,1 -DA:33,1 -DA:34,14 -DA:36,14 -DA:37,0 -DA:40,14 -DA:41,14 -DA:42,14 -DA:44,14 -DA:45,30 -DA:46,30 -DA:49,14 -DA:63,1 -DA:64,3 -DA:65,3 -DA:66,3 -DA:68,1 -DA:75,1 -DA:76,31 -DA:77,31 -DA:78,31 -DA:79,31 -DA:80,17 -DA:86,1 -DA:87,22 -DA:89,22 -DA:91,22 -DA:94,39 -DA:95,39 -DA:96,39 -DA:97,39 -DA:104,39 -DA:105,14 -DA:106,14 -DA:114,39 -DA:115,14 -DA:116,14 -DA:117,14 -DA:118,14 -DA:119,14 -DA:121,0 -DA:122,0 -DA:125,0 -DA:127,14 -DA:131,22 +DA:11,1 +DA:25,1 +DA:26,5 +DA:27,5 +DA:29,1 +DA:34,1 +DA:35,18 +DA:37,18 +DA:39,18 +DA:40,18 +DA:41,18 +DA:43,18 +DA:44,38 +DA:45,38 +DA:48,18 +DA:62,1 +DA:63,5 +DA:64,5 +DA:65,5 +DA:67,1 +DA:74,1 +DA:75,41 +DA:76,41 +DA:77,41 +DA:78,41 +DA:79,23 +DA:85,1 +DA:86,25 +DA:88,25 +DA:90,25 +DA:93,48 +DA:94,48 +DA:95,48 +DA:96,48 +DA:103,48 +DA:104,18 +DA:105,18 +DA:113,48 +DA:114,18 +DA:115,18 +DA:116,18 +DA:117,0 +DA:118,0 +DA:120,18 +DA:121,18 +DA:124,0 +DA:126,18 +DA:130,25 +DA:178,1 DA:179,1 -DA:180,1 -DA:182,1 -DA:184,1 -DA:186,1 -DA:188,1 -DA:190,1 -DA:191,24 -DA:193,24 -DA:194,24 -DA:195,26 -DA:197,24 -DA:198,0 -DA:200,24 -DA:202,24 -DA:203,24 -DA:205,24 -DA:206,24 -DA:207,28 -DA:208,28 -DA:209,0 -DA:211,28 -DA:212,4 -DA:215,24 -DA:217,24 -DA:218,0 -DA:220,24 -DA:222,24 -DA:225,1 -DA:226,24 -DA:228,24 -DA:230,24 -DA:231,24 -DA:232,24 -DA:233,24 -DA:234,28 -DA:237,24 +DA:181,1 +DA:183,1 +DA:185,1 +DA:187,1 +DA:189,1 +DA:190,28 +DA:192,28 +DA:193,28 +DA:194,30 +DA:196,28 +DA:197,28 +DA:199,28 +DA:200,28 +DA:202,28 +DA:203,28 +DA:204,29 +DA:205,29 +DA:206,29 +DA:207,5 +DA:210,28 +DA:212,28 +DA:213,28 +DA:215,28 +DA:218,1 +DA:219,28 +DA:221,28 +DA:223,28 +DA:224,28 +DA:225,28 +DA:226,28 +DA:227,38 +DA:230,28 +DA:257,1 +DA:259,1 +DA:261,1 +DA:263,1 +DA:264,4 +DA:267,1 +DA:268,4 +DA:290,1 +DA:292,1 +DA:294,1 +DA:306,1 +DA:307,6 +DA:308,2 +DA:309,2 +DA:310,2 +DA:311,2 +DA:313,6 +DA:316,1 +DA:317,6 +DA:318,2 +DA:319,2 +DA:321,4 +DA:332,1 +DA:334,1 +DA:336,1 +DA:346,1 +DA:347,2 +DA:348,2 +DA:349,2 +DA:352,1 +DA:353,2 +DA:363,1 +DA:365,1 +DA:367,1 +DA:378,1 +DA:379,2 +DA:380,2 +DA:381,2 +DA:382,2 +DA:383,2 +DA:386,1 +DA:387,2 +DA:398,1 +DA:400,1 +DA:402,1 +DA:422,1 +DA:423,6 +DA:424,6 +DA:425,18 +DA:426,12 +DA:427,12 +DA:428,12 +DA:431,6 +DA:433,6 +DA:434,6 +DA:435,12 +DA:436,12 +DA:439,6 +DA:442,1 +DA:443,6 +DA:445,6 +DA:446,0 +DA:448,6 +DA:449,12 +DA:450,12 +DA:451,12 +DA:452,12 +DA:453,0 +DA:455,12 +DA:460,1 +DA:464,1 +DA:468,1 +DA:474,1 +DA:488,1 +DA:490,1 +DA:492,1 +DA:506,1 +DA:507,2 +DA:508,2 +DA:509,2 +DA:510,2 +DA:511,2 +DA:514,1 +DA:515,2 +DA:516,2 +DA:530,1 +DA:532,1 +DA:534,1 +DA:538,1 +DA:539,2 +DA:540,2 +DA:543,1 +DA:544,2 +DA:545,0 +DA:547,2 +DA:557,1 +DA:559,1 +DA:561,1 +DA:578,1 +DA:579,2 +DA:581,2 +DA:582,2 +DA:584,2 +DA:585,2 +DA:586,2 +DA:588,2 +DA:591,1 +DA:592,2 +DA:593,2 +DA:607,1 +DA:609,1 +DA:611,1 +DA:618,1 +DA:619,2 +DA:620,2 +DA:621,2 +DA:622,2 +DA:625,1 +DA:626,2 +DA:632,1 +DA:653,1 +DA:654,1 +DA:655,0 +DA:656,0 +DA:659,0 +DA:660,0 +DA:663,0 +DA:664,0 +DA:666,0 +DA:667,0 +DA:668,0 +DA:671,0 +DA:672,0 +DA:673,0 +DA:675,0 +DA:678,0 +DA:679,0 +DA:683,0 +DA:684,0 +DA:687,0 +DA:691,1 +DA:692,0 +LF:228 +LH:203 +BRDA:5,1,0,0 +BRDA:5,1,1,1 +BRDA:26,2,0,5 +BRDA:26,2,1,1 +BRDA:63,3,0,5 +BRDA:63,3,1,1 +BRDA:78,4,0,23 +BRDA:78,4,1,18 +BRDA:103,5,0,18 +BRDA:103,5,1,30 +BRDA:103,6,0,48 +BRDA:103,6,1,35 +BRDA:113,7,0,18 +BRDA:113,7,1,30 +BRDA:113,8,0,48 +BRDA:113,8,1,18 +BRDA:114,9,0,18 +BRDA:114,9,1,0 +BRDA:116,10,0,0 +BRDA:116,10,1,18 +BRDA:206,11,0,5 +BRDA:206,11,1,24 +BRDA:213,12,0,28 +BRDA:213,12,1,4 +BRDA:307,13,0,2 +BRDA:307,13,1,4 +BRDA:309,14,0,2 +BRDA:309,14,1,2 +BRDA:317,15,0,2 +BRDA:317,15,1,4 +BRDA:381,16,0,2 +BRDA:381,16,1,2 +BRDA:425,17,0,12 +BRDA:425,17,1,6 +BRDA:428,18,0,4 +BRDA:428,18,1,8 +BRDA:445,19,0,0 +BRDA:445,19,1,6 +BRDA:452,20,0,0 +BRDA:452,20,1,12 +BRDA:452,21,0,12 +BRDA:452,21,1,12 +BRDA:455,22,0,4 +BRDA:455,22,1,8 +BRDA:508,23,0,2 +BRDA:508,23,1,2 +BRDA:539,24,0,2 +BRDA:539,24,1,2 +BRDA:544,25,0,0 +BRDA:544,25,1,2 +BRDA:581,26,0,2 +BRDA:581,26,1,2 +BRDA:585,27,0,2 +BRDA:585,27,1,2 +BRDA:620,28,0,2 +BRDA:620,28,1,2 +BRDA:655,29,0,0 +BRDA:655,29,1,0 +BRDA:659,30,0,0 +BRDA:659,30,1,0 +BRDA:671,31,0,0 +BRDA:671,31,1,0 +BRDA:672,32,0,0 +BRDA:672,32,1,0 +BRDA:678,33,0,0 +BRDA:678,33,1,0 +BRDA:683,34,0,0 +BRDA:683,34,1,0 +BRF:68 +BRH:50 +end_of_record +TN: +SF:/data/upstream/node-http2/lib/http.js +FN:131,IncomingMessage +FN:150,noop +FN:155,OutgoingMessage +FN:167,_write +FN:175,_finish +FN:183,setHeader +FN:191,removeHeader +FN:199,getHeader +FN:203,noop +FN:217,Server +FN:233,(anonymous_11) +FN:260,_start +FN:269,_onStream +FN:279,_fallback +FN:293,listen +FN:299,close +FN:304,createServer +FN:322,IncomingRequest +FN:328,_onHeaders +FN:394,OutgoingResponse +FN:406,writeHead +FN:432,_implicitHeaders +FN:438,write +FN:443,end +FN:448,_onRequestHeaders +FN:452,push +FN:493,Agent +FN:512,request +FN:552,(anonymous_29) +FN:560,negotiated +FN:577,(anonymous_31) +FN:590,get +FN:596,unbundleSocket +FN:609,request +FN:613,get +FN:620,OutgoingRequest +FN:630,_start +FN:656,_fallback +FN:667,setNoDelay +FN:673,setSocketKeepAlive +FN:679,setTimeout +FN:689,IncomingResponse +FN:696,_onHeaders +FN:722,_onPromise +FN:735,IncomingPromise +FN:737,noop +FN:751,cancel +FNF:47 +FNH:30 +FNDA:2,IncomingMessage +FNDA:0,noop +FNDA:2,OutgoingMessage +FNDA:1,_write +FNDA:2,_finish +FNDA:0,setHeader +FNDA:0,removeHeader +FNDA:0,getHeader +FNDA:0,noop +FNDA:1,Server +FNDA:1,(anonymous_11) +FNDA:1,_start +FNDA:1,_onStream +FNDA:0,_fallback +FNDA:1,listen +FNDA:0,close +FNDA:1,createServer +FNDA:1,IncomingRequest +FNDA:1,_onHeaders +FNDA:1,OutgoingResponse +FNDA:1,writeHead +FNDA:2,_implicitHeaders +FNDA:1,write +FNDA:1,end +FNDA:1,_onRequestHeaders +FNDA:0,push +FNDA:1,Agent +FNDA:1,request +FNDA:1,(anonymous_29) +FNDA:1,negotiated +FNDA:1,(anonymous_31) +FNDA:1,get +FNDA:1,unbundleSocket +FNDA:0,request +FNDA:1,get +FNDA:1,OutgoingRequest +FNDA:1,_start +FNDA:0,_fallback +FNDA:0,setNoDelay +FNDA:0,setSocketKeepAlive +FNDA:0,setTimeout +FNDA:1,IncomingResponse +FNDA:1,_onHeaders +FNDA:0,_onPromise +FNDA:0,IncomingPromise +FNDA:0,noop +FNDA:0,cancel +DA:102,1 +DA:103,1 +DA:104,1 +DA:105,1 +DA:106,1 +DA:107,1 +DA:108,1 +DA:109,1 +DA:110,1 +DA:111,1 +DA:112,1 +DA:114,1 +DA:115,1 +DA:116,1 +DA:120,1 +DA:124,1 +DA:131,1 +DA:133,2 +DA:134,2 +DA:135,2 +DA:137,2 +DA:141,2 +DA:142,2 +DA:143,2 +DA:146,2 +DA:148,1 +DA:150,1 +DA:155,1 +DA:157,2 +DA:159,2 +DA:160,2 +DA:161,2 +DA:163,2 +DA:165,1 +DA:167,1 +DA:168,1 +DA:169,1 +DA:171,0 +DA:175,1 +DA:176,2 +DA:177,1 +DA:179,1 +DA:183,1 +DA:184,0 +DA:185,0 +DA:187,0 +DA:191,1 +DA:192,0 +DA:193,0 +DA:195,0 +DA:199,1 +DA:200,0 +DA:203,1 +DA:208,1 +DA:209,1 +DA:210,1 +DA:211,1 +DA:212,1 +DA:217,1 +DA:218,1 +DA:220,1 +DA:221,1 +DA:223,1 +DA:224,1 +DA:227,1 +DA:228,1 +DA:229,1 +DA:230,1 +DA:231,1 +DA:232,1 +DA:233,1 +DA:234,1 +DA:235,1 +DA:237,0 +DA:240,1 +DA:244,0 +DA:245,0 +DA:246,0 +DA:251,0 +DA:252,0 +DA:255,1 +DA:257,1 +DA:260,1 +DA:261,1 +DA:262,1 DA:264,1 DA:266,1 DA:268,1 +DA:269,1 DA:270,1 -DA:271,2 -DA:274,1 -DA:275,2 -DA:297,1 +DA:271,1 +DA:273,1 +DA:276,1 +DA:279,1 +DA:280,0 +DA:283,0 +DA:284,0 +DA:287,0 +DA:293,1 +DA:294,1 +DA:296,1 DA:299,1 -DA:301,1 +DA:300,0 +DA:301,0 +DA:304,1 +DA:305,1 +DA:306,0 +DA:307,0 +DA:310,1 +DA:312,1 DA:313,1 -DA:314,4 -DA:315,2 -DA:316,2 -DA:317,2 -DA:319,4 +DA:316,1 DA:322,1 -DA:323,4 -DA:324,2 -DA:325,2 -DA:327,2 -DA:338,1 -DA:340,1 -DA:342,1 -DA:352,1 -DA:353,2 -DA:354,2 -DA:355,2 -DA:358,1 -DA:359,2 -DA:369,1 -DA:371,1 +DA:323,1 +DA:325,1 +DA:328,1 +DA:332,1 +DA:344,1 +DA:350,1 +DA:351,4 +DA:352,4 +DA:353,0 +DA:354,0 +DA:355,0 +DA:357,4 +DA:358,4 +DA:364,1 DA:373,1 -DA:384,1 -DA:385,2 -DA:386,2 -DA:387,2 -DA:390,1 -DA:391,2 +DA:374,7 +DA:375,7 +DA:376,0 +DA:377,0 +DA:378,0 +DA:383,1 +DA:386,1 +DA:388,1 +DA:394,1 +DA:395,1 +DA:397,1 +DA:398,1 +DA:399,1 +DA:400,1 DA:402,1 DA:404,1 DA:406,1 -DA:426,1 -DA:427,4 -DA:428,4 -DA:429,12 -DA:430,6 -DA:431,6 -DA:432,6 -DA:435,4 -DA:436,0 -DA:439,4 -DA:440,4 -DA:441,6 -DA:442,6 -DA:445,4 +DA:407,1 +DA:408,0 +DA:410,1 +DA:413,1 +DA:415,1 +DA:416,0 +DA:419,1 +DA:420,1 +DA:423,1 +DA:425,1 +DA:427,1 +DA:429,1 +DA:432,1 +DA:433,2 +DA:434,1 +DA:438,1 +DA:439,1 +DA:440,1 +DA:443,1 +DA:444,1 +DA:445,1 DA:448,1 -DA:449,4 -DA:451,4 -DA:452,0 -DA:454,4 -DA:455,6 -DA:456,6 -DA:457,6 -DA:458,6 +DA:449,1 +DA:452,1 +DA:453,0 +DA:454,0 +DA:458,0 DA:459,0 -DA:461,6 -DA:464,4 -DA:468,1 -DA:472,1 -DA:476,1 +DA:462,0 +DA:463,0 +DA:466,0 +DA:473,0 +DA:474,0 +DA:476,0 DA:482,1 +DA:483,1 +DA:484,1 +DA:485,1 +DA:486,1 +DA:487,1 +DA:488,1 +DA:493,1 +DA:494,1 DA:496,1 DA:498,1 +DA:499,1 DA:500,1 +DA:506,1 +DA:510,1 +DA:512,1 +DA:513,1 DA:514,1 -DA:515,2 -DA:516,2 -DA:517,2 -DA:518,2 +DA:517,1 +DA:518,1 +DA:519,1 +DA:520,1 DA:521,1 -DA:522,2 -DA:523,2 +DA:523,1 +DA:524,0 +DA:525,0 +DA:528,1 +DA:530,1 +DA:531,1 +DA:534,1 DA:537,1 -DA:539,1 -DA:541,1 -DA:545,1 -DA:546,2 -DA:547,0 -DA:549,2 +DA:538,0 +DA:539,0 +DA:548,1 +DA:549,1 +DA:550,1 +DA:551,1 DA:552,1 -DA:553,2 +DA:553,1 DA:554,0 -DA:556,2 +DA:556,1 +DA:560,1 +DA:561,1 +DA:562,1 +DA:563,1 +DA:564,1 +DA:565,1 DA:566,1 +DA:567,1 DA:568,1 +DA:569,1 DA:570,1 +DA:572,0 +DA:577,1 +DA:578,1 +DA:579,1 +DA:580,1 +DA:582,0 DA:587,1 -DA:588,2 -DA:589,2 -DA:590,2 -DA:591,2 -DA:594,1 -DA:595,2 -DA:596,2 -DA:610,1 -DA:612,1 +DA:590,1 +DA:591,1 +DA:592,1 +DA:593,1 +DA:596,1 +DA:597,1 +DA:598,1 +DA:599,1 +DA:600,1 +DA:601,1 +DA:602,1 +DA:603,1 +DA:604,1 +DA:607,1 +DA:609,1 +DA:610,0 +DA:613,1 DA:614,1 +DA:620,1 DA:621,1 -DA:622,4 -DA:623,4 -DA:624,4 -DA:627,1 -DA:628,4 +DA:623,1 +DA:624,1 +DA:625,1 +DA:626,1 +DA:628,1 +DA:630,1 +DA:631,1 +DA:632,1 DA:634,1 -DA:655,1 -DA:656,0 +DA:636,1 +DA:637,1 +DA:638,0 +DA:640,1 +DA:641,1 +DA:642,1 +DA:643,1 +DA:644,1 +DA:646,1 +DA:648,1 +DA:650,1 +DA:652,1 +DA:653,1 +DA:656,1 DA:657,0 -DA:658,0 +DA:659,0 +DA:660,0 DA:661,0 -DA:662,0 -DA:665,0 -DA:666,0 +DA:663,0 +DA:667,1 +DA:668,0 DA:669,0 DA:673,1 DA:674,0 -LF:215 -LH:194 -BRDA:25,1,0,3 -BRDA:25,1,1,1 -BRDA:36,2,0,0 -BRDA:36,2,1,14 -BRDA:64,3,0,3 -BRDA:64,3,1,1 -BRDA:79,4,0,17 -BRDA:79,4,1,14 -BRDA:104,5,0,14 -BRDA:104,5,1,25 -BRDA:104,6,0,39 -BRDA:104,6,1,26 -BRDA:114,7,0,14 -BRDA:114,7,1,25 -BRDA:114,8,0,39 -BRDA:114,8,1,14 -BRDA:115,9,0,14 -BRDA:115,9,1,0 -BRDA:197,10,0,0 -BRDA:197,10,1,24 -BRDA:208,11,0,0 -BRDA:208,11,1,28 -BRDA:211,12,0,4 -BRDA:211,12,1,24 -BRDA:217,13,0,0 -BRDA:217,13,1,24 -BRDA:220,14,0,24 -BRDA:220,14,1,4 -BRDA:314,15,0,2 -BRDA:314,15,1,2 -BRDA:323,16,0,2 -BRDA:323,16,1,2 -BRDA:429,17,0,6 -BRDA:429,17,1,6 -BRDA:432,18,0,2 -BRDA:432,18,1,4 -BRDA:435,19,0,0 -BRDA:435,19,1,4 -BRDA:451,20,0,0 -BRDA:451,20,1,4 -BRDA:458,21,0,0 -BRDA:458,21,1,6 -BRDA:458,22,0,6 -BRDA:458,22,1,6 -BRDA:461,23,0,2 -BRDA:461,23,1,4 -BRDA:546,24,0,0 -BRDA:546,24,1,2 -BRDA:546,25,0,2 -BRDA:546,25,1,2 -BRDA:553,26,0,0 -BRDA:553,26,1,2 -BRDA:661,27,0,0 -BRDA:661,27,1,0 -BRDA:665,28,0,0 -BRDA:665,28,1,0 -BRF:56 -BRH:42 +DA:675,0 +DA:679,1 +DA:680,0 +DA:681,0 +DA:689,1 +DA:690,1 +DA:691,1 +DA:693,1 +DA:696,1 +DA:700,1 +DA:708,1 +DA:709,1 +DA:710,0 +DA:711,0 +DA:712,0 +DA:714,1 +DA:715,1 +DA:718,1 +DA:719,1 +DA:722,1 +DA:723,0 +DA:725,0 +DA:726,0 +DA:728,0 +DA:735,1 +DA:736,0 +DA:737,0 +DA:738,0 +DA:740,0 +DA:742,0 +DA:744,0 +DA:746,0 +DA:747,0 +DA:749,1 +DA:751,1 +DA:752,0 +LF:327 +LH:251 +BRDA:168,1,0,1 +BRDA:168,1,1,0 +BRDA:176,2,0,1 +BRDA:176,2,1,1 +BRDA:184,3,0,0 +BRDA:184,3,1,0 +BRDA:192,4,0,0 +BRDA:192,4,1,0 +BRDA:218,5,0,1 +BRDA:218,5,1,0 +BRDA:220,6,0,1 +BRDA:220,6,1,1 +BRDA:227,7,0,1 +BRDA:227,7,1,0 +BRDA:227,8,0,1 +BRDA:227,8,1,1 +BRDA:227,8,2,0 +BRDA:234,9,0,1 +BRDA:234,9,1,0 +BRDA:244,10,0,0 +BRDA:244,10,1,0 +BRDA:294,11,0,0 +BRDA:294,11,1,1 +BRDA:305,12,0,0 +BRDA:305,12,1,1 +BRDA:312,13,0,1 +BRDA:312,13,1,0 +BRDA:352,14,0,0 +BRDA:352,14,1,4 +BRDA:352,15,0,4 +BRDA:352,15,1,4 +BRDA:375,16,0,0 +BRDA:375,16,1,7 +BRDA:407,17,0,0 +BRDA:407,17,1,1 +BRDA:413,18,0,1 +BRDA:413,18,1,1 +BRDA:419,19,0,1 +BRDA:419,19,1,0 +BRDA:419,20,0,1 +BRDA:419,20,1,1 +BRDA:433,21,0,1 +BRDA:433,21,1,1 +BRDA:453,22,0,0 +BRDA:453,22,1,0 +BRDA:458,23,0,0 +BRDA:458,23,1,0 +BRDA:462,24,0,0 +BRDA:462,24,1,0 +BRDA:467,25,0,0 +BRDA:467,25,1,0 +BRDA:468,26,0,0 +BRDA:468,26,1,0 +BRDA:469,27,0,0 +BRDA:469,27,1,0 +BRDA:469,27,2,0 +BRDA:496,28,0,1 +BRDA:496,28,1,1 +BRDA:499,29,0,1 +BRDA:499,29,1,1 +BRDA:513,30,0,1 +BRDA:513,30,1,0 +BRDA:517,31,0,1 +BRDA:517,31,1,1 +BRDA:518,32,0,1 +BRDA:518,32,1,0 +BRDA:519,33,0,1 +BRDA:519,33,1,0 +BRDA:519,33,2,0 +BRDA:520,34,0,1 +BRDA:520,34,1,0 +BRDA:521,35,0,1 +BRDA:521,35,1,0 +BRDA:523,36,0,0 +BRDA:523,36,1,1 +BRDA:530,37,0,1 +BRDA:530,37,1,0 +BRDA:537,38,0,0 +BRDA:537,38,1,1 +BRDA:553,39,0,0 +BRDA:553,39,1,1 +BRDA:561,40,0,1 +BRDA:561,40,1,0 +BRDA:562,41,0,1 +BRDA:562,41,1,0 +BRDA:579,42,0,1 +BRDA:579,42,1,0 +BRDA:631,43,0,1 +BRDA:631,43,1,0 +BRDA:631,44,0,1 +BRDA:631,44,1,0 +BRDA:647,45,0,1 +BRDA:647,45,1,1 +BRDA:668,46,0,0 +BRDA:668,46,1,0 +BRDA:674,47,0,0 +BRDA:674,47,1,0 +BRDA:680,48,0,0 +BRDA:680,48,1,0 +BRDA:709,49,0,0 +BRDA:709,49,1,1 +BRDA:709,50,0,1 +BRDA:709,50,1,1 +BRDA:725,51,0,0 +BRDA:725,51,1,0 +BRF:105 +BRH:50 end_of_record From b68b94ded599f5b5cd9ceacacac4bca929904abb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Moln=C3=A1r?= Date: Mon, 19 Aug 2013 20:43:49 +0200 Subject: [PATCH 08/20] Adding missing coverage report files --- coverage/lcov-report/lib/flow.js.html | 1319 +++++++++++++ coverage/lcov-report/lib/http.js.html | 2564 +++++++++++++++++++++++++ 2 files changed, 3883 insertions(+) create mode 100644 coverage/lcov-report/lib/flow.js.html create mode 100644 coverage/lcov-report/lib/http.js.html diff --git a/coverage/lcov-report/lib/flow.js.html b/coverage/lcov-report/lib/flow.js.html new file mode 100644 index 00000000..232a32df --- /dev/null +++ b/coverage/lcov-report/lib/flow.js.html @@ -0,0 +1,1319 @@ + + + + Code coverage report for lib/flow.js + + + + + + + +
+

Code coverage report for lib/flow.js

+

+ + Statements: 80.37% (86 / 107)      + + + Branches: 80.65% (50 / 62)      + + + Functions: 76.47% (13 / 17)      + + + Lines: 80.37% (86 / 107)      + +

+
All files » lib/ » flow.js
+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 +310 +311 +312 +313 +314 +315 +316 +317 +318 +319 +320 +321 +322 +323 +324 +325 +326 +327 +328 +329 +330 +331 +332 +333 +334 +335 +336 +337 +338 +3391 +1 +  +  +  +  +  +  +  +  +1 +  +1 +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1 +  +  +1 +42 +  +42 +42 +42 +  +42 +42 +42 +  +1 +  +  +  +  +  +1 +  +  +  +  +  +  +  +1 +77 +  +77 +6 +  +  +77 +8 +8 +8 +7 +  +8 +  +  +  +  +69 +  +  +75 +  +5 +  +  +  +  +  +1 +7 +7 +3 +  +  +  +  +3 +  +  +  +  +  +1 +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1 +  +  +1 +  +  +  +  +  +  +  +1 +341 +341 +  +  +  +  +341 +  +  +  +  +  +1 +27 +  +27 +27 +  +  +  +27 +  +  +  +  +  +  +  +  +  +1 +83 +83 +83 +  +83 +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +83 +83 +83 +83 +12 +  +12 +12 +  +83 +  +  +83 +  +  +83 +  +  +  +83 +  +  +  +1 +57 +  +  +57 +57 +57 +  +  +57 +57 +  +  +  +  +  +  +  +  +1 +3 +3 +  +  +  +  +  +  +  +  +  +  +  +  +  +1 +  +1 +29 +2 +2 +  +27 +27 +27 +  +  +  +27 +  +  +  +  +  +  +  +  +  +  +  +  +1 +5 +  +  +  +  +  +  +1 +22 +22 +  +  +  +1 +  +  + 
var assert = process.env.HTTP2_ASSERT ? require('assert') : function noop() {};
+var logging = require('./logging');
+ 
+// The Flow class
+// ==============
+ 
+// Flow is a [Duplex stream][1] subclass which implements HTTP/2 flow control. It is designed to be
+// subclassed by [Connection](connection.html) and the `upstream` component of [Stream](stream.html).
+// [1]: http://nodejs.org/api/stream.html#stream_class_stream_duplex
+ 
+var Duplex  = require('stream').Duplex;
+ 
+exports.Flow = Flow;
+ 
+// Public API
+// ----------
+ 
+// * **Event: 'error' (type)**: signals an error
+//
+// * **setInitialWindow(size)**: the initial flow control window size can be changed *any time*
+//   ([as described in the standard][1]) using this method
+//
+// * **disableRemoteFlowControl()**: sends a WINDOW_UPDATE signaling that we don't want flow control
+//
+// * **disableLocalFlowControl()**: disables flow control for outgoing frames
+//
+// [1]: http://tools.ietf.org/html/draft-ietf-httpbis-http2-04#section-6.9.2
+ 
+// API for child classes
+// ---------------------
+ 
+// * **new Flow([flowControlId])**: creating a new flow that will listen for WINDOW_UPDATES frames
+//   with the given `flowControlId` (or every update frame if not given)
+//
+// * **Event: 'receiving' (frame)**: there's an incoming frame
+//
+// * **Event: 'sending' (frame)**: a frame was added to the output queue
+//
+// * **_send()**: called when more frames should be pushed. The child class is expected to override
+//   this (instead of the `_read` method of the Duplex class).
+//
+// * **_receive(frame, readyCallback)**: called when there's an incoming frame. The child class is
+//   expected to override this (instead of the `_write` method of the Duplex class).
+//
+// * **push(frame): bool**: schedules `frame` for sending.
+//
+//   Returns `true` if it needs more frames in the output queue, `false` if the output queue is
+//   full, and `null` if did not push the frame into the output queue (instead, it pushed it into
+//   the flow control queue).
+//
+// * **_push(frame, remainderCallback): bool**: like push, but never puts the frame into the
+//   flow control queue.
+//
+//   Instead, it pushes directly into the output queue if possible (according to the flow control
+//   window) and calls `remainderCallback` with the remaining non-pushable part of the frame. It is
+//   capable of dividing DATA frames into multiple chunks.
+//
+//   Use this instead of `push` if you always want to have empty flow control queue (but never mix
+//   the two).
+//
+// * **getLastQueuedFrame(): frame**: returns the last frame in output buffers
+//
+// * **_log**: the Flow class uses the `_log` object of the parent
+ 
+// Constructor
+// -----------
+ 
+// When a HTTP/2.0 connection is first established, new streams are created with an initial flow
+// control window size of 65535 bytes.
+var INITIAL_WINDOW_SIZE = 65535;
+ 
+// `flowControlId` is needed if only specific WINDOW_UPDATEs should be watched.
+function Flow(flowControlId) {
+  Duplex.call(this, { objectMode: true });
+ 
+  this._window = this._initialWindow = INITIAL_WINDOW_SIZE;
+  this._flowControlId = flowControlId;
+  this._queue = [];
+ 
+  this._ended = false;
+  this._received = 0;
+  this._remoteFlowControlDisabled = false;
+}
+Flow.prototype = Object.create(Duplex.prototype, { constructor: { value: Flow } });
+ 
+// Incoming frames
+// ---------------
+ 
+// `_receive` is called when there's an incoming frame.
+Flow.prototype._receive = function _receive(frame, callback) {
+  throw new Error('The _receive(frame, callback) method has to be overridden by the child class!');
+};
+ 
+// `_receive` is called by `_write` which in turn is [called by Duplex][1] when someone `write()`s
+// to the flow. It emits the 'receiving' event and notifies the window size tracking code if the
+// incoming frame is a WINDOW_UPDATE.
+// [1]: http://nodejs.org/api/stream.html#stream_writable_write_chunk_encoding_callback_1
+Flow.prototype._write = function _write(frame, encoding, callback) {
+  this.emit('receiving', frame);
+ 
+  if (frame.flags.END_STREAM) {
+    this._ended = true;
+  }
+ 
+  if ((frame.type === 'DATA') && (frame.data.length > 0) && !this._remoteFlowControlDisabled) {
+    this._receive(frame, function() {
+      this._received += frame.data.length;
+      if (!this._restoreWindowTimer) {
+        this._restoreWindowTimer = setImmediate(this._restoreWindow.bind(this));
+      }
+      callback();
+    }.bind(this));
+  }
+ 
+  else {
+    this._receive(frame, callback);
+  }
+ 
+  if ((frame.type === 'WINDOW_UPDATE') &&
+      ((this._flowControlId === undefined) || (frame.stream === this._flowControlId))) {
+    this._updateWindow(frame);
+  }
+};
+ 
+// `_restoreWindow` basically acknowledges the DATA frames received since it's last call. It sends
+// a WINDOW_UPDATE that restores the flow control window of the remote end.
+Flow.prototype._restoreWindow = function _restoreWindow() {
+  delete this._restoreWindowTimer;
+  if (!this._ended && !this._remoteFlowControlDisabled && (this._received > 0)) {
+    this.push({
+      type: 'WINDOW_UPDATE',
+      stream: this._flowControlId,
+      window_size: this._received
+    });
+    this._received = 0;
+  }
+};
+ 
+// Remote flow control is currently disabled by default, but in the future, it may be turned off
+// using the `disableRemoteFlowControl` method.
+Flow.prototype.disableRemoteFlowControl = function disableRemoteFlowControl() {
+  this._remoteFlowControlDisabled = true;
+  this.push({
+    type: 'WINDOW_UPDATE',
+    stream: this._flowControlId,
+    flags: {
+      END_FLOW_CONTROL: true
+    }
+  });
+};
+ 
+// Outgoing frames - sending procedure
+// -----------------------------------
+ 
+//                                         flow
+//                +----------------------------------------------------+
+//                |                                                    |
+//                +--------+  _onWindow   +---------+                  |
+//        read()  | output |  Increase()  | flow    |  _send()         |
+//     <----------|        |<-------------| control |<-------------    |
+//                | buffer |              | buffer  |                  |
+//                +--------+              +---------+                  |
+//                | input  |                                           |
+//     ---------->|        |-------------------------------------->    |
+//       write()  | buffer |  _write()                 _receive()      |
+//                +--------+                                           |
+//                |                                                    |
+//                +----------------------------------------------------+
+ 
+var MAX_HTTP_PAYLOAD_SIZE = 16383; // TODO: this is repeated in multiple files
+ 
+// `_send` is called when more frames should be pushed to the output buffer.
+Flow.prototype._send = function _send() {
+  throw new Error('The _send() method has to be overridden by the child class!');
+};
+ 
+// `_send` is called by `_read` which is in turn [called by Duplex][1] when it wants to have more
+// items in the output queue. It first check the flow control `_queue` and only calls `_send` if
+// there are no items in it (which means that we are not waiting for window update).
+// [1]: http://nodejs.org/api/stream.html#stream_writable_write_chunk_encoding_callback_1
+Flow.prototype._read = function _read() {
+  Eif (this._queue.length === 0) {
+    this._send();
+  } else {
+    assert(this._window === 0);
+    assert(this._queue[0].type === 'DATA');
+  }
+  this._readableState.reading = false;
+};
+ 
+// `_onWindowIncrease` is called when window size increases which means that the peer is ready to
+// receive more data. Flushes frames stored in the flow control queue and then triggers a further
+// `_read` call if the output buffers are still low on frames.
+Flow.prototype._onWindowIncrease = function _onWindowIncrease() {
+  var moreNeeded = true, frame;
+ 
+  var unshiftRemainder = this._queue.unshift.bind(this._queue);
+  while (moreNeeded && (frame = this._queue.shift())) {
+    moreNeeded = this._push(frame, unshiftRemainder);
+  }
+ 
+  this.read(0); // See http://nodejs.org/api/stream.html#stream_stream_read_0
+};
+ 
+// `_push(frame)` is the low-level version of `push`. Use this instead of `push` if you always want
+// to have empty flow control queue (but never mix the two). It pushes `frame` into the output queue
+// and decreases the flow control window size. It is capable of splitting DATA frames into smaller
+// parts, if the window size is not enough to push the whole frame. It calls `remainderCallback`
+// synchronously before returning with the frame it was not able to push to the output queue. The
+// remainder may be the whole frame or the remaining part of a DATA frame. The return value is
+// similar to `push` except that it returns `null` if it did not push anything to the output queue.
+Flow.prototype._push = function _push(frame, remainderCallback) {
+  do {
+    var forwardable = undefined, remainder = undefined;
+    Eif ((frame === null) || (frame.type !== 'DATA') ||
+        ((frame.data.length <= this._window) && (frame.data.length <= MAX_HTTP_PAYLOAD_SIZE))) {
+      forwardable = frame;
+    }
+ 
+    else if (this._window <= 0) {
+      remainder = frame;
+    }
+ 
+    else {
+      var chunkSize = Math.min(this._window, MAX_HTTP_PAYLOAD_SIZE);
+      forwardable = {
+        stream: frame.stream,
+        type: 'DATA',
+        data: frame.data.slice(0, chunkSize)
+      };
+ 
+      this._log.trace({ frame: frame, size: frame.data.length, forwardable: chunkSize },
+                      'Splitting out forwardable part of a DATA frame.');
+      frame.data = frame.data.slice(chunkSize);
+      remainder = frame;
+    }
+ 
+    var moreNeeded = null;
+    Eif (forwardable !== undefined) {
+      this._log.trace({ frame: forwardable }, 'Pushing frame into the output queue');
+      if (forwardable && (forwardable.type === 'DATA') && (this._window !== Infinity)) {
+        this._log.trace({ window: this._window, by: forwardable.data.length },
+                         'Decreasing flow control window size.');
+        this._window -= forwardable.data.length;
+        assert(this._window >= 0);
+      }
+      moreNeeded = Duplex.prototype.push.call(this, forwardable);
+    }
+ 
+    frame = remainder;
+  } while (remainder && moreNeeded);
+ 
+  Iif (remainder !== undefined) {
+    remainderCallback(remainder);
+  }
+ 
+  return moreNeeded;
+};
+ 
+// Push `frame` into the flow control queue, or if it's empty, then directly into the output queue
+Flow.prototype.push = function push(frame) {
+  Iif (frame === null) {
+    this._log.debug('Enqueueing outgoing End Of Stream');
+  } else {
+    frame.flags = frame.flags || {};
+    this._log.debug({ frame: frame }, 'Enqueueing outgoing frame');
+    this.emit('sending', frame);
+  }
+ 
+  Eif (this._queue.length === 0) {
+    return this._push(frame, this._queue.push.bind(this._queue));
+  } else {
+    this._queue.push(frame);
+    return null;
+  }
+};
+ 
+// `getLastQueuedFrame` returns the last frame in output buffers. This is primarily used by the
+// [Stream](stream.html) class to mark the last frame with END_STREAM flag.
+Flow.prototype.getLastQueuedFrame = function getLastQueuedFrame() {
+  var readableQueue = this._readableState.buffer;
+  return this._queue[this._queue.length - 1] || readableQueue[readableQueue.length - 1];
+};
+ 
+// Outgoing frames - managing the window size
+// ------------------------------------------
+ 
+// Flow control window size is manipulated using the `_increaseWindow` method.
+//
+// * Invoking it with `Infinite` means turning off flow control. Flow control cannot be enabled
+//   again once disabled. Any attempt to re-enable flow control MUST be rejected with a
+//   FLOW_CONTROL_ERROR error code.
+// * A sender MUST NOT allow a flow control window to exceed 2^31 - 1 bytes. The action taken
+//   depends on it being a stream or the connection itself.
+ 
+var WINDOW_SIZE_LIMIT = Math.pow(2, 31) - 1;
+ 
+Flow.prototype._increaseWindow = function _increaseWindow(size) {
+  if ((this._window === Infinity) && (size !== Infinity)) {
+    this._log.error('Trying to increase flow control window after flow control was turned off.');
+    this.emit('error', 'FLOW_CONTROL_ERROR');
+  } else {
+    this._log.trace({ window: this._window, by: size }, 'Increasing flow control window size.');
+    this._window += size;
+    Iif ((this._window !== Infinity) && (this._window > WINDOW_SIZE_LIMIT)) {
+      this._log.error('Flow control window grew too large.');
+      this.emit('error', 'FLOW_CONTROL_ERROR');
+    } else {
+      this._onWindowIncrease();
+    }
+  }
+};
+ 
+// The `_updateWindow` method gets called every time there's an incoming WINDOW_UPDATE frame. It
+// modifies the flow control window:
+//
+// * Flow control can be disabled for an individual stream by sending a WINDOW_UPDATE with the
+//   END_FLOW_CONTROL flag set. The payload of a WINDOW_UPDATE frame that has the END_FLOW_CONTROL
+//   flag set is ignored.
+// * A sender that receives a WINDOW_UPDATE frame updates the corresponding window by the amount
+//   specified in the frame.
+Flow.prototype._updateWindow = function _updateWindow(frame) {
+  this._increaseWindow(frame.flags.END_FLOW_CONTROL ? Infinity : frame.window_size);
+};
+ 
+// A SETTINGS frame can alter the initial flow control window size for all current streams. When the
+// value of SETTINGS_INITIAL_WINDOW_SIZE changes, a receiver MUST adjust the size of all stream by
+// calling the `setInitialWindow` method. The window size has to be modified by the difference
+// between the new value and the old value.
+Flow.prototype.setInitialWindow = function setInitialWindow(initialWindow) {
+  this._increaseWindow(initialWindow - this._initialWindow);
+  this._initialWindow = initialWindow;
+};
+ 
+// Flow control for outgoing frames can be disabled by the peer with various methods.
+Flow.prototype.disableLocalFlowControl = function disableLocalFlowControl() {
+  this._increaseWindow(Infinity);
+};
+ 
+ +
+ + + + + + + + diff --git a/coverage/lcov-report/lib/http.js.html b/coverage/lcov-report/lib/http.js.html new file mode 100644 index 00000000..779dee6f --- /dev/null +++ b/coverage/lcov-report/lib/http.js.html @@ -0,0 +1,2564 @@ + + + + Code coverage report for lib/http.js + + + + + + + +
+

Code coverage report for lib/http.js

+

+ + Statements: 76.76% (251 / 327)      + + + Branches: 47.62% (50 / 105)      + + + Functions: 63.83% (30 / 47)      + + + Lines: 76.76% (251 / 327)      + +

+
All files » lib/ » http.js
+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 +310 +311 +312 +313 +314 +315 +316 +317 +318 +319 +320 +321 +322 +323 +324 +325 +326 +327 +328 +329 +330 +331 +332 +333 +334 +335 +336 +337 +338 +339 +340 +341 +342 +343 +344 +345 +346 +347 +348 +349 +350 +351 +352 +353 +354 +355 +356 +357 +358 +359 +360 +361 +362 +363 +364 +365 +366 +367 +368 +369 +370 +371 +372 +373 +374 +375 +376 +377 +378 +379 +380 +381 +382 +383 +384 +385 +386 +387 +388 +389 +390 +391 +392 +393 +394 +395 +396 +397 +398 +399 +400 +401 +402 +403 +404 +405 +406 +407 +408 +409 +410 +411 +412 +413 +414 +415 +416 +417 +418 +419 +420 +421 +422 +423 +424 +425 +426 +427 +428 +429 +430 +431 +432 +433 +434 +435 +436 +437 +438 +439 +440 +441 +442 +443 +444 +445 +446 +447 +448 +449 +450 +451 +452 +453 +454 +455 +456 +457 +458 +459 +460 +461 +462 +463 +464 +465 +466 +467 +468 +469 +470 +471 +472 +473 +474 +475 +476 +477 +478 +479 +480 +481 +482 +483 +484 +485 +486 +487 +488 +489 +490 +491 +492 +493 +494 +495 +496 +497 +498 +499 +500 +501 +502 +503 +504 +505 +506 +507 +508 +509 +510 +511 +512 +513 +514 +515 +516 +517 +518 +519 +520 +521 +522 +523 +524 +525 +526 +527 +528 +529 +530 +531 +532 +533 +534 +535 +536 +537 +538 +539 +540 +541 +542 +543 +544 +545 +546 +547 +548 +549 +550 +551 +552 +553 +554 +555 +556 +557 +558 +559 +560 +561 +562 +563 +564 +565 +566 +567 +568 +569 +570 +571 +572 +573 +574 +575 +576 +577 +578 +579 +580 +581 +582 +583 +584 +585 +586 +587 +588 +589 +590 +591 +592 +593 +594 +595 +596 +597 +598 +599 +600 +601 +602 +603 +604 +605 +606 +607 +608 +609 +610 +611 +612 +613 +614 +615 +616 +617 +618 +619 +620 +621 +622 +623 +624 +625 +626 +627 +628 +629 +630 +631 +632 +633 +634 +635 +636 +637 +638 +639 +640 +641 +642 +643 +644 +645 +646 +647 +648 +649 +650 +651 +652 +653 +654 +655 +656 +657 +658 +659 +660 +661 +662 +663 +664 +665 +666 +667 +668 +669 +670 +671 +672 +673 +674 +675 +676 +677 +678 +679 +680 +681 +682 +683 +684 +685 +686 +687 +688 +689 +690 +691 +692 +693 +694 +695 +696 +697 +698 +699 +700 +701 +702 +703 +704 +705 +706 +707 +708 +709 +710 +711 +712 +713 +714 +715 +716 +717 +718 +719 +720 +721 +722 +723 +724 +725 +726 +727 +728 +729 +730 +731 +732 +733 +734 +735 +736 +737 +738 +739 +740 +741 +742 +743 +744 +745 +746 +747 +748 +749 +750 +751 +752 +753 +754  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +  +1 +1 +1 +  +  +  +1 +  +  +  +1 +  +  +  +  +  +  +1 +  +2 +2 +2 +  +2 +  +  +  +2 +2 +2 +  +  +2 +  +1 +  +1 +  +  +  +  +1 +  +2 +  +2 +2 +2 +  +2 +  +1 +  +1 +1 +1 +  +  +  +  +  +1 +2 +1 +  +1 +  +  +  +1 +  +  +  +  +  +  +  +1 +  +  +  +  +  +  +  +1 +  +  +  +1 +  +  +  +  +1 +1 +1 +1 +1 +  +  +  +  +1 +1 +  +1 +1 +  +1 +1 +  +  +1 +1 +1 +1 +1 +1 +1 +1 +1 +  +  +  +  +1 +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1 +  +1 +  +  +1 +1 +1 +  +1 +  +1 +  +1 +1 +1 +1 +  +1 +  +  +1 +  +  +1 +  +  +  +  +  +  +  +  +  +  +  +  +  +1 +1 +  +1 +  +  +1 +  +  +  +  +1 +1 +  +  +  +  +1 +  +1 +1 +  +  +1 +  +  +  +  +  +1 +1 +  +1 +  +  +1 +  +  +  +1 +  +  +  +  +  +  +  +  +  +  +  +1 +  +  +  +  +  +1 +4 +4 +  +  +  +  +4 +4 +  +  +  +  +  +1 +  +  +  +  +  +  +  +  +1 +7 +7 +  +  +  +  +  +  +  +1 +  +  +1 +  +1 +  +  +  +  +  +1 +1 +  +1 +1 +1 +1 +  +1 +  +1 +  +1 +1 +  +  +1 +  +  +1 +  +1 +  +  +  +1 +1 +  +  +1 +  +1 +  +1 +  +1 +  +  +1 +2 +1 +  +  +  +1 +1 +1 +  +  +1 +1 +1 +  +  +1 +1 +  +  +1 +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1 +1 +1 +1 +1 +1 +1 +  +  +  +  +1 +1 +  +1 +  +1 +1 +1 +  +  +  +  +  +1 +  +  +  +1 +  +1 +1 +1 +  +  +1 +1 +1 +1 +1 +  +1 +  +  +  +  +1 +  +1 +1 +  +  +1 +  +  +1 +  +  +  +  +  +  +  +  +  +  +1 +1 +1 +1 +1 +1 +  +  +1 +  +  +  +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +  +  +  +  +  +  +1 +1 +1 +1 +  +  +  +  +  +  +1 +  +  +1 +1 +1 +1 +  +  +1 +1 +1 +1 +1 +1 +1 +1 +1 +  +  +1 +  +1 +  +  +  +1 +1 +  +  +  +  +  +1 +1 +  +1 +1 +1 +1 +  +1 +  +1 +1 +1 +  +1 +  +1 +1 +  +  +1 +1 +1 +1 +1 +  +1 +  +1 +  +1 +  +1 +1 +  +  +1 +  +  +  +  +  +  +  +  +  +  +1 +  +  +  +  +  +1 +  +  +  +  +  +1 +  +  +  +  +  +  +  +  +  +1 +1 +1 +  +1 +  +  +1 +  +  +  +1 +  +  +  +  +  +  +  +1 +1 +  +  +  +  +1 +1 +  +  +1 +1 +  +  +1 +  +  +  +  +  +  +  +  +  +  +  +  +1 +  +  +  +  +  +  +  +  +  +  +  +  +  +1 +  +1 +  +  + 
// Public API
+// ==========
+ 
+// The main governing power behind the http2 API design is that it should look very similar to the
+// existing node.js [HTTPS API][1] (which is, in turn, almost identical to the [HTTP API][2]). The
+// additional features of HTTP/2 are exposed as extensions to this API. Furthermore, node-http2
+// should fall back to using HTTP/1.1 if needed. Compatibility with undocumented or deprecated
+// elements of the node.js HTTP/HTTPS API is a non-goal.
+//
+// Additional and modified API elements:
+//
+// - **Class: http2.Server**
+//   - **Event: 'connection' (socket, [endpoint])**: there's a second argument if the negotiation of
+//     HTTP/2 was successful: the reference to the [Endpoint](endpoint.html) object tied to the
+//     socket.
+//
+// - **Class: http2.ServerResponse**
+//   - **response.push(options)**: initiates a server push. `options` describes the 'imaginary'
+//     request to which the push stream is a response; the possible options are identical to the
+//     ones accepted by `http2.request`. Returns a ServerResponse object that can be used to send
+//     the response headers and content.
+//   - **response.writeHead(statusCode, [reasonPhrase], [headers])**: reasonPhrase will always be
+//     ignored since [it's not supported in HTTP/2][3]
+//   - **response.setTimeout(timeout, [callback])**: will be ignored for HTTP/2 requests
+//
+// - **Class: http2.ClientRequest**
+//   - **Event: 'socket' (socket)**: it's not emitted in case of an HTTP/2 incoming message.
+//   - **Event: 'stream' (stream)**: in case of an HTTP/2 incoming message, a reference to the
+//     associated [HTTP/2 Stream](stream.html) object is emitted.
+//   - **request.setTimeout(timeout, [callback])**: will be ignored for HTTP/2 requests
+//   - **request.setNoDelay([noDelay])**: will be ignored for HTTP/2 requests
+//   - **request.setSocketKeepAlive([enable], [initialDelay])**: will be ignored for HTTP/2 requests
+//
+// - **Class: http2.IncomingMessage**
+//   - has two subclasses for easier interface description: **IncomingRequest** and
+//     **IncomingResponse**
+//   - **message.socket**: it's not present in case of an HTTP/2 incoming message.
+//   - **message.stream**: in case of an HTTP/2 incoming message, it's a reference to the associated
+//     [HTTP/2 Stream](stream.html) object.
+//   - **message.setTimeout(timeout, [callback])**: will be ignored for HTTP/2 requests
+//
+// - **Class: http2.IncomingRequest (IncomingMessage)**
+//   - **message.url**: in case of an HTTP/2 incoming request, the `url` field always contains the
+//     path, and never a full url (it contains the path in most cases in the HTTPS api as well).
+//   - **message.scheme**: additional field. Mandatory HTTP/2 request metadata.
+//   - **message.host**: additional field. Mandatory HTTP/2 request metadata. Note that this
+//     replaces the old Host header field, but node-http2 will add Host to the `message.headers` for
+//     backwards compatibility.
+//
+// - **Class: http2.IncomingResponse (IncomingMessage)**
+//   - **Event: 'push' (promise)**: signals the intention of a server push. `promise` is an
+//     IncomingPromise. If there's no listener for this event, the server push is cancelled.
+//
+// - **Class: http2.IncomingPromise (IncomingRequest)**
+//   - contains the metadata of the 'imaginary' request to which the server push is an answer.
+//   - **Event: 'response' (response)**: signals the arrival of the actual push stream. `response`
+//     is an IncomingResponse.
+//   - **promise.cancel()**: cancels the promised server push.
+//
+// API elements not yet implemented:
+//
+// - **Class: http2.Server**
+//   - **Event: 'checkContinue'**
+//   - **Event: 'connect'**
+//   - **Event: 'upgrade'**
+//   - **Event: 'clientError'**
+//   - **server.maxHeadersCount**
+//   - **server.setTimeout(msecs, callback)**
+//   - **server.timeout**
+//
+// - **Class: http2.ServerResponse**
+//   - **Event: 'close'**
+//   - **response.writeContinue()**
+//   - **response.addTrailers(headers)**
+//
+// - **http.request(options, callback)**: not implemented options:
+//   - **auth**
+//   - **agent**
+//
+// - **Class: http2.Agent**
+//   - **agent.maxSockets**
+//   - **agent.sockets**
+//   - **agent.requests**
+//
+// - **Class: http2.ClientRequest**
+//   - **Event: 'connect'**
+//   - **Event: 'upgrade'**
+//   - **Event: 'continue'**
+//   - **request.abort()**
+//
+// - **Class: http2.IncomingMessage**
+//   - **Event: 'close'**
+//   - **message.trailers**
+//
+// [1]: http://nodejs.org/api/https.html
+// [2]: http://nodejs.org/api/http.html
+// [3]: http://tools.ietf.org/html/draft-ietf-httpbis-http2-04#section-8.1.3
+ 
+// Common server and client side code
+// ==================================
+ 
+var net = require('net');
+var url = require('url');
+var util = require('util');
+var EventEmitter = require('events').EventEmitter;
+var PassThrough = require('stream').PassThrough;
+var Readable = require('stream').Readable;
+var Writable = require('stream').Writable;
+var Endpoint = require('./endpoint').Endpoint;
+var logging = require('./logging');
+var http = require('http');
+var https = require('https');
+ 
+exports.STATUS_CODES = http.STATUS_CODES;
+exports.IncomingMessage = IncomingMessage;
+exports.OutgoingMessage = OutgoingMessage;
+ 
+// The implemented version of the HTTP/2 specification is [draft 04][1].
+// [1]: http://tools.ietf.org/html/draft-ietf-httpbis-http2-04
+var implementedVersion = 'HTTP-draft-04/2.0';
+ 
+// This should hold sane defaults. These can be overridden by the user using the options
+// configuration object in client and server APIs.
+var default_settings = {
+  SETTINGS_MAX_CONCURRENT_STREAMS: 100
+};
+ 
+// IncomingMessage class
+// ---------------------
+ 
+function IncomingMessage(stream, log) {
+  // * This is basically a read-only wrapper for the [Stream](stream.html) class.
+  PassThrough.call(this);
+  stream.pipe(this);
+  this.stream = stream;
+ 
+  this._log = log;
+ 
+  // * HTTP/2.0 does not define a way to carry the version identifier that is included in the
+  //   HTTP/1.1 request/status line. Version is always 2.0.
+  this.httpVersion = '2.0';
+  this.httpVersionMajor = 2;
+  this.httpVersionMinor = 0;
+ 
+  // * Other metadata is filled in when the headers arrive.
+  stream.once('headers', this._onHeaders.bind(this));
+}
+IncomingMessage.prototype = Object.create(PassThrough.prototype, { constructor: { value: IncomingMessage } });
+ 
+IncomingMessage.prototype.setTimeout = function noop() {};
+ 
+// OutgoingMessage class
+// ---------------------
+ 
+function OutgoingMessage(log) {
+  // * This is basically a read-only wrapper for the [Stream](stream.html) class.
+  Writable.call(this);
+ 
+  this._log = log;
+  this._headers = {};
+  this.headersSent = false;
+ 
+  this.on('finish', this._finish.bind(this));
+}
+OutgoingMessage.prototype = Object.create(Writable.prototype, { constructor: { value: OutgoingMessage } });
+ 
+OutgoingMessage.prototype._write = function _write(chunk, encoding, callback) {
+  Eif (this.stream) {
+    this.stream.write(chunk, encoding, callback);
+  } else {
+    this.once('socket', this._write.bind(this, chunk, encoding, callback));
+  }
+};
+ 
+OutgoingMessage.prototype._finish = function _finish() {
+  if (this.stream) {
+    this.stream.end();
+  } else {
+    this.once('socket', this._finish.bind(this));
+  }
+};
+ 
+OutgoingMessage.prototype.setHeader = function setHeader(name, value) {
+  if (this.headersSent) {
+    throw new Error('Can\'t set headers after they are sent.');
+  } else {
+    this._headers[name.toLowerCase()] = value;
+  }
+};
+ 
+OutgoingMessage.prototype.removeHeader = function removeHeader(name) {
+  if (this.headersSent) {
+    throw new Error('Can\'t remove headers after they are sent.');
+  } else {
+    delete this._headers[name.toLowerCase()];
+  }
+};
+ 
+OutgoingMessage.prototype.getHeader = function getHeader(name) {
+  return this._headers[name.toLowerCase()];
+};
+ 
+IncomingMessage.prototype.setTimeout = function noop() {};
+ 
+// Server side
+// ===========
+ 
+exports.createServer = createServer;
+exports.Server = Server;
+exports.IncomingRequest = IncomingRequest;
+exports.OutgoingResponse = OutgoingResponse;
+exports.ServerResponse = OutgoingResponse; // for API compatibility
+ 
+// Server class
+// ------------
+ 
+function Server(options) {
+  options = options || {};
+ 
+  this._log = (options.log || logging.root).child({ component: 'http' });
+  this._settings = options.settings;
+ 
+  var start = this._start.bind(this);
+  var fallback = this._fallback.bind(this);
+ 
+  // HTTP2 over TLS (using NPN instean of ALPN)
+  Eif ((options.key && options.cert) || options.pfx) {
+    this._log.info('Creating HTTP/2 server over TLS/NPN');
+    options.NPNProtocols = [implementedVersion, 'http/1.1', 'http/1.0'];
+    this._server = https.createServer(options);
+    this._originalSocketListeners = this._server.listeners('secureConnection');
+    this._server.removeAllListeners('secureConnection');
+    this._server.on('secureConnection', function(socket) {
+      Eif (socket.npnProtocol === implementedVersion) {
+        start(socket);
+      } else {
+        fallback(socket);
+      }
+    });
+    this._server.on('request', this.emit.bind(this, 'request'));
+  }
+ 
+  // HTTP2 over plain TCP
+  else if (options.plain) {
+    this._log.info('Creating HTTP/2 server over plain TCP');
+    this._server = net.createServer(start);
+  }
+ 
+  // HTTP/2 with HTTP/1.1 upgrade
+  else {
+    this._log.error('Trying to create HTTP/2 server with Upgrade from HTTP/1.1');
+    throw new Error('HTTP1.1 -> HTTP2 upgrade is not yet supported. Please provide TLS keys.');
+  }
+ 
+  this._server.on('close', this.emit.bind(this, 'close'));
+}
+Server.prototype = Object.create(EventEmitter.prototype, { constructor: { value: Server } });
+ 
+// Starting HTTP/2
+Server.prototype._start = function _start(socket) {
+  var logger = this._log.child({ client: socket.remoteAddress + ':' + socket.remotePort  });
+  logger.info('Incoming HTTP/2 connection');
+ 
+  var endpoint = new Endpoint('SERVER', this._settings, logger);
+ 
+  endpoint.pipe(socket).pipe(endpoint);
+ 
+  var self = this;
+  endpoint.on('stream', function _onStream(stream) {
+    var response = new OutgoingResponse(endpoint, stream, logger);
+    var request = new IncomingRequest(stream, logger);
+ 
+    request.once('ready', self.emit.bind(self, 'request', request, response));
+  });
+ 
+  this.emit('connection', socket, endpoint);
+};
+ 
+Server.prototype._fallback = function _fallback(socket) {
+  this._log.info({ client: socket.remoteAddress + ':' + socket.remotePort, protocol: socket.npnProtocol },
+                 'Falling back to simple HTTPS');
+ 
+  for (var i = 0; i < this._originalSocketListeners.length; i++) {
+    this._originalSocketListeners[i].call(this._server, socket);
+  }
+ 
+  this.emit('connection', socket);
+};
+ 
+// There are [3 possible signatures][1] of the `listen` function. Every arguments is forwarded to
+// the backing TCP or HTTPS server.
+// [1]: http://nodejs.org/api/http.html#http_server_listen_port_hostname_backlog_callback
+Server.prototype.listen = function listen(port, hostname) {
+  this._log.info({ on: ((typeof hostname === 'string') ? (hostname + ':' + port) : port) },
+                 'Listening for incoming connections');
+  this._server.listen.apply(this._server, arguments);
+};
+ 
+Server.prototype.close = function close(callback) {
+  this._log.info('Closing server');
+  this._server.close(callback);
+};
+ 
+function createServer(options, requestListener) {
+  Iif (typeof options === 'function') {
+    requestListener = options;
+    options = undefined;
+  }
+ 
+  var server = new Server(options);
+ 
+  Eif (requestListener) {
+    server.on('request', requestListener);
+  }
+ 
+  return server;
+}
+ 
+// IncomingRequest class
+// ---------------------
+ 
+function IncomingRequest(stream, log) {
+  IncomingMessage.call(this, stream, log);
+}
+IncomingRequest.prototype = Object.create(IncomingMessage.prototype, { constructor: { value: IncomingRequest } });
+ 
+// [Request Header Fields](http://tools.ietf.org/html/draft-ietf-httpbis-http2-05#section-8.1.2.1)
+IncomingRequest.prototype._onHeaders = function _onHeaders(headers) {
+  // * HTTP/2.0 request and response header fields carry information as a series of key-value pairs.
+  //   This includes the target URI for the request, the status code for the response, as well as
+  //   HTTP header fields.
+  this.headers = headers;
+ 
+  // * The ":method" header field includes the HTTP method
+  // * The ":scheme" header field includes the scheme portion of the target URI
+  // * The ":host" header field includes the authority portion of the target URI
+  // * The ":path" header field includes the path and query parts of the target URI.
+  //   This field MUST NOT be empty; URIs that do not contain a path component MUST include a value
+  //   of '/', unless the request is an OPTIONS request for '*', in which case the ":path" header
+  //   field MUST include '*'.
+  // * All HTTP/2.0 requests MUST include exactly one valid value for all of these header fields. A
+  //   server MUST treat the absence of any of these header fields, presence of multiple values, or
+  //   an invalid value as a stream error of type PROTOCOL_ERROR.
+  var mapping = {
+    method: ':method',
+    scheme: ':scheme',
+    host: ':host',
+    url: ':path'
+  };
+  for (var property in mapping) {
+    var value = headers[mapping[property]];
+    Iif ((typeof value !== 'string') || (value.length === 0)) {
+      this._log.error({ key: mapping[property], value: value }, 'Invalid header field');
+      this.stream.emit('error', 'PROTOCOL_ERROR');
+      return;
+    }
+    this[property] = value;
+    delete headers[mapping[property]];
+  }
+ 
+  // * An HTTP/2.0 request MUST NOT include any of the following header fields: Connection, Host,
+  //   Keep-Alive, Proxy-Connection, TE, Transfer-Encoding, and Upgrade. A server MUST treat the
+  //   presence of any of these header fields as a stream error of type PROTOCOL_ERROR.
+  var deprecatedHeaders = [
+    'connection',
+    'host',
+    'keep-alive',
+    'proxy-connection',
+    'te',
+    'transfer-encoding',
+    'upgrade'
+  ];
+  for (var i = 0; i < deprecatedHeaders.length; i++) {
+    var key = deprecatedHeaders[i];
+    Iif (key in headers) {
+      this._log.error({ key: key, value: headers[key] }, 'Deprecated header found');
+      this.stream.emit('error', 'PROTOCOL_ERROR');
+      return;
+    }
+  }
+ 
+  // * Host header is included in the headers object for backwards compatibility.
+  headers.host = this.host;
+ 
+  // * Signaling that the header arrived.
+  this._log.info({ method: this.method, scheme: this.scheme, host: this.host,
+    path: this.url, headers: headers}, 'Incoming request');
+  this.emit('ready');
+};
+ 
+// OutgoingResponse class
+// ----------------------
+ 
+function OutgoingResponse(endpoint, stream, log) {
+  OutgoingMessage.call(this, log);
+ 
+  this.endpoint = endpoint;
+  this.stream = stream;
+  this.statusCode = undefined;
+  this.sendDate = true;
+ 
+  this.stream.once('headers', this._onRequestHeaders.bind(this));
+}
+OutgoingResponse.prototype = Object.create(OutgoingMessage.prototype, { constructor: { value: OutgoingResponse } });
+ 
+OutgoingResponse.prototype.writeHead = function writeHead(statusCode, reasonPhrase, headers) {
+  Iif (typeof reasonPhrase === 'string') {
+    this._log.warn('Reason phrase argument was present but ignored by the writeHead method');
+  } else {
+    headers = reasonPhrase;
+  }
+ 
+  headers = headers || {};
+ 
+  for (var name in headers) {
+    this._headers[name.toLowerCase()] = headers[name];
+  }
+ 
+  Eif (this.sendDate && !('date' in this._headers)) {
+    this._headers.date = (new Date()).toUTCString();
+  }
+ 
+  this._log.info({ status: statusCode, headers: this._headers }, 'Sending server response');
+ 
+  this._headers[':status'] = this.statusCode = statusCode;
+ 
+  this.stream.headers(this._headers);
+ 
+  this.headersSent = true;
+};
+ 
+OutgoingResponse.prototype._implicitHeaders = function _implicitHeaders() {
+  if (!this.headersSent) {
+    this.writeHead(this.statusCode);
+  }
+};
+ 
+OutgoingResponse.prototype.write = function write() {
+  this._implicitHeaders();
+  return OutgoingMessage.prototype.write.apply(this, arguments);
+};
+ 
+OutgoingResponse.prototype.end = function end() {
+  this._implicitHeaders();
+  return OutgoingMessage.prototype.end.apply(this, arguments);
+};
+ 
+OutgoingResponse.prototype._onRequestHeaders = function _onRequestHeaders(headers) {
+  this._requestHeaders = headers;
+};
+ 
+OutgoingResponse.prototype.push = function push(options) {
+  if (!this.headersSent) {
+    throw new Error('Initiating a server push is only possible after the head of the parent ' +
+                    'request is sent.');
+  }
+ 
+  if (typeof options === 'string') {
+    options = url.parse(options);
+  }
+ 
+  if (!options.path) {
+    throw new Error('`path` option is mandatory.');
+  }
+ 
+  var promiseHeaders = util._extend({
+    ':method': (options.method || 'GET').toUpperCase(),
+    ':scheme': options.protocol || this._requestHeaders[':scheme'],
+    ':host': options.hostname || options.host || this._requestHeaders[':host'],
+    ':path': options.path
+  }, options.headers);
+ 
+  var pushStream = this.endpoint.createStream();
+  this.stream.promise(pushStream, promiseHeaders);
+ 
+  return new OutgoingResponse(this.endpoint, pushStream, this._log);
+};
+ 
+// Client side
+// ===========
+ 
+exports.request = request;
+exports.get = get;
+exports.Agent = Agent;
+exports.ClientRequest = OutgoingRequest; // for API compatibility
+exports.OutgoingRequest = OutgoingRequest;
+exports.IncomingResponse = IncomingResponse;
+exports.globalAgent = undefined;
+ 
+// Agent class
+// -----------
+ 
+function Agent(options) {
+  EventEmitter.call(this);
+ 
+  options = options || {};
+ 
+  this._settings = options.settings;
+  this._log = (options.log || logging.root).child({ component: 'http' });
+  this._endpoints = {};
+ 
+  // * Using an own HTTPS agent, because the global agent does not look at `NPNProtocols` when
+  //   generating the key identifying the connection, so we may get useless non-negotiated TLS
+  //   channels even if we ask for a negotiated one. This agent will contain only negotiated
+  //   channels.
+  this._httpsAgent = new https.Agent({
+    NPNProtocols: [implementedVersion, 'http/1.1', 'http/1.0']
+  });
+}
+Agent.prototype = Object.create(EventEmitter.prototype, { constructor: { value: Agent } });
+ 
+Agent.prototype.request = function request(options, callback) {
+  Eif (typeof options === 'string') {
+    options = url.parse(options);
+  }
+ 
+  options.method = (options.method || 'GET').toUpperCase();
+  options.protocol = options.protocol || 'https';
+  options.host = options.hostname || options.host || 'localhost';
+  options.port = options.port || 443;
+  options.path = options.path || '/';
+ 
+  Iif (options.protocol === 'http') {
+    this._log.error('Trying to negotiate client request with Upgrade from HTTP/1.1');
+    throw new Error('HTTP1.1 -> HTTP2 upgrade is not yet supported.');
+  }
+ 
+  var request = new OutgoingRequest(logging.root);
+ 
+  Eif (callback) {
+    request.on('response', callback);
+  }
+ 
+  var key = [options.host, options.port].join(':');
+ 
+  // * There's an existing HTTP/2 connection to this host
+  Iif (key in this._endpoints) {
+    var endpoint = this._endpoints[key];
+    request._start(endpoint.createStream(), options);
+  }
+ 
+  // * HTTP/2 over TLS negotiated using NPN (or later ALPN)
+  //   * if the negotiation is unsuccessful
+  //     * adding socket to the HTTPS agent's socket pool
+  //     * initiating a request with the HTTPS agent
+  //     * calling request's fallback() to fall back to use the new request object
+  else {
+    var started = false;
+    options.NPNProtocols = [implementedVersion, 'http/1.1', 'http/1.0'];
+    options.agent = this._httpsAgent;
+    var httpsRequest = https.request(options);
+    httpsRequest.on('socket', function(socket) {
+      Iif (socket.npnProtocol !== undefined) {
+        negotiated();
+      } else {
+        socket.on('secureConnect', negotiated);
+      }
+    });
+ 
+    var negotiated = function negotiated() {
+      Eif (!started) {
+        Eif (httpsRequest.socket.npnProtocol === implementedVersion) {
+          httpsRequest.socket.emit('agentRemove');
+          unbundleSocket(httpsRequest.socket);
+          var logger = this._log.child({ server: options.host + ':' + options.port });
+          var endpoint = new Endpoint('CLIENT', this._settings, logger);
+          endpoint.socket = httpsRequest.socket;
+          endpoint.pipe(endpoint.socket).pipe(endpoint);
+          this._endpoints[key] = endpoint;
+          this.emit(key, endpoint);
+        } else {
+          this.emit(key, undefined);
+        }
+      }
+    }.bind(this);
+ 
+    this.once(key, function(endpoint) {
+      started = true;
+      Eif (endpoint) {
+        request._start(endpoint.createStream(), options);
+      } else {
+        request._fallback(httpsRequest);
+      }
+    });
+  }
+ 
+  return request;
+};
+ 
+Agent.prototype.get = function get(options, callback) {
+  var request = this.request(options, callback);
+  request.end();
+  return request;
+};
+ 
+function unbundleSocket(socket) {
+  socket.removeAllListeners('data');
+  socket.removeAllListeners('end');
+  socket.removeAllListeners('readable');
+  socket.removeAllListeners('close');
+  socket.removeAllListeners('error');
+  socket.unpipe();
+  delete socket.ondata;
+  delete socket.onend;
+}
+ 
+var globalAgent = exports.globalAgent = new Agent();
+ 
+function request(options, callback) {
+  return globalAgent.request(options, callback);
+}
+ 
+function get(options, callback) {
+  return globalAgent.get(options, callback);
+}
+ 
+// OutgoingRequest class
+// ---------------------
+ 
+function OutgoingRequest(log) {
+  OutgoingMessage.call(this, log);
+ 
+  this.socket = undefined;
+  this.stream = undefined;
+  this.request = undefined;
+  this.headersSent = true;
+}
+OutgoingRequest.prototype = Object.create(OutgoingMessage.prototype, { constructor: { value: OutgoingRequest } });
+ 
+OutgoingRequest.prototype._start = function _start(stream, options) {
+  var logger = this._log.child({ server: (options.hostname || options.host) + ':' + (options.port || 80)  });
+  logger.info('Successfully initiated HTTP/2 connection');
+ 
+  this.stream = stream;
+ 
+  var headers = {};
+  for (var key in options.headers) {
+    headers[key] = options.headers[key];
+  }
+  delete headers.host;
+  headers[':scheme'] = options.protocol;
+  headers[':method'] = options.method;
+  headers[':host'] = options.hostname;
+  headers[':path'] = options.path;
+ 
+  logger.info({ scheme: headers[':scheme'], method: headers[':method'], host: headers[':host'],
+                path: headers[':path'], headers: (options.headers || {}) }, 'Sending request');
+  this.stream.headers(headers);
+ 
+  this.emit('stream', this.stream);
+ 
+  var response = new IncomingResponse(this.stream, logger);
+  response.once('ready', this.emit.bind(this, 'response', response));
+};
+ 
+OutgoingRequest.prototype._fallback = function _fallback(request) {
+  this._log.info('Falling back to simple HTTPS');
+ 
+  this.request = request;
+  this.socket = request.socket;
+  this.emit('socket', request.socket);
+ 
+  this.pipe(request);
+};
+ 
+// Methods only in fallback mode
+OutgoingRequest.prototype.setNoDelay = function setNoDelay(noDelay) {
+  if (this.request) {
+    this.request.setNoDelay(noDelay);
+  }
+};
+ 
+OutgoingRequest.prototype.setSocketKeepAlive = function setSocketKeepAlive(enable, initialDelay) {
+  if (this.request) {
+    this.request.setSocketKeepAlive(enable, initialDelay);
+  }
+};
+ 
+OutgoingRequest.prototype.setTimeout = function setTimeout(timeout, callback) {
+  if (this.request) {
+    this.request.setTimeout(timeout, callback);
+  }
+};
+ 
+ 
+// IncomingResponse class
+// ----------------------
+ 
+function IncomingResponse(stream, log) {
+  IncomingMessage.call(this, stream, log);
+  stream.on('promise', this._onPromise.bind(this));
+}
+IncomingResponse.prototype = Object.create(IncomingMessage.prototype, { constructor: { value: IncomingResponse } });
+ 
+// [Response Header Fields](http://tools.ietf.org/html/draft-ietf-httpbis-http2-05#section-8.1.2.2)
+IncomingResponse.prototype._onHeaders = function _onHeaders(headers) {
+  // * HTTP/2.0 request and response header fields carry information as a series of key-value pairs.
+  //   This includes the target URI for the request, the status code for the response, as well as
+  //   HTTP header fields.
+  this.headers = headers;
+ 
+  // * A single ":status" header field is defined that carries the HTTP status code field. This
+  //   header field MUST be included in all responses.
+  // * A client MUST treat the absence of the ":status" header field, the presence of multiple
+  //   values, or an invalid value as a stream error of type PROTOCOL_ERROR.
+  // * HTTP/2.0 does not define a way to carry the reason phrase that is included in an HTTP/1.1
+  //   status line.
+  var statusCode = headers[':status'];
+  Iif ((typeof statusCode !== 'string') || (statusCode.length === 0)) {
+    this._log.error({ key: ':status', value: statusCode }, 'Invalid header field');
+    this.stream.emit('error', 'PROTOCOL_ERROR');
+    return;
+  }
+  this.statusCode = statusCode;
+  delete headers[':status'];
+ 
+  // * Signaling that the header arrived.
+  this._log.info({ status: statusCode, headers: headers}, 'Incoming response');
+  this.emit('ready');
+};
+ 
+IncomingResponse.prototype._onPromise = function _onPromise(stream, headers) {
+  var promise = new IncomingPromise(stream, headers, this._log);
+ 
+  if (this.listeners('push').length > 0) {
+    this.emit('push', promise);
+  } else {
+    promise.cancel();
+  }
+};
+ 
+// IncomingPromise class
+// -------------------------
+ 
+function IncomingPromise(responseStream, promiseHeaders, log) {
+  var stream = new Readable();
+  stream._read = function noop() {};
+  stream.push(null);
+ 
+  IncomingRequest.call(this, stream, log);
+ 
+  stream.emit('headers', promiseHeaders);
+ 
+  this._responseStream = responseStream;
+ 
+  var response = new IncomingResponse(this._responseStream, log);
+  response.once('ready', this.emit.bind(this, 'response', response));
+}
+IncomingPromise.prototype = Object.create(IncomingRequest.prototype, { constructor: { value: IncomingPromise } });
+ 
+IncomingPromise.prototype.cancel = function cancel() {
+  this._responseStream.reset('CANCEL');
+};
+ 
+ +
+ + + + + + + + From 2a187ab546790861047d46a8d643bf35af840fa5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Moln=C3=A1r?= Date: Tue, 27 Aug 2013 22:33:06 +0200 Subject: [PATCH 09/20] Updating coverage report. --- coverage/coverage.json | 2 +- coverage/lcov-report/index.html | 28 +- coverage/lcov-report/lib/compressor.js.html | 201 +- coverage/lcov-report/lib/connection.js.html | 541 +-- coverage/lcov-report/lib/endpoint.js.html | 69 +- coverage/lcov-report/lib/flow.js.html | 188 +- coverage/lcov-report/lib/framer.js.html | 173 +- coverage/lcov-report/lib/http.js.html | 776 +++- coverage/lcov-report/lib/index.html | 135 +- coverage/lcov-report/lib/logging.js.html | 389 -- coverage/lcov-report/lib/stream.js.html | 513 ++- coverage/lcov.info | 4029 ++++++++++--------- 12 files changed, 3750 insertions(+), 3294 deletions(-) delete mode 100644 coverage/lcov-report/lib/logging.js.html diff --git a/coverage/coverage.json b/coverage/coverage.json index 2c36513f..9bc19675 100644 --- a/coverage/coverage.json +++ b/coverage/coverage.json @@ -1 +1 @@ -{"/data/upstream/node-http2/lib/compressor.js":{"path":"/data/upstream/node-http2/lib/compressor.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":14,"9":14,"10":14,"11":14,"12":14,"13":1,"14":1643,"15":1,"16":47,"17":142,"18":1,"19":47,"20":47,"21":154,"22":98,"23":47,"24":98,"25":98,"26":1,"27":184,"28":184,"29":184,"30":52,"31":52,"32":139,"33":52,"34":2,"35":2,"36":50,"37":132,"38":47,"39":85,"40":132,"41":131,"42":88,"43":43,"44":131,"45":131,"46":132,"47":1,"48":42,"49":97,"50":1,"51":64,"52":64,"53":64,"54":5,"55":5,"56":1,"57":63,"58":63,"59":1251,"60":63,"61":37,"62":37,"63":21,"64":42,"65":1,"66":24,"67":24,"68":42,"69":24,"70":24,"71":24,"72":1,"73":131,"74":131,"75":131,"76":2789,"77":204,"78":2789,"79":131,"80":218,"81":218,"82":1,"83":8,"84":8,"85":8,"86":8,"87":1,"88":1,"89":25,"90":25,"91":25,"92":25,"93":96,"94":25,"95":25,"96":25,"97":96,"98":96,"99":96,"100":17,"101":8,"102":9,"103":79,"104":25,"105":25,"106":1,"107":6,"108":6,"109":6,"110":6,"111":1,"112":1,"113":22,"114":22,"115":22,"116":22,"117":70,"118":70,"119":8,"120":24,"121":62,"122":22,"123":22,"124":22,"125":46,"126":24,"127":24,"128":24,"129":22,"130":86,"131":64,"132":64,"133":64,"134":22,"135":22,"136":88,"137":22,"138":22,"139":22,"140":1,"141":234,"142":234,"143":94,"144":140,"145":140,"146":2,"147":140,"148":140,"149":140,"150":148,"151":148,"152":148,"153":8,"154":148,"155":148,"156":140,"157":1,"158":252,"159":252,"160":252,"161":106,"162":252,"163":151,"164":151,"165":161,"166":161,"167":161,"168":252,"169":1,"170":116,"171":116,"172":116,"173":1,"174":121,"175":121,"176":121,"177":121,"178":1,"179":1,"180":96,"181":96,"182":27,"183":69,"184":1,"185":68,"186":46,"187":22,"188":96,"189":27,"190":69,"191":26,"192":43,"193":43,"194":69,"195":22,"196":69,"197":96,"198":96,"199":1,"200":104,"201":104,"202":104,"203":29,"204":75,"205":52,"206":2,"207":50,"208":23,"209":104,"210":29,"211":29,"212":75,"213":75,"214":44,"215":75,"216":23,"217":52,"218":50,"219":2,"220":75,"221":104,"222":1,"223":1,"224":6,"225":1,"226":18,"227":12,"228":12,"229":12,"230":14,"231":14,"232":12,"233":2,"234":2,"235":14,"236":6,"237":18,"238":1,"239":8,"240":8,"241":8,"242":8,"243":8,"244":1,"245":22,"246":3,"247":1,"248":1,"249":1,"250":2,"251":19,"252":13,"253":13,"254":13,"255":13,"256":6,"257":21,"258":12,"259":14,"260":12,"261":12,"262":0,"263":0,"264":0,"265":12,"266":12,"267":21,"268":1,"269":1,"270":1,"271":34,"272":34,"273":333,"274":34,"275":34,"276":333,"277":34,"278":1,"279":12,"280":12,"281":12,"282":14,"283":14,"284":14,"285":12,"286":1,"287":14,"288":14,"289":0,"290":14},"b":{"1":[14,14],"2":[1643,128],"3":[52,132],"4":[2,50],"5":[47,85],"6":[131,1],"7":[88,43],"8":[5,59],"9":[1,4],"10":[37,26],"11":[21,16],"12":[24,18],"13":[204,2585],"14":[8,4],"15":[5,3],"16":[17,79],"17":[8,9],"18":[6,2],"19":[3,3],"20":[8,62],"21":[24,22],"22":[64,22],"23":[94,140],"24":[2,138],"25":[8,140],"26":[106,146],"27":[151,101],"28":[27,69],"29":[1,68],"30":[46,22],"31":[27,69],"32":[26,43],"33":[22,47],"34":[29,75],"35":[52,23],"36":[2,50],"37":[29,75],"38":[44,31],"39":[23,52],"40":[50,2],"41":[12,6],"42":[18,11],"43":[12,2],"44":[3,19],"45":[1,2],"46":[3,2],"47":[13,6],"48":[19,11],"49":[12,9],"50":[21,15,8]},"f":{"1":14,"2":1643,"3":47,"4":142,"5":47,"6":154,"7":98,"8":98,"9":184,"10":139,"11":42,"12":97,"13":64,"14":1251,"15":24,"16":131,"17":8,"18":25,"19":6,"20":22,"21":234,"22":252,"23":116,"24":121,"25":96,"26":104,"27":6,"28":18,"29":8,"30":22,"31":14,"32":34,"33":12,"34":14},"fnMap":{"1":{"name":"CompressionContext","line":39,"loc":{"start":{"line":39,"column":0},"end":{"line":39,"column":47}}},"2":{"name":"(anonymous_2)","line":49,"loc":{"start":{"line":49,"column":27},"end":{"line":49,"column":50}}},"3":{"name":"getWorkingSet","line":54,"loc":{"start":{"line":54,"column":45},"end":{"line":54,"column":70}}},"4":{"name":"(anonymous_4)","line":55,"loc":{"start":{"line":55,"column":27},"end":{"line":55,"column":43}}},"5":{"name":"reinitialize","line":61,"loc":{"start":{"line":61,"column":44},"end":{"line":61,"column":68}}},"6":{"name":"(anonymous_6)","line":67,"loc":{"start":{"line":67,"column":41},"end":{"line":67,"column":57}}},"7":{"name":"(anonymous_7)","line":69,"loc":{"start":{"line":69,"column":9},"end":{"line":69,"column":25}}},"8":{"name":"(anonymous_8)","line":77,"loc":{"start":{"line":77,"column":38},"end":{"line":77,"column":53}}},"9":{"name":"execute","line":106,"loc":{"start":{"line":106,"column":39},"end":{"line":106,"column":65}}},"10":{"name":"(anonymous_10)","line":119,"loc":{"start":{"line":119,"column":40},"end":{"line":119,"column":56}}},"11":{"name":"(anonymous_11)","line":157,"loc":{"start":{"line":157,"column":43},"end":{"line":157,"column":59}}},"12":{"name":"(anonymous_12)","line":158,"loc":{"start":{"line":158,"column":28},"end":{"line":158,"column":44}}},"13":{"name":"(anonymous_13)","line":165,"loc":{"start":{"line":165,"column":50},"end":{"line":165,"column":65}}},"14":{"name":"(anonymous_14)","line":181,"loc":{"start":{"line":181,"column":37},"end":{"line":181,"column":53}}},"15":{"name":"(anonymous_15)","line":204,"loc":{"start":{"line":204,"column":53},"end":{"line":204,"column":68}}},"16":{"name":"(anonymous_16)","line":228,"loc":{"start":{"line":228,"column":49},"end":{"line":228,"column":60}}},"17":{"name":"Decompressor","line":250,"loc":{"start":{"line":250,"column":0},"end":{"line":250,"column":33}}},"18":{"name":"decompress","line":265,"loc":{"start":{"line":265,"column":36},"end":{"line":265,"column":64}}},"19":{"name":"Compressor","line":311,"loc":{"start":{"line":311,"column":0},"end":{"line":311,"column":31}}},"20":{"name":"compress","line":326,"loc":{"start":{"line":326,"column":32},"end":{"line":326,"column":59}}},"21":{"name":"writeInteger","line":396,"loc":{"start":{"line":396,"column":21},"end":{"line":396,"column":49}}},"22":{"name":"readInteger","line":437,"loc":{"start":{"line":437,"column":23},"end":{"line":437,"column":55}}},"23":{"name":"writeString","line":467,"loc":{"start":{"line":467,"column":20},"end":{"line":467,"column":46}}},"24":{"name":"readString","line":473,"loc":{"start":{"line":473,"column":22},"end":{"line":473,"column":50}}},"25":{"name":"writeString","line":526,"loc":{"start":{"line":526,"column":20},"end":{"line":526,"column":49}}},"26":{"name":"readString","line":562,"loc":{"start":{"line":562,"column":22},"end":{"line":562,"column":50}}},"27":{"name":"_initializeStream","line":627,"loc":{"start":{"line":627,"column":41},"end":{"line":627,"column":70}}},"28":{"name":"_transform","line":631,"loc":{"start":{"line":631,"column":34},"end":{"line":631,"column":77}}},"29":{"name":"_initializeStream","line":677,"loc":{"start":{"line":677,"column":43},"end":{"line":677,"column":72}}},"30":{"name":"_transform","line":686,"loc":{"start":{"line":686,"column":36},"end":{"line":686,"column":79}}},"31":{"name":"(anonymous_31)","line":716,"loc":{"start":{"line":716,"column":41},"end":{"line":716,"column":57}}},"32":{"name":"concat","line":826,"loc":{"start":{"line":826,"column":0},"end":{"line":826,"column":25}}},"33":{"name":"cut","line":841,"loc":{"start":{"line":841,"column":0},"end":{"line":841,"column":27}}},"34":{"name":"shallowCopy","line":853,"loc":{"start":{"line":853,"column":0},"end":{"line":853,"column":29}}}},"statementMap":{"1":{"start":{"line":16,"column":0},"end":{"line":16,"column":35}},"2":{"start":{"line":17,"column":0},"end":{"line":17,"column":44}},"3":{"start":{"line":19,"column":0},"end":{"line":19,"column":48}},"4":{"start":{"line":20,"column":0},"end":{"line":20,"column":36}},"5":{"start":{"line":21,"column":0},"end":{"line":21,"column":32}},"6":{"start":{"line":37,"column":0},"end":{"line":37,"column":38}},"7":{"start":{"line":39,"column":0},"end":{"line":45,"column":1}},"8":{"start":{"line":40,"column":2},"end":{"line":40,"column":18}},"9":{"start":{"line":41,"column":2},"end":{"line":41,"column":30}},"10":{"start":{"line":42,"column":2},"end":{"line":42,"column":52}},"11":{"start":{"line":43,"column":2},"end":{"line":43,"column":23}},"12":{"start":{"line":44,"column":2},"end":{"line":44,"column":21}},"13":{"start":{"line":49,"column":0},"end":{"line":51,"column":2}},"14":{"start":{"line":50,"column":2},"end":{"line":50,"column":88}},"15":{"start":{"line":54,"column":0},"end":{"line":58,"column":2}},"16":{"start":{"line":55,"column":2},"end":{"line":57,"column":5}},"17":{"start":{"line":56,"column":4},"end":{"line":56,"column":22}},"18":{"start":{"line":61,"column":0},"end":{"line":81,"column":2}},"19":{"start":{"line":62,"column":2},"end":{"line":62,"column":18}},"20":{"start":{"line":67,"column":2},"end":{"line":71,"column":5}},"21":{"start":{"line":68,"column":4},"end":{"line":68,"column":50}},"22":{"start":{"line":70,"column":4},"end":{"line":70,"column":22}},"23":{"start":{"line":77,"column":2},"end":{"line":80,"column":5}},"24":{"start":{"line":78,"column":4},"end":{"line":78,"column":42}},"25":{"start":{"line":79,"column":4},"end":{"line":79,"column":40}},"26":{"start":{"line":106,"column":0},"end":{"line":153,"column":2}},"27":{"start":{"line":107,"column":2},"end":{"line":108,"column":55}},"28":{"start":{"line":110,"column":2},"end":{"line":110,"column":18}},"29":{"start":{"line":117,"column":2},"end":{"line":152,"column":3}},"30":{"start":{"line":118,"column":4},"end":{"line":118,"column":26}},"31":{"start":{"line":119,"column":4},"end":{"line":121,"column":7}},"32":{"start":{"line":120,"column":6},"end":{"line":120,"column":35}},"33":{"start":{"line":122,"column":4},"end":{"line":127,"column":5}},"34":{"start":{"line":123,"column":6},"end":{"line":123,"column":32}},"35":{"start":{"line":124,"column":6},"end":{"line":124,"column":55}},"36":{"start":{"line":126,"column":6},"end":{"line":126,"column":31}},"37":{"start":{"line":135,"column":4},"end":{"line":139,"column":5}},"38":{"start":{"line":136,"column":6},"end":{"line":136,"column":59}},"39":{"start":{"line":138,"column":6},"end":{"line":138,"column":43}},"40":{"start":{"line":141,"column":4},"end":{"line":149,"column":5}},"41":{"start":{"line":142,"column":6},"end":{"line":146,"column":7}},"42":{"start":{"line":143,"column":8},"end":{"line":143,"column":31}},"43":{"start":{"line":145,"column":8},"end":{"line":145,"column":51}},"44":{"start":{"line":147,"column":6},"end":{"line":147,"column":31}},"45":{"start":{"line":148,"column":6},"end":{"line":148,"column":40}},"46":{"start":{"line":151,"column":4},"end":{"line":151,"column":53}},"47":{"start":{"line":157,"column":0},"end":{"line":161,"column":2}},"48":{"start":{"line":158,"column":2},"end":{"line":160,"column":5}},"49":{"start":{"line":159,"column":4},"end":{"line":159,"column":33}},"50":{"start":{"line":165,"column":0},"end":{"line":200,"column":2}},"51":{"start":{"line":166,"column":2},"end":{"line":166,"column":56}},"52":{"start":{"line":168,"column":2},"end":{"line":168,"column":44}},"53":{"start":{"line":169,"column":2},"end":{"line":178,"column":3}},"54":{"start":{"line":170,"column":4},"end":{"line":170,"column":54}},"55":{"start":{"line":171,"column":4},"end":{"line":177,"column":5}},"56":{"start":{"line":172,"column":6},"end":{"line":176,"column":8}},"57":{"start":{"line":180,"column":2},"end":{"line":180,"column":35}},"58":{"start":{"line":181,"column":2},"end":{"line":183,"column":5}},"59":{"start":{"line":182,"column":4},"end":{"line":182,"column":43}},"60":{"start":{"line":184,"column":2},"end":{"line":193,"column":3}},"61":{"start":{"line":185,"column":4},"end":{"line":185,"column":54}},"62":{"start":{"line":186,"column":4},"end":{"line":192,"column":5}},"63":{"start":{"line":187,"column":6},"end":{"line":191,"column":8}},"64":{"start":{"line":195,"column":2},"end":{"line":199,"column":4}},"65":{"start":{"line":204,"column":0},"end":{"line":219,"column":2}},"66":{"start":{"line":205,"column":2},"end":{"line":205,"column":12}},"67":{"start":{"line":207,"column":2},"end":{"line":212,"column":3}},"68":{"start":{"line":208,"column":4},"end":{"line":211,"column":5}},"69":{"start":{"line":209,"column":6},"end":{"line":209,"column":31}},"70":{"start":{"line":210,"column":6},"end":{"line":210,"column":12}},"71":{"start":{"line":214,"column":2},"end":{"line":218,"column":4}},"72":{"start":{"line":228,"column":0},"end":{"line":241,"column":2}},"73":{"start":{"line":229,"column":2},"end":{"line":229,"column":26}},"74":{"start":{"line":230,"column":2},"end":{"line":230,"column":15}},"75":{"start":{"line":231,"column":2},"end":{"line":236,"column":3}},"76":{"start":{"line":232,"column":4},"end":{"line":234,"column":5}},"77":{"start":{"line":233,"column":6},"end":{"line":233,"column":80}},"78":{"start":{"line":235,"column":4},"end":{"line":235,"column":26}},"79":{"start":{"line":237,"column":2},"end":{"line":240,"column":3}},"80":{"start":{"line":238,"column":4},"end":{"line":238,"column":32}},"81":{"start":{"line":239,"column":4},"end":{"line":239,"column":25}},"82":{"start":{"line":250,"column":0},"end":{"line":258,"column":1}},"83":{"start":{"line":251,"column":2},"end":{"line":251,"column":73}},"84":{"start":{"line":253,"column":2},"end":{"line":254,"column":84}},"85":{"start":{"line":255,"column":2},"end":{"line":255,"column":66}},"86":{"start":{"line":257,"column":2},"end":{"line":257,"column":27}},"87":{"start":{"line":259,"column":0},"end":{"line":259,"column":102}},"88":{"start":{"line":265,"column":0},"end":{"line":302,"column":2}},"89":{"start":{"line":266,"column":2},"end":{"line":266,"column":69}},"90":{"start":{"line":270,"column":2},"end":{"line":270,"column":31}},"91":{"start":{"line":275,"column":2},"end":{"line":275,"column":20}},"92":{"start":{"line":276,"column":2},"end":{"line":278,"column":3}},"93":{"start":{"line":277,"column":4},"end":{"line":277,"column":55}},"94":{"start":{"line":282,"column":2},"end":{"line":282,"column":44}},"95":{"start":{"line":286,"column":2},"end":{"line":286,"column":19}},"96":{"start":{"line":287,"column":2},"end":{"line":299,"column":3}},"97":{"start":{"line":288,"column":4},"end":{"line":288,"column":27}},"98":{"start":{"line":289,"column":4},"end":{"line":289,"column":28}},"99":{"start":{"line":290,"column":4},"end":{"line":298,"column":5}},"100":{"start":{"line":291,"column":6},"end":{"line":295,"column":7}},"101":{"start":{"line":292,"column":8},"end":{"line":292,"column":34}},"102":{"start":{"line":294,"column":8},"end":{"line":294,"column":47}},"103":{"start":{"line":297,"column":6},"end":{"line":297,"column":28}},"104":{"start":{"line":300,"column":2},"end":{"line":300,"column":72}},"105":{"start":{"line":301,"column":2},"end":{"line":301,"column":17}},"106":{"start":{"line":311,"column":0},"end":{"line":319,"column":1}},"107":{"start":{"line":312,"column":2},"end":{"line":312,"column":71}},"108":{"start":{"line":314,"column":2},"end":{"line":315,"column":84}},"109":{"start":{"line":316,"column":2},"end":{"line":316,"column":66}},"110":{"start":{"line":318,"column":2},"end":{"line":318,"column":27}},"111":{"start":{"line":320,"column":0},"end":{"line":320,"column":98}},"112":{"start":{"line":326,"column":0},"end":{"line":377,"column":2}},"113":{"start":{"line":327,"column":2},"end":{"line":327,"column":71}},"114":{"start":{"line":328,"column":2},"end":{"line":328,"column":8}},"115":{"start":{"line":332,"column":2},"end":{"line":332,"column":17}},"116":{"start":{"line":333,"column":2},"end":{"line":342,"column":3}},"117":{"start":{"line":334,"column":4},"end":{"line":334,"column":30}},"118":{"start":{"line":335,"column":4},"end":{"line":341,"column":5}},"119":{"start":{"line":336,"column":6},"end":{"line":338,"column":7}},"120":{"start":{"line":337,"column":8},"end":{"line":337,"column":53}},"121":{"start":{"line":340,"column":6},"end":{"line":340,"column":48}},"122":{"start":{"line":346,"column":2},"end":{"line":346,"column":31}},"123":{"start":{"line":347,"column":2},"end":{"line":347,"column":70}},"124":{"start":{"line":350,"column":2},"end":{"line":356,"column":3}},"125":{"start":{"line":351,"column":4},"end":{"line":355,"column":5}},"126":{"start":{"line":352,"column":6},"end":{"line":352,"column":64}},"127":{"start":{"line":353,"column":6},"end":{"line":353,"column":37}},"128":{"start":{"line":354,"column":6},"end":{"line":354,"column":29}},"129":{"start":{"line":359,"column":2},"end":{"line":365,"column":3}},"130":{"start":{"line":360,"column":4},"end":{"line":364,"column":5}},"131":{"start":{"line":361,"column":6},"end":{"line":361,"column":59}},"132":{"start":{"line":362,"column":6},"end":{"line":362,"column":37}},"133":{"start":{"line":363,"column":6},"end":{"line":363,"column":29}},"134":{"start":{"line":368,"column":2},"end":{"line":368,"column":19}},"135":{"start":{"line":369,"column":2},"end":{"line":371,"column":3}},"136":{"start":{"line":370,"column":4},"end":{"line":370,"column":49}},"137":{"start":{"line":373,"column":2},"end":{"line":373,"column":65}},"138":{"start":{"line":375,"column":2},"end":{"line":375,"column":66}},"139":{"start":{"line":376,"column":2},"end":{"line":376,"column":16}},"140":{"start":{"line":396,"column":0},"end":{"line":422,"column":2}},"141":{"start":{"line":397,"column":2},"end":{"line":397,"column":32}},"142":{"start":{"line":398,"column":2},"end":{"line":400,"column":3}},"143":{"start":{"line":399,"column":4},"end":{"line":399,"column":29}},"144":{"start":{"line":402,"column":2},"end":{"line":402,"column":17}},"145":{"start":{"line":403,"column":2},"end":{"line":405,"column":3}},"146":{"start":{"line":404,"column":4},"end":{"line":404,"column":22}},"147":{"start":{"line":406,"column":2},"end":{"line":406,"column":13}},"148":{"start":{"line":408,"column":2},"end":{"line":408,"column":15}},"149":{"start":{"line":409,"column":2},"end":{"line":419,"column":3}},"150":{"start":{"line":410,"column":4},"end":{"line":410,"column":28}},"151":{"start":{"line":411,"column":4},"end":{"line":411,"column":16}},"152":{"start":{"line":413,"column":4},"end":{"line":415,"column":5}},"153":{"start":{"line":414,"column":6},"end":{"line":414,"column":15}},"154":{"start":{"line":416,"column":4},"end":{"line":416,"column":18}},"155":{"start":{"line":418,"column":4},"end":{"line":418,"column":10}},"156":{"start":{"line":421,"column":2},"end":{"line":421,"column":29}},"157":{"start":{"line":437,"column":0},"end":{"line":455,"column":2}},"158":{"start":{"line":438,"column":2},"end":{"line":438,"column":32}},"159":{"start":{"line":440,"column":2},"end":{"line":440,"column":40}},"160":{"start":{"line":441,"column":2},"end":{"line":443,"column":3}},"161":{"start":{"line":442,"column":4},"end":{"line":442,"column":23}},"162":{"start":{"line":445,"column":2},"end":{"line":452,"column":3}},"163":{"start":{"line":446,"column":4},"end":{"line":446,"column":14}},"164":{"start":{"line":447,"column":4},"end":{"line":451,"column":46}},"165":{"start":{"line":448,"column":6},"end":{"line":448,"column":46}},"166":{"start":{"line":449,"column":6},"end":{"line":449,"column":13}},"167":{"start":{"line":450,"column":6},"end":{"line":450,"column":25}},"168":{"start":{"line":454,"column":2},"end":{"line":454,"column":11}},"169":{"start":{"line":467,"column":0},"end":{"line":471,"column":2}},"170":{"start":{"line":468,"column":2},"end":{"line":468,"column":46}},"171":{"start":{"line":469,"column":2},"end":{"line":469,"column":66}},"172":{"start":{"line":470,"column":2},"end":{"line":470,"column":45}},"173":{"start":{"line":473,"column":0},"end":{"line":478,"column":2}},"174":{"start":{"line":474,"column":2},"end":{"line":474,"column":47}},"175":{"start":{"line":475,"column":2},"end":{"line":475,"column":75}},"176":{"start":{"line":476,"column":2},"end":{"line":476,"column":26}},"177":{"start":{"line":477,"column":2},"end":{"line":477,"column":13}},"178":{"start":{"line":519,"column":0},"end":{"line":524,"column":2}},"179":{"start":{"line":526,"column":0},"end":{"line":560,"column":2}},"180":{"start":{"line":527,"column":2},"end":{"line":527,"column":35}},"181":{"start":{"line":529,"column":2},"end":{"line":537,"column":3}},"182":{"start":{"line":530,"column":4},"end":{"line":530,"column":45}},"183":{"start":{"line":531,"column":9},"end":{"line":537,"column":3}},"184":{"start":{"line":532,"column":4},"end":{"line":532,"column":45}},"185":{"start":{"line":533,"column":9},"end":{"line":537,"column":3}},"186":{"start":{"line":534,"column":4},"end":{"line":534,"column":56}},"187":{"start":{"line":536,"column":4},"end":{"line":536,"column":57}},"188":{"start":{"line":539,"column":2},"end":{"line":555,"column":3}},"189":{"start":{"line":540,"column":4},"end":{"line":540,"column":74}},"190":{"start":{"line":543,"column":4},"end":{"line":548,"column":5}},"191":{"start":{"line":544,"column":6},"end":{"line":544,"column":79}},"192":{"start":{"line":546,"column":6},"end":{"line":546,"column":65}},"193":{"start":{"line":547,"column":6},"end":{"line":547,"column":51}},"194":{"start":{"line":550,"column":4},"end":{"line":552,"column":5}},"195":{"start":{"line":551,"column":6},"end":{"line":551,"column":56}},"196":{"start":{"line":554,"column":4},"end":{"line":554,"column":50}},"197":{"start":{"line":557,"column":2},"end":{"line":557,"column":45}},"198":{"start":{"line":559,"column":2},"end":{"line":559,"column":51}},"199":{"start":{"line":562,"column":0},"end":{"line":600,"column":2}},"200":{"start":{"line":563,"column":2},"end":{"line":563,"column":34}},"201":{"start":{"line":565,"column":2},"end":{"line":565,"column":40}},"202":{"start":{"line":566,"column":2},"end":{"line":576,"column":3}},"203":{"start":{"line":567,"column":4},"end":{"line":567,"column":45}},"204":{"start":{"line":568,"column":9},"end":{"line":576,"column":3}},"205":{"start":{"line":569,"column":4},"end":{"line":573,"column":5}},"206":{"start":{"line":570,"column":6},"end":{"line":570,"column":47}},"207":{"start":{"line":572,"column":6},"end":{"line":572,"column":58}},"208":{"start":{"line":575,"column":4},"end":{"line":575,"column":57}},"209":{"start":{"line":578,"column":2},"end":{"line":597,"column":3}},"210":{"start":{"line":579,"column":4},"end":{"line":579,"column":85}},"211":{"start":{"line":580,"column":4},"end":{"line":580,"column":22}},"212":{"start":{"line":583,"column":4},"end":{"line":583,"column":74}},"213":{"start":{"line":584,"column":4},"end":{"line":586,"column":5}},"214":{"start":{"line":585,"column":6},"end":{"line":585,"column":48}},"215":{"start":{"line":588,"column":4},"end":{"line":594,"column":5}},"216":{"start":{"line":589,"column":6},"end":{"line":589,"column":53}},"217":{"start":{"line":590,"column":11},"end":{"line":594,"column":5}},"218":{"start":{"line":591,"column":6},"end":{"line":591,"column":30}},"219":{"start":{"line":593,"column":6},"end":{"line":593,"column":24}},"220":{"start":{"line":596,"column":4},"end":{"line":596,"column":47}},"221":{"start":{"line":599,"column":2},"end":{"line":599,"column":16}},"222":{"start":{"line":624,"column":0},"end":{"line":624,"column":34}},"223":{"start":{"line":627,"column":0},"end":{"line":629,"column":2}},"224":{"start":{"line":628,"column":2},"end":{"line":628,"column":45}},"225":{"start":{"line":631,"column":0},"end":{"line":669,"column":2}},"226":{"start":{"line":633,"column":2},"end":{"line":666,"column":3}},"227":{"start":{"line":635,"column":4},"end":{"line":635,"column":46}},"228":{"start":{"line":638,"column":4},"end":{"line":638,"column":52}},"229":{"start":{"line":643,"column":4},"end":{"line":660,"column":5}},"230":{"start":{"line":644,"column":6},"end":{"line":644,"column":43}},"231":{"start":{"line":645,"column":6},"end":{"line":650,"column":7}},"232":{"start":{"line":646,"column":8},"end":{"line":646,"column":42}},"233":{"start":{"line":648,"column":8},"end":{"line":648,"column":43}},"234":{"start":{"line":649,"column":8},"end":{"line":649,"column":36}},"235":{"start":{"line":652,"column":6},"end":{"line":659,"column":9}},"236":{"start":{"line":665,"column":4},"end":{"line":665,"column":21}},"237":{"start":{"line":668,"column":2},"end":{"line":668,"column":9}},"238":{"start":{"line":677,"column":0},"end":{"line":683,"column":2}},"239":{"start":{"line":678,"column":2},"end":{"line":678,"column":45}},"240":{"start":{"line":679,"column":2},"end":{"line":679,"column":27}},"241":{"start":{"line":680,"column":2},"end":{"line":680,"column":25}},"242":{"start":{"line":681,"column":2},"end":{"line":681,"column":27}},"243":{"start":{"line":682,"column":2},"end":{"line":682,"column":27}},"244":{"start":{"line":686,"column":0},"end":{"line":738,"column":2}},"245":{"start":{"line":689,"column":2},"end":{"line":710,"column":3}},"246":{"start":{"line":690,"column":4},"end":{"line":694,"column":5}},"247":{"start":{"line":691,"column":6},"end":{"line":691,"column":71}},"248":{"start":{"line":692,"column":6},"end":{"line":692,"column":43}},"249":{"start":{"line":693,"column":6},"end":{"line":693,"column":13}},"250":{"start":{"line":695,"column":4},"end":{"line":695,"column":29}},"251":{"start":{"line":700,"column":7},"end":{"line":710,"column":3}},"252":{"start":{"line":701,"column":4},"end":{"line":701,"column":28}},"253":{"start":{"line":702,"column":4},"end":{"line":702,"column":28}},"254":{"start":{"line":703,"column":4},"end":{"line":703,"column":32}},"255":{"start":{"line":704,"column":4},"end":{"line":704,"column":27}},"256":{"start":{"line":709,"column":4},"end":{"line":709,"column":21}},"257":{"start":{"line":715,"column":2},"end":{"line":735,"column":3}},"258":{"start":{"line":716,"column":4},"end":{"line":718,"column":8}},"259":{"start":{"line":717,"column":6},"end":{"line":717,"column":24}},"260":{"start":{"line":719,"column":4},"end":{"line":725,"column":5}},"261":{"start":{"line":720,"column":6},"end":{"line":720,"column":44}},"262":{"start":{"line":722,"column":6},"end":{"line":722,"column":68}},"263":{"start":{"line":723,"column":6},"end":{"line":723,"column":46}},"264":{"start":{"line":724,"column":6},"end":{"line":724,"column":13}},"265":{"start":{"line":726,"column":4},"end":{"line":733,"column":7}},"266":{"start":{"line":734,"column":4},"end":{"line":734,"column":29}},"267":{"start":{"line":737,"column":2},"end":{"line":737,"column":9}},"268":{"start":{"line":743,"column":0},"end":{"line":782,"column":2}},"269":{"start":{"line":784,"column":0},"end":{"line":820,"column":2}},"270":{"start":{"line":826,"column":0},"end":{"line":838,"column":1}},"271":{"start":{"line":827,"column":2},"end":{"line":827,"column":15}},"272":{"start":{"line":828,"column":2},"end":{"line":830,"column":3}},"273":{"start":{"line":829,"column":4},"end":{"line":829,"column":30}},"274":{"start":{"line":832,"column":2},"end":{"line":832,"column":38}},"275":{"start":{"line":833,"column":2},"end":{"line":835,"column":3}},"276":{"start":{"line":834,"column":4},"end":{"line":834,"column":42}},"277":{"start":{"line":837,"column":2},"end":{"line":837,"column":22}},"278":{"start":{"line":841,"column":0},"end":{"line":850,"column":1}},"279":{"start":{"line":842,"column":2},"end":{"line":842,"column":18}},"280":{"start":{"line":843,"column":2},"end":{"line":843,"column":17}},"281":{"start":{"line":844,"column":2},"end":{"line":848,"column":34}},"282":{"start":{"line":845,"column":4},"end":{"line":845,"column":59}},"283":{"start":{"line":846,"column":4},"end":{"line":846,"column":58}},"284":{"start":{"line":847,"column":4},"end":{"line":847,"column":24}},"285":{"start":{"line":849,"column":2},"end":{"line":849,"column":16}},"286":{"start":{"line":853,"column":0},"end":{"line":859,"column":1}},"287":{"start":{"line":854,"column":2},"end":{"line":854,"column":17}},"288":{"start":{"line":855,"column":2},"end":{"line":857,"column":3}},"289":{"start":{"line":856,"column":4},"end":{"line":856,"column":29}},"290":{"start":{"line":858,"column":2},"end":{"line":858,"column":15}}},"branchMap":{"1":{"line":42,"type":"binary-expr","locations":[{"start":{"line":42,"column":16},"end":{"line":42,"column":21}},{"start":{"line":42,"column":25},"end":{"line":42,"column":51}}]},"2":{"line":50,"type":"binary-expr","locations":[{"start":{"line":50,"column":10},"end":{"line":50,"column":59}},{"start":{"line":50,"column":65},"end":{"line":50,"column":86}}]},"3":{"line":117,"type":"if","locations":[{"start":{"line":117,"column":2},"end":{"line":117,"column":2}},{"start":{"line":117,"column":2},"end":{"line":117,"column":2}}]},"4":{"line":122,"type":"if","locations":[{"start":{"line":122,"column":4},"end":{"line":122,"column":4}},{"start":{"line":122,"column":4},"end":{"line":122,"column":4}}]},"5":{"line":135,"type":"if","locations":[{"start":{"line":135,"column":4},"end":{"line":135,"column":4}},{"start":{"line":135,"column":4},"end":{"line":135,"column":4}}]},"6":{"line":141,"type":"if","locations":[{"start":{"line":141,"column":4},"end":{"line":141,"column":4}},{"start":{"line":141,"column":4},"end":{"line":141,"column":4}}]},"7":{"line":142,"type":"if","locations":[{"start":{"line":142,"column":6},"end":{"line":142,"column":6}},{"start":{"line":142,"column":6},"end":{"line":142,"column":6}}]},"8":{"line":169,"type":"if","locations":[{"start":{"line":169,"column":2},"end":{"line":169,"column":2}},{"start":{"line":169,"column":2},"end":{"line":169,"column":2}}]},"9":{"line":171,"type":"if","locations":[{"start":{"line":171,"column":4},"end":{"line":171,"column":4}},{"start":{"line":171,"column":4},"end":{"line":171,"column":4}}]},"10":{"line":184,"type":"if","locations":[{"start":{"line":184,"column":2},"end":{"line":184,"column":2}},{"start":{"line":184,"column":2},"end":{"line":184,"column":2}}]},"11":{"line":186,"type":"if","locations":[{"start":{"line":186,"column":4},"end":{"line":186,"column":4}},{"start":{"line":186,"column":4},"end":{"line":186,"column":4}}]},"12":{"line":208,"type":"if","locations":[{"start":{"line":208,"column":4},"end":{"line":208,"column":4}},{"start":{"line":208,"column":4},"end":{"line":208,"column":4}}]},"13":{"line":232,"type":"if","locations":[{"start":{"line":232,"column":4},"end":{"line":232,"column":4}},{"start":{"line":232,"column":4},"end":{"line":232,"column":4}}]},"14":{"line":251,"type":"binary-expr","locations":[{"start":{"line":251,"column":15},"end":{"line":251,"column":18}},{"start":{"line":251,"column":22},"end":{"line":251,"column":34}}]},"15":{"line":253,"type":"cond-expr","locations":[{"start":{"line":253,"column":44},"end":{"line":253,"column":82}},{"start":{"line":254,"column":44},"end":{"line":254,"column":83}}]},"16":{"line":290,"type":"if","locations":[{"start":{"line":290,"column":4},"end":{"line":290,"column":4}},{"start":{"line":290,"column":4},"end":{"line":290,"column":4}}]},"17":{"line":291,"type":"if","locations":[{"start":{"line":291,"column":6},"end":{"line":291,"column":6}},{"start":{"line":291,"column":6},"end":{"line":291,"column":6}}]},"18":{"line":312,"type":"binary-expr","locations":[{"start":{"line":312,"column":15},"end":{"line":312,"column":18}},{"start":{"line":312,"column":22},"end":{"line":312,"column":34}}]},"19":{"line":314,"type":"cond-expr","locations":[{"start":{"line":314,"column":44},"end":{"line":314,"column":82}},{"start":{"line":315,"column":44},"end":{"line":315,"column":83}}]},"20":{"line":335,"type":"if","locations":[{"start":{"line":335,"column":4},"end":{"line":335,"column":4}},{"start":{"line":335,"column":4},"end":{"line":335,"column":4}}]},"21":{"line":351,"type":"if","locations":[{"start":{"line":351,"column":4},"end":{"line":351,"column":4}},{"start":{"line":351,"column":4},"end":{"line":351,"column":4}}]},"22":{"line":360,"type":"if","locations":[{"start":{"line":360,"column":4},"end":{"line":360,"column":4}},{"start":{"line":360,"column":4},"end":{"line":360,"column":4}}]},"23":{"line":398,"type":"if","locations":[{"start":{"line":398,"column":2},"end":{"line":398,"column":2}},{"start":{"line":398,"column":2},"end":{"line":398,"column":2}}]},"24":{"line":403,"type":"if","locations":[{"start":{"line":403,"column":2},"end":{"line":403,"column":2}},{"start":{"line":403,"column":2},"end":{"line":403,"column":2}}]},"25":{"line":413,"type":"if","locations":[{"start":{"line":413,"column":4},"end":{"line":413,"column":4}},{"start":{"line":413,"column":4},"end":{"line":413,"column":4}}]},"26":{"line":441,"type":"if","locations":[{"start":{"line":441,"column":2},"end":{"line":441,"column":2}},{"start":{"line":441,"column":2},"end":{"line":441,"column":2}}]},"27":{"line":445,"type":"if","locations":[{"start":{"line":445,"column":2},"end":{"line":445,"column":2}},{"start":{"line":445,"column":2},"end":{"line":445,"column":2}}]},"28":{"line":529,"type":"if","locations":[{"start":{"line":529,"column":2},"end":{"line":529,"column":2}},{"start":{"line":529,"column":2},"end":{"line":529,"column":2}}]},"29":{"line":531,"type":"if","locations":[{"start":{"line":531,"column":9},"end":{"line":531,"column":9}},{"start":{"line":531,"column":9},"end":{"line":531,"column":9}}]},"30":{"line":533,"type":"if","locations":[{"start":{"line":533,"column":9},"end":{"line":533,"column":9}},{"start":{"line":533,"column":9},"end":{"line":533,"column":9}}]},"31":{"line":539,"type":"if","locations":[{"start":{"line":539,"column":2},"end":{"line":539,"column":2}},{"start":{"line":539,"column":2},"end":{"line":539,"column":2}}]},"32":{"line":543,"type":"if","locations":[{"start":{"line":543,"column":4},"end":{"line":543,"column":4}},{"start":{"line":543,"column":4},"end":{"line":543,"column":4}}]},"33":{"line":550,"type":"if","locations":[{"start":{"line":550,"column":4},"end":{"line":550,"column":4}},{"start":{"line":550,"column":4},"end":{"line":550,"column":4}}]},"34":{"line":566,"type":"if","locations":[{"start":{"line":566,"column":2},"end":{"line":566,"column":2}},{"start":{"line":566,"column":2},"end":{"line":566,"column":2}}]},"35":{"line":568,"type":"if","locations":[{"start":{"line":568,"column":9},"end":{"line":568,"column":9}},{"start":{"line":568,"column":9},"end":{"line":568,"column":9}}]},"36":{"line":569,"type":"if","locations":[{"start":{"line":569,"column":4},"end":{"line":569,"column":4}},{"start":{"line":569,"column":4},"end":{"line":569,"column":4}}]},"37":{"line":578,"type":"if","locations":[{"start":{"line":578,"column":2},"end":{"line":578,"column":2}},{"start":{"line":578,"column":2},"end":{"line":578,"column":2}}]},"38":{"line":584,"type":"if","locations":[{"start":{"line":584,"column":4},"end":{"line":584,"column":4}},{"start":{"line":584,"column":4},"end":{"line":584,"column":4}}]},"39":{"line":588,"type":"if","locations":[{"start":{"line":588,"column":4},"end":{"line":588,"column":4}},{"start":{"line":588,"column":4},"end":{"line":588,"column":4}}]},"40":{"line":590,"type":"if","locations":[{"start":{"line":590,"column":11},"end":{"line":590,"column":11}},{"start":{"line":590,"column":11},"end":{"line":590,"column":11}}]},"41":{"line":633,"type":"if","locations":[{"start":{"line":633,"column":2},"end":{"line":633,"column":2}},{"start":{"line":633,"column":2},"end":{"line":633,"column":2}}]},"42":{"line":633,"type":"binary-expr","locations":[{"start":{"line":633,"column":6},"end":{"line":633,"column":30}},{"start":{"line":633,"column":34},"end":{"line":633,"column":63}}]},"43":{"line":645,"type":"if","locations":[{"start":{"line":645,"column":6},"end":{"line":645,"column":6}},{"start":{"line":645,"column":6},"end":{"line":645,"column":6}}]},"44":{"line":689,"type":"if","locations":[{"start":{"line":689,"column":2},"end":{"line":689,"column":2}},{"start":{"line":689,"column":2},"end":{"line":689,"column":2}}]},"45":{"line":690,"type":"if","locations":[{"start":{"line":690,"column":4},"end":{"line":690,"column":4}},{"start":{"line":690,"column":4},"end":{"line":690,"column":4}}]},"46":{"line":690,"type":"binary-expr","locations":[{"start":{"line":690,"column":9},"end":{"line":690,"column":34}},{"start":{"line":690,"column":40},"end":{"line":690,"column":69}}]},"47":{"line":700,"type":"if","locations":[{"start":{"line":700,"column":7},"end":{"line":700,"column":7}},{"start":{"line":700,"column":7},"end":{"line":700,"column":7}}]},"48":{"line":700,"type":"binary-expr","locations":[{"start":{"line":700,"column":12},"end":{"line":700,"column":36}},{"start":{"line":700,"column":42},"end":{"line":700,"column":71}}]},"49":{"line":715,"type":"if","locations":[{"start":{"line":715,"column":2},"end":{"line":715,"column":2}},{"start":{"line":715,"column":2},"end":{"line":715,"column":2}}]},"50":{"line":715,"type":"binary-expr","locations":[{"start":{"line":715,"column":6},"end":{"line":715,"column":22}},{"start":{"line":715,"column":27},"end":{"line":715,"column":50}},{"start":{"line":715,"column":54},"end":{"line":715,"column":82}}]}}},"/data/upstream/node-http2/lib/logging.js":{"path":"/data/upstream/node-http2/lib/logging.js","s":{"1":1,"2":1,"3":0,"4":0,"5":0,"6":1,"7":1,"8":105,"9":1},"b":{"1":[0,1]},"f":{"1":1090,"2":105},"fnMap":{"1":{"name":"noop","line":15,"loc":{"start":{"line":15,"column":2},"end":{"line":15,"column":18}}},"2":{"name":"(anonymous_2)","line":24,"loc":{"start":{"line":24,"column":11},"end":{"line":24,"column":22}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":22}},"2":{"start":{"line":3,"column":0},"end":{"line":28,"column":1}},"3":{"start":{"line":4,"column":2},"end":{"line":4,"column":33}},"4":{"start":{"line":6,"column":2},"end":{"line":10,"column":5}},"5":{"start":{"line":12,"column":2},"end":{"line":12,"column":49}},"6":{"start":{"line":15,"column":2},"end":{"line":15,"column":20}},"7":{"start":{"line":16,"column":2},"end":{"line":25,"column":4}},"8":{"start":{"line":24,"column":24},"end":{"line":24,"column":36}},"9":{"start":{"line":27,"column":2},"end":{"line":27,"column":27}}},"branchMap":{"1":{"line":3,"type":"if","locations":[{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},{"start":{"line":3,"column":0},"end":{"line":3,"column":0}}]}}},"/data/upstream/node-http2/lib/connection.js":{"path":"/data/upstream/node-http2/lib/connection.js","s":{"1":1,"2":1,"3":1,"4":1,"5":18,"6":18,"7":18,"8":18,"9":18,"10":18,"11":1,"12":1,"13":1,"14":18,"15":18,"16":18,"17":18,"18":18,"19":18,"20":18,"21":18,"22":1,"23":139,"24":1,"25":23,"26":23,"27":23,"28":0,"29":0,"30":1,"31":16,"32":16,"33":1,"34":1,"35":1,"36":1,"37":16,"38":16,"39":16,"40":16,"41":16,"42":1,"43":16,"44":16,"45":16,"46":1,"47":9,"48":9,"49":2,"50":2,"51":0,"52":7,"53":7,"54":7,"55":7,"56":7,"57":1,"58":9,"59":9,"60":9,"61":9,"62":9,"63":1,"64":9,"65":0,"66":9,"67":9,"68":9,"69":3,"70":3,"71":3,"72":9,"73":9,"74":0,"75":9,"76":9,"77":9,"78":1,"79":123,"80":123,"81":123,"82":120,"83":120,"84":120,"85":120,"86":120,"87":26,"88":26,"89":3,"90":3,"91":26,"92":26,"93":26,"94":0,"95":26,"96":0,"97":123,"98":1,"99":47,"100":47,"101":47,"102":6,"103":46,"104":3,"105":45,"106":45,"107":1,"108":1,"109":18,"110":18,"111":18,"112":18,"113":18,"114":0,"115":0,"116":18,"117":1,"118":18,"119":34,"120":1,"121":18,"122":1,"123":18,"124":18,"125":18,"126":1,"127":2,"128":2,"129":2,"130":32,"131":2,"132":1,"133":2,"134":2,"135":2,"136":2,"137":2,"138":1,"139":4,"140":2,"141":2,"142":2,"143":2,"144":2,"145":0,"146":2,"147":2,"148":1,"149":0,"150":0,"151":0,"152":1,"153":0,"154":0,"155":1,"156":18,"157":18,"158":16,"159":18,"160":18,"161":18,"162":1,"163":1,"164":18,"165":0,"166":0,"167":18,"168":18,"169":18,"170":24,"171":1,"172":2,"173":2,"174":2,"175":0,"176":0,"177":0},"b":{"1":[18,2],"2":[23,0],"3":[23,5,1,1],"4":[2,7],"5":[9,7],"6":[0,9],"7":[0,9],"8":[3,23],"9":[0,26],"10":[0,26],"11":[6,41],"12":[3,43],"13":[18,2],"14":[18,0],"15":[18,18],"16":[2,2],"17":[2,0],"18":[0,0],"19":[0,18],"20":[18,0],"21":[2,0],"22":[0,0]},"f":{"1":18,"2":18,"3":139,"4":23,"5":16,"6":1,"7":16,"8":16,"9":9,"10":9,"11":9,"12":3,"13":3,"14":9,"15":123,"16":47,"17":18,"18":18,"19":18,"20":18,"21":18,"22":2,"23":2,"24":4,"25":0,"26":0,"27":18,"28":16,"29":18,"30":18,"31":24,"32":2},"fnMap":{"1":{"name":"Connection","line":36,"loc":{"start":{"line":36,"column":0},"end":{"line":36,"column":50}}},"2":{"name":"_initializeStreamManagement","line":96,"loc":{"start":{"line":96,"column":51},"end":{"line":96,"column":103}}},"3":{"name":"_getIdOf","line":121,"loc":{"start":{"line":121,"column":32},"end":{"line":121,"column":58}}},"4":{"name":"_writeControlFrame","line":127,"loc":{"start":{"line":127,"column":42},"end":{"line":127,"column":77}}},"5":{"name":"_updateStreamLimit","line":139,"loc":{"start":{"line":139,"column":42},"end":{"line":139,"column":86}}},"6":{"name":"_decreaseStreamCount","line":145,"loc":{"start":{"line":145,"column":44},"end":{"line":145,"column":76}}},"7":{"name":"_newStream","line":158,"loc":{"start":{"line":158,"column":34},"end":{"line":158,"column":58}}},"8":{"name":"_activateStream","line":166,"loc":{"start":{"line":166,"column":39},"end":{"line":166,"column":72}}},"9":{"name":"_createIncomingStream","line":179,"loc":{"start":{"line":179,"column":45},"end":{"line":179,"column":80}}},"10":{"name":"createStream","line":196,"loc":{"start":{"line":196,"column":36},"end":{"line":196,"column":60}}},"11":{"name":"tryToActivate","line":209,"loc":{"start":{"line":209,"column":2},"end":{"line":209,"column":27}}},"12":{"name":"(anonymous_12)","line":221,"loc":{"start":{"line":221,"column":35},"end":{"line":221,"column":46}}},"13":{"name":"(anonymous_13)","line":223,"loc":{"start":{"line":223,"column":32},"end":{"line":223,"column":43}}},"14":{"name":"(anonymous_14)","line":228,"loc":{"start":{"line":228,"column":24},"end":{"line":228,"column":35}}},"15":{"name":"_send","line":247,"loc":{"start":{"line":247,"column":29},"end":{"line":247,"column":46}}},"16":{"name":"_receive","line":280,"loc":{"start":{"line":280,"column":32},"end":{"line":280,"column":63}}},"17":{"name":"_initializeSettingsManagement","line":310,"loc":{"start":{"line":310,"column":53},"end":{"line":310,"column":102}}},"18":{"name":"(anonymous_18)","line":316,"loc":{"start":{"line":316,"column":25},"end":{"line":316,"column":41}}},"19":{"name":"_receiveSettings","line":330,"loc":{"start":{"line":330,"column":40},"end":{"line":330,"column":73}}},"20":{"name":"set","line":337,"loc":{"start":{"line":337,"column":27},"end":{"line":337,"column":50}}},"21":{"name":"_initializeLifecycleManagement","line":355,"loc":{"start":{"line":355,"column":54},"end":{"line":355,"column":96}}},"22":{"name":"_generatePingId","line":362,"loc":{"start":{"line":362,"column":39},"end":{"line":362,"column":66}}},"23":{"name":"ping","line":373,"loc":{"start":{"line":373,"column":28},"end":{"line":373,"column":52}}},"24":{"name":"_receivePing","line":390,"loc":{"start":{"line":390,"column":36},"end":{"line":390,"column":65}}},"25":{"name":"close","line":415,"loc":{"start":{"line":415,"column":29},"end":{"line":415,"column":51}}},"26":{"name":"_receiveGoaway","line":426,"loc":{"start":{"line":426,"column":38},"end":{"line":426,"column":69}}},"27":{"name":"_initializeFlowControl","line":434,"loc":{"start":{"line":434,"column":46},"end":{"line":434,"column":80}}},"28":{"name":"(anonymous_28)","line":437,"loc":{"start":{"line":437,"column":24},"end":{"line":437,"column":41}}},"29":{"name":"noop","line":442,"loc":{"start":{"line":442,"column":50},"end":{"line":442,"column":66}}},"30":{"name":"_setInitialStreamWindowSize","line":455,"loc":{"start":{"line":455,"column":51},"end":{"line":455,"column":94}}},"31":{"name":"(anonymous_31)","line":462,"loc":{"start":{"line":462,"column":29},"end":{"line":462,"column":46}}},"32":{"name":"_setStreamFlowControl","line":470,"loc":{"start":{"line":470,"column":45},"end":{"line":470,"column":85}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":35}},"2":{"start":{"line":10,"column":0},"end":{"line":10,"column":34}},"3":{"start":{"line":12,"column":0},"end":{"line":12,"column":32}},"4":{"start":{"line":36,"column":0},"end":{"line":56,"column":1}},"5":{"start":{"line":38,"column":2},"end":{"line":38,"column":21}},"6":{"start":{"line":41,"column":2},"end":{"line":41,"column":71}},"7":{"start":{"line":44,"column":2},"end":{"line":44,"column":50}},"8":{"start":{"line":47,"column":2},"end":{"line":47,"column":47}},"9":{"start":{"line":50,"column":2},"end":{"line":50,"column":40}},"10":{"start":{"line":53,"column":2},"end":{"line":53,"column":32}},"11":{"start":{"line":57,"column":0},"end":{"line":57,"column":93}},"12":{"start":{"line":93,"column":0},"end":{"line":93,"column":41}},"13":{"start":{"line":96,"column":0},"end":{"line":119,"column":2}},"14":{"start":{"line":103,"column":2},"end":{"line":103,"column":24}},"15":{"start":{"line":105,"column":2},"end":{"line":105,"column":30}},"16":{"start":{"line":108,"column":2},"end":{"line":108,"column":37}},"17":{"start":{"line":109,"column":2},"end":{"line":109,"column":31}},"18":{"start":{"line":112,"column":2},"end":{"line":112,"column":84}},"19":{"start":{"line":116,"column":2},"end":{"line":116,"column":24}},"20":{"start":{"line":117,"column":2},"end":{"line":117,"column":31}},"21":{"start":{"line":118,"column":2},"end":{"line":118,"column":70}},"22":{"start":{"line":121,"column":0},"end":{"line":123,"column":2}},"23":{"start":{"line":122,"column":2},"end":{"line":122,"column":42}},"24":{"start":{"line":127,"column":0},"end":{"line":136,"column":2}},"25":{"start":{"line":128,"column":2},"end":{"line":135,"column":3}},"26":{"start":{"line":130,"column":4},"end":{"line":130,"column":74}},"27":{"start":{"line":131,"column":4},"end":{"line":131,"column":33}},"28":{"start":{"line":133,"column":4},"end":{"line":133,"column":72}},"29":{"start":{"line":134,"column":4},"end":{"line":134,"column":41}},"30":{"start":{"line":139,"column":0},"end":{"line":142,"column":2}},"31":{"start":{"line":140,"column":2},"end":{"line":140,"column":37}},"32":{"start":{"line":141,"column":2},"end":{"line":141,"column":34}},"33":{"start":{"line":145,"column":0},"end":{"line":148,"column":2}},"34":{"start":{"line":146,"column":2},"end":{"line":146,"column":25}},"35":{"start":{"line":147,"column":2},"end":{"line":147,"column":34}},"36":{"start":{"line":158,"column":0},"end":{"line":164,"column":2}},"37":{"start":{"line":159,"column":2},"end":{"line":159,"column":59}},"38":{"start":{"line":160,"column":2},"end":{"line":160,"column":62}},"39":{"start":{"line":161,"column":2},"end":{"line":161,"column":32}},"40":{"start":{"line":162,"column":2},"end":{"line":162,"column":38}},"41":{"start":{"line":163,"column":2},"end":{"line":163,"column":16}},"42":{"start":{"line":166,"column":0},"end":{"line":170,"column":2}},"43":{"start":{"line":167,"column":2},"end":{"line":167,"column":78}},"44":{"start":{"line":168,"column":2},"end":{"line":168,"column":38}},"45":{"start":{"line":169,"column":2},"end":{"line":169,"column":58}},"46":{"start":{"line":179,"column":0},"end":{"line":193,"column":2}},"47":{"start":{"line":180,"column":2},"end":{"line":180,"column":61}},"48":{"start":{"line":182,"column":2},"end":{"line":186,"column":3}},"49":{"start":{"line":183,"column":4},"end":{"line":183,"column":116}},"50":{"start":{"line":184,"column":4},"end":{"line":184,"column":41}},"51":{"start":{"line":185,"column":4},"end":{"line":185,"column":21}},"52":{"start":{"line":188,"column":2},"end":{"line":188,"column":32}},"53":{"start":{"line":189,"column":2},"end":{"line":189,"column":35}},"54":{"start":{"line":190,"column":2},"end":{"line":190,"column":31}},"55":{"start":{"line":191,"column":2},"end":{"line":191,"column":34}},"56":{"start":{"line":192,"column":2},"end":{"line":192,"column":16}},"57":{"start":{"line":196,"column":0},"end":{"line":240,"column":2}},"58":{"start":{"line":198,"column":2},"end":{"line":198,"column":30}},"59":{"start":{"line":199,"column":2},"end":{"line":199,"column":26}},"60":{"start":{"line":201,"column":2},"end":{"line":201,"column":70}},"61":{"start":{"line":204,"column":2},"end":{"line":204,"column":35}},"62":{"start":{"line":208,"column":2},"end":{"line":208,"column":18}},"63":{"start":{"line":209,"column":2},"end":{"line":215,"column":3}},"64":{"start":{"line":210,"column":4},"end":{"line":214,"column":5}},"65":{"start":{"line":211,"column":6},"end":{"line":211,"column":53}},"66":{"start":{"line":213,"column":6},"end":{"line":213,"column":35}},"67":{"start":{"line":220,"column":2},"end":{"line":220,"column":29}},"68":{"start":{"line":221,"column":2},"end":{"line":226,"column":5}},"69":{"start":{"line":222,"column":4},"end":{"line":222,"column":26}},"70":{"start":{"line":223,"column":4},"end":{"line":225,"column":7}},"71":{"start":{"line":224,"column":6},"end":{"line":224,"column":29}},"72":{"start":{"line":228,"column":2},"end":{"line":234,"column":5}},"73":{"start":{"line":229,"column":4},"end":{"line":233,"column":5}},"74":{"start":{"line":230,"column":6},"end":{"line":230,"column":49}},"75":{"start":{"line":232,"column":6},"end":{"line":232,"column":22}},"76":{"start":{"line":237,"column":2},"end":{"line":237,"column":64}},"77":{"start":{"line":239,"column":2},"end":{"line":239,"column":16}},"78":{"start":{"line":247,"column":0},"end":{"line":276,"column":2}},"79":{"start":{"line":248,"column":2},"end":{"line":248,"column":62}},"80":{"start":{"line":251,"column":0},"end":{"line":273,"column":3}},"81":{"start":{"line":252,"column":2},"end":{"line":273,"column":3}},"82":{"start":{"line":253,"column":4},"end":{"line":253,"column":43}},"83":{"start":{"line":254,"column":4},"end":{"line":254,"column":35}},"84":{"start":{"line":255,"column":4},"end":{"line":255,"column":14}},"85":{"start":{"line":256,"column":4},"end":{"line":256,"column":73}},"86":{"start":{"line":257,"column":4},"end":{"line":272,"column":5}},"87":{"start":{"line":258,"column":6},"end":{"line":258,"column":24}},"88":{"start":{"line":259,"column":6},"end":{"line":262,"column":7}},"89":{"start":{"line":260,"column":8},"end":{"line":260,"column":51}},"90":{"start":{"line":261,"column":8},"end":{"line":261,"column":69}},"91":{"start":{"line":264,"column":6},"end":{"line":264,"column":91}},"92":{"start":{"line":265,"column":6},"end":{"line":265,"column":59}},"93":{"start":{"line":267,"column":6},"end":{"line":271,"column":7}},"94":{"start":{"line":268,"column":8},"end":{"line":268,"column":29}},"95":{"start":{"line":269,"column":13},"end":{"line":271,"column":7}},"96":{"start":{"line":270,"column":8},"end":{"line":270,"column":26}},"97":{"start":{"line":275,"column":2},"end":{"line":275,"column":90}},"98":{"start":{"line":280,"column":0},"end":{"line":300,"column":2}},"99":{"start":{"line":281,"column":2},"end":{"line":281,"column":65}},"100":{"start":{"line":284,"column":2},"end":{"line":284,"column":46}},"101":{"start":{"line":287,"column":2},"end":{"line":289,"column":3}},"102":{"start":{"line":288,"column":4},"end":{"line":288,"column":54}},"103":{"start":{"line":292,"column":2},"end":{"line":294,"column":3}},"104":{"start":{"line":293,"column":4},"end":{"line":293,"column":78}},"105":{"start":{"line":297,"column":2},"end":{"line":297,"column":31}},"106":{"start":{"line":299,"column":2},"end":{"line":299,"column":9}},"107":{"start":{"line":305,"column":0},"end":{"line":307,"column":2}},"108":{"start":{"line":310,"column":0},"end":{"line":327,"column":2}},"109":{"start":{"line":312,"column":2},"end":{"line":312,"column":87}},"110":{"start":{"line":313,"column":2},"end":{"line":313,"column":40}},"111":{"start":{"line":316,"column":2},"end":{"line":323,"column":5}},"112":{"start":{"line":317,"column":4},"end":{"line":322,"column":5}},"113":{"start":{"line":318,"column":6},"end":{"line":318,"column":93}},"114":{"start":{"line":320,"column":6},"end":{"line":320,"column":99}},"115":{"start":{"line":321,"column":6},"end":{"line":321,"column":25}},"116":{"start":{"line":326,"column":2},"end":{"line":326,"column":45}},"117":{"start":{"line":330,"column":0},"end":{"line":334,"column":2}},"118":{"start":{"line":331,"column":2},"end":{"line":333,"column":3}},"119":{"start":{"line":332,"column":4},"end":{"line":332,"column":42}},"120":{"start":{"line":337,"column":0},"end":{"line":343,"column":2}},"121":{"start":{"line":338,"column":2},"end":{"line":342,"column":5}},"122":{"start":{"line":355,"column":0},"end":{"line":359,"column":2}},"123":{"start":{"line":356,"column":2},"end":{"line":356,"column":19}},"124":{"start":{"line":357,"column":2},"end":{"line":357,"column":37}},"125":{"start":{"line":358,"column":2},"end":{"line":358,"column":41}},"126":{"start":{"line":362,"column":0},"end":{"line":370,"column":2}},"127":{"start":{"line":363,"column":2},"end":{"line":368,"column":29}},"128":{"start":{"line":364,"column":4},"end":{"line":364,"column":16}},"129":{"start":{"line":365,"column":4},"end":{"line":367,"column":5}},"130":{"start":{"line":366,"column":6},"end":{"line":366,"column":54}},"131":{"start":{"line":369,"column":2},"end":{"line":369,"column":12}},"132":{"start":{"line":373,"column":0},"end":{"line":387,"column":2}},"133":{"start":{"line":374,"column":2},"end":{"line":374,"column":34}},"134":{"start":{"line":375,"column":2},"end":{"line":375,"column":35}},"135":{"start":{"line":376,"column":2},"end":{"line":376,"column":29}},"136":{"start":{"line":378,"column":2},"end":{"line":378,"column":51}},"137":{"start":{"line":379,"column":2},"end":{"line":386,"column":5}},"138":{"start":{"line":390,"column":0},"end":{"line":412,"column":2}},"139":{"start":{"line":391,"column":2},"end":{"line":411,"column":3}},"140":{"start":{"line":392,"column":4},"end":{"line":392,"column":40}},"141":{"start":{"line":393,"column":4},"end":{"line":399,"column":5}},"142":{"start":{"line":394,"column":6},"end":{"line":394,"column":76}},"143":{"start":{"line":395,"column":6},"end":{"line":395,"column":24}},"144":{"start":{"line":396,"column":6},"end":{"line":396,"column":29}},"145":{"start":{"line":398,"column":6},"end":{"line":398,"column":71}},"146":{"start":{"line":402,"column":4},"end":{"line":402,"column":61}},"147":{"start":{"line":403,"column":4},"end":{"line":410,"column":7}},"148":{"start":{"line":415,"column":0},"end":{"line":424,"column":2}},"149":{"start":{"line":416,"column":2},"end":{"line":416,"column":61}},"150":{"start":{"line":417,"column":2},"end":{"line":422,"column":5}},"151":{"start":{"line":423,"column":2},"end":{"line":423,"column":18}},"152":{"start":{"line":426,"column":0},"end":{"line":429,"column":2}},"153":{"start":{"line":427,"column":2},"end":{"line":427,"column":76}},"154":{"start":{"line":428,"column":2},"end":{"line":428,"column":18}},"155":{"start":{"line":434,"column":0},"end":{"line":446,"column":2}},"156":{"start":{"line":436,"column":2},"end":{"line":436,"column":61}},"157":{"start":{"line":437,"column":2},"end":{"line":439,"column":5}},"158":{"start":{"line":438,"column":4},"end":{"line":438,"column":68}},"159":{"start":{"line":440,"column":2},"end":{"line":440,"column":76}},"160":{"start":{"line":441,"column":2},"end":{"line":441,"column":71}},"161":{"start":{"line":442,"column":2},"end":{"line":442,"column":69}},"162":{"start":{"line":449,"column":0},"end":{"line":449,"column":39}},"163":{"start":{"line":455,"column":0},"end":{"line":466,"column":2}},"164":{"start":{"line":456,"column":2},"end":{"line":465,"column":3}},"165":{"start":{"line":457,"column":4},"end":{"line":457,"column":112}},"166":{"start":{"line":458,"column":4},"end":{"line":458,"column":45}},"167":{"start":{"line":460,"column":4},"end":{"line":460,"column":76}},"168":{"start":{"line":461,"column":4},"end":{"line":461,"column":41}},"169":{"start":{"line":462,"column":4},"end":{"line":464,"column":7}},"170":{"start":{"line":463,"column":6},"end":{"line":463,"column":45}},"171":{"start":{"line":470,"column":0},"end":{"line":478,"column":2}},"172":{"start":{"line":471,"column":2},"end":{"line":477,"column":3}},"173":{"start":{"line":472,"column":4},"end":{"line":472,"column":35}},"174":{"start":{"line":473,"column":4},"end":{"line":473,"column":47}},"175":{"start":{"line":474,"column":9},"end":{"line":477,"column":3}},"176":{"start":{"line":475,"column":4},"end":{"line":475,"column":81}},"177":{"start":{"line":476,"column":4},"end":{"line":476,"column":45}}},"branchMap":{"1":{"line":41,"type":"binary-expr","locations":[{"start":{"line":41,"column":15},"end":{"line":41,"column":18}},{"start":{"line":41,"column":22},"end":{"line":41,"column":34}}]},"2":{"line":128,"type":"if","locations":[{"start":{"line":128,"column":2},"end":{"line":128,"column":2}},{"start":{"line":128,"column":2},"end":{"line":128,"column":2}}]},"3":{"line":128,"type":"binary-expr","locations":[{"start":{"line":128,"column":7},"end":{"line":128,"column":32}},{"start":{"line":128,"column":38},"end":{"line":128,"column":59}},{"start":{"line":129,"column":7},"end":{"line":129,"column":30}},{"start":{"line":129,"column":36},"end":{"line":129,"column":66}}]},"4":{"line":182,"type":"if","locations":[{"start":{"line":182,"column":2},"end":{"line":182,"column":2}},{"start":{"line":182,"column":2},"end":{"line":182,"column":2}}]},"5":{"line":182,"type":"binary-expr","locations":[{"start":{"line":182,"column":7},"end":{"line":182,"column":37}},{"start":{"line":182,"column":43},"end":{"line":182,"column":78}}]},"6":{"line":210,"type":"if","locations":[{"start":{"line":210,"column":4},"end":{"line":210,"column":4}},{"start":{"line":210,"column":4},"end":{"line":210,"column":4}}]},"7":{"line":229,"type":"if","locations":[{"start":{"line":229,"column":4},"end":{"line":229,"column":4}},{"start":{"line":229,"column":4},"end":{"line":229,"column":4}}]},"8":{"line":259,"type":"if","locations":[{"start":{"line":259,"column":6},"end":{"line":259,"column":6}},{"start":{"line":259,"column":6},"end":{"line":259,"column":6}}]},"9":{"line":267,"type":"if","locations":[{"start":{"line":267,"column":6},"end":{"line":267,"column":6}},{"start":{"line":267,"column":6},"end":{"line":267,"column":6}}]},"10":{"line":269,"type":"if","locations":[{"start":{"line":269,"column":13},"end":{"line":269,"column":13}},{"start":{"line":269,"column":13},"end":{"line":269,"column":13}}]},"11":{"line":287,"type":"if","locations":[{"start":{"line":287,"column":2},"end":{"line":287,"column":2}},{"start":{"line":287,"column":2},"end":{"line":287,"column":2}}]},"12":{"line":292,"type":"if","locations":[{"start":{"line":292,"column":2},"end":{"line":292,"column":2}},{"start":{"line":292,"column":2},"end":{"line":292,"column":2}}]},"13":{"line":313,"type":"binary-expr","locations":[{"start":{"line":313,"column":11},"end":{"line":313,"column":19}},{"start":{"line":313,"column":23},"end":{"line":313,"column":38}}]},"14":{"line":317,"type":"if","locations":[{"start":{"line":317,"column":4},"end":{"line":317,"column":4}},{"start":{"line":317,"column":4},"end":{"line":317,"column":4}}]},"15":{"line":317,"type":"binary-expr","locations":[{"start":{"line":317,"column":9},"end":{"line":317,"column":27}},{"start":{"line":317,"column":33},"end":{"line":317,"column":58}}]},"16":{"line":391,"type":"if","locations":[{"start":{"line":391,"column":2},"end":{"line":391,"column":2}},{"start":{"line":391,"column":2},"end":{"line":391,"column":2}}]},"17":{"line":393,"type":"if","locations":[{"start":{"line":393,"column":4},"end":{"line":393,"column":4}},{"start":{"line":393,"column":4},"end":{"line":393,"column":4}}]},"18":{"line":421,"type":"binary-expr","locations":[{"start":{"line":421,"column":11},"end":{"line":421,"column":16}},{"start":{"line":421,"column":20},"end":{"line":421,"column":30}}]},"19":{"line":456,"type":"if","locations":[{"start":{"line":456,"column":2},"end":{"line":456,"column":2}},{"start":{"line":456,"column":2},"end":{"line":456,"column":2}}]},"20":{"line":456,"type":"binary-expr","locations":[{"start":{"line":456,"column":7},"end":{"line":456,"column":49}},{"start":{"line":456,"column":55},"end":{"line":456,"column":72}}]},"21":{"line":471,"type":"if","locations":[{"start":{"line":471,"column":2},"end":{"line":471,"column":2}},{"start":{"line":471,"column":2},"end":{"line":471,"column":2}}]},"22":{"line":474,"type":"if","locations":[{"start":{"line":474,"column":9},"end":{"line":474,"column":9}},{"start":{"line":474,"column":9},"end":{"line":474,"column":9}}]}}},"/data/upstream/node-http2/lib/flow.js":{"path":"/data/upstream/node-http2/lib/flow.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":42,"8":42,"9":42,"10":42,"11":42,"12":42,"13":42,"14":1,"15":1,"16":0,"17":1,"18":77,"19":77,"20":6,"21":77,"22":8,"23":8,"24":8,"25":7,"26":8,"27":69,"28":75,"29":5,"30":1,"31":7,"32":7,"33":3,"34":3,"35":1,"36":0,"37":0,"38":1,"39":1,"40":0,"41":1,"42":341,"43":341,"44":0,"45":0,"46":341,"47":1,"48":27,"49":27,"50":27,"51":0,"52":27,"53":1,"54":83,"55":83,"56":83,"57":83,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":83,"66":83,"67":83,"68":83,"69":12,"70":12,"71":12,"72":83,"73":83,"74":83,"75":0,"76":83,"77":1,"78":57,"79":0,"80":57,"81":57,"82":57,"83":57,"84":57,"85":0,"86":0,"87":1,"88":3,"89":3,"90":1,"91":1,"92":29,"93":2,"94":2,"95":27,"96":27,"97":27,"98":0,"99":0,"100":27,"101":1,"102":5,"103":1,"104":22,"105":22,"106":1,"107":0},"b":{"1":[0,1],"2":[6,71],"3":[8,69],"4":[77,18,10],"5":[7,1],"6":[5,70],"7":[75,7,3],"8":[3,4],"9":[7,3,3],"10":[341,0],"11":[27,27],"12":[83,0],"13":[83,0],"14":[83,83,16,16],"15":[0,0],"16":[83,0],"17":[12,71],"18":[83,83,16],"19":[0,83],"20":[0,57],"21":[57,50],"22":[57,0],"23":[3,3],"24":[2,27],"25":[29,2],"26":[0,27],"27":[27,23],"28":[0,5]},"f":{"1":12,"2":42,"3":0,"4":77,"5":8,"6":7,"7":0,"8":0,"9":341,"10":27,"11":83,"12":57,"13":3,"14":29,"15":5,"16":22,"17":0},"fnMap":{"1":{"name":"noop","line":1,"loc":{"start":{"line":1,"column":45},"end":{"line":1,"column":76}}},"2":{"name":"Flow","line":73,"loc":{"start":{"line":73,"column":0},"end":{"line":73,"column":29}}},"3":{"name":"_receive","line":90,"loc":{"start":{"line":90,"column":26},"end":{"line":90,"column":61}}},"4":{"name":"_write","line":98,"loc":{"start":{"line":98,"column":24},"end":{"line":98,"column":67}}},"5":{"name":"(anonymous_5)","line":106,"loc":{"start":{"line":106,"column":25},"end":{"line":106,"column":36}}},"6":{"name":"_restoreWindow","line":127,"loc":{"start":{"line":127,"column":32},"end":{"line":127,"column":58}}},"7":{"name":"disableRemoteFlowControl","line":141,"loc":{"start":{"line":141,"column":42},"end":{"line":141,"column":78}}},"8":{"name":"_send","line":173,"loc":{"start":{"line":173,"column":23},"end":{"line":173,"column":40}}},"9":{"name":"_read","line":181,"loc":{"start":{"line":181,"column":23},"end":{"line":181,"column":40}}},"10":{"name":"_onWindowIncrease","line":194,"loc":{"start":{"line":194,"column":35},"end":{"line":194,"column":64}}},"11":{"name":"_push","line":212,"loc":{"start":{"line":212,"column":23},"end":{"line":212,"column":64}}},"12":{"name":"push","line":261,"loc":{"start":{"line":261,"column":22},"end":{"line":261,"column":43}}},"13":{"name":"getLastQueuedFrame","line":280,"loc":{"start":{"line":280,"column":36},"end":{"line":280,"column":66}}},"14":{"name":"_increaseWindow","line":298,"loc":{"start":{"line":298,"column":33},"end":{"line":298,"column":64}}},"15":{"name":"_updateWindow","line":322,"loc":{"start":{"line":322,"column":31},"end":{"line":322,"column":61}}},"16":{"name":"setInitialWindow","line":330,"loc":{"start":{"line":330,"column":34},"end":{"line":330,"column":75}}},"17":{"name":"disableLocalFlowControl","line":336,"loc":{"start":{"line":336,"column":41},"end":{"line":336,"column":76}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":79}},"2":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"3":{"start":{"line":11,"column":0},"end":{"line":11,"column":39}},"4":{"start":{"line":13,"column":0},"end":{"line":13,"column":20}},"5":{"start":{"line":70,"column":0},"end":{"line":70,"column":32}},"6":{"start":{"line":73,"column":0},"end":{"line":83,"column":1}},"7":{"start":{"line":74,"column":2},"end":{"line":74,"column":42}},"8":{"start":{"line":76,"column":2},"end":{"line":76,"column":59}},"9":{"start":{"line":77,"column":2},"end":{"line":77,"column":38}},"10":{"start":{"line":78,"column":2},"end":{"line":78,"column":19}},"11":{"start":{"line":80,"column":2},"end":{"line":80,"column":22}},"12":{"start":{"line":81,"column":2},"end":{"line":81,"column":21}},"13":{"start":{"line":82,"column":2},"end":{"line":82,"column":42}},"14":{"start":{"line":84,"column":0},"end":{"line":84,"column":83}},"15":{"start":{"line":90,"column":0},"end":{"line":92,"column":2}},"16":{"start":{"line":91,"column":2},"end":{"line":91,"column":99}},"17":{"start":{"line":98,"column":0},"end":{"line":123,"column":2}},"18":{"start":{"line":99,"column":2},"end":{"line":99,"column":32}},"19":{"start":{"line":101,"column":2},"end":{"line":103,"column":3}},"20":{"start":{"line":102,"column":4},"end":{"line":102,"column":23}},"21":{"start":{"line":105,"column":2},"end":{"line":117,"column":3}},"22":{"start":{"line":106,"column":4},"end":{"line":112,"column":18}},"23":{"start":{"line":107,"column":6},"end":{"line":107,"column":42}},"24":{"start":{"line":108,"column":6},"end":{"line":110,"column":7}},"25":{"start":{"line":109,"column":8},"end":{"line":109,"column":80}},"26":{"start":{"line":111,"column":6},"end":{"line":111,"column":17}},"27":{"start":{"line":116,"column":4},"end":{"line":116,"column":35}},"28":{"start":{"line":119,"column":2},"end":{"line":122,"column":3}},"29":{"start":{"line":121,"column":4},"end":{"line":121,"column":30}},"30":{"start":{"line":127,"column":0},"end":{"line":137,"column":2}},"31":{"start":{"line":128,"column":2},"end":{"line":128,"column":34}},"32":{"start":{"line":129,"column":2},"end":{"line":136,"column":3}},"33":{"start":{"line":130,"column":4},"end":{"line":134,"column":7}},"34":{"start":{"line":135,"column":4},"end":{"line":135,"column":23}},"35":{"start":{"line":141,"column":0},"end":{"line":150,"column":2}},"36":{"start":{"line":142,"column":2},"end":{"line":142,"column":41}},"37":{"start":{"line":143,"column":2},"end":{"line":149,"column":5}},"38":{"start":{"line":170,"column":0},"end":{"line":170,"column":34}},"39":{"start":{"line":173,"column":0},"end":{"line":175,"column":2}},"40":{"start":{"line":174,"column":2},"end":{"line":174,"column":81}},"41":{"start":{"line":181,"column":0},"end":{"line":189,"column":2}},"42":{"start":{"line":182,"column":2},"end":{"line":187,"column":3}},"43":{"start":{"line":183,"column":4},"end":{"line":183,"column":17}},"44":{"start":{"line":185,"column":4},"end":{"line":185,"column":31}},"45":{"start":{"line":186,"column":4},"end":{"line":186,"column":43}},"46":{"start":{"line":188,"column":2},"end":{"line":188,"column":38}},"47":{"start":{"line":194,"column":0},"end":{"line":203,"column":2}},"48":{"start":{"line":195,"column":2},"end":{"line":195,"column":31}},"49":{"start":{"line":197,"column":2},"end":{"line":197,"column":63}},"50":{"start":{"line":198,"column":2},"end":{"line":200,"column":3}},"51":{"start":{"line":199,"column":4},"end":{"line":199,"column":53}},"52":{"start":{"line":202,"column":2},"end":{"line":202,"column":15}},"53":{"start":{"line":212,"column":0},"end":{"line":258,"column":2}},"54":{"start":{"line":213,"column":2},"end":{"line":251,"column":36}},"55":{"start":{"line":214,"column":4},"end":{"line":214,"column":55}},"56":{"start":{"line":215,"column":4},"end":{"line":236,"column":5}},"57":{"start":{"line":217,"column":6},"end":{"line":217,"column":26}},"58":{"start":{"line":220,"column":9},"end":{"line":236,"column":5}},"59":{"start":{"line":221,"column":6},"end":{"line":221,"column":24}},"60":{"start":{"line":225,"column":6},"end":{"line":225,"column":68}},"61":{"start":{"line":226,"column":6},"end":{"line":230,"column":8}},"62":{"start":{"line":232,"column":6},"end":{"line":233,"column":73}},"63":{"start":{"line":234,"column":6},"end":{"line":234,"column":47}},"64":{"start":{"line":235,"column":6},"end":{"line":235,"column":24}},"65":{"start":{"line":238,"column":4},"end":{"line":238,"column":26}},"66":{"start":{"line":239,"column":4},"end":{"line":248,"column":5}},"67":{"start":{"line":240,"column":6},"end":{"line":240,"column":85}},"68":{"start":{"line":241,"column":6},"end":{"line":246,"column":7}},"69":{"start":{"line":242,"column":8},"end":{"line":243,"column":65}},"70":{"start":{"line":244,"column":8},"end":{"line":244,"column":48}},"71":{"start":{"line":245,"column":8},"end":{"line":245,"column":34}},"72":{"start":{"line":247,"column":6},"end":{"line":247,"column":65}},"73":{"start":{"line":250,"column":4},"end":{"line":250,"column":22}},"74":{"start":{"line":253,"column":2},"end":{"line":255,"column":3}},"75":{"start":{"line":254,"column":4},"end":{"line":254,"column":33}},"76":{"start":{"line":257,"column":2},"end":{"line":257,"column":20}},"77":{"start":{"line":261,"column":0},"end":{"line":276,"column":2}},"78":{"start":{"line":262,"column":2},"end":{"line":268,"column":3}},"79":{"start":{"line":263,"column":4},"end":{"line":263,"column":57}},"80":{"start":{"line":265,"column":4},"end":{"line":265,"column":36}},"81":{"start":{"line":266,"column":4},"end":{"line":266,"column":67}},"82":{"start":{"line":267,"column":4},"end":{"line":267,"column":32}},"83":{"start":{"line":270,"column":2},"end":{"line":275,"column":3}},"84":{"start":{"line":271,"column":4},"end":{"line":271,"column":65}},"85":{"start":{"line":273,"column":4},"end":{"line":273,"column":28}},"86":{"start":{"line":274,"column":4},"end":{"line":274,"column":16}},"87":{"start":{"line":280,"column":0},"end":{"line":283,"column":2}},"88":{"start":{"line":281,"column":2},"end":{"line":281,"column":49}},"89":{"start":{"line":282,"column":2},"end":{"line":282,"column":88}},"90":{"start":{"line":296,"column":0},"end":{"line":296,"column":44}},"91":{"start":{"line":298,"column":0},"end":{"line":312,"column":2}},"92":{"start":{"line":299,"column":2},"end":{"line":311,"column":3}},"93":{"start":{"line":300,"column":4},"end":{"line":300,"column":97}},"94":{"start":{"line":301,"column":4},"end":{"line":301,"column":45}},"95":{"start":{"line":303,"column":4},"end":{"line":303,"column":96}},"96":{"start":{"line":304,"column":4},"end":{"line":304,"column":25}},"97":{"start":{"line":305,"column":4},"end":{"line":310,"column":5}},"98":{"start":{"line":306,"column":6},"end":{"line":306,"column":61}},"99":{"start":{"line":307,"column":6},"end":{"line":307,"column":47}},"100":{"start":{"line":309,"column":6},"end":{"line":309,"column":31}},"101":{"start":{"line":322,"column":0},"end":{"line":324,"column":2}},"102":{"start":{"line":323,"column":2},"end":{"line":323,"column":84}},"103":{"start":{"line":330,"column":0},"end":{"line":333,"column":2}},"104":{"start":{"line":331,"column":2},"end":{"line":331,"column":60}},"105":{"start":{"line":332,"column":2},"end":{"line":332,"column":38}},"106":{"start":{"line":336,"column":0},"end":{"line":338,"column":2}},"107":{"start":{"line":337,"column":2},"end":{"line":337,"column":33}}},"branchMap":{"1":{"line":1,"type":"cond-expr","locations":[{"start":{"line":1,"column":40},"end":{"line":1,"column":57}},{"start":{"line":1,"column":45},"end":{"line":1,"column":78}}]},"2":{"line":101,"type":"if","locations":[{"start":{"line":101,"column":2},"end":{"line":101,"column":2}},{"start":{"line":101,"column":2},"end":{"line":101,"column":2}}]},"3":{"line":105,"type":"if","locations":[{"start":{"line":105,"column":2},"end":{"line":105,"column":2}},{"start":{"line":105,"column":2},"end":{"line":105,"column":2}}]},"4":{"line":105,"type":"binary-expr","locations":[{"start":{"line":105,"column":7},"end":{"line":105,"column":28}},{"start":{"line":105,"column":34},"end":{"line":105,"column":55}},{"start":{"line":105,"column":60},"end":{"line":105,"column":92}}]},"5":{"line":108,"type":"if","locations":[{"start":{"line":108,"column":6},"end":{"line":108,"column":6}},{"start":{"line":108,"column":6},"end":{"line":108,"column":6}}]},"6":{"line":119,"type":"if","locations":[{"start":{"line":119,"column":2},"end":{"line":119,"column":2}},{"start":{"line":119,"column":2},"end":{"line":119,"column":2}}]},"7":{"line":119,"type":"binary-expr","locations":[{"start":{"line":119,"column":7},"end":{"line":119,"column":37}},{"start":{"line":120,"column":8},"end":{"line":120,"column":41}},{"start":{"line":120,"column":47},"end":{"line":120,"column":83}}]},"8":{"line":129,"type":"if","locations":[{"start":{"line":129,"column":2},"end":{"line":129,"column":2}},{"start":{"line":129,"column":2},"end":{"line":129,"column":2}}]},"9":{"line":129,"type":"binary-expr","locations":[{"start":{"line":129,"column":6},"end":{"line":129,"column":18}},{"start":{"line":129,"column":22},"end":{"line":129,"column":54}},{"start":{"line":129,"column":59},"end":{"line":129,"column":77}}]},"10":{"line":182,"type":"if","locations":[{"start":{"line":182,"column":2},"end":{"line":182,"column":2}},{"start":{"line":182,"column":2},"end":{"line":182,"column":2}}]},"11":{"line":198,"type":"binary-expr","locations":[{"start":{"line":198,"column":9},"end":{"line":198,"column":19}},{"start":{"line":198,"column":24},"end":{"line":198,"column":51}}]},"12":{"line":251,"type":"binary-expr","locations":[{"start":{"line":251,"column":11},"end":{"line":251,"column":20}},{"start":{"line":251,"column":24},"end":{"line":251,"column":34}}]},"13":{"line":215,"type":"if","locations":[{"start":{"line":215,"column":4},"end":{"line":215,"column":4}},{"start":{"line":215,"column":4},"end":{"line":215,"column":4}}]},"14":{"line":215,"type":"binary-expr","locations":[{"start":{"line":215,"column":9},"end":{"line":215,"column":23}},{"start":{"line":215,"column":29},"end":{"line":215,"column":50}},{"start":{"line":216,"column":10},"end":{"line":216,"column":43}},{"start":{"line":216,"column":49},"end":{"line":216,"column":91}}]},"15":{"line":220,"type":"if","locations":[{"start":{"line":220,"column":9},"end":{"line":220,"column":9}},{"start":{"line":220,"column":9},"end":{"line":220,"column":9}}]},"16":{"line":239,"type":"if","locations":[{"start":{"line":239,"column":4},"end":{"line":239,"column":4}},{"start":{"line":239,"column":4},"end":{"line":239,"column":4}}]},"17":{"line":241,"type":"if","locations":[{"start":{"line":241,"column":6},"end":{"line":241,"column":6}},{"start":{"line":241,"column":6},"end":{"line":241,"column":6}}]},"18":{"line":241,"type":"binary-expr","locations":[{"start":{"line":241,"column":10},"end":{"line":241,"column":21}},{"start":{"line":241,"column":26},"end":{"line":241,"column":53}},{"start":{"line":241,"column":59},"end":{"line":241,"column":84}}]},"19":{"line":253,"type":"if","locations":[{"start":{"line":253,"column":2},"end":{"line":253,"column":2}},{"start":{"line":253,"column":2},"end":{"line":253,"column":2}}]},"20":{"line":262,"type":"if","locations":[{"start":{"line":262,"column":2},"end":{"line":262,"column":2}},{"start":{"line":262,"column":2},"end":{"line":262,"column":2}}]},"21":{"line":265,"type":"binary-expr","locations":[{"start":{"line":265,"column":18},"end":{"line":265,"column":29}},{"start":{"line":265,"column":33},"end":{"line":265,"column":35}}]},"22":{"line":270,"type":"if","locations":[{"start":{"line":270,"column":2},"end":{"line":270,"column":2}},{"start":{"line":270,"column":2},"end":{"line":270,"column":2}}]},"23":{"line":282,"type":"binary-expr","locations":[{"start":{"line":282,"column":9},"end":{"line":282,"column":44}},{"start":{"line":282,"column":48},"end":{"line":282,"column":87}}]},"24":{"line":299,"type":"if","locations":[{"start":{"line":299,"column":2},"end":{"line":299,"column":2}},{"start":{"line":299,"column":2},"end":{"line":299,"column":2}}]},"25":{"line":299,"type":"binary-expr","locations":[{"start":{"line":299,"column":7},"end":{"line":299,"column":32}},{"start":{"line":299,"column":38},"end":{"line":299,"column":55}}]},"26":{"line":305,"type":"if","locations":[{"start":{"line":305,"column":4},"end":{"line":305,"column":4}},{"start":{"line":305,"column":4},"end":{"line":305,"column":4}}]},"27":{"line":305,"type":"binary-expr","locations":[{"start":{"line":305,"column":9},"end":{"line":305,"column":34}},{"start":{"line":305,"column":40},"end":{"line":305,"column":72}}]},"28":{"line":323,"type":"cond-expr","locations":[{"start":{"line":323,"column":54},"end":{"line":323,"column":62}},{"start":{"line":323,"column":65},"end":{"line":323,"column":82}}]}}},"/data/upstream/node-http2/lib/stream.js":{"path":"/data/upstream/node-http2/lib/stream.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":24,"7":24,"8":24,"9":24,"10":24,"11":1,"12":1,"13":24,"14":4,"15":24,"16":11,"17":11,"18":1,"19":3,"20":3,"21":1,"22":13,"23":13,"24":1,"25":8,"26":1,"27":1,"28":24,"29":24,"30":24,"31":24,"32":24,"33":24,"34":24,"35":24,"36":1,"37":30,"38":30,"39":30,"40":10,"41":10,"42":0,"43":0,"44":20,"45":30,"46":3,"47":30,"48":30,"49":1,"50":11,"51":0,"52":0,"53":0,"54":1,"55":5,"56":5,"57":5,"58":0,"59":1,"60":218,"61":0,"62":0,"63":0,"64":1,"65":1,"66":3,"67":3,"68":3,"69":0,"70":0,"71":0,"72":3,"73":1,"74":24,"75":24,"76":24,"77":24,"78":1,"79":1,"80":26,"81":26,"82":26,"83":26,"84":26,"85":26,"86":26,"87":15,"88":11,"89":2,"90":1,"91":64,"92":64,"93":64,"94":64,"95":64,"96":18,"97":18,"98":24,"99":24,"100":1,"101":1,"102":8,"103":8,"104":0,"105":0,"106":7,"107":7,"108":0,"109":0,"110":0,"111":0,"112":6,"113":6,"114":64,"115":15,"116":11,"117":11,"118":0,"119":4,"120":15,"121":7,"122":3,"123":4,"124":0,"125":4,"126":4,"127":7,"128":1,"129":0,"130":1,"131":1,"132":0,"133":0,"134":1,"135":24,"136":4,"137":20,"138":0,"139":24,"140":7,"141":2,"142":5,"143":0,"144":7,"145":2,"146":0,"147":2,"148":0,"149":2,"150":8,"151":0,"152":8,"153":64,"154":3,"155":64,"156":5,"157":5,"158":64,"159":8,"160":8,"161":0,"162":0,"163":8,"164":8,"165":8,"166":8},"b":{"1":[0,1],"2":[24,8],"3":[10,20],"4":[0,10],"5":[3,27],"6":[30,0],"7":[0,11],"8":[5,0],"9":[0,218],"10":[0,3],"11":[3,0,0],"12":[26,0],"13":[15,11],"14":[26,20],"15":[2,9],"16":[11,6],"17":[18,24,1,8,0,7,0,0,6],"18":[15,7,1,24,7,2,8],"19":[11,4],"20":[0,11],"21":[0,0],"22":[3,4],"23":[7,3],"24":[0,4],"25":[0,4],"26":[4,4],"27":[0,1],"28":[1,0],"29":[1,1],"30":[0,0],"31":[0,0],"32":[4,20],"33":[3,1],"34":[0,20],"35":[2,5],"36":[7,7,6],"37":[5,0],"38":[5,1,1,1],"39":[0,2],"40":[2,2,1],"41":[2,0],"42":[2,1,1,0],"43":[8,0],"44":[8,8,0,0,0,0,0],"45":[3,61],"46":[64,30,30],"47":[5,59],"48":[64,7],"49":[3,2],"50":[8,56],"51":[0,8]},"f":{"1":5,"2":24,"3":24,"4":4,"5":11,"6":3,"7":13,"8":8,"9":24,"10":30,"11":11,"12":5,"13":218,"14":3,"15":24,"16":26,"17":64},"fnMap":{"1":{"name":"noop","line":1,"loc":{"start":{"line":1,"column":45},"end":{"line":1,"column":76}}},"2":{"name":"Stream","line":42,"loc":{"start":{"line":42,"column":0},"end":{"line":42,"column":21}}},"3":{"name":"_initializeManagement","line":65,"loc":{"start":{"line":65,"column":41},"end":{"line":65,"column":74}}},"4":{"name":"(anonymous_4)","line":66,"loc":{"start":{"line":66,"column":26},"end":{"line":66,"column":42}}},"5":{"name":"(anonymous_5)","line":69,"loc":{"start":{"line":69,"column":21},"end":{"line":69,"column":37}}},"6":{"name":"promise","line":78,"loc":{"start":{"line":78,"column":27},"end":{"line":78,"column":61}}},"7":{"name":"headers","line":87,"loc":{"start":{"line":87,"column":27},"end":{"line":87,"column":63}}},"8":{"name":"reset","line":96,"loc":{"start":{"line":96,"column":25},"end":{"line":96,"column":47}}},"9":{"name":"_initializeDataFlow","line":138,"loc":{"start":{"line":138,"column":39},"end":{"line":138,"column":70}}},"10":{"name":"_receive","line":151,"loc":{"start":{"line":151,"column":28},"end":{"line":151,"column":60}}},"11":{"name":"_read","line":183,"loc":{"start":{"line":183,"column":25},"end":{"line":183,"column":42}}},"12":{"name":"_write","line":192,"loc":{"start":{"line":192,"column":26},"end":{"line":192,"column":67}}},"13":{"name":"_send","line":210,"loc":{"start":{"line":210,"column":25},"end":{"line":210,"column":42}}},"14":{"name":"_finishing","line":227,"loc":{"start":{"line":227,"column":30},"end":{"line":227,"column":52}}},"15":{"name":"_initializeState","line":269,"loc":{"start":{"line":269,"column":36},"end":{"line":269,"column":64}}},"16":{"name":"transition","line":280,"loc":{"start":{"line":280,"column":29},"end":{"line":280,"column":56}}},"17":{"name":"transition","line":300,"loc":{"start":{"line":300,"column":31},"end":{"line":300,"column":67}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":79}},"2":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"3":{"start":{"line":13,"column":0},"end":{"line":13,"column":38}},"4":{"start":{"line":15,"column":0},"end":{"line":15,"column":24}},"5":{"start":{"line":42,"column":0},"end":{"line":56,"column":1}},"6":{"start":{"line":43,"column":2},"end":{"line":43,"column":20}},"7":{"start":{"line":46,"column":2},"end":{"line":46,"column":67}},"8":{"start":{"line":49,"column":2},"end":{"line":49,"column":31}},"9":{"start":{"line":52,"column":2},"end":{"line":52,"column":29}},"10":{"start":{"line":55,"column":2},"end":{"line":55,"column":26}},"11":{"start":{"line":58,"column":0},"end":{"line":58,"column":87}},"12":{"start":{"line":65,"column":0},"end":{"line":73,"column":2}},"13":{"start":{"line":66,"column":2},"end":{"line":68,"column":5}},"14":{"start":{"line":67,"column":4},"end":{"line":67,"column":63}},"15":{"start":{"line":69,"column":2},"end":{"line":72,"column":5}},"16":{"start":{"line":70,"column":4},"end":{"line":70,"column":35}},"17":{"start":{"line":71,"column":4},"end":{"line":71,"column":40}},"18":{"start":{"line":78,"column":0},"end":{"line":85,"column":2}},"19":{"start":{"line":79,"column":2},"end":{"line":79,"column":35}},"20":{"start":{"line":80,"column":2},"end":{"line":84,"column":5}},"21":{"start":{"line":87,"column":0},"end":{"line":94,"column":2}},"22":{"start":{"line":88,"column":2},"end":{"line":92,"column":5}},"23":{"start":{"line":93,"column":2},"end":{"line":93,"column":27}},"24":{"start":{"line":96,"column":0},"end":{"line":101,"column":2}},"25":{"start":{"line":97,"column":2},"end":{"line":100,"column":5}},"26":{"start":{"line":136,"column":0},"end":{"line":136,"column":34}},"27":{"start":{"line":138,"column":0},"end":{"line":148,"column":2}},"28":{"start":{"line":139,"column":2},"end":{"line":139,"column":29}},"29":{"start":{"line":140,"column":2},"end":{"line":140,"column":33}},"30":{"start":{"line":141,"column":2},"end":{"line":141,"column":46}},"31":{"start":{"line":142,"column":2},"end":{"line":142,"column":52}},"32":{"start":{"line":143,"column":2},"end":{"line":143,"column":63}},"33":{"start":{"line":144,"column":2},"end":{"line":144,"column":67}},"34":{"start":{"line":145,"column":2},"end":{"line":145,"column":59}},"35":{"start":{"line":147,"column":2},"end":{"line":147,"column":37}},"36":{"start":{"line":151,"column":0},"end":{"line":179,"column":2}},"37":{"start":{"line":152,"column":2},"end":{"line":152,"column":55}},"38":{"start":{"line":154,"column":2},"end":{"line":154,"column":23}},"39":{"start":{"line":158,"column":2},"end":{"line":169,"column":3}},"40":{"start":{"line":159,"column":4},"end":{"line":159,"column":43}},"41":{"start":{"line":160,"column":4},"end":{"line":163,"column":5}},"42":{"start":{"line":161,"column":6},"end":{"line":161,"column":32}},"43":{"start":{"line":162,"column":6},"end":{"line":162,"column":24}},"44":{"start":{"line":168,"column":4},"end":{"line":168,"column":33}},"45":{"start":{"line":172,"column":2},"end":{"line":174,"column":3}},"46":{"start":{"line":173,"column":4},"end":{"line":173,"column":20}},"47":{"start":{"line":176,"column":2},"end":{"line":178,"column":3}},"48":{"start":{"line":177,"column":4},"end":{"line":177,"column":12}},"49":{"start":{"line":183,"column":0},"end":{"line":189,"column":2}},"50":{"start":{"line":184,"column":2},"end":{"line":188,"column":3}},"51":{"start":{"line":185,"column":4},"end":{"line":185,"column":40}},"52":{"start":{"line":186,"column":4},"end":{"line":186,"column":29}},"53":{"start":{"line":187,"column":4},"end":{"line":187,"column":18}},"54":{"start":{"line":192,"column":0},"end":{"line":205,"column":2}},"55":{"start":{"line":194,"column":2},"end":{"line":197,"column":5}},"56":{"start":{"line":200,"column":2},"end":{"line":204,"column":3}},"57":{"start":{"line":201,"column":4},"end":{"line":201,"column":12}},"58":{"start":{"line":203,"column":4},"end":{"line":203,"column":27}},"59":{"start":{"line":210,"column":0},"end":{"line":216,"column":2}},"60":{"start":{"line":211,"column":2},"end":{"line":215,"column":3}},"61":{"start":{"line":212,"column":4},"end":{"line":212,"column":34}},"62":{"start":{"line":213,"column":4},"end":{"line":213,"column":26}},"63":{"start":{"line":214,"column":4},"end":{"line":214,"column":15}},"64":{"start":{"line":222,"column":0},"end":{"line":226,"column":2}},"65":{"start":{"line":227,"column":0},"end":{"line":237,"column":2}},"66":{"start":{"line":228,"column":2},"end":{"line":228,"column":25}},"67":{"start":{"line":229,"column":2},"end":{"line":229,"column":53}},"68":{"start":{"line":230,"column":2},"end":{"line":236,"column":3}},"69":{"start":{"line":231,"column":4},"end":{"line":231,"column":86}},"70":{"start":{"line":232,"column":4},"end":{"line":232,"column":38}},"71":{"start":{"line":233,"column":4},"end":{"line":233,"column":37}},"72":{"start":{"line":235,"column":4},"end":{"line":235,"column":33}},"73":{"start":{"line":269,"column":0},"end":{"line":274,"column":2}},"74":{"start":{"line":270,"column":2},"end":{"line":270,"column":22}},"75":{"start":{"line":271,"column":2},"end":{"line":271,"column":29}},"76":{"start":{"line":272,"column":2},"end":{"line":272,"column":56}},"77":{"start":{"line":273,"column":2},"end":{"line":273,"column":59}},"78":{"start":{"line":278,"column":0},"end":{"line":278,"column":72}},"79":{"start":{"line":280,"column":0},"end":{"line":295,"column":2}},"80":{"start":{"line":281,"column":2},"end":{"line":294,"column":3}},"81":{"start":{"line":282,"column":4},"end":{"line":282,"column":73}},"82":{"start":{"line":284,"column":4},"end":{"line":284,"column":63}},"83":{"start":{"line":285,"column":4},"end":{"line":285,"column":57}},"84":{"start":{"line":286,"column":4},"end":{"line":286,"column":23}},"85":{"start":{"line":288,"column":4},"end":{"line":288,"column":30}},"86":{"start":{"line":289,"column":4},"end":{"line":293,"column":5}},"87":{"start":{"line":290,"column":6},"end":{"line":290,"column":26}},"88":{"start":{"line":291,"column":11},"end":{"line":293,"column":5}},"89":{"start":{"line":292,"column":6},"end":{"line":292,"column":28}},"90":{"start":{"line":300,"column":0},"end":{"line":498,"column":2}},"91":{"start":{"line":301,"column":2},"end":{"line":301,"column":27}},"92":{"start":{"line":302,"column":2},"end":{"line":302,"column":24}},"93":{"start":{"line":304,"column":2},"end":{"line":304,"column":92}},"94":{"start":{"line":305,"column":2},"end":{"line":305,"column":80}},"95":{"start":{"line":306,"column":2},"end":{"line":316,"column":3}},"96":{"start":{"line":307,"column":26},"end":{"line":307,"column":47}},"97":{"start":{"line":307,"column":48},"end":{"line":307,"column":54}},"98":{"start":{"line":308,"column":26},"end":{"line":308,"column":47}},"99":{"start":{"line":308,"column":48},"end":{"line":308,"column":54}},"100":{"start":{"line":309,"column":26},"end":{"line":309,"column":47}},"101":{"start":{"line":309,"column":48},"end":{"line":309,"column":54}},"102":{"start":{"line":310,"column":26},"end":{"line":310,"column":47}},"103":{"start":{"line":310,"column":48},"end":{"line":310,"column":54}},"104":{"start":{"line":311,"column":26},"end":{"line":311,"column":47}},"105":{"start":{"line":311,"column":48},"end":{"line":311,"column":54}},"106":{"start":{"line":312,"column":26},"end":{"line":312,"column":47}},"107":{"start":{"line":312,"column":48},"end":{"line":312,"column":54}},"108":{"start":{"line":313,"column":26},"end":{"line":313,"column":47}},"109":{"start":{"line":313,"column":48},"end":{"line":313,"column":54}},"110":{"start":{"line":314,"column":26},"end":{"line":314,"column":47}},"111":{"start":{"line":314,"column":48},"end":{"line":314,"column":54}},"112":{"start":{"line":315,"column":26},"end":{"line":315,"column":47}},"113":{"start":{"line":315,"column":48},"end":{"line":315,"column":54}},"114":{"start":{"line":318,"column":2},"end":{"line":458,"column":3}},"115":{"start":{"line":325,"column":6},"end":{"line":332,"column":7}},"116":{"start":{"line":326,"column":8},"end":{"line":326,"column":31}},"117":{"start":{"line":327,"column":8},"end":{"line":329,"column":9}},"118":{"start":{"line":328,"column":10},"end":{"line":328,"column":79}},"119":{"start":{"line":331,"column":8},"end":{"line":331,"column":33}},"120":{"start":{"line":333,"column":6},"end":{"line":333,"column":12}},"121":{"start":{"line":345,"column":6},"end":{"line":353,"column":7}},"122":{"start":{"line":346,"column":8},"end":{"line":346,"column":45}},"123":{"start":{"line":347,"column":13},"end":{"line":353,"column":7}},"124":{"start":{"line":348,"column":8},"end":{"line":348,"column":33}},"125":{"start":{"line":349,"column":13},"end":{"line":353,"column":7}},"126":{"start":{"line":352,"column":8},"end":{"line":352,"column":33}},"127":{"start":{"line":354,"column":6},"end":{"line":354,"column":12}},"128":{"start":{"line":364,"column":6},"end":{"line":372,"column":7}},"129":{"start":{"line":365,"column":8},"end":{"line":365,"column":33}},"130":{"start":{"line":366,"column":13},"end":{"line":372,"column":7}},"131":{"start":{"line":367,"column":8},"end":{"line":367,"column":44}},"132":{"start":{"line":368,"column":13},"end":{"line":372,"column":7}},"133":{"start":{"line":371,"column":8},"end":{"line":371,"column":33}},"134":{"start":{"line":373,"column":6},"end":{"line":373,"column":12}},"135":{"start":{"line":385,"column":6},"end":{"line":391,"column":7}},"136":{"start":{"line":386,"column":8},"end":{"line":386,"column":77}},"137":{"start":{"line":387,"column":13},"end":{"line":391,"column":7}},"138":{"start":{"line":388,"column":8},"end":{"line":388,"column":33}},"139":{"start":{"line":392,"column":6},"end":{"line":392,"column":12}},"140":{"start":{"line":401,"column":6},"end":{"line":407,"column":7}},"141":{"start":{"line":402,"column":8},"end":{"line":402,"column":33}},"142":{"start":{"line":403,"column":13},"end":{"line":407,"column":7}},"143":{"start":{"line":406,"column":8},"end":{"line":406,"column":33}},"144":{"start":{"line":408,"column":6},"end":{"line":408,"column":12}},"145":{"start":{"line":421,"column":6},"end":{"line":427,"column":7}},"146":{"start":{"line":422,"column":8},"end":{"line":422,"column":33}},"147":{"start":{"line":423,"column":13},"end":{"line":427,"column":7}},"148":{"start":{"line":426,"column":8},"end":{"line":426,"column":33}},"149":{"start":{"line":428,"column":6},"end":{"line":428,"column":12}},"150":{"start":{"line":451,"column":6},"end":{"line":456,"column":7}},"151":{"start":{"line":455,"column":8},"end":{"line":455,"column":32}},"152":{"start":{"line":457,"column":6},"end":{"line":457,"column":12}},"153":{"start":{"line":463,"column":2},"end":{"line":465,"column":3}},"154":{"start":{"line":464,"column":4},"end":{"line":464,"column":30}},"155":{"start":{"line":473,"column":2},"end":{"line":477,"column":3}},"156":{"start":{"line":474,"column":4},"end":{"line":475,"column":86}},"157":{"start":{"line":476,"column":4},"end":{"line":476,"column":84}},"158":{"start":{"line":480,"column":2},"end":{"line":497,"column":3}},"159":{"start":{"line":481,"column":4},"end":{"line":481,"column":65}},"160":{"start":{"line":484,"column":4},"end":{"line":496,"column":5}},"161":{"start":{"line":485,"column":6},"end":{"line":485,"column":68}},"162":{"start":{"line":486,"column":6},"end":{"line":486,"column":97}},"163":{"start":{"line":492,"column":6},"end":{"line":492,"column":69}},"164":{"start":{"line":493,"column":6},"end":{"line":493,"column":28}},"165":{"start":{"line":494,"column":6},"end":{"line":494,"column":24}},"166":{"start":{"line":495,"column":6},"end":{"line":495,"column":32}}},"branchMap":{"1":{"line":1,"type":"cond-expr","locations":[{"start":{"line":1,"column":40},"end":{"line":1,"column":57}},{"start":{"line":1,"column":45},"end":{"line":1,"column":78}}]},"2":{"line":46,"type":"binary-expr","locations":[{"start":{"line":46,"column":15},"end":{"line":46,"column":18}},{"start":{"line":46,"column":22},"end":{"line":46,"column":34}}]},"3":{"line":158,"type":"if","locations":[{"start":{"line":158,"column":2},"end":{"line":158,"column":2}},{"start":{"line":158,"column":2},"end":{"line":158,"column":2}}]},"4":{"line":160,"type":"if","locations":[{"start":{"line":160,"column":4},"end":{"line":160,"column":4}},{"start":{"line":160,"column":4},"end":{"line":160,"column":4}}]},"5":{"line":172,"type":"if","locations":[{"start":{"line":172,"column":2},"end":{"line":172,"column":2}},{"start":{"line":172,"column":2},"end":{"line":172,"column":2}}]},"6":{"line":176,"type":"if","locations":[{"start":{"line":176,"column":2},"end":{"line":176,"column":2}},{"start":{"line":176,"column":2},"end":{"line":176,"column":2}}]},"7":{"line":184,"type":"if","locations":[{"start":{"line":184,"column":2},"end":{"line":184,"column":2}},{"start":{"line":184,"column":2},"end":{"line":184,"column":2}}]},"8":{"line":200,"type":"if","locations":[{"start":{"line":200,"column":2},"end":{"line":200,"column":2}},{"start":{"line":200,"column":2},"end":{"line":200,"column":2}}]},"9":{"line":211,"type":"if","locations":[{"start":{"line":211,"column":2},"end":{"line":211,"column":2}},{"start":{"line":211,"column":2},"end":{"line":211,"column":2}}]},"10":{"line":230,"type":"if","locations":[{"start":{"line":230,"column":2},"end":{"line":230,"column":2}},{"start":{"line":230,"column":2},"end":{"line":230,"column":2}}]},"11":{"line":230,"type":"binary-expr","locations":[{"start":{"line":230,"column":6},"end":{"line":230,"column":15}},{"start":{"line":230,"column":21},"end":{"line":230,"column":46}},{"start":{"line":230,"column":52},"end":{"line":230,"column":80}}]},"12":{"line":281,"type":"if","locations":[{"start":{"line":281,"column":2},"end":{"line":281,"column":2}},{"start":{"line":281,"column":2},"end":{"line":281,"column":2}}]},"13":{"line":289,"type":"if","locations":[{"start":{"line":289,"column":4},"end":{"line":289,"column":4}},{"start":{"line":289,"column":4},"end":{"line":289,"column":4}}]},"14":{"line":289,"type":"binary-expr","locations":[{"start":{"line":289,"column":8},"end":{"line":289,"column":18}},{"start":{"line":289,"column":22},"end":{"line":289,"column":30}}]},"15":{"line":291,"type":"if","locations":[{"start":{"line":291,"column":11},"end":{"line":291,"column":11}},{"start":{"line":291,"column":11},"end":{"line":291,"column":11}}]},"16":{"line":291,"type":"binary-expr","locations":[{"start":{"line":291,"column":15},"end":{"line":291,"column":24}},{"start":{"line":291,"column":28},"end":{"line":291,"column":37}}]},"17":{"line":306,"type":"switch","locations":[{"start":{"line":307,"column":4},"end":{"line":307,"column":54}},{"start":{"line":308,"column":4},"end":{"line":308,"column":54}},{"start":{"line":309,"column":4},"end":{"line":309,"column":54}},{"start":{"line":310,"column":4},"end":{"line":310,"column":54}},{"start":{"line":311,"column":4},"end":{"line":311,"column":54}},{"start":{"line":312,"column":4},"end":{"line":312,"column":54}},{"start":{"line":313,"column":4},"end":{"line":313,"column":54}},{"start":{"line":314,"column":4},"end":{"line":314,"column":54}},{"start":{"line":315,"column":4},"end":{"line":315,"column":54}}]},"18":{"line":318,"type":"switch","locations":[{"start":{"line":324,"column":4},"end":{"line":333,"column":12}},{"start":{"line":344,"column":4},"end":{"line":354,"column":12}},{"start":{"line":363,"column":4},"end":{"line":373,"column":12}},{"start":{"line":384,"column":4},"end":{"line":392,"column":12}},{"start":{"line":400,"column":4},"end":{"line":408,"column":12}},{"start":{"line":420,"column":4},"end":{"line":428,"column":12}},{"start":{"line":450,"column":4},"end":{"line":457,"column":12}}]},"19":{"line":325,"type":"if","locations":[{"start":{"line":325,"column":6},"end":{"line":325,"column":6}},{"start":{"line":325,"column":6},"end":{"line":325,"column":6}}]},"20":{"line":327,"type":"if","locations":[{"start":{"line":327,"column":8},"end":{"line":327,"column":8}},{"start":{"line":327,"column":8},"end":{"line":327,"column":8}}]},"21":{"line":328,"type":"cond-expr","locations":[{"start":{"line":328,"column":35},"end":{"line":328,"column":54}},{"start":{"line":328,"column":57},"end":{"line":328,"column":77}}]},"22":{"line":345,"type":"if","locations":[{"start":{"line":345,"column":6},"end":{"line":345,"column":6}},{"start":{"line":345,"column":6},"end":{"line":345,"column":6}}]},"23":{"line":345,"type":"binary-expr","locations":[{"start":{"line":345,"column":10},"end":{"line":345,"column":17}},{"start":{"line":345,"column":21},"end":{"line":345,"column":28}}]},"24":{"line":347,"type":"if","locations":[{"start":{"line":347,"column":13},"end":{"line":347,"column":13}},{"start":{"line":347,"column":13},"end":{"line":347,"column":13}}]},"25":{"line":349,"type":"if","locations":[{"start":{"line":349,"column":13},"end":{"line":349,"column":13}},{"start":{"line":349,"column":13},"end":{"line":349,"column":13}}]},"26":{"line":349,"type":"binary-expr","locations":[{"start":{"line":349,"column":17},"end":{"line":349,"column":26}},{"start":{"line":349,"column":30},"end":{"line":349,"column":38}}]},"27":{"line":364,"type":"if","locations":[{"start":{"line":364,"column":6},"end":{"line":364,"column":6}},{"start":{"line":364,"column":6},"end":{"line":364,"column":6}}]},"28":{"line":366,"type":"if","locations":[{"start":{"line":366,"column":13},"end":{"line":366,"column":13}},{"start":{"line":366,"column":13},"end":{"line":366,"column":13}}]},"29":{"line":366,"type":"binary-expr","locations":[{"start":{"line":366,"column":17},"end":{"line":366,"column":26}},{"start":{"line":366,"column":30},"end":{"line":366,"column":37}}]},"30":{"line":368,"type":"if","locations":[{"start":{"line":368,"column":13},"end":{"line":368,"column":13}},{"start":{"line":368,"column":13},"end":{"line":368,"column":13}}]},"31":{"line":368,"type":"binary-expr","locations":[{"start":{"line":368,"column":17},"end":{"line":368,"column":24}},{"start":{"line":368,"column":28},"end":{"line":368,"column":36}}]},"32":{"line":385,"type":"if","locations":[{"start":{"line":385,"column":6},"end":{"line":385,"column":6}},{"start":{"line":385,"column":6},"end":{"line":385,"column":6}}]},"33":{"line":386,"type":"cond-expr","locations":[{"start":{"line":386,"column":33},"end":{"line":386,"column":52}},{"start":{"line":386,"column":55},"end":{"line":386,"column":75}}]},"34":{"line":387,"type":"if","locations":[{"start":{"line":387,"column":13},"end":{"line":387,"column":13}},{"start":{"line":387,"column":13},"end":{"line":387,"column":13}}]},"35":{"line":401,"type":"if","locations":[{"start":{"line":401,"column":6},"end":{"line":401,"column":6}},{"start":{"line":401,"column":6},"end":{"line":401,"column":6}}]},"36":{"line":401,"type":"binary-expr","locations":[{"start":{"line":401,"column":10},"end":{"line":401,"column":20}},{"start":{"line":401,"column":25},"end":{"line":401,"column":34}},{"start":{"line":401,"column":38},"end":{"line":401,"column":60}}]},"37":{"line":403,"type":"if","locations":[{"start":{"line":403,"column":13},"end":{"line":403,"column":13}},{"start":{"line":403,"column":13},"end":{"line":403,"column":13}}]},"38":{"line":403,"type":"binary-expr","locations":[{"start":{"line":403,"column":17},"end":{"line":403,"column":26}},{"start":{"line":403,"column":31},"end":{"line":403,"column":38}},{"start":{"line":403,"column":43},"end":{"line":403,"column":51}},{"start":{"line":403,"column":55},"end":{"line":403,"column":68}}]},"39":{"line":421,"type":"if","locations":[{"start":{"line":421,"column":6},"end":{"line":421,"column":6}},{"start":{"line":421,"column":6},"end":{"line":421,"column":6}}]},"40":{"line":421,"type":"binary-expr","locations":[{"start":{"line":421,"column":10},"end":{"line":421,"column":20}},{"start":{"line":421,"column":25},"end":{"line":421,"column":32}},{"start":{"line":421,"column":36},"end":{"line":421,"column":58}}]},"41":{"line":423,"type":"if","locations":[{"start":{"line":423,"column":13},"end":{"line":423,"column":13}},{"start":{"line":423,"column":13},"end":{"line":423,"column":13}}]},"42":{"line":423,"type":"binary-expr","locations":[{"start":{"line":423,"column":17},"end":{"line":423,"column":24}},{"start":{"line":423,"column":29},"end":{"line":423,"column":38}},{"start":{"line":423,"column":43},"end":{"line":423,"column":56}},{"start":{"line":423,"column":60},"end":{"line":423,"column":68}}]},"43":{"line":451,"type":"if","locations":[{"start":{"line":451,"column":6},"end":{"line":451,"column":6}},{"start":{"line":451,"column":6},"end":{"line":451,"column":6}}]},"44":{"line":451,"type":"binary-expr","locations":[{"start":{"line":451,"column":11},"end":{"line":451,"column":18}},{"start":{"line":451,"column":22},"end":{"line":451,"column":32}},{"start":{"line":451,"column":38},"end":{"line":451,"column":47}},{"start":{"line":451,"column":51},"end":{"line":451,"column":70}},{"start":{"line":452,"column":11},"end":{"line":452,"column":20}},{"start":{"line":452,"column":25},"end":{"line":452,"column":38}},{"start":{"line":452,"column":42},"end":{"line":452,"column":50}}]},"45":{"line":463,"type":"if","locations":[{"start":{"line":463,"column":2},"end":{"line":463,"column":2}},{"start":{"line":463,"column":2},"end":{"line":463,"column":2}}]},"46":{"line":463,"type":"binary-expr","locations":[{"start":{"line":463,"column":6},"end":{"line":463,"column":15}},{"start":{"line":463,"column":20},"end":{"line":463,"column":30}},{"start":{"line":463,"column":34},"end":{"line":463,"column":56}}]},"47":{"line":473,"type":"if","locations":[{"start":{"line":473,"column":2},"end":{"line":473,"column":2}},{"start":{"line":473,"column":2},"end":{"line":473,"column":2}}]},"48":{"line":473,"type":"binary-expr","locations":[{"start":{"line":473,"column":6},"end":{"line":473,"column":18}},{"start":{"line":473,"column":22},"end":{"line":473,"column":28}}]},"49":{"line":476,"type":"cond-expr","locations":[{"start":{"line":476,"column":46},"end":{"line":476,"column":62}},{"start":{"line":476,"column":65},"end":{"line":476,"column":82}}]},"50":{"line":480,"type":"if","locations":[{"start":{"line":480,"column":2},"end":{"line":480,"column":2}},{"start":{"line":480,"column":2},"end":{"line":480,"column":2}}]},"51":{"line":484,"type":"if","locations":[{"start":{"line":484,"column":4},"end":{"line":484,"column":4}},{"start":{"line":484,"column":4},"end":{"line":484,"column":4}}]}}},"/data/upstream/node-http2/lib/endpoint.js":{"path":"/data/upstream/node-http2/lib/endpoint.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":4,"11":4,"12":4,"13":2,"14":2,"15":2,"16":0,"17":4,"18":4,"19":4,"20":1,"21":1,"22":1,"23":2,"24":2,"25":1,"26":2,"27":2,"28":2,"29":2,"30":48,"31":0,"32":0,"33":0,"34":48,"35":2,"36":2,"37":2,"38":2,"39":2,"40":1,"41":4,"42":4,"43":2,"44":2,"45":2,"46":2,"47":2,"48":2,"49":4,"50":4,"51":4,"52":4,"53":4,"54":4,"55":4,"56":4,"57":1,"58":29,"59":29,"60":16,"61":1,"62":10,"63":1,"64":4,"65":1,"66":1,"67":1,"68":4,"69":4,"70":4,"71":4,"72":4,"73":1,"74":0,"75":0,"76":1,"77":0},"b":{"1":[4,0],"2":[2,2],"3":[2,0],"4":[50,48],"5":[0,48],"6":[2,0],"7":[2,2],"8":[45,45]},"f":{"1":4,"2":2,"3":2,"4":2,"5":4,"6":29,"7":10,"8":4,"9":1,"10":4,"11":0,"12":0},"fnMap":{"1":{"name":"Endpoint","line":15,"loc":{"start":{"line":15,"column":0},"end":{"line":15,"column":39}}},"2":{"name":"_writePrelude","line":50,"loc":{"start":{"line":50,"column":35},"end":{"line":50,"column":60}}},"3":{"name":"_readPrelude","line":56,"loc":{"start":{"line":56,"column":34},"end":{"line":56,"column":58}}},"4":{"name":"_temporalWrite","line":61,"loc":{"start":{"line":61,"column":16},"end":{"line":61,"column":63}}},"5":{"name":"_initializeDataFlow","line":119,"loc":{"start":{"line":119,"column":41},"end":{"line":119,"column":86}}},"6":{"name":"_read","line":143,"loc":{"start":{"line":143,"column":27},"end":{"line":143,"column":44}}},"7":{"name":"_write","line":150,"loc":{"start":{"line":150,"column":28},"end":{"line":150,"column":67}}},"8":{"name":"_initializeManagement","line":157,"loc":{"start":{"line":157,"column":43},"end":{"line":157,"column":76}}},"9":{"name":"createStream","line":161,"loc":{"start":{"line":161,"column":34},"end":{"line":161,"column":58}}},"10":{"name":"_initializeErrorHandling","line":168,"loc":{"start":{"line":168,"column":46},"end":{"line":168,"column":82}}},"11":{"name":"_error","line":176,"loc":{"start":{"line":176,"column":28},"end":{"line":176,"column":62}}},"12":{"name":"close","line":181,"loc":{"start":{"line":181,"column":27},"end":{"line":181,"column":49}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":40}},"2":{"start":{"line":2,"column":0},"end":{"line":2,"column":50}},"3":{"start":{"line":3,"column":0},"end":{"line":3,"column":52}},"4":{"start":{"line":4,"column":0},"end":{"line":4,"column":54}},"5":{"start":{"line":5,"column":0},"end":{"line":5,"column":56}},"6":{"start":{"line":6,"column":0},"end":{"line":6,"column":54}},"7":{"start":{"line":7,"column":0},"end":{"line":7,"column":44}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":28}},"9":{"start":{"line":15,"column":0},"end":{"line":41,"column":1}},"10":{"start":{"line":16,"column":2},"end":{"line":16,"column":20}},"11":{"start":{"line":19,"column":2},"end":{"line":19,"column":69}},"12":{"start":{"line":23,"column":2},"end":{"line":29,"column":3}},"13":{"start":{"line":24,"column":4},"end":{"line":24,"column":25}},"14":{"start":{"line":25,"column":9},"end":{"line":29,"column":3}},"15":{"start":{"line":26,"column":4},"end":{"line":26,"column":24}},"16":{"start":{"line":28,"column":4},"end":{"line":28,"column":45}},"17":{"start":{"line":34,"column":2},"end":{"line":34,"column":43}},"18":{"start":{"line":37,"column":2},"end":{"line":37,"column":31}},"19":{"start":{"line":40,"column":2},"end":{"line":40,"column":34}},"20":{"start":{"line":42,"column":0},"end":{"line":42,"column":91}},"21":{"start":{"line":47,"column":0},"end":{"line":47,"column":68}},"22":{"start":{"line":50,"column":0},"end":{"line":53,"column":2}},"23":{"start":{"line":51,"column":2},"end":{"line":51,"column":66}},"24":{"start":{"line":52,"column":2},"end":{"line":52,"column":28}},"25":{"start":{"line":56,"column":0},"end":{"line":84,"column":2}},"26":{"start":{"line":58,"column":2},"end":{"line":58,"column":17}},"27":{"start":{"line":61,"column":2},"end":{"line":83,"column":4}},"28":{"start":{"line":64,"column":4},"end":{"line":64,"column":24}},"29":{"start":{"line":65,"column":4},"end":{"line":73,"column":5}},"30":{"start":{"line":66,"column":6},"end":{"line":71,"column":7}},"31":{"start":{"line":67,"column":8},"end":{"line":68,"column":76}},"32":{"start":{"line":69,"column":8},"end":{"line":69,"column":85}},"33":{"start":{"line":70,"column":8},"end":{"line":70,"column":15}},"34":{"start":{"line":72,"column":6},"end":{"line":72,"column":18}},"35":{"start":{"line":77,"column":4},"end":{"line":82,"column":5}},"36":{"start":{"line":78,"column":6},"end":{"line":78,"column":84}},"37":{"start":{"line":79,"column":6},"end":{"line":79,"column":25}},"38":{"start":{"line":80,"column":6},"end":{"line":80,"column":43}},"39":{"start":{"line":81,"column":6},"end":{"line":81,"column":41}},"40":{"start":{"line":119,"column":0},"end":{"line":141,"column":2}},"41":{"start":{"line":120,"column":2},"end":{"line":120,"column":54}},"42":{"start":{"line":121,"column":2},"end":{"line":129,"column":3}},"43":{"start":{"line":122,"column":4},"end":{"line":122,"column":22}},"44":{"start":{"line":123,"column":4},"end":{"line":123,"column":31}},"45":{"start":{"line":124,"column":4},"end":{"line":124,"column":34}},"46":{"start":{"line":126,"column":4},"end":{"line":126,"column":22}},"47":{"start":{"line":127,"column":4},"end":{"line":127,"column":32}},"48":{"start":{"line":128,"column":4},"end":{"line":128,"column":33}},"49":{"start":{"line":131,"column":2},"end":{"line":131,"column":49}},"50":{"start":{"line":132,"column":2},"end":{"line":132,"column":51}},"51":{"start":{"line":133,"column":2},"end":{"line":133,"column":65}},"52":{"start":{"line":134,"column":2},"end":{"line":134,"column":69}},"53":{"start":{"line":135,"column":2},"end":{"line":135,"column":74}},"54":{"start":{"line":137,"column":2},"end":{"line":137,"column":65}},"55":{"start":{"line":138,"column":2},"end":{"line":138,"column":69}},"56":{"start":{"line":140,"column":2},"end":{"line":140,"column":57}},"57":{"start":{"line":143,"column":0},"end":{"line":148,"column":2}},"58":{"start":{"line":144,"column":2},"end":{"line":144,"column":31}},"59":{"start":{"line":145,"column":2},"end":{"line":147,"column":3}},"60":{"start":{"line":146,"column":4},"end":{"line":146,"column":34}},"61":{"start":{"line":150,"column":0},"end":{"line":152,"column":2}},"62":{"start":{"line":151,"column":2},"end":{"line":151,"column":50}},"63":{"start":{"line":157,"column":0},"end":{"line":159,"column":2}},"64":{"start":{"line":158,"column":2},"end":{"line":158,"column":64}},"65":{"start":{"line":161,"column":0},"end":{"line":163,"column":2}},"66":{"start":{"line":162,"column":2},"end":{"line":162,"column":41}},"67":{"start":{"line":168,"column":0},"end":{"line":174,"column":2}},"68":{"start":{"line":169,"column":2},"end":{"line":169,"column":69}},"69":{"start":{"line":170,"column":2},"end":{"line":170,"column":73}},"70":{"start":{"line":171,"column":2},"end":{"line":171,"column":69}},"71":{"start":{"line":172,"column":2},"end":{"line":172,"column":73}},"72":{"start":{"line":173,"column":2},"end":{"line":173,"column":69}},"73":{"start":{"line":176,"column":0},"end":{"line":179,"column":2}},"74":{"start":{"line":177,"column":2},"end":{"line":177,"column":95}},"75":{"start":{"line":178,"column":2},"end":{"line":178,"column":20}},"76":{"start":{"line":181,"column":0},"end":{"line":183,"column":2}},"77":{"start":{"line":182,"column":2},"end":{"line":182,"column":32}}},"branchMap":{"1":{"line":19,"type":"binary-expr","locations":[{"start":{"line":19,"column":15},"end":{"line":19,"column":18}},{"start":{"line":19,"column":22},"end":{"line":19,"column":34}}]},"2":{"line":23,"type":"if","locations":[{"start":{"line":23,"column":2},"end":{"line":23,"column":2}},{"start":{"line":23,"column":2},"end":{"line":23,"column":2}}]},"3":{"line":25,"type":"if","locations":[{"start":{"line":25,"column":9},"end":{"line":25,"column":9}},{"start":{"line":25,"column":9},"end":{"line":25,"column":9}}]},"4":{"line":65,"type":"binary-expr","locations":[{"start":{"line":65,"column":10},"end":{"line":65,"column":40}},{"start":{"line":65,"column":44},"end":{"line":65,"column":76}}]},"5":{"line":66,"type":"if","locations":[{"start":{"line":66,"column":6},"end":{"line":66,"column":6}},{"start":{"line":66,"column":6},"end":{"line":66,"column":6}}]},"6":{"line":77,"type":"if","locations":[{"start":{"line":77,"column":4},"end":{"line":77,"column":4}},{"start":{"line":77,"column":4},"end":{"line":77,"column":4}}]},"7":{"line":121,"type":"if","locations":[{"start":{"line":121,"column":2},"end":{"line":121,"column":2}},{"start":{"line":121,"column":2},"end":{"line":121,"column":2}}]},"8":{"line":145,"type":"binary-expr","locations":[{"start":{"line":145,"column":9},"end":{"line":145,"column":19}},{"start":{"line":145,"column":24},"end":{"line":145,"column":55}}]}}},"/data/upstream/node-http2/lib/framer.js":{"path":"/data/upstream/node-http2/lib/framer.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":5,"8":5,"9":1,"10":1,"11":18,"12":18,"13":18,"14":18,"15":18,"16":18,"17":38,"18":38,"19":18,"20":1,"21":5,"22":5,"23":5,"24":1,"25":1,"26":41,"27":41,"28":41,"29":41,"30":23,"31":1,"32":25,"33":25,"34":25,"35":48,"36":48,"37":48,"38":48,"39":48,"40":18,"41":18,"42":48,"43":18,"44":18,"45":18,"46":0,"47":0,"48":18,"49":18,"50":0,"51":18,"52":25,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":28,"61":28,"62":28,"63":30,"64":28,"65":28,"66":28,"67":28,"68":28,"69":28,"70":29,"71":29,"72":29,"73":5,"74":28,"75":28,"76":28,"77":28,"78":1,"79":28,"80":28,"81":28,"82":28,"83":28,"84":28,"85":38,"86":28,"87":1,"88":1,"89":1,"90":1,"91":4,"92":1,"93":4,"94":1,"95":1,"96":1,"97":1,"98":6,"99":2,"100":2,"101":2,"102":2,"103":6,"104":1,"105":6,"106":2,"107":2,"108":4,"109":1,"110":1,"111":1,"112":1,"113":2,"114":2,"115":2,"116":1,"117":2,"118":1,"119":1,"120":1,"121":1,"122":2,"123":2,"124":2,"125":2,"126":2,"127":1,"128":2,"129":1,"130":1,"131":1,"132":1,"133":6,"134":6,"135":18,"136":12,"137":12,"138":12,"139":6,"140":6,"141":6,"142":12,"143":12,"144":6,"145":1,"146":6,"147":6,"148":0,"149":6,"150":12,"151":12,"152":12,"153":12,"154":0,"155":12,"156":1,"157":1,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":2,"165":2,"166":2,"167":2,"168":2,"169":1,"170":2,"171":2,"172":1,"173":1,"174":1,"175":1,"176":2,"177":2,"178":1,"179":2,"180":0,"181":2,"182":1,"183":1,"184":1,"185":1,"186":2,"187":2,"188":2,"189":2,"190":2,"191":2,"192":2,"193":1,"194":2,"195":2,"196":1,"197":1,"198":1,"199":1,"200":2,"201":2,"202":2,"203":2,"204":1,"205":2,"206":1,"207":1,"208":1,"209":0,"210":0,"211":0,"212":0,"213":0,"214":0,"215":0,"216":0,"217":0,"218":0,"219":0,"220":0,"221":0,"222":0,"223":0,"224":0,"225":0,"226":0,"227":1,"228":0},"b":{"1":[0,1],"2":[5,1],"3":[5,1],"4":[23,18],"5":[18,30],"6":[48,35],"7":[18,30],"8":[48,18],"9":[18,0],"10":[0,18],"11":[5,24],"12":[28,4],"13":[2,4],"14":[2,2],"15":[2,4],"16":[2,2],"17":[12,6],"18":[4,8],"19":[0,6],"20":[0,12],"21":[12,12],"22":[4,8],"23":[2,2],"24":[2,2],"25":[0,2],"26":[2,2],"27":[2,2],"28":[2,2],"29":[0,0],"30":[0,0],"31":[0,0],"32":[0,0],"33":[0,0],"34":[0,0]},"f":{"1":123,"2":5,"3":18,"4":5,"5":41,"6":25,"7":28,"8":28,"9":4,"10":4,"11":6,"12":6,"13":2,"14":2,"15":2,"16":2,"17":6,"18":18,"19":6,"20":2,"21":2,"22":2,"23":2,"24":2,"25":2,"26":2,"27":2,"28":0,"29":0,"30":0,"31":0},"fnMap":{"1":{"name":"noop","line":5,"loc":{"start":{"line":5,"column":60},"end":{"line":5,"column":76}}},"2":{"name":"Serializer","line":25,"loc":{"start":{"line":25,"column":0},"end":{"line":25,"column":25}}},"3":{"name":"_transform","line":34,"loc":{"start":{"line":34,"column":34},"end":{"line":34,"column":77}}},"4":{"name":"Deserializer","line":62,"loc":{"start":{"line":62,"column":0},"end":{"line":62,"column":27}}},"5":{"name":"(anonymous_5)","line":74,"loc":{"start":{"line":74,"column":31},"end":{"line":74,"column":46}}},"6":{"name":"_transform","line":85,"loc":{"start":{"line":85,"column":36},"end":{"line":85,"column":79}}},"7":{"name":"writeCommonHeader","line":189,"loc":{"start":{"line":189,"column":26},"end":{"line":189,"column":69}}},"8":{"name":"readCommonHeader","line":218,"loc":{"start":{"line":218,"column":28},"end":{"line":218,"column":69}}},"9":{"name":"writeData","line":263,"loc":{"start":{"line":263,"column":18},"end":{"line":263,"column":53}}},"10":{"name":"readData","line":267,"loc":{"start":{"line":267,"column":20},"end":{"line":267,"column":53}}},"11":{"name":"writeHeadersPriority","line":306,"loc":{"start":{"line":306,"column":21},"end":{"line":306,"column":67}}},"12":{"name":"readHeadersPriority","line":316,"loc":{"start":{"line":316,"column":23},"end":{"line":316,"column":67}}},"13":{"name":"writePriority","line":346,"loc":{"start":{"line":346,"column":22},"end":{"line":346,"column":61}}},"14":{"name":"readPriority","line":352,"loc":{"start":{"line":352,"column":24},"end":{"line":352,"column":61}}},"15":{"name":"writeRstStream","line":378,"loc":{"start":{"line":378,"column":24},"end":{"line":378,"column":64}}},"16":{"name":"readRstStream","line":386,"loc":{"start":{"line":386,"column":26},"end":{"line":386,"column":64}}},"17":{"name":"writeSettings","line":422,"loc":{"start":{"line":422,"column":22},"end":{"line":422,"column":61}}},"18":{"name":"(anonymous_18)","line":424,"loc":{"start":{"line":424,"column":26},"end":{"line":424,"column":48}}},"19":{"name":"readSettings","line":442,"loc":{"start":{"line":442,"column":24},"end":{"line":442,"column":61}}},"20":{"name":"writePushPromise","line":506,"loc":{"start":{"line":506,"column":26},"end":{"line":506,"column":68}}},"21":{"name":"readPushPromise","line":514,"loc":{"start":{"line":514,"column":28},"end":{"line":514,"column":68}}},"22":{"name":"writePing","line":538,"loc":{"start":{"line":538,"column":18},"end":{"line":538,"column":53}}},"23":{"name":"readPing","line":543,"loc":{"start":{"line":543,"column":20},"end":{"line":543,"column":53}}},"24":{"name":"writeGoaway","line":578,"loc":{"start":{"line":578,"column":20},"end":{"line":578,"column":57}}},"25":{"name":"readGoaway","line":591,"loc":{"start":{"line":591,"column":22},"end":{"line":591,"column":57}}},"26":{"name":"writeWindowUpdate","line":618,"loc":{"start":{"line":618,"column":27},"end":{"line":618,"column":70}}},"27":{"name":"readWindowUpdate","line":625,"loc":{"start":{"line":625,"column":29},"end":{"line":625,"column":70}}},"28":{"name":"(anonymous_28)","line":654,"loc":{"start":{"line":654,"column":28},"end":{"line":654,"column":44}}},"29":{"name":"(anonymous_29)","line":667,"loc":{"start":{"line":667,"column":71},"end":{"line":667,"column":86}}},"30":{"name":"(anonymous_30)","line":683,"loc":{"start":{"line":683,"column":57},"end":{"line":683,"column":72}}},"31":{"name":"(anonymous_31)","line":691,"loc":{"start":{"line":691,"column":27},"end":{"line":691,"column":42}}}},"statementMap":{"1":{"start":{"line":5,"column":0},"end":{"line":5,"column":79}},"2":{"start":{"line":6,"column":0},"end":{"line":6,"column":35}},"3":{"start":{"line":8,"column":0},"end":{"line":8,"column":44}},"4":{"start":{"line":10,"column":0},"end":{"line":10,"column":32}},"5":{"start":{"line":11,"column":0},"end":{"line":11,"column":36}},"6":{"start":{"line":25,"column":0},"end":{"line":28,"column":1}},"7":{"start":{"line":26,"column":2},"end":{"line":26,"column":71}},"8":{"start":{"line":27,"column":2},"end":{"line":27,"column":45}},"9":{"start":{"line":29,"column":0},"end":{"line":29,"column":98}},"10":{"start":{"line":34,"column":0},"end":{"line":49,"column":2}},"11":{"start":{"line":35,"column":2},"end":{"line":35,"column":54}},"12":{"start":{"line":37,"column":2},"end":{"line":37,"column":72}},"13":{"start":{"line":39,"column":2},"end":{"line":39,"column":19}},"14":{"start":{"line":40,"column":2},"end":{"line":40,"column":41}},"15":{"start":{"line":41,"column":2},"end":{"line":41,"column":42}},"16":{"start":{"line":43,"column":2},"end":{"line":46,"column":3}},"17":{"start":{"line":44,"column":4},"end":{"line":44,"column":59}},"18":{"start":{"line":45,"column":4},"end":{"line":45,"column":26}},"19":{"start":{"line":48,"column":2},"end":{"line":48,"column":9}},"20":{"start":{"line":62,"column":0},"end":{"line":66,"column":1}},"21":{"start":{"line":63,"column":2},"end":{"line":63,"column":73}},"22":{"start":{"line":64,"column":2},"end":{"line":64,"column":45}},"23":{"start":{"line":65,"column":2},"end":{"line":65,"column":33}},"24":{"start":{"line":67,"column":0},"end":{"line":67,"column":102}},"25":{"start":{"line":74,"column":0},"end":{"line":81,"column":2}},"26":{"start":{"line":75,"column":2},"end":{"line":75,"column":19}},"27":{"start":{"line":76,"column":2},"end":{"line":76,"column":34}},"28":{"start":{"line":77,"column":2},"end":{"line":77,"column":51}},"29":{"start":{"line":78,"column":2},"end":{"line":80,"column":3}},"30":{"start":{"line":79,"column":4},"end":{"line":79,"column":21}},"31":{"start":{"line":85,"column":0},"end":{"line":131,"column":2}},"32":{"start":{"line":86,"column":2},"end":{"line":86,"column":17}},"33":{"start":{"line":88,"column":2},"end":{"line":88,"column":52}},"34":{"start":{"line":90,"column":2},"end":{"line":128,"column":3}},"35":{"start":{"line":93,"column":4},"end":{"line":93,"column":85}},"36":{"start":{"line":94,"column":4},"end":{"line":94,"column":68}},"37":{"start":{"line":95,"column":4},"end":{"line":95,"column":27}},"38":{"start":{"line":96,"column":4},"end":{"line":96,"column":21}},"39":{"start":{"line":103,"column":4},"end":{"line":106,"column":5}},"40":{"start":{"line":104,"column":6},"end":{"line":104,"column":59}},"41":{"start":{"line":105,"column":6},"end":{"line":105,"column":37}},"42":{"start":{"line":113,"column":4},"end":{"line":127,"column":5}},"43":{"start":{"line":114,"column":6},"end":{"line":125,"column":7}},"44":{"start":{"line":115,"column":8},"end":{"line":115,"column":78}},"45":{"start":{"line":116,"column":8},"end":{"line":122,"column":9}},"46":{"start":{"line":117,"column":10},"end":{"line":117,"column":58}},"47":{"start":{"line":118,"column":10},"end":{"line":118,"column":47}},"48":{"start":{"line":120,"column":10},"end":{"line":120,"column":68}},"49":{"start":{"line":121,"column":10},"end":{"line":121,"column":33}},"50":{"start":{"line":124,"column":8},"end":{"line":124,"column":78}},"51":{"start":{"line":126,"column":6},"end":{"line":126,"column":37}},"52":{"start":{"line":130,"column":2},"end":{"line":130,"column":9}},"53":{"start":{"line":178,"column":0},"end":{"line":178,"column":27}},"54":{"start":{"line":179,"column":0},"end":{"line":179,"column":29}},"55":{"start":{"line":181,"column":0},"end":{"line":181,"column":20}},"56":{"start":{"line":183,"column":0},"end":{"line":183,"column":20}},"57":{"start":{"line":185,"column":0},"end":{"line":185,"column":62}},"58":{"start":{"line":187,"column":0},"end":{"line":187,"column":32}},"59":{"start":{"line":189,"column":0},"end":{"line":216,"column":2}},"60":{"start":{"line":190,"column":2},"end":{"line":190,"column":52}},"61":{"start":{"line":192,"column":2},"end":{"line":192,"column":15}},"62":{"start":{"line":193,"column":2},"end":{"line":195,"column":3}},"63":{"start":{"line":194,"column":4},"end":{"line":194,"column":30}},"64":{"start":{"line":196,"column":2},"end":{"line":196,"column":73}},"65":{"start":{"line":197,"column":2},"end":{"line":197,"column":38}},"66":{"start":{"line":199,"column":2},"end":{"line":199,"column":46}},"67":{"start":{"line":200,"column":2},"end":{"line":200,"column":37}},"68":{"start":{"line":202,"column":2},"end":{"line":202,"column":19}},"69":{"start":{"line":203,"column":2},"end":{"line":209,"column":3}},"70":{"start":{"line":204,"column":4},"end":{"line":204,"column":56}},"71":{"start":{"line":205,"column":4},"end":{"line":205,"column":87}},"72":{"start":{"line":206,"column":4},"end":{"line":208,"column":5}},"73":{"start":{"line":207,"column":6},"end":{"line":207,"column":34}},"74":{"start":{"line":210,"column":2},"end":{"line":210,"column":39}},"75":{"start":{"line":212,"column":2},"end":{"line":212,"column":76}},"76":{"start":{"line":213,"column":2},"end":{"line":213,"column":51}},"77":{"start":{"line":215,"column":2},"end":{"line":215,"column":32}},"78":{"start":{"line":218,"column":0},"end":{"line":231,"column":2}},"79":{"start":{"line":219,"column":2},"end":{"line":219,"column":40}},"80":{"start":{"line":221,"column":2},"end":{"line":221,"column":47}},"81":{"start":{"line":223,"column":2},"end":{"line":223,"column":19}},"82":{"start":{"line":224,"column":2},"end":{"line":224,"column":37}},"83":{"start":{"line":225,"column":2},"end":{"line":225,"column":44}},"84":{"start":{"line":226,"column":2},"end":{"line":228,"column":3}},"85":{"start":{"line":227,"column":4},"end":{"line":227,"column":64}},"86":{"start":{"line":230,"column":2},"end":{"line":230,"column":53}},"87":{"start":{"line":257,"column":0},"end":{"line":257,"column":25}},"88":{"start":{"line":259,"column":0},"end":{"line":259,"column":45}},"89":{"start":{"line":261,"column":0},"end":{"line":261,"column":39}},"90":{"start":{"line":263,"column":0},"end":{"line":265,"column":2}},"91":{"start":{"line":264,"column":2},"end":{"line":264,"column":27}},"92":{"start":{"line":267,"column":0},"end":{"line":269,"column":2}},"93":{"start":{"line":268,"column":2},"end":{"line":268,"column":22}},"94":{"start":{"line":290,"column":0},"end":{"line":290,"column":28}},"95":{"start":{"line":292,"column":0},"end":{"line":292,"column":75}},"96":{"start":{"line":294,"column":0},"end":{"line":294,"column":65}},"97":{"start":{"line":306,"column":0},"end":{"line":314,"column":2}},"98":{"start":{"line":307,"column":2},"end":{"line":312,"column":3}},"99":{"start":{"line":308,"column":4},"end":{"line":308,"column":31}},"100":{"start":{"line":309,"column":4},"end":{"line":309,"column":68}},"101":{"start":{"line":310,"column":4},"end":{"line":310,"column":44}},"102":{"start":{"line":311,"column":4},"end":{"line":311,"column":25}},"103":{"start":{"line":313,"column":2},"end":{"line":313,"column":27}},"104":{"start":{"line":316,"column":0},"end":{"line":323,"column":2}},"105":{"start":{"line":317,"column":2},"end":{"line":322,"column":3}},"106":{"start":{"line":318,"column":4},"end":{"line":318,"column":57}},"107":{"start":{"line":319,"column":4},"end":{"line":319,"column":33}},"108":{"start":{"line":321,"column":4},"end":{"line":321,"column":24}},"109":{"start":{"line":332,"column":0},"end":{"line":332,"column":29}},"110":{"start":{"line":334,"column":0},"end":{"line":334,"column":25}},"111":{"start":{"line":336,"column":0},"end":{"line":336,"column":47}},"112":{"start":{"line":346,"column":0},"end":{"line":350,"column":2}},"113":{"start":{"line":347,"column":2},"end":{"line":347,"column":29}},"114":{"start":{"line":348,"column":2},"end":{"line":348,"column":42}},"115":{"start":{"line":349,"column":2},"end":{"line":349,"column":23}},"116":{"start":{"line":352,"column":0},"end":{"line":354,"column":2}},"117":{"start":{"line":353,"column":2},"end":{"line":353,"column":42}},"118":{"start":{"line":363,"column":0},"end":{"line":363,"column":31}},"119":{"start":{"line":365,"column":0},"end":{"line":365,"column":27}},"120":{"start":{"line":367,"column":0},"end":{"line":367,"column":46}},"121":{"start":{"line":378,"column":0},"end":{"line":384,"column":2}},"122":{"start":{"line":379,"column":2},"end":{"line":379,"column":29}},"123":{"start":{"line":380,"column":2},"end":{"line":380,"column":45}},"124":{"start":{"line":381,"column":2},"end":{"line":381,"column":46}},"125":{"start":{"line":382,"column":2},"end":{"line":382,"column":32}},"126":{"start":{"line":383,"column":2},"end":{"line":383,"column":23}},"127":{"start":{"line":386,"column":0},"end":{"line":388,"column":2}},"128":{"start":{"line":387,"column":2},"end":{"line":387,"column":51}},"129":{"start":{"line":398,"column":0},"end":{"line":398,"column":29}},"130":{"start":{"line":400,"column":0},"end":{"line":400,"column":25}},"131":{"start":{"line":402,"column":0},"end":{"line":402,"column":47}},"132":{"start":{"line":422,"column":0},"end":{"line":440,"column":2}},"133":{"start":{"line":423,"column":2},"end":{"line":423,"column":64}},"134":{"start":{"line":424,"column":2},"end":{"line":430,"column":5}},"135":{"start":{"line":425,"column":4},"end":{"line":429,"column":5}},"136":{"start":{"line":426,"column":6},"end":{"line":426,"column":65}},"137":{"start":{"line":427,"column":6},"end":{"line":427,"column":47}},"138":{"start":{"line":428,"column":6},"end":{"line":428,"column":78}},"139":{"start":{"line":431,"column":2},"end":{"line":431,"column":84}},"140":{"start":{"line":433,"column":2},"end":{"line":433,"column":47}},"141":{"start":{"line":434,"column":2},"end":{"line":437,"column":3}},"142":{"start":{"line":435,"column":4},"end":{"line":435,"column":57}},"143":{"start":{"line":436,"column":4},"end":{"line":436,"column":53}},"144":{"start":{"line":439,"column":2},"end":{"line":439,"column":23}},"145":{"start":{"line":442,"column":0},"end":{"line":457,"column":2}},"146":{"start":{"line":443,"column":2},"end":{"line":443,"column":22}},"147":{"start":{"line":445,"column":2},"end":{"line":447,"column":3}},"148":{"start":{"line":446,"column":4},"end":{"line":446,"column":36}},"149":{"start":{"line":448,"column":2},"end":{"line":456,"column":3}},"150":{"start":{"line":449,"column":4},"end":{"line":449,"column":49}},"151":{"start":{"line":450,"column":4},"end":{"line":450,"column":38}},"152":{"start":{"line":451,"column":4},"end":{"line":451,"column":45}},"153":{"start":{"line":452,"column":4},"end":{"line":454,"column":5}},"154":{"start":{"line":453,"column":6},"end":{"line":453,"column":15}},"155":{"start":{"line":455,"column":4},"end":{"line":455,"column":79}},"156":{"start":{"line":460,"column":0},"end":{"line":460,"column":25}},"157":{"start":{"line":464,"column":0},"end":{"line":464,"column":78}},"158":{"start":{"line":468,"column":0},"end":{"line":468,"column":75}},"159":{"start":{"line":474,"column":0},"end":{"line":474,"column":76}},"160":{"start":{"line":488,"column":0},"end":{"line":488,"column":33}},"161":{"start":{"line":490,"column":0},"end":{"line":490,"column":47}},"162":{"start":{"line":492,"column":0},"end":{"line":492,"column":77}},"163":{"start":{"line":506,"column":0},"end":{"line":512,"column":2}},"164":{"start":{"line":507,"column":2},"end":{"line":507,"column":29}},"165":{"start":{"line":508,"column":2},"end":{"line":508,"column":80}},"166":{"start":{"line":509,"column":2},"end":{"line":509,"column":49}},"167":{"start":{"line":510,"column":2},"end":{"line":510,"column":23}},"168":{"start":{"line":511,"column":2},"end":{"line":511,"column":27}},"169":{"start":{"line":514,"column":0},"end":{"line":517,"column":2}},"170":{"start":{"line":515,"column":2},"end":{"line":515,"column":62}},"171":{"start":{"line":516,"column":2},"end":{"line":516,"column":31}},"172":{"start":{"line":530,"column":0},"end":{"line":530,"column":25}},"173":{"start":{"line":532,"column":0},"end":{"line":532,"column":27}},"174":{"start":{"line":534,"column":0},"end":{"line":534,"column":39}},"175":{"start":{"line":538,"column":0},"end":{"line":541,"column":2}},"176":{"start":{"line":539,"column":2},"end":{"line":539,"column":101}},"177":{"start":{"line":540,"column":2},"end":{"line":540,"column":27}},"178":{"start":{"line":543,"column":0},"end":{"line":548,"column":2}},"179":{"start":{"line":544,"column":2},"end":{"line":546,"column":3}},"180":{"start":{"line":545,"column":4},"end":{"line":545,"column":37}},"181":{"start":{"line":547,"column":2},"end":{"line":547,"column":22}},"182":{"start":{"line":557,"column":0},"end":{"line":557,"column":27}},"183":{"start":{"line":559,"column":0},"end":{"line":559,"column":23}},"184":{"start":{"line":561,"column":0},"end":{"line":561,"column":57}},"185":{"start":{"line":578,"column":0},"end":{"line":589,"column":2}},"186":{"start":{"line":579,"column":2},"end":{"line":579,"column":29}},"187":{"start":{"line":581,"column":2},"end":{"line":581,"column":72}},"188":{"start":{"line":582,"column":2},"end":{"line":582,"column":45}},"189":{"start":{"line":584,"column":2},"end":{"line":584,"column":45}},"190":{"start":{"line":585,"column":2},"end":{"line":585,"column":46}},"191":{"start":{"line":586,"column":2},"end":{"line":586,"column":32}},"192":{"start":{"line":588,"column":2},"end":{"line":588,"column":23}},"193":{"start":{"line":591,"column":0},"end":{"line":594,"column":2}},"194":{"start":{"line":592,"column":2},"end":{"line":592,"column":58}},"195":{"start":{"line":593,"column":2},"end":{"line":593,"column":51}},"196":{"start":{"line":607,"column":0},"end":{"line":607,"column":34}},"197":{"start":{"line":609,"column":0},"end":{"line":609,"column":48}},"198":{"start":{"line":611,"column":0},"end":{"line":611,"column":55}},"199":{"start":{"line":618,"column":0},"end":{"line":623,"column":2}},"200":{"start":{"line":619,"column":2},"end":{"line":619,"column":29}},"201":{"start":{"line":620,"column":2},"end":{"line":620,"column":72}},"202":{"start":{"line":621,"column":2},"end":{"line":621,"column":45}},"203":{"start":{"line":622,"column":2},"end":{"line":622,"column":23}},"204":{"start":{"line":625,"column":0},"end":{"line":627,"column":2}},"205":{"start":{"line":626,"column":2},"end":{"line":626,"column":58}},"206":{"start":{"line":632,"column":0},"end":{"line":643,"column":2}},"207":{"start":{"line":653,"column":0},"end":{"line":653,"column":21}},"208":{"start":{"line":654,"column":0},"end":{"line":688,"column":2}},"209":{"start":{"line":655,"column":2},"end":{"line":657,"column":3}},"210":{"start":{"line":656,"column":4},"end":{"line":656,"column":16}},"211":{"start":{"line":659,"column":2},"end":{"line":661,"column":3}},"212":{"start":{"line":660,"column":4},"end":{"line":660,"column":20}},"213":{"start":{"line":663,"column":2},"end":{"line":663,"column":26}},"214":{"start":{"line":664,"column":2},"end":{"line":664,"column":20}},"215":{"start":{"line":666,"column":2},"end":{"line":666,"column":34}},"216":{"start":{"line":667,"column":2},"end":{"line":669,"column":5}},"217":{"start":{"line":668,"column":4},"end":{"line":668,"column":33}},"218":{"start":{"line":671,"column":2},"end":{"line":681,"column":3}},"219":{"start":{"line":672,"column":4},"end":{"line":676,"column":5}},"220":{"start":{"line":673,"column":6},"end":{"line":673,"column":70}},"221":{"start":{"line":675,"column":6},"end":{"line":675,"column":49}},"222":{"start":{"line":678,"column":4},"end":{"line":680,"column":5}},"223":{"start":{"line":679,"column":6},"end":{"line":679,"column":42}},"224":{"start":{"line":683,"column":2},"end":{"line":685,"column":5}},"225":{"start":{"line":684,"column":4},"end":{"line":684,"column":38}},"226":{"start":{"line":687,"column":2},"end":{"line":687,"column":18}},"227":{"start":{"line":691,"column":0},"end":{"line":693,"column":2}},"228":{"start":{"line":692,"column":2},"end":{"line":692,"column":30}}},"branchMap":{"1":{"line":5,"type":"cond-expr","locations":[{"start":{"line":5,"column":40},"end":{"line":5,"column":57}},{"start":{"line":5,"column":60},"end":{"line":5,"column":78}}]},"2":{"line":26,"type":"binary-expr","locations":[{"start":{"line":26,"column":15},"end":{"line":26,"column":18}},{"start":{"line":26,"column":22},"end":{"line":26,"column":34}}]},"3":{"line":63,"type":"binary-expr","locations":[{"start":{"line":63,"column":15},"end":{"line":63,"column":18}},{"start":{"line":63,"column":22},"end":{"line":63,"column":34}}]},"4":{"line":78,"type":"if","locations":[{"start":{"line":78,"column":2},"end":{"line":78,"column":2}},{"start":{"line":78,"column":2},"end":{"line":78,"column":2}}]},"5":{"line":103,"type":"if","locations":[{"start":{"line":103,"column":4},"end":{"line":103,"column":4}},{"start":{"line":103,"column":4},"end":{"line":103,"column":4}}]},"6":{"line":103,"type":"binary-expr","locations":[{"start":{"line":103,"column":9},"end":{"line":103,"column":45}},{"start":{"line":103,"column":50},"end":{"line":103,"column":72}}]},"7":{"line":113,"type":"if","locations":[{"start":{"line":113,"column":4},"end":{"line":113,"column":4}},{"start":{"line":113,"column":4},"end":{"line":113,"column":4}}]},"8":{"line":113,"type":"binary-expr","locations":[{"start":{"line":113,"column":9},"end":{"line":113,"column":45}},{"start":{"line":113,"column":50},"end":{"line":113,"column":73}}]},"9":{"line":114,"type":"if","locations":[{"start":{"line":114,"column":6},"end":{"line":114,"column":6}},{"start":{"line":114,"column":6},"end":{"line":114,"column":6}}]},"10":{"line":116,"type":"if","locations":[{"start":{"line":116,"column":8},"end":{"line":116,"column":8}},{"start":{"line":116,"column":8},"end":{"line":116,"column":8}}]},"11":{"line":206,"type":"if","locations":[{"start":{"line":206,"column":4},"end":{"line":206,"column":4}},{"start":{"line":206,"column":4},"end":{"line":206,"column":4}}]},"12":{"line":213,"type":"binary-expr","locations":[{"start":{"line":213,"column":29},"end":{"line":213,"column":41}},{"start":{"line":213,"column":45},"end":{"line":213,"column":46}}]},"13":{"line":307,"type":"if","locations":[{"start":{"line":307,"column":2},"end":{"line":307,"column":2}},{"start":{"line":307,"column":2},"end":{"line":307,"column":2}}]},"14":{"line":309,"type":"binary-expr","locations":[{"start":{"line":309,"column":12},"end":{"line":309,"column":31}},{"start":{"line":309,"column":37},"end":{"line":309,"column":65}}]},"15":{"line":317,"type":"if","locations":[{"start":{"line":317,"column":2},"end":{"line":317,"column":2}},{"start":{"line":317,"column":2},"end":{"line":317,"column":2}}]},"16":{"line":381,"type":"binary-expr","locations":[{"start":{"line":381,"column":10},"end":{"line":381,"column":19}},{"start":{"line":381,"column":25},"end":{"line":381,"column":43}}]},"17":{"line":425,"type":"if","locations":[{"start":{"line":425,"column":4},"end":{"line":425,"column":4}},{"start":{"line":425,"column":4},"end":{"line":425,"column":4}}]},"18":{"line":428,"type":"cond-expr","locations":[{"start":{"line":428,"column":52},"end":{"line":428,"column":66}},{"start":{"line":428,"column":69},"end":{"line":428,"column":74}}]},"19":{"line":445,"type":"if","locations":[{"start":{"line":445,"column":2},"end":{"line":445,"column":2}},{"start":{"line":445,"column":2},"end":{"line":445,"column":2}}]},"20":{"line":452,"type":"if","locations":[{"start":{"line":452,"column":4},"end":{"line":452,"column":4}},{"start":{"line":452,"column":4},"end":{"line":452,"column":4}}]},"21":{"line":452,"type":"binary-expr","locations":[{"start":{"line":452,"column":8},"end":{"line":452,"column":16}},{"start":{"line":452,"column":21},"end":{"line":452,"column":51}}]},"22":{"line":455,"type":"cond-expr","locations":[{"start":{"line":455,"column":50},"end":{"line":455,"column":70}},{"start":{"line":455,"column":73},"end":{"line":455,"column":78}}]},"23":{"line":508,"type":"binary-expr","locations":[{"start":{"line":508,"column":10},"end":{"line":508,"column":36}},{"start":{"line":508,"column":42},"end":{"line":508,"column":77}}]},"24":{"line":539,"type":"binary-expr","locations":[{"start":{"line":539,"column":10},"end":{"line":539,"column":25}},{"start":{"line":539,"column":31},"end":{"line":539,"column":54}}]},"25":{"line":544,"type":"if","locations":[{"start":{"line":544,"column":2},"end":{"line":544,"column":2}},{"start":{"line":544,"column":2},"end":{"line":544,"column":2}}]},"26":{"line":581,"type":"binary-expr","locations":[{"start":{"line":581,"column":10},"end":{"line":581,"column":32}},{"start":{"line":581,"column":38},"end":{"line":581,"column":69}}]},"27":{"line":585,"type":"binary-expr","locations":[{"start":{"line":585,"column":10},"end":{"line":585,"column":19}},{"start":{"line":585,"column":25},"end":{"line":585,"column":43}}]},"28":{"line":620,"type":"binary-expr","locations":[{"start":{"line":620,"column":10},"end":{"line":620,"column":32}},{"start":{"line":620,"column":38},"end":{"line":620,"column":69}}]},"29":{"line":655,"type":"if","locations":[{"start":{"line":655,"column":2},"end":{"line":655,"column":2}},{"start":{"line":655,"column":2},"end":{"line":655,"column":2}}]},"30":{"line":659,"type":"if","locations":[{"start":{"line":659,"column":2},"end":{"line":659,"column":2}},{"start":{"line":659,"column":2},"end":{"line":659,"column":2}}]},"31":{"line":671,"type":"if","locations":[{"start":{"line":671,"column":2},"end":{"line":671,"column":2}},{"start":{"line":671,"column":2},"end":{"line":671,"column":2}}]},"32":{"line":672,"type":"if","locations":[{"start":{"line":672,"column":4},"end":{"line":672,"column":4}},{"start":{"line":672,"column":4},"end":{"line":672,"column":4}}]},"33":{"line":678,"type":"if","locations":[{"start":{"line":678,"column":4},"end":{"line":678,"column":4}},{"start":{"line":678,"column":4},"end":{"line":678,"column":4}}]},"34":{"line":683,"type":"binary-expr","locations":[{"start":{"line":683,"column":31},"end":{"line":683,"column":42}},{"start":{"line":683,"column":46},"end":{"line":683,"column":48}}]}}},"/data/upstream/node-http2/lib/http.js":{"path":"/data/upstream/node-http2/lib/http.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":2,"19":2,"20":2,"21":2,"22":2,"23":2,"24":2,"25":2,"26":1,"27":1,"28":1,"29":2,"30":2,"31":2,"32":2,"33":2,"34":1,"35":1,"36":1,"37":1,"38":0,"39":1,"40":2,"41":1,"42":1,"43":1,"44":0,"45":0,"46":0,"47":1,"48":0,"49":0,"50":0,"51":1,"52":0,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":0,"75":1,"76":0,"77":0,"78":0,"79":0,"80":0,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":0,"96":0,"97":0,"98":0,"99":1,"100":1,"101":1,"102":1,"103":0,"104":0,"105":1,"106":1,"107":0,"108":0,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"119":1,"120":4,"121":4,"122":0,"123":0,"124":0,"125":4,"126":4,"127":1,"128":1,"129":7,"130":7,"131":0,"132":0,"133":0,"134":1,"135":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":0,"148":1,"149":1,"150":1,"151":0,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":2,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":0,"171":0,"172":0,"173":0,"174":0,"175":0,"176":0,"177":0,"178":0,"179":0,"180":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"189":1,"190":1,"191":1,"192":1,"193":1,"194":1,"195":1,"196":1,"197":1,"198":1,"199":1,"200":1,"201":1,"202":1,"203":1,"204":0,"205":0,"206":1,"207":1,"208":1,"209":1,"210":1,"211":0,"212":0,"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":0,"220":1,"221":1,"222":1,"223":1,"224":1,"225":1,"226":1,"227":1,"228":1,"229":1,"230":1,"231":1,"232":0,"233":1,"234":1,"235":1,"236":1,"237":0,"238":1,"239":1,"240":1,"241":1,"242":1,"243":1,"244":1,"245":1,"246":1,"247":1,"248":1,"249":1,"250":1,"251":1,"252":1,"253":1,"254":0,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"266":1,"267":1,"268":1,"269":1,"270":0,"271":1,"272":1,"273":1,"274":1,"275":1,"276":1,"277":1,"278":1,"279":1,"280":1,"281":1,"282":0,"283":0,"284":0,"285":0,"286":0,"287":1,"288":0,"289":0,"290":1,"291":0,"292":0,"293":1,"294":0,"295":0,"296":1,"297":1,"298":1,"299":1,"300":1,"301":1,"302":1,"303":1,"304":0,"305":0,"306":0,"307":1,"308":1,"309":1,"310":1,"311":1,"312":0,"313":0,"314":0,"315":0,"316":1,"317":0,"318":0,"319":0,"320":0,"321":0,"322":0,"323":0,"324":0,"325":1,"326":1,"327":0},"b":{"1":[1,0],"2":[1,1],"3":[0,0],"4":[0,0],"5":[1,0],"6":[1,1],"7":[1,0],"8":[1,1,0],"9":[1,0],"10":[0,0],"11":[0,1],"12":[0,1],"13":[1,0],"14":[0,4],"15":[4,4],"16":[0,7],"17":[0,1],"18":[1,1],"19":[1,0],"20":[1,1],"21":[1,1],"22":[0,0],"23":[0,0],"24":[0,0],"25":[0,0],"26":[0,0],"27":[0,0,0],"28":[1,1],"29":[1,1],"30":[1,0],"31":[1,1],"32":[1,0],"33":[1,0,0],"34":[1,0],"35":[1,0],"36":[0,1],"37":[1,0],"38":[0,1],"39":[0,1],"40":[1,0],"41":[1,0],"42":[1,0],"43":[1,0],"44":[1,0],"45":[1,1],"46":[0,0],"47":[0,0],"48":[0,0],"49":[0,1],"50":[1,1],"51":[0,0]},"f":{"1":2,"2":0,"3":2,"4":1,"5":2,"6":0,"7":0,"8":0,"9":0,"10":1,"11":1,"12":1,"13":1,"14":0,"15":1,"16":0,"17":1,"18":1,"19":1,"20":1,"21":1,"22":2,"23":1,"24":1,"25":1,"26":0,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":0,"35":1,"36":1,"37":1,"38":0,"39":0,"40":0,"41":0,"42":1,"43":1,"44":0,"45":0,"46":0,"47":0},"fnMap":{"1":{"name":"IncomingMessage","line":131,"loc":{"start":{"line":131,"column":0},"end":{"line":131,"column":38}}},"2":{"name":"noop","line":150,"loc":{"start":{"line":150,"column":39},"end":{"line":150,"column":55}}},"3":{"name":"OutgoingMessage","line":155,"loc":{"start":{"line":155,"column":0},"end":{"line":155,"column":30}}},"4":{"name":"_write","line":167,"loc":{"start":{"line":167,"column":35},"end":{"line":167,"column":78}}},"5":{"name":"_finish","line":175,"loc":{"start":{"line":175,"column":36},"end":{"line":175,"column":55}}},"6":{"name":"setHeader","line":183,"loc":{"start":{"line":183,"column":38},"end":{"line":183,"column":70}}},"7":{"name":"removeHeader","line":191,"loc":{"start":{"line":191,"column":41},"end":{"line":191,"column":69}}},"8":{"name":"getHeader","line":199,"loc":{"start":{"line":199,"column":38},"end":{"line":199,"column":63}}},"9":{"name":"noop","line":203,"loc":{"start":{"line":203,"column":39},"end":{"line":203,"column":55}}},"10":{"name":"Server","line":217,"loc":{"start":{"line":217,"column":0},"end":{"line":217,"column":25}}},"11":{"name":"(anonymous_11)","line":233,"loc":{"start":{"line":233,"column":40},"end":{"line":233,"column":57}}},"12":{"name":"_start","line":260,"loc":{"start":{"line":260,"column":26},"end":{"line":260,"column":50}}},"13":{"name":"_onStream","line":269,"loc":{"start":{"line":269,"column":24},"end":{"line":269,"column":51}}},"14":{"name":"_fallback","line":279,"loc":{"start":{"line":279,"column":29},"end":{"line":279,"column":56}}},"15":{"name":"listen","line":293,"loc":{"start":{"line":293,"column":26},"end":{"line":293,"column":58}}},"16":{"name":"close","line":299,"loc":{"start":{"line":299,"column":25},"end":{"line":299,"column":50}}},"17":{"name":"createServer","line":304,"loc":{"start":{"line":304,"column":0},"end":{"line":304,"column":48}}},"18":{"name":"IncomingRequest","line":322,"loc":{"start":{"line":322,"column":0},"end":{"line":322,"column":38}}},"19":{"name":"_onHeaders","line":328,"loc":{"start":{"line":328,"column":39},"end":{"line":328,"column":68}}},"20":{"name":"OutgoingResponse","line":394,"loc":{"start":{"line":394,"column":0},"end":{"line":394,"column":49}}},"21":{"name":"writeHead","line":406,"loc":{"start":{"line":406,"column":39},"end":{"line":406,"column":93}}},"22":{"name":"_implicitHeaders","line":432,"loc":{"start":{"line":432,"column":46},"end":{"line":432,"column":74}}},"23":{"name":"write","line":438,"loc":{"start":{"line":438,"column":35},"end":{"line":438,"column":52}}},"24":{"name":"end","line":443,"loc":{"start":{"line":443,"column":33},"end":{"line":443,"column":48}}},"25":{"name":"_onRequestHeaders","line":448,"loc":{"start":{"line":448,"column":47},"end":{"line":448,"column":83}}},"26":{"name":"push","line":452,"loc":{"start":{"line":452,"column":34},"end":{"line":452,"column":57}}},"27":{"name":"Agent","line":493,"loc":{"start":{"line":493,"column":0},"end":{"line":493,"column":24}}},"28":{"name":"request","line":512,"loc":{"start":{"line":512,"column":26},"end":{"line":512,"column":62}}},"29":{"name":"(anonymous_29)","line":552,"loc":{"start":{"line":552,"column":30},"end":{"line":552,"column":47}}},"30":{"name":"negotiated","line":560,"loc":{"start":{"line":560,"column":21},"end":{"line":560,"column":43}}},"31":{"name":"(anonymous_31)","line":577,"loc":{"start":{"line":577,"column":19},"end":{"line":577,"column":38}}},"32":{"name":"get","line":590,"loc":{"start":{"line":590,"column":22},"end":{"line":590,"column":54}}},"33":{"name":"unbundleSocket","line":596,"loc":{"start":{"line":596,"column":0},"end":{"line":596,"column":32}}},"34":{"name":"request","line":609,"loc":{"start":{"line":609,"column":0},"end":{"line":609,"column":36}}},"35":{"name":"get","line":613,"loc":{"start":{"line":613,"column":0},"end":{"line":613,"column":32}}},"36":{"name":"OutgoingRequest","line":620,"loc":{"start":{"line":620,"column":0},"end":{"line":620,"column":30}}},"37":{"name":"_start","line":630,"loc":{"start":{"line":630,"column":35},"end":{"line":630,"column":68}}},"38":{"name":"_fallback","line":656,"loc":{"start":{"line":656,"column":38},"end":{"line":656,"column":66}}},"39":{"name":"setNoDelay","line":667,"loc":{"start":{"line":667,"column":39},"end":{"line":667,"column":68}}},"40":{"name":"setSocketKeepAlive","line":673,"loc":{"start":{"line":673,"column":47},"end":{"line":673,"column":97}}},"41":{"name":"setTimeout","line":679,"loc":{"start":{"line":679,"column":39},"end":{"line":679,"column":78}}},"42":{"name":"IncomingResponse","line":689,"loc":{"start":{"line":689,"column":0},"end":{"line":689,"column":39}}},"43":{"name":"_onHeaders","line":696,"loc":{"start":{"line":696,"column":40},"end":{"line":696,"column":69}}},"44":{"name":"_onPromise","line":722,"loc":{"start":{"line":722,"column":40},"end":{"line":722,"column":77}}},"45":{"name":"IncomingPromise","line":735,"loc":{"start":{"line":735,"column":0},"end":{"line":735,"column":62}}},"46":{"name":"noop","line":737,"loc":{"start":{"line":737,"column":17},"end":{"line":737,"column":33}}},"47":{"name":"cancel","line":751,"loc":{"start":{"line":751,"column":35},"end":{"line":751,"column":53}}}},"statementMap":{"1":{"start":{"line":102,"column":0},"end":{"line":102,"column":25}},"2":{"start":{"line":103,"column":0},"end":{"line":103,"column":25}},"3":{"start":{"line":104,"column":0},"end":{"line":104,"column":27}},"4":{"start":{"line":105,"column":0},"end":{"line":105,"column":50}},"5":{"start":{"line":106,"column":0},"end":{"line":106,"column":48}},"6":{"start":{"line":107,"column":0},"end":{"line":107,"column":42}},"7":{"start":{"line":108,"column":0},"end":{"line":108,"column":42}},"8":{"start":{"line":109,"column":0},"end":{"line":109,"column":46}},"9":{"start":{"line":110,"column":0},"end":{"line":110,"column":35}},"10":{"start":{"line":111,"column":0},"end":{"line":111,"column":27}},"11":{"start":{"line":112,"column":0},"end":{"line":112,"column":29}},"12":{"start":{"line":114,"column":0},"end":{"line":114,"column":41}},"13":{"start":{"line":115,"column":0},"end":{"line":115,"column":42}},"14":{"start":{"line":116,"column":0},"end":{"line":116,"column":42}},"15":{"start":{"line":120,"column":0},"end":{"line":120,"column":45}},"16":{"start":{"line":124,"column":0},"end":{"line":126,"column":2}},"17":{"start":{"line":131,"column":0},"end":{"line":147,"column":1}},"18":{"start":{"line":133,"column":2},"end":{"line":133,"column":25}},"19":{"start":{"line":134,"column":2},"end":{"line":134,"column":20}},"20":{"start":{"line":135,"column":2},"end":{"line":135,"column":23}},"21":{"start":{"line":137,"column":2},"end":{"line":137,"column":18}},"22":{"start":{"line":141,"column":2},"end":{"line":141,"column":27}},"23":{"start":{"line":142,"column":2},"end":{"line":142,"column":28}},"24":{"start":{"line":143,"column":2},"end":{"line":143,"column":28}},"25":{"start":{"line":146,"column":2},"end":{"line":146,"column":53}},"26":{"start":{"line":148,"column":0},"end":{"line":148,"column":110}},"27":{"start":{"line":150,"column":0},"end":{"line":150,"column":58}},"28":{"start":{"line":155,"column":0},"end":{"line":164,"column":1}},"29":{"start":{"line":157,"column":2},"end":{"line":157,"column":22}},"30":{"start":{"line":159,"column":2},"end":{"line":159,"column":18}},"31":{"start":{"line":160,"column":2},"end":{"line":160,"column":21}},"32":{"start":{"line":161,"column":2},"end":{"line":161,"column":27}},"33":{"start":{"line":163,"column":2},"end":{"line":163,"column":45}},"34":{"start":{"line":165,"column":0},"end":{"line":165,"column":107}},"35":{"start":{"line":167,"column":0},"end":{"line":173,"column":2}},"36":{"start":{"line":168,"column":2},"end":{"line":172,"column":3}},"37":{"start":{"line":169,"column":4},"end":{"line":169,"column":49}},"38":{"start":{"line":171,"column":4},"end":{"line":171,"column":75}},"39":{"start":{"line":175,"column":0},"end":{"line":181,"column":2}},"40":{"start":{"line":176,"column":2},"end":{"line":180,"column":3}},"41":{"start":{"line":177,"column":4},"end":{"line":177,"column":22}},"42":{"start":{"line":179,"column":4},"end":{"line":179,"column":49}},"43":{"start":{"line":183,"column":0},"end":{"line":189,"column":2}},"44":{"start":{"line":184,"column":2},"end":{"line":188,"column":3}},"45":{"start":{"line":185,"column":4},"end":{"line":185,"column":63}},"46":{"start":{"line":187,"column":4},"end":{"line":187,"column":46}},"47":{"start":{"line":191,"column":0},"end":{"line":197,"column":2}},"48":{"start":{"line":192,"column":2},"end":{"line":196,"column":3}},"49":{"start":{"line":193,"column":4},"end":{"line":193,"column":66}},"50":{"start":{"line":195,"column":4},"end":{"line":195,"column":45}},"51":{"start":{"line":199,"column":0},"end":{"line":201,"column":2}},"52":{"start":{"line":200,"column":2},"end":{"line":200,"column":43}},"53":{"start":{"line":203,"column":0},"end":{"line":203,"column":58}},"54":{"start":{"line":208,"column":0},"end":{"line":208,"column":36}},"55":{"start":{"line":209,"column":0},"end":{"line":209,"column":24}},"56":{"start":{"line":210,"column":0},"end":{"line":210,"column":42}},"57":{"start":{"line":211,"column":0},"end":{"line":211,"column":44}},"58":{"start":{"line":212,"column":0},"end":{"line":212,"column":42}},"59":{"start":{"line":217,"column":0},"end":{"line":256,"column":1}},"60":{"start":{"line":218,"column":2},"end":{"line":218,"column":26}},"61":{"start":{"line":220,"column":2},"end":{"line":220,"column":73}},"62":{"start":{"line":221,"column":2},"end":{"line":221,"column":36}},"63":{"start":{"line":223,"column":2},"end":{"line":223,"column":37}},"64":{"start":{"line":224,"column":2},"end":{"line":224,"column":43}},"65":{"start":{"line":227,"column":2},"end":{"line":253,"column":3}},"66":{"start":{"line":228,"column":4},"end":{"line":228,"column":58}},"67":{"start":{"line":229,"column":4},"end":{"line":229,"column":72}},"68":{"start":{"line":230,"column":4},"end":{"line":230,"column":47}},"69":{"start":{"line":231,"column":4},"end":{"line":231,"column":79}},"70":{"start":{"line":232,"column":4},"end":{"line":232,"column":56}},"71":{"start":{"line":233,"column":4},"end":{"line":239,"column":7}},"72":{"start":{"line":234,"column":6},"end":{"line":238,"column":7}},"73":{"start":{"line":235,"column":8},"end":{"line":235,"column":22}},"74":{"start":{"line":237,"column":8},"end":{"line":237,"column":25}},"75":{"start":{"line":240,"column":4},"end":{"line":240,"column":64}},"76":{"start":{"line":244,"column":7},"end":{"line":253,"column":3}},"77":{"start":{"line":245,"column":4},"end":{"line":245,"column":60}},"78":{"start":{"line":246,"column":4},"end":{"line":246,"column":43}},"79":{"start":{"line":251,"column":4},"end":{"line":251,"column":81}},"80":{"start":{"line":252,"column":4},"end":{"line":252,"column":95}},"81":{"start":{"line":255,"column":2},"end":{"line":255,"column":58}},"82":{"start":{"line":257,"column":0},"end":{"line":257,"column":93}},"83":{"start":{"line":260,"column":0},"end":{"line":277,"column":2}},"84":{"start":{"line":261,"column":2},"end":{"line":261,"column":92}},"85":{"start":{"line":262,"column":2},"end":{"line":262,"column":44}},"86":{"start":{"line":264,"column":2},"end":{"line":264,"column":64}},"87":{"start":{"line":266,"column":2},"end":{"line":266,"column":39}},"88":{"start":{"line":268,"column":2},"end":{"line":268,"column":18}},"89":{"start":{"line":269,"column":2},"end":{"line":274,"column":5}},"90":{"start":{"line":270,"column":4},"end":{"line":270,"column":66}},"91":{"start":{"line":271,"column":4},"end":{"line":271,"column":54}},"92":{"start":{"line":273,"column":4},"end":{"line":273,"column":78}},"93":{"start":{"line":276,"column":2},"end":{"line":276,"column":44}},"94":{"start":{"line":279,"column":0},"end":{"line":288,"column":2}},"95":{"start":{"line":280,"column":2},"end":{"line":281,"column":49}},"96":{"start":{"line":283,"column":2},"end":{"line":285,"column":3}},"97":{"start":{"line":284,"column":4},"end":{"line":284,"column":64}},"98":{"start":{"line":287,"column":2},"end":{"line":287,"column":34}},"99":{"start":{"line":293,"column":0},"end":{"line":297,"column":2}},"100":{"start":{"line":294,"column":2},"end":{"line":295,"column":55}},"101":{"start":{"line":296,"column":2},"end":{"line":296,"column":53}},"102":{"start":{"line":299,"column":0},"end":{"line":302,"column":2}},"103":{"start":{"line":300,"column":2},"end":{"line":300,"column":35}},"104":{"start":{"line":301,"column":2},"end":{"line":301,"column":31}},"105":{"start":{"line":304,"column":0},"end":{"line":317,"column":1}},"106":{"start":{"line":305,"column":2},"end":{"line":308,"column":3}},"107":{"start":{"line":306,"column":4},"end":{"line":306,"column":30}},"108":{"start":{"line":307,"column":4},"end":{"line":307,"column":24}},"109":{"start":{"line":310,"column":2},"end":{"line":310,"column":35}},"110":{"start":{"line":312,"column":2},"end":{"line":314,"column":3}},"111":{"start":{"line":313,"column":4},"end":{"line":313,"column":42}},"112":{"start":{"line":316,"column":2},"end":{"line":316,"column":16}},"113":{"start":{"line":322,"column":0},"end":{"line":324,"column":1}},"114":{"start":{"line":323,"column":2},"end":{"line":323,"column":42}},"115":{"start":{"line":325,"column":0},"end":{"line":325,"column":114}},"116":{"start":{"line":328,"column":0},"end":{"line":389,"column":2}},"117":{"start":{"line":332,"column":2},"end":{"line":332,"column":25}},"118":{"start":{"line":344,"column":2},"end":{"line":349,"column":4}},"119":{"start":{"line":350,"column":2},"end":{"line":359,"column":3}},"120":{"start":{"line":351,"column":4},"end":{"line":351,"column":43}},"121":{"start":{"line":352,"column":4},"end":{"line":356,"column":5}},"122":{"start":{"line":353,"column":6},"end":{"line":353,"column":88}},"123":{"start":{"line":354,"column":6},"end":{"line":354,"column":50}},"124":{"start":{"line":355,"column":6},"end":{"line":355,"column":13}},"125":{"start":{"line":357,"column":4},"end":{"line":357,"column":27}},"126":{"start":{"line":358,"column":4},"end":{"line":358,"column":38}},"127":{"start":{"line":364,"column":2},"end":{"line":372,"column":4}},"128":{"start":{"line":373,"column":2},"end":{"line":380,"column":3}},"129":{"start":{"line":374,"column":4},"end":{"line":374,"column":35}},"130":{"start":{"line":375,"column":4},"end":{"line":379,"column":5}},"131":{"start":{"line":376,"column":6},"end":{"line":376,"column":84}},"132":{"start":{"line":377,"column":6},"end":{"line":377,"column":50}},"133":{"start":{"line":378,"column":6},"end":{"line":378,"column":13}},"134":{"start":{"line":383,"column":2},"end":{"line":383,"column":27}},"135":{"start":{"line":386,"column":2},"end":{"line":387,"column":59}},"136":{"start":{"line":388,"column":2},"end":{"line":388,"column":21}},"137":{"start":{"line":394,"column":0},"end":{"line":403,"column":1}},"138":{"start":{"line":395,"column":2},"end":{"line":395,"column":34}},"139":{"start":{"line":397,"column":2},"end":{"line":397,"column":27}},"140":{"start":{"line":398,"column":2},"end":{"line":398,"column":23}},"141":{"start":{"line":399,"column":2},"end":{"line":399,"column":30}},"142":{"start":{"line":400,"column":2},"end":{"line":400,"column":23}},"143":{"start":{"line":402,"column":2},"end":{"line":402,"column":65}},"144":{"start":{"line":404,"column":0},"end":{"line":404,"column":116}},"145":{"start":{"line":406,"column":0},"end":{"line":430,"column":2}},"146":{"start":{"line":407,"column":2},"end":{"line":411,"column":3}},"147":{"start":{"line":408,"column":4},"end":{"line":408,"column":93}},"148":{"start":{"line":410,"column":4},"end":{"line":410,"column":27}},"149":{"start":{"line":413,"column":2},"end":{"line":413,"column":26}},"150":{"start":{"line":415,"column":2},"end":{"line":417,"column":3}},"151":{"start":{"line":416,"column":4},"end":{"line":416,"column":54}},"152":{"start":{"line":419,"column":2},"end":{"line":421,"column":3}},"153":{"start":{"line":420,"column":4},"end":{"line":420,"column":52}},"154":{"start":{"line":423,"column":2},"end":{"line":423,"column":92}},"155":{"start":{"line":425,"column":2},"end":{"line":425,"column":58}},"156":{"start":{"line":427,"column":2},"end":{"line":427,"column":37}},"157":{"start":{"line":429,"column":2},"end":{"line":429,"column":26}},"158":{"start":{"line":432,"column":0},"end":{"line":436,"column":2}},"159":{"start":{"line":433,"column":2},"end":{"line":435,"column":3}},"160":{"start":{"line":434,"column":4},"end":{"line":434,"column":36}},"161":{"start":{"line":438,"column":0},"end":{"line":441,"column":2}},"162":{"start":{"line":439,"column":2},"end":{"line":439,"column":26}},"163":{"start":{"line":440,"column":2},"end":{"line":440,"column":64}},"164":{"start":{"line":443,"column":0},"end":{"line":446,"column":2}},"165":{"start":{"line":444,"column":2},"end":{"line":444,"column":26}},"166":{"start":{"line":445,"column":2},"end":{"line":445,"column":62}},"167":{"start":{"line":448,"column":0},"end":{"line":450,"column":2}},"168":{"start":{"line":449,"column":2},"end":{"line":449,"column":33}},"169":{"start":{"line":452,"column":0},"end":{"line":477,"column":2}},"170":{"start":{"line":453,"column":2},"end":{"line":456,"column":3}},"171":{"start":{"line":454,"column":4},"end":{"line":455,"column":40}},"172":{"start":{"line":458,"column":2},"end":{"line":460,"column":3}},"173":{"start":{"line":459,"column":4},"end":{"line":459,"column":33}},"174":{"start":{"line":462,"column":2},"end":{"line":464,"column":3}},"175":{"start":{"line":463,"column":4},"end":{"line":463,"column":51}},"176":{"start":{"line":466,"column":2},"end":{"line":471,"column":22}},"177":{"start":{"line":473,"column":2},"end":{"line":473,"column":48}},"178":{"start":{"line":474,"column":2},"end":{"line":474,"column":50}},"179":{"start":{"line":476,"column":2},"end":{"line":476,"column":68}},"180":{"start":{"line":482,"column":0},"end":{"line":482,"column":26}},"181":{"start":{"line":483,"column":0},"end":{"line":483,"column":18}},"182":{"start":{"line":484,"column":0},"end":{"line":484,"column":22}},"183":{"start":{"line":485,"column":0},"end":{"line":485,"column":40}},"184":{"start":{"line":486,"column":0},"end":{"line":486,"column":42}},"185":{"start":{"line":487,"column":0},"end":{"line":487,"column":44}},"186":{"start":{"line":488,"column":0},"end":{"line":488,"column":32}},"187":{"start":{"line":493,"column":0},"end":{"line":509,"column":1}},"188":{"start":{"line":494,"column":2},"end":{"line":494,"column":26}},"189":{"start":{"line":496,"column":2},"end":{"line":496,"column":26}},"190":{"start":{"line":498,"column":2},"end":{"line":498,"column":36}},"191":{"start":{"line":499,"column":2},"end":{"line":499,"column":73}},"192":{"start":{"line":500,"column":2},"end":{"line":500,"column":23}},"193":{"start":{"line":506,"column":2},"end":{"line":508,"column":5}},"194":{"start":{"line":510,"column":0},"end":{"line":510,"column":91}},"195":{"start":{"line":512,"column":0},"end":{"line":588,"column":2}},"196":{"start":{"line":513,"column":2},"end":{"line":515,"column":3}},"197":{"start":{"line":514,"column":4},"end":{"line":514,"column":33}},"198":{"start":{"line":517,"column":2},"end":{"line":517,"column":59}},"199":{"start":{"line":518,"column":2},"end":{"line":518,"column":49}},"200":{"start":{"line":519,"column":2},"end":{"line":519,"column":65}},"201":{"start":{"line":520,"column":2},"end":{"line":520,"column":37}},"202":{"start":{"line":521,"column":2},"end":{"line":521,"column":37}},"203":{"start":{"line":523,"column":2},"end":{"line":526,"column":3}},"204":{"start":{"line":524,"column":4},"end":{"line":524,"column":85}},"205":{"start":{"line":525,"column":4},"end":{"line":525,"column":70}},"206":{"start":{"line":528,"column":2},"end":{"line":528,"column":50}},"207":{"start":{"line":530,"column":2},"end":{"line":532,"column":3}},"208":{"start":{"line":531,"column":4},"end":{"line":531,"column":37}},"209":{"start":{"line":534,"column":2},"end":{"line":534,"column":51}},"210":{"start":{"line":537,"column":2},"end":{"line":585,"column":3}},"211":{"start":{"line":538,"column":4},"end":{"line":538,"column":40}},"212":{"start":{"line":539,"column":4},"end":{"line":539,"column":53}},"213":{"start":{"line":548,"column":4},"end":{"line":548,"column":24}},"214":{"start":{"line":549,"column":4},"end":{"line":549,"column":72}},"215":{"start":{"line":550,"column":4},"end":{"line":550,"column":37}},"216":{"start":{"line":551,"column":4},"end":{"line":551,"column":46}},"217":{"start":{"line":552,"column":4},"end":{"line":558,"column":7}},"218":{"start":{"line":553,"column":6},"end":{"line":557,"column":7}},"219":{"start":{"line":554,"column":8},"end":{"line":554,"column":21}},"220":{"start":{"line":556,"column":8},"end":{"line":556,"column":47}},"221":{"start":{"line":560,"column":4},"end":{"line":575,"column":17}},"222":{"start":{"line":561,"column":6},"end":{"line":574,"column":7}},"223":{"start":{"line":562,"column":8},"end":{"line":573,"column":9}},"224":{"start":{"line":563,"column":10},"end":{"line":563,"column":50}},"225":{"start":{"line":564,"column":10},"end":{"line":564,"column":46}},"226":{"start":{"line":565,"column":10},"end":{"line":565,"column":86}},"227":{"start":{"line":566,"column":10},"end":{"line":566,"column":72}},"228":{"start":{"line":567,"column":10},"end":{"line":567,"column":48}},"229":{"start":{"line":568,"column":10},"end":{"line":568,"column":56}},"230":{"start":{"line":569,"column":10},"end":{"line":569,"column":42}},"231":{"start":{"line":570,"column":10},"end":{"line":570,"column":35}},"232":{"start":{"line":572,"column":10},"end":{"line":572,"column":36}},"233":{"start":{"line":577,"column":4},"end":{"line":584,"column":7}},"234":{"start":{"line":578,"column":6},"end":{"line":578,"column":21}},"235":{"start":{"line":579,"column":6},"end":{"line":583,"column":7}},"236":{"start":{"line":580,"column":8},"end":{"line":580,"column":57}},"237":{"start":{"line":582,"column":8},"end":{"line":582,"column":40}},"238":{"start":{"line":587,"column":2},"end":{"line":587,"column":17}},"239":{"start":{"line":590,"column":0},"end":{"line":594,"column":2}},"240":{"start":{"line":591,"column":2},"end":{"line":591,"column":48}},"241":{"start":{"line":592,"column":2},"end":{"line":592,"column":16}},"242":{"start":{"line":593,"column":2},"end":{"line":593,"column":17}},"243":{"start":{"line":596,"column":0},"end":{"line":605,"column":1}},"244":{"start":{"line":597,"column":2},"end":{"line":597,"column":36}},"245":{"start":{"line":598,"column":2},"end":{"line":598,"column":35}},"246":{"start":{"line":599,"column":2},"end":{"line":599,"column":40}},"247":{"start":{"line":600,"column":2},"end":{"line":600,"column":37}},"248":{"start":{"line":601,"column":2},"end":{"line":601,"column":37}},"249":{"start":{"line":602,"column":2},"end":{"line":602,"column":18}},"250":{"start":{"line":603,"column":2},"end":{"line":603,"column":23}},"251":{"start":{"line":604,"column":2},"end":{"line":604,"column":22}},"252":{"start":{"line":607,"column":0},"end":{"line":607,"column":52}},"253":{"start":{"line":609,"column":0},"end":{"line":611,"column":1}},"254":{"start":{"line":610,"column":2},"end":{"line":610,"column":48}},"255":{"start":{"line":613,"column":0},"end":{"line":615,"column":1}},"256":{"start":{"line":614,"column":2},"end":{"line":614,"column":44}},"257":{"start":{"line":620,"column":0},"end":{"line":627,"column":1}},"258":{"start":{"line":621,"column":2},"end":{"line":621,"column":34}},"259":{"start":{"line":623,"column":2},"end":{"line":623,"column":26}},"260":{"start":{"line":624,"column":2},"end":{"line":624,"column":26}},"261":{"start":{"line":625,"column":2},"end":{"line":625,"column":27}},"262":{"start":{"line":626,"column":2},"end":{"line":626,"column":26}},"263":{"start":{"line":628,"column":0},"end":{"line":628,"column":114}},"264":{"start":{"line":630,"column":0},"end":{"line":654,"column":2}},"265":{"start":{"line":631,"column":2},"end":{"line":631,"column":109}},"266":{"start":{"line":632,"column":2},"end":{"line":632,"column":58}},"267":{"start":{"line":634,"column":2},"end":{"line":634,"column":23}},"268":{"start":{"line":636,"column":2},"end":{"line":636,"column":19}},"269":{"start":{"line":637,"column":2},"end":{"line":639,"column":3}},"270":{"start":{"line":638,"column":4},"end":{"line":638,"column":40}},"271":{"start":{"line":640,"column":2},"end":{"line":640,"column":22}},"272":{"start":{"line":641,"column":2},"end":{"line":641,"column":40}},"273":{"start":{"line":642,"column":2},"end":{"line":642,"column":38}},"274":{"start":{"line":643,"column":2},"end":{"line":643,"column":38}},"275":{"start":{"line":644,"column":2},"end":{"line":644,"column":34}},"276":{"start":{"line":646,"column":2},"end":{"line":647,"column":95}},"277":{"start":{"line":648,"column":2},"end":{"line":648,"column":31}},"278":{"start":{"line":650,"column":2},"end":{"line":650,"column":35}},"279":{"start":{"line":652,"column":2},"end":{"line":652,"column":59}},"280":{"start":{"line":653,"column":2},"end":{"line":653,"column":69}},"281":{"start":{"line":656,"column":0},"end":{"line":664,"column":2}},"282":{"start":{"line":657,"column":2},"end":{"line":657,"column":49}},"283":{"start":{"line":659,"column":2},"end":{"line":659,"column":25}},"284":{"start":{"line":660,"column":2},"end":{"line":660,"column":31}},"285":{"start":{"line":661,"column":2},"end":{"line":661,"column":38}},"286":{"start":{"line":663,"column":2},"end":{"line":663,"column":21}},"287":{"start":{"line":667,"column":0},"end":{"line":671,"column":2}},"288":{"start":{"line":668,"column":2},"end":{"line":670,"column":3}},"289":{"start":{"line":669,"column":4},"end":{"line":669,"column":37}},"290":{"start":{"line":673,"column":0},"end":{"line":677,"column":2}},"291":{"start":{"line":674,"column":2},"end":{"line":676,"column":3}},"292":{"start":{"line":675,"column":4},"end":{"line":675,"column":58}},"293":{"start":{"line":679,"column":0},"end":{"line":683,"column":2}},"294":{"start":{"line":680,"column":2},"end":{"line":682,"column":3}},"295":{"start":{"line":681,"column":4},"end":{"line":681,"column":47}},"296":{"start":{"line":689,"column":0},"end":{"line":692,"column":1}},"297":{"start":{"line":690,"column":2},"end":{"line":690,"column":42}},"298":{"start":{"line":691,"column":2},"end":{"line":691,"column":51}},"299":{"start":{"line":693,"column":0},"end":{"line":693,"column":116}},"300":{"start":{"line":696,"column":0},"end":{"line":720,"column":2}},"301":{"start":{"line":700,"column":2},"end":{"line":700,"column":25}},"302":{"start":{"line":708,"column":2},"end":{"line":708,"column":38}},"303":{"start":{"line":709,"column":2},"end":{"line":713,"column":3}},"304":{"start":{"line":710,"column":4},"end":{"line":710,"column":83}},"305":{"start":{"line":711,"column":4},"end":{"line":711,"column":48}},"306":{"start":{"line":712,"column":4},"end":{"line":712,"column":11}},"307":{"start":{"line":714,"column":2},"end":{"line":714,"column":31}},"308":{"start":{"line":715,"column":2},"end":{"line":715,"column":28}},"309":{"start":{"line":718,"column":2},"end":{"line":718,"column":79}},"310":{"start":{"line":719,"column":2},"end":{"line":719,"column":21}},"311":{"start":{"line":722,"column":0},"end":{"line":730,"column":2}},"312":{"start":{"line":723,"column":2},"end":{"line":723,"column":64}},"313":{"start":{"line":725,"column":2},"end":{"line":729,"column":3}},"314":{"start":{"line":726,"column":4},"end":{"line":726,"column":31}},"315":{"start":{"line":728,"column":4},"end":{"line":728,"column":21}},"316":{"start":{"line":735,"column":0},"end":{"line":748,"column":1}},"317":{"start":{"line":736,"column":2},"end":{"line":736,"column":30}},"318":{"start":{"line":737,"column":2},"end":{"line":737,"column":36}},"319":{"start":{"line":738,"column":2},"end":{"line":738,"column":20}},"320":{"start":{"line":740,"column":2},"end":{"line":740,"column":42}},"321":{"start":{"line":742,"column":2},"end":{"line":742,"column":41}},"322":{"start":{"line":744,"column":2},"end":{"line":744,"column":40}},"323":{"start":{"line":746,"column":2},"end":{"line":746,"column":65}},"324":{"start":{"line":747,"column":2},"end":{"line":747,"column":69}},"325":{"start":{"line":749,"column":0},"end":{"line":749,"column":114}},"326":{"start":{"line":751,"column":0},"end":{"line":753,"column":2}},"327":{"start":{"line":752,"column":2},"end":{"line":752,"column":39}}},"branchMap":{"1":{"line":168,"type":"if","locations":[{"start":{"line":168,"column":2},"end":{"line":168,"column":2}},{"start":{"line":168,"column":2},"end":{"line":168,"column":2}}]},"2":{"line":176,"type":"if","locations":[{"start":{"line":176,"column":2},"end":{"line":176,"column":2}},{"start":{"line":176,"column":2},"end":{"line":176,"column":2}}]},"3":{"line":184,"type":"if","locations":[{"start":{"line":184,"column":2},"end":{"line":184,"column":2}},{"start":{"line":184,"column":2},"end":{"line":184,"column":2}}]},"4":{"line":192,"type":"if","locations":[{"start":{"line":192,"column":2},"end":{"line":192,"column":2}},{"start":{"line":192,"column":2},"end":{"line":192,"column":2}}]},"5":{"line":218,"type":"binary-expr","locations":[{"start":{"line":218,"column":12},"end":{"line":218,"column":19}},{"start":{"line":218,"column":23},"end":{"line":218,"column":25}}]},"6":{"line":220,"type":"binary-expr","locations":[{"start":{"line":220,"column":15},"end":{"line":220,"column":26}},{"start":{"line":220,"column":30},"end":{"line":220,"column":42}}]},"7":{"line":227,"type":"if","locations":[{"start":{"line":227,"column":2},"end":{"line":227,"column":2}},{"start":{"line":227,"column":2},"end":{"line":227,"column":2}}]},"8":{"line":227,"type":"binary-expr","locations":[{"start":{"line":227,"column":7},"end":{"line":227,"column":18}},{"start":{"line":227,"column":22},"end":{"line":227,"column":34}},{"start":{"line":227,"column":39},"end":{"line":227,"column":50}}]},"9":{"line":234,"type":"if","locations":[{"start":{"line":234,"column":6},"end":{"line":234,"column":6}},{"start":{"line":234,"column":6},"end":{"line":234,"column":6}}]},"10":{"line":244,"type":"if","locations":[{"start":{"line":244,"column":7},"end":{"line":244,"column":7}},{"start":{"line":244,"column":7},"end":{"line":244,"column":7}}]},"11":{"line":294,"type":"cond-expr","locations":[{"start":{"line":294,"column":58},"end":{"line":294,"column":79}},{"start":{"line":294,"column":83},"end":{"line":294,"column":87}}]},"12":{"line":305,"type":"if","locations":[{"start":{"line":305,"column":2},"end":{"line":305,"column":2}},{"start":{"line":305,"column":2},"end":{"line":305,"column":2}}]},"13":{"line":312,"type":"if","locations":[{"start":{"line":312,"column":2},"end":{"line":312,"column":2}},{"start":{"line":312,"column":2},"end":{"line":312,"column":2}}]},"14":{"line":352,"type":"if","locations":[{"start":{"line":352,"column":4},"end":{"line":352,"column":4}},{"start":{"line":352,"column":4},"end":{"line":352,"column":4}}]},"15":{"line":352,"type":"binary-expr","locations":[{"start":{"line":352,"column":9},"end":{"line":352,"column":34}},{"start":{"line":352,"column":40},"end":{"line":352,"column":58}}]},"16":{"line":375,"type":"if","locations":[{"start":{"line":375,"column":4},"end":{"line":375,"column":4}},{"start":{"line":375,"column":4},"end":{"line":375,"column":4}}]},"17":{"line":407,"type":"if","locations":[{"start":{"line":407,"column":2},"end":{"line":407,"column":2}},{"start":{"line":407,"column":2},"end":{"line":407,"column":2}}]},"18":{"line":413,"type":"binary-expr","locations":[{"start":{"line":413,"column":12},"end":{"line":413,"column":19}},{"start":{"line":413,"column":23},"end":{"line":413,"column":25}}]},"19":{"line":419,"type":"if","locations":[{"start":{"line":419,"column":2},"end":{"line":419,"column":2}},{"start":{"line":419,"column":2},"end":{"line":419,"column":2}}]},"20":{"line":419,"type":"binary-expr","locations":[{"start":{"line":419,"column":6},"end":{"line":419,"column":19}},{"start":{"line":419,"column":23},"end":{"line":419,"column":49}}]},"21":{"line":433,"type":"if","locations":[{"start":{"line":433,"column":2},"end":{"line":433,"column":2}},{"start":{"line":433,"column":2},"end":{"line":433,"column":2}}]},"22":{"line":453,"type":"if","locations":[{"start":{"line":453,"column":2},"end":{"line":453,"column":2}},{"start":{"line":453,"column":2},"end":{"line":453,"column":2}}]},"23":{"line":458,"type":"if","locations":[{"start":{"line":458,"column":2},"end":{"line":458,"column":2}},{"start":{"line":458,"column":2},"end":{"line":458,"column":2}}]},"24":{"line":462,"type":"if","locations":[{"start":{"line":462,"column":2},"end":{"line":462,"column":2}},{"start":{"line":462,"column":2},"end":{"line":462,"column":2}}]},"25":{"line":467,"type":"binary-expr","locations":[{"start":{"line":467,"column":16},"end":{"line":467,"column":30}},{"start":{"line":467,"column":34},"end":{"line":467,"column":39}}]},"26":{"line":468,"type":"binary-expr","locations":[{"start":{"line":468,"column":15},"end":{"line":468,"column":31}},{"start":{"line":468,"column":35},"end":{"line":468,"column":66}}]},"27":{"line":469,"type":"binary-expr","locations":[{"start":{"line":469,"column":13},"end":{"line":469,"column":29}},{"start":{"line":469,"column":33},"end":{"line":469,"column":45}},{"start":{"line":469,"column":49},"end":{"line":469,"column":78}}]},"28":{"line":496,"type":"binary-expr","locations":[{"start":{"line":496,"column":12},"end":{"line":496,"column":19}},{"start":{"line":496,"column":23},"end":{"line":496,"column":25}}]},"29":{"line":499,"type":"binary-expr","locations":[{"start":{"line":499,"column":15},"end":{"line":499,"column":26}},{"start":{"line":499,"column":30},"end":{"line":499,"column":42}}]},"30":{"line":513,"type":"if","locations":[{"start":{"line":513,"column":2},"end":{"line":513,"column":2}},{"start":{"line":513,"column":2},"end":{"line":513,"column":2}}]},"31":{"line":517,"type":"binary-expr","locations":[{"start":{"line":517,"column":20},"end":{"line":517,"column":34}},{"start":{"line":517,"column":38},"end":{"line":517,"column":43}}]},"32":{"line":518,"type":"binary-expr","locations":[{"start":{"line":518,"column":21},"end":{"line":518,"column":37}},{"start":{"line":518,"column":41},"end":{"line":518,"column":48}}]},"33":{"line":519,"type":"binary-expr","locations":[{"start":{"line":519,"column":17},"end":{"line":519,"column":33}},{"start":{"line":519,"column":37},"end":{"line":519,"column":49}},{"start":{"line":519,"column":53},"end":{"line":519,"column":64}}]},"34":{"line":520,"type":"binary-expr","locations":[{"start":{"line":520,"column":17},"end":{"line":520,"column":29}},{"start":{"line":520,"column":33},"end":{"line":520,"column":36}}]},"35":{"line":521,"type":"binary-expr","locations":[{"start":{"line":521,"column":17},"end":{"line":521,"column":29}},{"start":{"line":521,"column":33},"end":{"line":521,"column":36}}]},"36":{"line":523,"type":"if","locations":[{"start":{"line":523,"column":2},"end":{"line":523,"column":2}},{"start":{"line":523,"column":2},"end":{"line":523,"column":2}}]},"37":{"line":530,"type":"if","locations":[{"start":{"line":530,"column":2},"end":{"line":530,"column":2}},{"start":{"line":530,"column":2},"end":{"line":530,"column":2}}]},"38":{"line":537,"type":"if","locations":[{"start":{"line":537,"column":2},"end":{"line":537,"column":2}},{"start":{"line":537,"column":2},"end":{"line":537,"column":2}}]},"39":{"line":553,"type":"if","locations":[{"start":{"line":553,"column":6},"end":{"line":553,"column":6}},{"start":{"line":553,"column":6},"end":{"line":553,"column":6}}]},"40":{"line":561,"type":"if","locations":[{"start":{"line":561,"column":6},"end":{"line":561,"column":6}},{"start":{"line":561,"column":6},"end":{"line":561,"column":6}}]},"41":{"line":562,"type":"if","locations":[{"start":{"line":562,"column":8},"end":{"line":562,"column":8}},{"start":{"line":562,"column":8},"end":{"line":562,"column":8}}]},"42":{"line":579,"type":"if","locations":[{"start":{"line":579,"column":6},"end":{"line":579,"column":6}},{"start":{"line":579,"column":6},"end":{"line":579,"column":6}}]},"43":{"line":631,"type":"binary-expr","locations":[{"start":{"line":631,"column":42},"end":{"line":631,"column":58}},{"start":{"line":631,"column":62},"end":{"line":631,"column":74}}]},"44":{"line":631,"type":"binary-expr","locations":[{"start":{"line":631,"column":85},"end":{"line":631,"column":97}},{"start":{"line":631,"column":101},"end":{"line":631,"column":103}}]},"45":{"line":647,"type":"binary-expr","locations":[{"start":{"line":647,"column":50},"end":{"line":647,"column":65}},{"start":{"line":647,"column":69},"end":{"line":647,"column":71}}]},"46":{"line":668,"type":"if","locations":[{"start":{"line":668,"column":2},"end":{"line":668,"column":2}},{"start":{"line":668,"column":2},"end":{"line":668,"column":2}}]},"47":{"line":674,"type":"if","locations":[{"start":{"line":674,"column":2},"end":{"line":674,"column":2}},{"start":{"line":674,"column":2},"end":{"line":674,"column":2}}]},"48":{"line":680,"type":"if","locations":[{"start":{"line":680,"column":2},"end":{"line":680,"column":2}},{"start":{"line":680,"column":2},"end":{"line":680,"column":2}}]},"49":{"line":709,"type":"if","locations":[{"start":{"line":709,"column":2},"end":{"line":709,"column":2}},{"start":{"line":709,"column":2},"end":{"line":709,"column":2}}]},"50":{"line":709,"type":"binary-expr","locations":[{"start":{"line":709,"column":7},"end":{"line":709,"column":37}},{"start":{"line":709,"column":43},"end":{"line":709,"column":66}}]},"51":{"line":725,"type":"if","locations":[{"start":{"line":725,"column":2},"end":{"line":725,"column":2}},{"start":{"line":725,"column":2},"end":{"line":725,"column":2}}]}}}} \ No newline at end of file +{"/data/upstream/node-http2/lib/compressor.js":{"path":"/data/upstream/node-http2/lib/compressor.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":14,"8":14,"9":14,"10":14,"11":14,"12":1,"13":1643,"14":1,"15":47,"16":142,"17":1,"18":47,"19":47,"20":154,"21":98,"22":47,"23":98,"24":98,"25":1,"26":184,"27":184,"28":184,"29":54,"30":54,"31":139,"32":54,"33":4,"34":4,"35":50,"36":130,"37":45,"38":85,"39":130,"40":129,"41":88,"42":41,"43":129,"44":129,"45":130,"46":1,"47":42,"48":97,"49":1,"50":64,"51":64,"52":64,"53":6,"54":6,"55":2,"56":62,"57":62,"58":1213,"59":62,"60":36,"61":36,"62":20,"63":42,"64":1,"65":24,"66":24,"67":42,"68":24,"69":24,"70":24,"71":1,"72":129,"73":129,"74":129,"75":2713,"76":202,"77":2713,"78":129,"79":218,"80":218,"81":1,"82":8,"83":8,"84":8,"85":8,"86":1,"87":1,"88":25,"89":25,"90":25,"91":25,"92":96,"93":25,"94":25,"95":25,"96":96,"97":96,"98":96,"99":17,"100":8,"101":9,"102":79,"103":25,"104":25,"105":1,"106":6,"107":6,"108":6,"109":6,"110":1,"111":1,"112":22,"113":22,"114":22,"115":22,"116":70,"117":70,"118":8,"119":24,"120":62,"121":22,"122":22,"123":22,"124":46,"125":24,"126":24,"127":24,"128":22,"129":86,"130":64,"131":64,"132":64,"133":22,"134":22,"135":88,"136":22,"137":22,"138":22,"139":1,"140":232,"141":232,"142":94,"143":138,"144":138,"145":2,"146":138,"147":138,"148":138,"149":146,"150":146,"151":146,"152":8,"153":146,"154":146,"155":138,"156":1,"157":250,"158":250,"159":250,"160":106,"161":250,"162":149,"163":149,"164":159,"165":159,"166":159,"167":250,"168":1,"169":115,"170":115,"171":115,"172":1,"173":120,"174":120,"175":120,"176":120,"177":1,"178":1,"179":96,"180":96,"181":28,"182":68,"183":1,"184":67,"185":46,"186":21,"187":96,"188":28,"189":68,"190":25,"191":43,"192":43,"193":68,"194":21,"195":68,"196":96,"197":96,"198":1,"199":104,"200":104,"201":104,"202":30,"203":74,"204":52,"205":2,"206":50,"207":22,"208":104,"209":30,"210":30,"211":74,"212":74,"213":44,"214":74,"215":22,"216":52,"217":50,"218":2,"219":74,"220":104,"221":1,"222":1,"223":6,"224":1,"225":19,"226":12,"227":12,"228":12,"229":14,"230":14,"231":12,"232":2,"233":2,"234":14,"235":7,"236":19,"237":1,"238":8,"239":8,"240":8,"241":8,"242":8,"243":1,"244":23,"245":3,"246":1,"247":1,"248":1,"249":2,"250":20,"251":13,"252":13,"253":13,"254":13,"255":7,"256":22,"257":12,"258":14,"259":12,"260":12,"261":0,"262":0,"263":0,"264":12,"265":12,"266":22,"267":1,"268":1,"269":1,"270":34,"271":34,"272":330,"273":34,"274":34,"275":330,"276":34,"277":1,"278":12,"279":12,"280":12,"281":14,"282":14,"283":14,"284":12,"285":1,"286":14,"287":14,"288":0,"289":14},"b":{"1":[14,14],"2":[1643,128],"3":[54,130],"4":[4,50],"5":[45,85],"6":[129,1],"7":[88,41],"8":[6,58],"9":[2,4],"10":[36,26],"11":[20,16],"12":[24,18],"13":[202,2511],"14":[5,3],"15":[17,79],"16":[8,9],"17":[3,3],"18":[8,62],"19":[24,22],"20":[64,22],"21":[94,138],"22":[2,136],"23":[8,138],"24":[106,144],"25":[149,101],"26":[28,68],"27":[1,67],"28":[46,21],"29":[28,68],"30":[25,43],"31":[21,47],"32":[30,74],"33":[52,22],"34":[2,50],"35":[30,74],"36":[44,30],"37":[22,52],"38":[50,2],"39":[12,7],"40":[19,12],"41":[12,2],"42":[3,20],"43":[1,2],"44":[3,2],"45":[13,7],"46":[20,12],"47":[12,10],"48":[22,15,8]},"f":{"1":14,"2":1643,"3":47,"4":142,"5":47,"6":154,"7":98,"8":98,"9":184,"10":139,"11":42,"12":97,"13":64,"14":1213,"15":24,"16":129,"17":8,"18":25,"19":6,"20":22,"21":232,"22":250,"23":115,"24":120,"25":96,"26":104,"27":6,"28":19,"29":8,"30":23,"31":14,"32":34,"33":12,"34":14},"fnMap":{"1":{"name":"CompressionContext","line":38,"loc":{"start":{"line":38,"column":0},"end":{"line":38,"column":47}}},"2":{"name":"(anonymous_2)","line":48,"loc":{"start":{"line":48,"column":27},"end":{"line":48,"column":50}}},"3":{"name":"getWorkingSet","line":53,"loc":{"start":{"line":53,"column":45},"end":{"line":53,"column":70}}},"4":{"name":"(anonymous_4)","line":54,"loc":{"start":{"line":54,"column":27},"end":{"line":54,"column":43}}},"5":{"name":"reinitialize","line":60,"loc":{"start":{"line":60,"column":44},"end":{"line":60,"column":68}}},"6":{"name":"(anonymous_6)","line":66,"loc":{"start":{"line":66,"column":41},"end":{"line":66,"column":57}}},"7":{"name":"(anonymous_7)","line":68,"loc":{"start":{"line":68,"column":9},"end":{"line":68,"column":25}}},"8":{"name":"(anonymous_8)","line":76,"loc":{"start":{"line":76,"column":38},"end":{"line":76,"column":53}}},"9":{"name":"execute","line":105,"loc":{"start":{"line":105,"column":39},"end":{"line":105,"column":65}}},"10":{"name":"(anonymous_10)","line":118,"loc":{"start":{"line":118,"column":40},"end":{"line":118,"column":56}}},"11":{"name":"(anonymous_11)","line":156,"loc":{"start":{"line":156,"column":43},"end":{"line":156,"column":59}}},"12":{"name":"(anonymous_12)","line":157,"loc":{"start":{"line":157,"column":28},"end":{"line":157,"column":44}}},"13":{"name":"(anonymous_13)","line":164,"loc":{"start":{"line":164,"column":50},"end":{"line":164,"column":65}}},"14":{"name":"(anonymous_14)","line":180,"loc":{"start":{"line":180,"column":37},"end":{"line":180,"column":53}}},"15":{"name":"(anonymous_15)","line":203,"loc":{"start":{"line":203,"column":53},"end":{"line":203,"column":68}}},"16":{"name":"(anonymous_16)","line":227,"loc":{"start":{"line":227,"column":49},"end":{"line":227,"column":60}}},"17":{"name":"Decompressor","line":249,"loc":{"start":{"line":249,"column":0},"end":{"line":249,"column":33}}},"18":{"name":"decompress","line":264,"loc":{"start":{"line":264,"column":36},"end":{"line":264,"column":64}}},"19":{"name":"Compressor","line":310,"loc":{"start":{"line":310,"column":0},"end":{"line":310,"column":31}}},"20":{"name":"compress","line":325,"loc":{"start":{"line":325,"column":32},"end":{"line":325,"column":59}}},"21":{"name":"writeInteger","line":395,"loc":{"start":{"line":395,"column":21},"end":{"line":395,"column":49}}},"22":{"name":"readInteger","line":436,"loc":{"start":{"line":436,"column":23},"end":{"line":436,"column":55}}},"23":{"name":"writeString","line":466,"loc":{"start":{"line":466,"column":20},"end":{"line":466,"column":46}}},"24":{"name":"readString","line":472,"loc":{"start":{"line":472,"column":22},"end":{"line":472,"column":50}}},"25":{"name":"writeHeader","line":525,"loc":{"start":{"line":525,"column":20},"end":{"line":525,"column":49}}},"26":{"name":"readHeader","line":561,"loc":{"start":{"line":561,"column":22},"end":{"line":561,"column":50}}},"27":{"name":"_initializeStream","line":626,"loc":{"start":{"line":626,"column":41},"end":{"line":626,"column":70}}},"28":{"name":"_transform","line":630,"loc":{"start":{"line":630,"column":34},"end":{"line":630,"column":77}}},"29":{"name":"_initializeStream","line":676,"loc":{"start":{"line":676,"column":43},"end":{"line":676,"column":72}}},"30":{"name":"_transform","line":685,"loc":{"start":{"line":685,"column":36},"end":{"line":685,"column":79}}},"31":{"name":"(anonymous_31)","line":715,"loc":{"start":{"line":715,"column":41},"end":{"line":715,"column":57}}},"32":{"name":"concat","line":825,"loc":{"start":{"line":825,"column":0},"end":{"line":825,"column":25}}},"33":{"name":"cut","line":840,"loc":{"start":{"line":840,"column":0},"end":{"line":840,"column":27}}},"34":{"name":"shallowCopy","line":852,"loc":{"start":{"line":852,"column":0},"end":{"line":852,"column":29}}}},"statementMap":{"1":{"start":{"line":16,"column":0},"end":{"line":16,"column":44}},"2":{"start":{"line":18,"column":0},"end":{"line":18,"column":48}},"3":{"start":{"line":19,"column":0},"end":{"line":19,"column":36}},"4":{"start":{"line":20,"column":0},"end":{"line":20,"column":32}},"5":{"start":{"line":36,"column":0},"end":{"line":36,"column":38}},"6":{"start":{"line":38,"column":0},"end":{"line":44,"column":1}},"7":{"start":{"line":39,"column":2},"end":{"line":39,"column":18}},"8":{"start":{"line":40,"column":2},"end":{"line":40,"column":30}},"9":{"start":{"line":41,"column":2},"end":{"line":41,"column":52}},"10":{"start":{"line":42,"column":2},"end":{"line":42,"column":23}},"11":{"start":{"line":43,"column":2},"end":{"line":43,"column":21}},"12":{"start":{"line":48,"column":0},"end":{"line":50,"column":2}},"13":{"start":{"line":49,"column":2},"end":{"line":49,"column":88}},"14":{"start":{"line":53,"column":0},"end":{"line":57,"column":2}},"15":{"start":{"line":54,"column":2},"end":{"line":56,"column":5}},"16":{"start":{"line":55,"column":4},"end":{"line":55,"column":22}},"17":{"start":{"line":60,"column":0},"end":{"line":80,"column":2}},"18":{"start":{"line":61,"column":2},"end":{"line":61,"column":18}},"19":{"start":{"line":66,"column":2},"end":{"line":70,"column":5}},"20":{"start":{"line":67,"column":4},"end":{"line":67,"column":50}},"21":{"start":{"line":69,"column":4},"end":{"line":69,"column":22}},"22":{"start":{"line":76,"column":2},"end":{"line":79,"column":5}},"23":{"start":{"line":77,"column":4},"end":{"line":77,"column":42}},"24":{"start":{"line":78,"column":4},"end":{"line":78,"column":40}},"25":{"start":{"line":105,"column":0},"end":{"line":152,"column":2}},"26":{"start":{"line":106,"column":2},"end":{"line":107,"column":55}},"27":{"start":{"line":109,"column":2},"end":{"line":109,"column":18}},"28":{"start":{"line":116,"column":2},"end":{"line":151,"column":3}},"29":{"start":{"line":117,"column":4},"end":{"line":117,"column":26}},"30":{"start":{"line":118,"column":4},"end":{"line":120,"column":7}},"31":{"start":{"line":119,"column":6},"end":{"line":119,"column":35}},"32":{"start":{"line":121,"column":4},"end":{"line":126,"column":5}},"33":{"start":{"line":122,"column":6},"end":{"line":122,"column":32}},"34":{"start":{"line":123,"column":6},"end":{"line":123,"column":55}},"35":{"start":{"line":125,"column":6},"end":{"line":125,"column":31}},"36":{"start":{"line":134,"column":4},"end":{"line":138,"column":5}},"37":{"start":{"line":135,"column":6},"end":{"line":135,"column":59}},"38":{"start":{"line":137,"column":6},"end":{"line":137,"column":43}},"39":{"start":{"line":140,"column":4},"end":{"line":148,"column":5}},"40":{"start":{"line":141,"column":6},"end":{"line":145,"column":7}},"41":{"start":{"line":142,"column":8},"end":{"line":142,"column":31}},"42":{"start":{"line":144,"column":8},"end":{"line":144,"column":51}},"43":{"start":{"line":146,"column":6},"end":{"line":146,"column":31}},"44":{"start":{"line":147,"column":6},"end":{"line":147,"column":40}},"45":{"start":{"line":150,"column":4},"end":{"line":150,"column":53}},"46":{"start":{"line":156,"column":0},"end":{"line":160,"column":2}},"47":{"start":{"line":157,"column":2},"end":{"line":159,"column":5}},"48":{"start":{"line":158,"column":4},"end":{"line":158,"column":33}},"49":{"start":{"line":164,"column":0},"end":{"line":199,"column":2}},"50":{"start":{"line":165,"column":2},"end":{"line":165,"column":56}},"51":{"start":{"line":167,"column":2},"end":{"line":167,"column":44}},"52":{"start":{"line":168,"column":2},"end":{"line":177,"column":3}},"53":{"start":{"line":169,"column":4},"end":{"line":169,"column":54}},"54":{"start":{"line":170,"column":4},"end":{"line":176,"column":5}},"55":{"start":{"line":171,"column":6},"end":{"line":175,"column":8}},"56":{"start":{"line":179,"column":2},"end":{"line":179,"column":35}},"57":{"start":{"line":180,"column":2},"end":{"line":182,"column":5}},"58":{"start":{"line":181,"column":4},"end":{"line":181,"column":43}},"59":{"start":{"line":183,"column":2},"end":{"line":192,"column":3}},"60":{"start":{"line":184,"column":4},"end":{"line":184,"column":54}},"61":{"start":{"line":185,"column":4},"end":{"line":191,"column":5}},"62":{"start":{"line":186,"column":6},"end":{"line":190,"column":8}},"63":{"start":{"line":194,"column":2},"end":{"line":198,"column":4}},"64":{"start":{"line":203,"column":0},"end":{"line":218,"column":2}},"65":{"start":{"line":204,"column":2},"end":{"line":204,"column":12}},"66":{"start":{"line":206,"column":2},"end":{"line":211,"column":3}},"67":{"start":{"line":207,"column":4},"end":{"line":210,"column":5}},"68":{"start":{"line":208,"column":6},"end":{"line":208,"column":31}},"69":{"start":{"line":209,"column":6},"end":{"line":209,"column":12}},"70":{"start":{"line":213,"column":2},"end":{"line":217,"column":4}},"71":{"start":{"line":227,"column":0},"end":{"line":240,"column":2}},"72":{"start":{"line":228,"column":2},"end":{"line":228,"column":26}},"73":{"start":{"line":229,"column":2},"end":{"line":229,"column":15}},"74":{"start":{"line":230,"column":2},"end":{"line":235,"column":3}},"75":{"start":{"line":231,"column":4},"end":{"line":233,"column":5}},"76":{"start":{"line":232,"column":6},"end":{"line":232,"column":80}},"77":{"start":{"line":234,"column":4},"end":{"line":234,"column":26}},"78":{"start":{"line":236,"column":2},"end":{"line":239,"column":3}},"79":{"start":{"line":237,"column":4},"end":{"line":237,"column":32}},"80":{"start":{"line":238,"column":4},"end":{"line":238,"column":25}},"81":{"start":{"line":249,"column":0},"end":{"line":257,"column":1}},"82":{"start":{"line":250,"column":2},"end":{"line":250,"column":55}},"83":{"start":{"line":252,"column":2},"end":{"line":253,"column":84}},"84":{"start":{"line":254,"column":2},"end":{"line":254,"column":66}},"85":{"start":{"line":256,"column":2},"end":{"line":256,"column":27}},"86":{"start":{"line":258,"column":0},"end":{"line":258,"column":102}},"87":{"start":{"line":264,"column":0},"end":{"line":301,"column":2}},"88":{"start":{"line":265,"column":2},"end":{"line":265,"column":69}},"89":{"start":{"line":269,"column":2},"end":{"line":269,"column":31}},"90":{"start":{"line":274,"column":2},"end":{"line":274,"column":20}},"91":{"start":{"line":275,"column":2},"end":{"line":277,"column":3}},"92":{"start":{"line":276,"column":4},"end":{"line":276,"column":55}},"93":{"start":{"line":281,"column":2},"end":{"line":281,"column":44}},"94":{"start":{"line":285,"column":2},"end":{"line":285,"column":19}},"95":{"start":{"line":286,"column":2},"end":{"line":298,"column":3}},"96":{"start":{"line":287,"column":4},"end":{"line":287,"column":27}},"97":{"start":{"line":288,"column":4},"end":{"line":288,"column":28}},"98":{"start":{"line":289,"column":4},"end":{"line":297,"column":5}},"99":{"start":{"line":290,"column":6},"end":{"line":294,"column":7}},"100":{"start":{"line":291,"column":8},"end":{"line":291,"column":34}},"101":{"start":{"line":293,"column":8},"end":{"line":293,"column":47}},"102":{"start":{"line":296,"column":6},"end":{"line":296,"column":28}},"103":{"start":{"line":299,"column":2},"end":{"line":299,"column":72}},"104":{"start":{"line":300,"column":2},"end":{"line":300,"column":17}},"105":{"start":{"line":310,"column":0},"end":{"line":318,"column":1}},"106":{"start":{"line":311,"column":2},"end":{"line":311,"column":53}},"107":{"start":{"line":313,"column":2},"end":{"line":314,"column":84}},"108":{"start":{"line":315,"column":2},"end":{"line":315,"column":66}},"109":{"start":{"line":317,"column":2},"end":{"line":317,"column":27}},"110":{"start":{"line":319,"column":0},"end":{"line":319,"column":98}},"111":{"start":{"line":325,"column":0},"end":{"line":376,"column":2}},"112":{"start":{"line":326,"column":2},"end":{"line":326,"column":71}},"113":{"start":{"line":327,"column":2},"end":{"line":327,"column":8}},"114":{"start":{"line":331,"column":2},"end":{"line":331,"column":17}},"115":{"start":{"line":332,"column":2},"end":{"line":341,"column":3}},"116":{"start":{"line":333,"column":4},"end":{"line":333,"column":30}},"117":{"start":{"line":334,"column":4},"end":{"line":340,"column":5}},"118":{"start":{"line":335,"column":6},"end":{"line":337,"column":7}},"119":{"start":{"line":336,"column":8},"end":{"line":336,"column":53}},"120":{"start":{"line":339,"column":6},"end":{"line":339,"column":48}},"121":{"start":{"line":345,"column":2},"end":{"line":345,"column":31}},"122":{"start":{"line":346,"column":2},"end":{"line":346,"column":70}},"123":{"start":{"line":349,"column":2},"end":{"line":355,"column":3}},"124":{"start":{"line":350,"column":4},"end":{"line":354,"column":5}},"125":{"start":{"line":351,"column":6},"end":{"line":351,"column":64}},"126":{"start":{"line":352,"column":6},"end":{"line":352,"column":37}},"127":{"start":{"line":353,"column":6},"end":{"line":353,"column":29}},"128":{"start":{"line":358,"column":2},"end":{"line":364,"column":3}},"129":{"start":{"line":359,"column":4},"end":{"line":363,"column":5}},"130":{"start":{"line":360,"column":6},"end":{"line":360,"column":59}},"131":{"start":{"line":361,"column":6},"end":{"line":361,"column":37}},"132":{"start":{"line":362,"column":6},"end":{"line":362,"column":29}},"133":{"start":{"line":367,"column":2},"end":{"line":367,"column":19}},"134":{"start":{"line":368,"column":2},"end":{"line":370,"column":3}},"135":{"start":{"line":369,"column":4},"end":{"line":369,"column":49}},"136":{"start":{"line":372,"column":2},"end":{"line":372,"column":65}},"137":{"start":{"line":374,"column":2},"end":{"line":374,"column":66}},"138":{"start":{"line":375,"column":2},"end":{"line":375,"column":16}},"139":{"start":{"line":395,"column":0},"end":{"line":421,"column":2}},"140":{"start":{"line":396,"column":2},"end":{"line":396,"column":32}},"141":{"start":{"line":397,"column":2},"end":{"line":399,"column":3}},"142":{"start":{"line":398,"column":4},"end":{"line":398,"column":29}},"143":{"start":{"line":401,"column":2},"end":{"line":401,"column":17}},"144":{"start":{"line":402,"column":2},"end":{"line":404,"column":3}},"145":{"start":{"line":403,"column":4},"end":{"line":403,"column":22}},"146":{"start":{"line":405,"column":2},"end":{"line":405,"column":13}},"147":{"start":{"line":407,"column":2},"end":{"line":407,"column":15}},"148":{"start":{"line":408,"column":2},"end":{"line":418,"column":3}},"149":{"start":{"line":409,"column":4},"end":{"line":409,"column":28}},"150":{"start":{"line":410,"column":4},"end":{"line":410,"column":16}},"151":{"start":{"line":412,"column":4},"end":{"line":414,"column":5}},"152":{"start":{"line":413,"column":6},"end":{"line":413,"column":15}},"153":{"start":{"line":415,"column":4},"end":{"line":415,"column":18}},"154":{"start":{"line":417,"column":4},"end":{"line":417,"column":10}},"155":{"start":{"line":420,"column":2},"end":{"line":420,"column":29}},"156":{"start":{"line":436,"column":0},"end":{"line":454,"column":2}},"157":{"start":{"line":437,"column":2},"end":{"line":437,"column":32}},"158":{"start":{"line":439,"column":2},"end":{"line":439,"column":40}},"159":{"start":{"line":440,"column":2},"end":{"line":442,"column":3}},"160":{"start":{"line":441,"column":4},"end":{"line":441,"column":23}},"161":{"start":{"line":444,"column":2},"end":{"line":451,"column":3}},"162":{"start":{"line":445,"column":4},"end":{"line":445,"column":14}},"163":{"start":{"line":446,"column":4},"end":{"line":450,"column":46}},"164":{"start":{"line":447,"column":6},"end":{"line":447,"column":46}},"165":{"start":{"line":448,"column":6},"end":{"line":448,"column":13}},"166":{"start":{"line":449,"column":6},"end":{"line":449,"column":25}},"167":{"start":{"line":453,"column":2},"end":{"line":453,"column":11}},"168":{"start":{"line":466,"column":0},"end":{"line":470,"column":2}},"169":{"start":{"line":467,"column":2},"end":{"line":467,"column":46}},"170":{"start":{"line":468,"column":2},"end":{"line":468,"column":66}},"171":{"start":{"line":469,"column":2},"end":{"line":469,"column":45}},"172":{"start":{"line":472,"column":0},"end":{"line":477,"column":2}},"173":{"start":{"line":473,"column":2},"end":{"line":473,"column":47}},"174":{"start":{"line":474,"column":2},"end":{"line":474,"column":75}},"175":{"start":{"line":475,"column":2},"end":{"line":475,"column":26}},"176":{"start":{"line":476,"column":2},"end":{"line":476,"column":13}},"177":{"start":{"line":518,"column":0},"end":{"line":523,"column":2}},"178":{"start":{"line":525,"column":0},"end":{"line":559,"column":2}},"179":{"start":{"line":526,"column":2},"end":{"line":526,"column":35}},"180":{"start":{"line":528,"column":2},"end":{"line":536,"column":3}},"181":{"start":{"line":529,"column":4},"end":{"line":529,"column":45}},"182":{"start":{"line":530,"column":9},"end":{"line":536,"column":3}},"183":{"start":{"line":531,"column":4},"end":{"line":531,"column":45}},"184":{"start":{"line":532,"column":9},"end":{"line":536,"column":3}},"185":{"start":{"line":533,"column":4},"end":{"line":533,"column":56}},"186":{"start":{"line":535,"column":4},"end":{"line":535,"column":57}},"187":{"start":{"line":538,"column":2},"end":{"line":554,"column":3}},"188":{"start":{"line":539,"column":4},"end":{"line":539,"column":74}},"189":{"start":{"line":542,"column":4},"end":{"line":547,"column":5}},"190":{"start":{"line":543,"column":6},"end":{"line":543,"column":79}},"191":{"start":{"line":545,"column":6},"end":{"line":545,"column":65}},"192":{"start":{"line":546,"column":6},"end":{"line":546,"column":51}},"193":{"start":{"line":549,"column":4},"end":{"line":551,"column":5}},"194":{"start":{"line":550,"column":6},"end":{"line":550,"column":56}},"195":{"start":{"line":553,"column":4},"end":{"line":553,"column":50}},"196":{"start":{"line":556,"column":2},"end":{"line":556,"column":45}},"197":{"start":{"line":558,"column":2},"end":{"line":558,"column":51}},"198":{"start":{"line":561,"column":0},"end":{"line":599,"column":2}},"199":{"start":{"line":562,"column":2},"end":{"line":562,"column":34}},"200":{"start":{"line":564,"column":2},"end":{"line":564,"column":40}},"201":{"start":{"line":565,"column":2},"end":{"line":575,"column":3}},"202":{"start":{"line":566,"column":4},"end":{"line":566,"column":45}},"203":{"start":{"line":567,"column":9},"end":{"line":575,"column":3}},"204":{"start":{"line":568,"column":4},"end":{"line":572,"column":5}},"205":{"start":{"line":569,"column":6},"end":{"line":569,"column":47}},"206":{"start":{"line":571,"column":6},"end":{"line":571,"column":58}},"207":{"start":{"line":574,"column":4},"end":{"line":574,"column":57}},"208":{"start":{"line":577,"column":2},"end":{"line":596,"column":3}},"209":{"start":{"line":578,"column":4},"end":{"line":578,"column":85}},"210":{"start":{"line":579,"column":4},"end":{"line":579,"column":22}},"211":{"start":{"line":582,"column":4},"end":{"line":582,"column":74}},"212":{"start":{"line":583,"column":4},"end":{"line":585,"column":5}},"213":{"start":{"line":584,"column":6},"end":{"line":584,"column":48}},"214":{"start":{"line":587,"column":4},"end":{"line":593,"column":5}},"215":{"start":{"line":588,"column":6},"end":{"line":588,"column":53}},"216":{"start":{"line":589,"column":11},"end":{"line":593,"column":5}},"217":{"start":{"line":590,"column":6},"end":{"line":590,"column":30}},"218":{"start":{"line":592,"column":6},"end":{"line":592,"column":24}},"219":{"start":{"line":595,"column":4},"end":{"line":595,"column":47}},"220":{"start":{"line":598,"column":2},"end":{"line":598,"column":16}},"221":{"start":{"line":623,"column":0},"end":{"line":623,"column":34}},"222":{"start":{"line":626,"column":0},"end":{"line":628,"column":2}},"223":{"start":{"line":627,"column":2},"end":{"line":627,"column":45}},"224":{"start":{"line":630,"column":0},"end":{"line":668,"column":2}},"225":{"start":{"line":632,"column":2},"end":{"line":665,"column":3}},"226":{"start":{"line":634,"column":4},"end":{"line":634,"column":46}},"227":{"start":{"line":637,"column":4},"end":{"line":637,"column":52}},"228":{"start":{"line":642,"column":4},"end":{"line":659,"column":5}},"229":{"start":{"line":643,"column":6},"end":{"line":643,"column":43}},"230":{"start":{"line":644,"column":6},"end":{"line":649,"column":7}},"231":{"start":{"line":645,"column":8},"end":{"line":645,"column":42}},"232":{"start":{"line":647,"column":8},"end":{"line":647,"column":43}},"233":{"start":{"line":648,"column":8},"end":{"line":648,"column":36}},"234":{"start":{"line":651,"column":6},"end":{"line":658,"column":9}},"235":{"start":{"line":664,"column":4},"end":{"line":664,"column":21}},"236":{"start":{"line":667,"column":2},"end":{"line":667,"column":9}},"237":{"start":{"line":676,"column":0},"end":{"line":682,"column":2}},"238":{"start":{"line":677,"column":2},"end":{"line":677,"column":45}},"239":{"start":{"line":678,"column":2},"end":{"line":678,"column":27}},"240":{"start":{"line":679,"column":2},"end":{"line":679,"column":25}},"241":{"start":{"line":680,"column":2},"end":{"line":680,"column":27}},"242":{"start":{"line":681,"column":2},"end":{"line":681,"column":27}},"243":{"start":{"line":685,"column":0},"end":{"line":737,"column":2}},"244":{"start":{"line":688,"column":2},"end":{"line":709,"column":3}},"245":{"start":{"line":689,"column":4},"end":{"line":693,"column":5}},"246":{"start":{"line":690,"column":6},"end":{"line":690,"column":71}},"247":{"start":{"line":691,"column":6},"end":{"line":691,"column":43}},"248":{"start":{"line":692,"column":6},"end":{"line":692,"column":13}},"249":{"start":{"line":694,"column":4},"end":{"line":694,"column":29}},"250":{"start":{"line":699,"column":7},"end":{"line":709,"column":3}},"251":{"start":{"line":700,"column":4},"end":{"line":700,"column":28}},"252":{"start":{"line":701,"column":4},"end":{"line":701,"column":28}},"253":{"start":{"line":702,"column":4},"end":{"line":702,"column":32}},"254":{"start":{"line":703,"column":4},"end":{"line":703,"column":27}},"255":{"start":{"line":708,"column":4},"end":{"line":708,"column":21}},"256":{"start":{"line":714,"column":2},"end":{"line":734,"column":3}},"257":{"start":{"line":715,"column":4},"end":{"line":717,"column":8}},"258":{"start":{"line":716,"column":6},"end":{"line":716,"column":24}},"259":{"start":{"line":718,"column":4},"end":{"line":724,"column":5}},"260":{"start":{"line":719,"column":6},"end":{"line":719,"column":44}},"261":{"start":{"line":721,"column":6},"end":{"line":721,"column":68}},"262":{"start":{"line":722,"column":6},"end":{"line":722,"column":46}},"263":{"start":{"line":723,"column":6},"end":{"line":723,"column":13}},"264":{"start":{"line":725,"column":4},"end":{"line":732,"column":7}},"265":{"start":{"line":733,"column":4},"end":{"line":733,"column":29}},"266":{"start":{"line":736,"column":2},"end":{"line":736,"column":9}},"267":{"start":{"line":742,"column":0},"end":{"line":781,"column":2}},"268":{"start":{"line":783,"column":0},"end":{"line":819,"column":2}},"269":{"start":{"line":825,"column":0},"end":{"line":837,"column":1}},"270":{"start":{"line":826,"column":2},"end":{"line":826,"column":15}},"271":{"start":{"line":827,"column":2},"end":{"line":829,"column":3}},"272":{"start":{"line":828,"column":4},"end":{"line":828,"column":30}},"273":{"start":{"line":831,"column":2},"end":{"line":831,"column":38}},"274":{"start":{"line":832,"column":2},"end":{"line":834,"column":3}},"275":{"start":{"line":833,"column":4},"end":{"line":833,"column":42}},"276":{"start":{"line":836,"column":2},"end":{"line":836,"column":22}},"277":{"start":{"line":840,"column":0},"end":{"line":849,"column":1}},"278":{"start":{"line":841,"column":2},"end":{"line":841,"column":18}},"279":{"start":{"line":842,"column":2},"end":{"line":842,"column":17}},"280":{"start":{"line":843,"column":2},"end":{"line":847,"column":34}},"281":{"start":{"line":844,"column":4},"end":{"line":844,"column":59}},"282":{"start":{"line":845,"column":4},"end":{"line":845,"column":58}},"283":{"start":{"line":846,"column":4},"end":{"line":846,"column":24}},"284":{"start":{"line":848,"column":2},"end":{"line":848,"column":16}},"285":{"start":{"line":852,"column":0},"end":{"line":858,"column":1}},"286":{"start":{"line":853,"column":2},"end":{"line":853,"column":17}},"287":{"start":{"line":854,"column":2},"end":{"line":856,"column":3}},"288":{"start":{"line":855,"column":4},"end":{"line":855,"column":29}},"289":{"start":{"line":857,"column":2},"end":{"line":857,"column":15}}},"branchMap":{"1":{"line":41,"type":"binary-expr","locations":[{"start":{"line":41,"column":16},"end":{"line":41,"column":21}},{"start":{"line":41,"column":25},"end":{"line":41,"column":51}}]},"2":{"line":49,"type":"binary-expr","locations":[{"start":{"line":49,"column":10},"end":{"line":49,"column":59}},{"start":{"line":49,"column":65},"end":{"line":49,"column":86}}]},"3":{"line":116,"type":"if","locations":[{"start":{"line":116,"column":2},"end":{"line":116,"column":2}},{"start":{"line":116,"column":2},"end":{"line":116,"column":2}}]},"4":{"line":121,"type":"if","locations":[{"start":{"line":121,"column":4},"end":{"line":121,"column":4}},{"start":{"line":121,"column":4},"end":{"line":121,"column":4}}]},"5":{"line":134,"type":"if","locations":[{"start":{"line":134,"column":4},"end":{"line":134,"column":4}},{"start":{"line":134,"column":4},"end":{"line":134,"column":4}}]},"6":{"line":140,"type":"if","locations":[{"start":{"line":140,"column":4},"end":{"line":140,"column":4}},{"start":{"line":140,"column":4},"end":{"line":140,"column":4}}]},"7":{"line":141,"type":"if","locations":[{"start":{"line":141,"column":6},"end":{"line":141,"column":6}},{"start":{"line":141,"column":6},"end":{"line":141,"column":6}}]},"8":{"line":168,"type":"if","locations":[{"start":{"line":168,"column":2},"end":{"line":168,"column":2}},{"start":{"line":168,"column":2},"end":{"line":168,"column":2}}]},"9":{"line":170,"type":"if","locations":[{"start":{"line":170,"column":4},"end":{"line":170,"column":4}},{"start":{"line":170,"column":4},"end":{"line":170,"column":4}}]},"10":{"line":183,"type":"if","locations":[{"start":{"line":183,"column":2},"end":{"line":183,"column":2}},{"start":{"line":183,"column":2},"end":{"line":183,"column":2}}]},"11":{"line":185,"type":"if","locations":[{"start":{"line":185,"column":4},"end":{"line":185,"column":4}},{"start":{"line":185,"column":4},"end":{"line":185,"column":4}}]},"12":{"line":207,"type":"if","locations":[{"start":{"line":207,"column":4},"end":{"line":207,"column":4}},{"start":{"line":207,"column":4},"end":{"line":207,"column":4}}]},"13":{"line":231,"type":"if","locations":[{"start":{"line":231,"column":4},"end":{"line":231,"column":4}},{"start":{"line":231,"column":4},"end":{"line":231,"column":4}}]},"14":{"line":252,"type":"cond-expr","locations":[{"start":{"line":252,"column":44},"end":{"line":252,"column":82}},{"start":{"line":253,"column":44},"end":{"line":253,"column":83}}]},"15":{"line":289,"type":"if","locations":[{"start":{"line":289,"column":4},"end":{"line":289,"column":4}},{"start":{"line":289,"column":4},"end":{"line":289,"column":4}}]},"16":{"line":290,"type":"if","locations":[{"start":{"line":290,"column":6},"end":{"line":290,"column":6}},{"start":{"line":290,"column":6},"end":{"line":290,"column":6}}]},"17":{"line":313,"type":"cond-expr","locations":[{"start":{"line":313,"column":44},"end":{"line":313,"column":82}},{"start":{"line":314,"column":44},"end":{"line":314,"column":83}}]},"18":{"line":334,"type":"if","locations":[{"start":{"line":334,"column":4},"end":{"line":334,"column":4}},{"start":{"line":334,"column":4},"end":{"line":334,"column":4}}]},"19":{"line":350,"type":"if","locations":[{"start":{"line":350,"column":4},"end":{"line":350,"column":4}},{"start":{"line":350,"column":4},"end":{"line":350,"column":4}}]},"20":{"line":359,"type":"if","locations":[{"start":{"line":359,"column":4},"end":{"line":359,"column":4}},{"start":{"line":359,"column":4},"end":{"line":359,"column":4}}]},"21":{"line":397,"type":"if","locations":[{"start":{"line":397,"column":2},"end":{"line":397,"column":2}},{"start":{"line":397,"column":2},"end":{"line":397,"column":2}}]},"22":{"line":402,"type":"if","locations":[{"start":{"line":402,"column":2},"end":{"line":402,"column":2}},{"start":{"line":402,"column":2},"end":{"line":402,"column":2}}]},"23":{"line":412,"type":"if","locations":[{"start":{"line":412,"column":4},"end":{"line":412,"column":4}},{"start":{"line":412,"column":4},"end":{"line":412,"column":4}}]},"24":{"line":440,"type":"if","locations":[{"start":{"line":440,"column":2},"end":{"line":440,"column":2}},{"start":{"line":440,"column":2},"end":{"line":440,"column":2}}]},"25":{"line":444,"type":"if","locations":[{"start":{"line":444,"column":2},"end":{"line":444,"column":2}},{"start":{"line":444,"column":2},"end":{"line":444,"column":2}}]},"26":{"line":528,"type":"if","locations":[{"start":{"line":528,"column":2},"end":{"line":528,"column":2}},{"start":{"line":528,"column":2},"end":{"line":528,"column":2}}]},"27":{"line":530,"type":"if","locations":[{"start":{"line":530,"column":9},"end":{"line":530,"column":9}},{"start":{"line":530,"column":9},"end":{"line":530,"column":9}}]},"28":{"line":532,"type":"if","locations":[{"start":{"line":532,"column":9},"end":{"line":532,"column":9}},{"start":{"line":532,"column":9},"end":{"line":532,"column":9}}]},"29":{"line":538,"type":"if","locations":[{"start":{"line":538,"column":2},"end":{"line":538,"column":2}},{"start":{"line":538,"column":2},"end":{"line":538,"column":2}}]},"30":{"line":542,"type":"if","locations":[{"start":{"line":542,"column":4},"end":{"line":542,"column":4}},{"start":{"line":542,"column":4},"end":{"line":542,"column":4}}]},"31":{"line":549,"type":"if","locations":[{"start":{"line":549,"column":4},"end":{"line":549,"column":4}},{"start":{"line":549,"column":4},"end":{"line":549,"column":4}}]},"32":{"line":565,"type":"if","locations":[{"start":{"line":565,"column":2},"end":{"line":565,"column":2}},{"start":{"line":565,"column":2},"end":{"line":565,"column":2}}]},"33":{"line":567,"type":"if","locations":[{"start":{"line":567,"column":9},"end":{"line":567,"column":9}},{"start":{"line":567,"column":9},"end":{"line":567,"column":9}}]},"34":{"line":568,"type":"if","locations":[{"start":{"line":568,"column":4},"end":{"line":568,"column":4}},{"start":{"line":568,"column":4},"end":{"line":568,"column":4}}]},"35":{"line":577,"type":"if","locations":[{"start":{"line":577,"column":2},"end":{"line":577,"column":2}},{"start":{"line":577,"column":2},"end":{"line":577,"column":2}}]},"36":{"line":583,"type":"if","locations":[{"start":{"line":583,"column":4},"end":{"line":583,"column":4}},{"start":{"line":583,"column":4},"end":{"line":583,"column":4}}]},"37":{"line":587,"type":"if","locations":[{"start":{"line":587,"column":4},"end":{"line":587,"column":4}},{"start":{"line":587,"column":4},"end":{"line":587,"column":4}}]},"38":{"line":589,"type":"if","locations":[{"start":{"line":589,"column":11},"end":{"line":589,"column":11}},{"start":{"line":589,"column":11},"end":{"line":589,"column":11}}]},"39":{"line":632,"type":"if","locations":[{"start":{"line":632,"column":2},"end":{"line":632,"column":2}},{"start":{"line":632,"column":2},"end":{"line":632,"column":2}}]},"40":{"line":632,"type":"binary-expr","locations":[{"start":{"line":632,"column":6},"end":{"line":632,"column":30}},{"start":{"line":632,"column":34},"end":{"line":632,"column":63}}]},"41":{"line":644,"type":"if","locations":[{"start":{"line":644,"column":6},"end":{"line":644,"column":6}},{"start":{"line":644,"column":6},"end":{"line":644,"column":6}}]},"42":{"line":688,"type":"if","locations":[{"start":{"line":688,"column":2},"end":{"line":688,"column":2}},{"start":{"line":688,"column":2},"end":{"line":688,"column":2}}]},"43":{"line":689,"type":"if","locations":[{"start":{"line":689,"column":4},"end":{"line":689,"column":4}},{"start":{"line":689,"column":4},"end":{"line":689,"column":4}}]},"44":{"line":689,"type":"binary-expr","locations":[{"start":{"line":689,"column":9},"end":{"line":689,"column":34}},{"start":{"line":689,"column":40},"end":{"line":689,"column":69}}]},"45":{"line":699,"type":"if","locations":[{"start":{"line":699,"column":7},"end":{"line":699,"column":7}},{"start":{"line":699,"column":7},"end":{"line":699,"column":7}}]},"46":{"line":699,"type":"binary-expr","locations":[{"start":{"line":699,"column":12},"end":{"line":699,"column":36}},{"start":{"line":699,"column":42},"end":{"line":699,"column":71}}]},"47":{"line":714,"type":"if","locations":[{"start":{"line":714,"column":2},"end":{"line":714,"column":2}},{"start":{"line":714,"column":2},"end":{"line":714,"column":2}}]},"48":{"line":714,"type":"binary-expr","locations":[{"start":{"line":714,"column":6},"end":{"line":714,"column":22}},{"start":{"line":714,"column":27},"end":{"line":714,"column":50}},{"start":{"line":714,"column":54},"end":{"line":714,"column":82}}]}}},"/data/upstream/node-http2/lib/connection.js":{"path":"/data/upstream/node-http2/lib/connection.js","s":{"1":1,"2":1,"3":1,"4":1,"5":25,"6":25,"7":25,"8":25,"9":25,"10":25,"11":1,"12":1,"13":1,"14":25,"15":25,"16":25,"17":25,"18":25,"19":25,"20":25,"21":25,"22":1,"23":197,"24":1,"25":25,"26":25,"27":25,"28":0,"29":0,"30":1,"31":18,"32":18,"33":1,"34":43,"35":15,"36":15,"37":15,"38":1,"39":22,"40":11,"41":11,"42":11,"43":11,"44":0,"45":0,"46":0,"47":22,"48":22,"49":22,"50":22,"51":22,"52":1,"53":22,"54":22,"55":22,"56":22,"57":22,"58":1,"59":43,"60":43,"61":43,"62":78,"63":43,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":11,"71":11,"72":11,"73":11,"74":11,"75":11,"76":1,"77":8,"78":8,"79":8,"80":8,"81":1,"82":189,"83":189,"84":189,"85":197,"86":197,"87":197,"88":197,"89":27,"90":0,"91":0,"92":27,"93":8,"94":27,"95":27,"96":3,"97":3,"98":27,"99":27,"100":27,"101":0,"102":27,"103":27,"104":27,"105":0,"106":27,"107":0,"108":189,"109":1,"110":52,"111":52,"112":52,"113":8,"114":52,"115":3,"116":52,"117":52,"118":52,"119":1,"120":1,"121":25,"122":25,"123":25,"124":20,"125":20,"126":0,"127":0,"128":25,"129":1,"130":20,"131":38,"132":1,"133":25,"134":1,"135":25,"136":25,"137":25,"138":1,"139":2,"140":2,"141":2,"142":32,"143":2,"144":1,"145":2,"146":2,"147":2,"148":2,"149":2,"150":1,"151":5,"152":3,"153":3,"154":2,"155":2,"156":2,"157":1,"158":2,"159":2,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":25,"169":25,"170":22,"171":25,"172":25,"173":25,"174":1,"175":1,"176":25,"177":1,"178":1,"179":24,"180":24,"181":24,"182":30,"183":1,"184":8,"185":6,"186":6,"187":2,"188":1,"189":1},"b":{"1":[1,0],"2":[25,0],"3":[25,5,1,0],"4":[15,28],"5":[11,11],"6":[11,0],"7":[11,11],"8":[121,92],"9":[0,27],"10":[8,19],"11":[3,24],"12":[27,0],"13":[0,27],"14":[0,27],"15":[8,44],"16":[3,49],"17":[25,2],"18":[20,0],"19":[20,20],"20":[3,2],"21":[2,1],"22":[1,1],"23":[1,24],"24":[25,2],"25":[6,2],"26":[1,1]},"f":{"1":0,"2":25,"3":25,"4":197,"5":25,"6":18,"7":43,"8":22,"9":22,"10":43,"11":1,"12":11,"13":8,"14":189,"15":0,"16":52,"17":25,"18":20,"19":20,"20":25,"21":25,"22":2,"23":2,"24":5,"25":1,"26":1,"27":25,"28":22,"29":24,"30":25,"31":30,"32":8},"fnMap":{"1":{"name":"noop","line":1,"loc":{"start":{"line":1,"column":45},"end":{"line":1,"column":76}}},"2":{"name":"Connection","line":36,"loc":{"start":{"line":36,"column":0},"end":{"line":36,"column":50}}},"3":{"name":"_initializeStreamManagement","line":96,"loc":{"start":{"line":96,"column":51},"end":{"line":96,"column":103}}},"4":{"name":"_getIdOf","line":117,"loc":{"start":{"line":117,"column":32},"end":{"line":117,"column":58}}},"5":{"name":"_writeControlFrame","line":123,"loc":{"start":{"line":123,"column":42},"end":{"line":123,"column":77}}},"6":{"name":"_updateStreamLimit","line":135,"loc":{"start":{"line":135,"column":42},"end":{"line":135,"column":86}}},"7":{"name":"_changeStreamCount","line":140,"loc":{"start":{"line":140,"column":42},"end":{"line":140,"column":78}}},"8":{"name":"_enableReceiving","line":156,"loc":{"start":{"line":156,"column":40},"end":{"line":156,"column":78}}},"9":{"name":"_enableSending","line":187,"loc":{"start":{"line":187,"column":38},"end":{"line":187,"column":70}}},"10":{"name":"_insert","line":196,"loc":{"start":{"line":196,"column":31},"end":{"line":196,"column":56}}},"11":{"name":"_reprioritize","line":207,"loc":{"start":{"line":207,"column":37},"end":{"line":207,"column":68}}},"12":{"name":"_createIncomingStream","line":216,"loc":{"start":{"line":216,"column":45},"end":{"line":216,"column":80}}},"13":{"name":"createStream","line":228,"loc":{"start":{"line":228,"column":36},"end":{"line":228,"column":60}}},"14":{"name":"_send","line":243,"loc":{"start":{"line":243,"column":29},"end":{"line":243,"column":46}}},"15":{"name":"(anonymous_15)","line":270,"loc":{"start":{"line":270,"column":41},"end":{"line":270,"column":66}}},"16":{"name":"_receive","line":291,"loc":{"start":{"line":291,"column":32},"end":{"line":291,"column":63}}},"17":{"name":"_initializeSettingsManagement","line":323,"loc":{"start":{"line":323,"column":53},"end":{"line":323,"column":102}}},"18":{"name":"(anonymous_18)","line":329,"loc":{"start":{"line":329,"column":25},"end":{"line":329,"column":41}}},"19":{"name":"_receiveSettings","line":343,"loc":{"start":{"line":343,"column":40},"end":{"line":343,"column":73}}},"20":{"name":"set","line":350,"loc":{"start":{"line":350,"column":27},"end":{"line":350,"column":50}}},"21":{"name":"_initializeLifecycleManagement","line":368,"loc":{"start":{"line":368,"column":54},"end":{"line":368,"column":96}}},"22":{"name":"_generatePingId","line":375,"loc":{"start":{"line":375,"column":39},"end":{"line":375,"column":66}}},"23":{"name":"ping","line":386,"loc":{"start":{"line":386,"column":28},"end":{"line":386,"column":52}}},"24":{"name":"_receivePing","line":403,"loc":{"start":{"line":403,"column":36},"end":{"line":403,"column":65}}},"25":{"name":"close","line":428,"loc":{"start":{"line":428,"column":29},"end":{"line":428,"column":51}}},"26":{"name":"_receiveGoaway","line":439,"loc":{"start":{"line":439,"column":38},"end":{"line":439,"column":69}}},"27":{"name":"_initializeFlowControl","line":447,"loc":{"start":{"line":447,"column":46},"end":{"line":447,"column":80}}},"28":{"name":"(anonymous_28)","line":450,"loc":{"start":{"line":450,"column":24},"end":{"line":450,"column":41}}},"29":{"name":"noop","line":455,"loc":{"start":{"line":455,"column":49},"end":{"line":455,"column":65}}},"30":{"name":"_setInitialStreamWindowSize","line":468,"loc":{"start":{"line":468,"column":51},"end":{"line":468,"column":94}}},"31":{"name":"(anonymous_31)","line":475,"loc":{"start":{"line":475,"column":28},"end":{"line":475,"column":45}}},"32":{"name":"_setStreamFlowControl","line":483,"loc":{"start":{"line":483,"column":45},"end":{"line":483,"column":85}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":79}},"2":{"start":{"line":10,"column":0},"end":{"line":10,"column":34}},"3":{"start":{"line":12,"column":0},"end":{"line":12,"column":32}},"4":{"start":{"line":36,"column":0},"end":{"line":56,"column":1}},"5":{"start":{"line":38,"column":2},"end":{"line":38,"column":21}},"6":{"start":{"line":41,"column":2},"end":{"line":41,"column":53}},"7":{"start":{"line":44,"column":2},"end":{"line":44,"column":50}},"8":{"start":{"line":47,"column":2},"end":{"line":47,"column":47}},"9":{"start":{"line":50,"column":2},"end":{"line":50,"column":40}},"10":{"start":{"line":53,"column":2},"end":{"line":53,"column":32}},"11":{"start":{"line":57,"column":0},"end":{"line":57,"column":93}},"12":{"start":{"line":93,"column":0},"end":{"line":93,"column":41}},"13":{"start":{"line":96,"column":0},"end":{"line":115,"column":2}},"14":{"start":{"line":100,"column":2},"end":{"line":100,"column":23}},"15":{"start":{"line":101,"column":2},"end":{"line":101,"column":24}},"16":{"start":{"line":104,"column":2},"end":{"line":104,"column":37}},"17":{"start":{"line":105,"column":2},"end":{"line":105,"column":31}},"18":{"start":{"line":108,"column":2},"end":{"line":108,"column":83}},"19":{"start":{"line":112,"column":2},"end":{"line":112,"column":24}},"20":{"start":{"line":113,"column":2},"end":{"line":113,"column":31}},"21":{"start":{"line":114,"column":2},"end":{"line":114,"column":70}},"22":{"start":{"line":117,"column":0},"end":{"line":119,"column":2}},"23":{"start":{"line":118,"column":2},"end":{"line":118,"column":41}},"24":{"start":{"line":123,"column":0},"end":{"line":132,"column":2}},"25":{"start":{"line":124,"column":2},"end":{"line":131,"column":3}},"26":{"start":{"line":126,"column":4},"end":{"line":126,"column":74}},"27":{"start":{"line":127,"column":4},"end":{"line":127,"column":33}},"28":{"start":{"line":129,"column":4},"end":{"line":129,"column":72}},"29":{"start":{"line":130,"column":4},"end":{"line":130,"column":41}},"30":{"start":{"line":135,"column":0},"end":{"line":138,"column":2}},"31":{"start":{"line":136,"column":2},"end":{"line":136,"column":37}},"32":{"start":{"line":137,"column":2},"end":{"line":137,"column":15}},"33":{"start":{"line":140,"column":0},"end":{"line":146,"column":2}},"34":{"start":{"line":141,"column":2},"end":{"line":145,"column":3}},"35":{"start":{"line":142,"column":4},"end":{"line":142,"column":99}},"36":{"start":{"line":143,"column":4},"end":{"line":143,"column":32}},"37":{"start":{"line":144,"column":4},"end":{"line":144,"column":17}},"38":{"start":{"line":156,"column":0},"end":{"line":184,"column":2}},"39":{"start":{"line":158,"column":2},"end":{"line":174,"column":3}},"40":{"start":{"line":159,"column":4},"end":{"line":159,"column":28}},"41":{"start":{"line":160,"column":4},"end":{"line":160,"column":28}},"42":{"start":{"line":164,"column":7},"end":{"line":174,"column":3}},"43":{"start":{"line":165,"column":4},"end":{"line":165,"column":34}},"44":{"start":{"line":170,"column":4},"end":{"line":171,"column":51}},"45":{"start":{"line":172,"column":4},"end":{"line":172,"column":41}},"46":{"start":{"line":173,"column":4},"end":{"line":173,"column":21}},"47":{"start":{"line":176,"column":2},"end":{"line":176,"column":35}},"48":{"start":{"line":179,"column":2},"end":{"line":179,"column":84}},"49":{"start":{"line":180,"column":2},"end":{"line":180,"column":31}},"50":{"start":{"line":181,"column":2},"end":{"line":181,"column":38}},"51":{"start":{"line":183,"column":2},"end":{"line":183,"column":12}},"52":{"start":{"line":187,"column":0},"end":{"line":193,"column":2}},"53":{"start":{"line":188,"column":2},"end":{"line":188,"column":67}},"54":{"start":{"line":189,"column":2},"end":{"line":189,"column":23}},"55":{"start":{"line":190,"column":2},"end":{"line":190,"column":63}},"56":{"start":{"line":191,"column":2},"end":{"line":191,"column":58}},"57":{"start":{"line":192,"column":2},"end":{"line":192,"column":15}},"58":{"start":{"line":196,"column":0},"end":{"line":203,"column":2}},"59":{"start":{"line":197,"column":2},"end":{"line":197,"column":33}},"60":{"start":{"line":198,"column":2},"end":{"line":198,"column":16}},"61":{"start":{"line":199,"column":2},"end":{"line":201,"column":3}},"62":{"start":{"line":200,"column":4},"end":{"line":200,"column":15}},"63":{"start":{"line":202,"column":2},"end":{"line":202,"column":35}},"64":{"start":{"line":207,"column":0},"end":{"line":212,"column":2}},"65":{"start":{"line":208,"column":2},"end":{"line":208,"column":47}},"66":{"start":{"line":209,"column":2},"end":{"line":209,"column":23}},"67":{"start":{"line":210,"column":2},"end":{"line":210,"column":36}},"68":{"start":{"line":211,"column":2},"end":{"line":211,"column":23}},"69":{"start":{"line":216,"column":0},"end":{"line":225,"column":2}},"70":{"start":{"line":217,"column":2},"end":{"line":217,"column":61}},"71":{"start":{"line":219,"column":2},"end":{"line":219,"column":37}},"72":{"start":{"line":220,"column":2},"end":{"line":220,"column":36}},"73":{"start":{"line":221,"column":2},"end":{"line":221,"column":30}},"74":{"start":{"line":222,"column":2},"end":{"line":222,"column":34}},"75":{"start":{"line":224,"column":2},"end":{"line":224,"column":16}},"76":{"start":{"line":228,"column":0},"end":{"line":236,"column":2}},"77":{"start":{"line":229,"column":2},"end":{"line":229,"column":51}},"78":{"start":{"line":232,"column":2},"end":{"line":232,"column":37}},"79":{"start":{"line":233,"column":2},"end":{"line":233,"column":30}},"80":{"start":{"line":235,"column":2},"end":{"line":235,"column":16}},"81":{"start":{"line":243,"column":0},"end":{"line":287,"column":2}},"82":{"start":{"line":244,"column":2},"end":{"line":244,"column":62}},"83":{"start":{"line":247,"column":0},"end":{"line":284,"column":3}},"84":{"start":{"line":248,"column":2},"end":{"line":284,"column":3}},"85":{"start":{"line":249,"column":4},"end":{"line":249,"column":37}},"86":{"start":{"line":250,"column":4},"end":{"line":250,"column":35}},"87":{"start":{"line":251,"column":4},"end":{"line":251,"column":14}},"88":{"start":{"line":252,"column":4},"end":{"line":283,"column":5}},"89":{"start":{"line":253,"column":6},"end":{"line":256,"column":7}},"90":{"start":{"line":254,"column":8},"end":{"line":254,"column":39}},"91":{"start":{"line":255,"column":8},"end":{"line":255,"column":29}},"92":{"start":{"line":258,"column":6},"end":{"line":260,"column":7}},"93":{"start":{"line":259,"column":8},"end":{"line":259,"column":43}},"94":{"start":{"line":262,"column":6},"end":{"line":262,"column":24}},"95":{"start":{"line":263,"column":6},"end":{"line":266,"column":7}},"96":{"start":{"line":264,"column":8},"end":{"line":264,"column":76}},"97":{"start":{"line":265,"column":8},"end":{"line":265,"column":77}},"98":{"start":{"line":268,"column":6},"end":{"line":268,"column":87}},"99":{"start":{"line":269,"column":6},"end":{"line":269,"column":27}},"100":{"start":{"line":270,"column":6},"end":{"line":272,"column":9}},"101":{"start":{"line":271,"column":8},"end":{"line":271,"column":60}},"102":{"start":{"line":274,"column":6},"end":{"line":276,"column":7}},"103":{"start":{"line":275,"column":8},"end":{"line":275,"column":52}},"104":{"start":{"line":278,"column":6},"end":{"line":282,"column":7}},"105":{"start":{"line":279,"column":8},"end":{"line":279,"column":29}},"106":{"start":{"line":280,"column":13},"end":{"line":282,"column":7}},"107":{"start":{"line":281,"column":8},"end":{"line":281,"column":26}},"108":{"start":{"line":286,"column":2},"end":{"line":286,"column":90}},"109":{"start":{"line":291,"column":0},"end":{"line":313,"column":2}},"110":{"start":{"line":292,"column":2},"end":{"line":292,"column":65}},"111":{"start":{"line":295,"column":2},"end":{"line":295,"column":45}},"112":{"start":{"line":298,"column":2},"end":{"line":300,"column":3}},"113":{"start":{"line":299,"column":4},"end":{"line":299,"column":54}},"114":{"start":{"line":303,"column":2},"end":{"line":305,"column":3}},"115":{"start":{"line":304,"column":4},"end":{"line":304,"column":78}},"116":{"start":{"line":307,"column":2},"end":{"line":307,"column":58}},"117":{"start":{"line":310,"column":2},"end":{"line":310,"column":31}},"118":{"start":{"line":312,"column":2},"end":{"line":312,"column":9}},"119":{"start":{"line":318,"column":0},"end":{"line":320,"column":2}},"120":{"start":{"line":323,"column":0},"end":{"line":340,"column":2}},"121":{"start":{"line":325,"column":2},"end":{"line":325,"column":88}},"122":{"start":{"line":326,"column":2},"end":{"line":326,"column":40}},"123":{"start":{"line":329,"column":2},"end":{"line":336,"column":5}},"124":{"start":{"line":330,"column":4},"end":{"line":335,"column":5}},"125":{"start":{"line":331,"column":6},"end":{"line":331,"column":94}},"126":{"start":{"line":333,"column":6},"end":{"line":333,"column":99}},"127":{"start":{"line":334,"column":6},"end":{"line":334,"column":25}},"128":{"start":{"line":339,"column":2},"end":{"line":339,"column":45}},"129":{"start":{"line":343,"column":0},"end":{"line":347,"column":2}},"130":{"start":{"line":344,"column":2},"end":{"line":346,"column":3}},"131":{"start":{"line":345,"column":4},"end":{"line":345,"column":42}},"132":{"start":{"line":350,"column":0},"end":{"line":356,"column":2}},"133":{"start":{"line":351,"column":2},"end":{"line":355,"column":5}},"134":{"start":{"line":368,"column":0},"end":{"line":372,"column":2}},"135":{"start":{"line":369,"column":2},"end":{"line":369,"column":19}},"136":{"start":{"line":370,"column":2},"end":{"line":370,"column":37}},"137":{"start":{"line":371,"column":2},"end":{"line":371,"column":41}},"138":{"start":{"line":375,"column":0},"end":{"line":383,"column":2}},"139":{"start":{"line":376,"column":2},"end":{"line":381,"column":29}},"140":{"start":{"line":377,"column":4},"end":{"line":377,"column":16}},"141":{"start":{"line":378,"column":4},"end":{"line":380,"column":5}},"142":{"start":{"line":379,"column":6},"end":{"line":379,"column":54}},"143":{"start":{"line":382,"column":2},"end":{"line":382,"column":12}},"144":{"start":{"line":386,"column":0},"end":{"line":400,"column":2}},"145":{"start":{"line":387,"column":2},"end":{"line":387,"column":34}},"146":{"start":{"line":388,"column":2},"end":{"line":388,"column":35}},"147":{"start":{"line":389,"column":2},"end":{"line":389,"column":29}},"148":{"start":{"line":391,"column":2},"end":{"line":391,"column":51}},"149":{"start":{"line":392,"column":2},"end":{"line":399,"column":5}},"150":{"start":{"line":403,"column":0},"end":{"line":425,"column":2}},"151":{"start":{"line":404,"column":2},"end":{"line":424,"column":3}},"152":{"start":{"line":405,"column":4},"end":{"line":405,"column":40}},"153":{"start":{"line":406,"column":4},"end":{"line":412,"column":5}},"154":{"start":{"line":407,"column":6},"end":{"line":407,"column":76}},"155":{"start":{"line":408,"column":6},"end":{"line":408,"column":24}},"156":{"start":{"line":409,"column":6},"end":{"line":409,"column":29}},"157":{"start":{"line":411,"column":6},"end":{"line":411,"column":71}},"158":{"start":{"line":415,"column":4},"end":{"line":415,"column":61}},"159":{"start":{"line":416,"column":4},"end":{"line":423,"column":7}},"160":{"start":{"line":428,"column":0},"end":{"line":437,"column":2}},"161":{"start":{"line":429,"column":2},"end":{"line":429,"column":61}},"162":{"start":{"line":430,"column":2},"end":{"line":435,"column":5}},"163":{"start":{"line":436,"column":2},"end":{"line":436,"column":18}},"164":{"start":{"line":439,"column":0},"end":{"line":442,"column":2}},"165":{"start":{"line":440,"column":2},"end":{"line":440,"column":76}},"166":{"start":{"line":441,"column":2},"end":{"line":441,"column":18}},"167":{"start":{"line":447,"column":0},"end":{"line":459,"column":2}},"168":{"start":{"line":449,"column":2},"end":{"line":449,"column":61}},"169":{"start":{"line":450,"column":2},"end":{"line":452,"column":5}},"170":{"start":{"line":451,"column":4},"end":{"line":451,"column":68}},"171":{"start":{"line":453,"column":2},"end":{"line":453,"column":76}},"172":{"start":{"line":454,"column":2},"end":{"line":454,"column":71}},"173":{"start":{"line":455,"column":2},"end":{"line":455,"column":68}},"174":{"start":{"line":462,"column":0},"end":{"line":462,"column":39}},"175":{"start":{"line":468,"column":0},"end":{"line":479,"column":2}},"176":{"start":{"line":469,"column":2},"end":{"line":478,"column":3}},"177":{"start":{"line":470,"column":4},"end":{"line":470,"column":112}},"178":{"start":{"line":471,"column":4},"end":{"line":471,"column":45}},"179":{"start":{"line":473,"column":4},"end":{"line":473,"column":76}},"180":{"start":{"line":474,"column":4},"end":{"line":474,"column":41}},"181":{"start":{"line":475,"column":4},"end":{"line":477,"column":7}},"182":{"start":{"line":476,"column":6},"end":{"line":476,"column":45}},"183":{"start":{"line":483,"column":0},"end":{"line":491,"column":2}},"184":{"start":{"line":484,"column":2},"end":{"line":490,"column":3}},"185":{"start":{"line":485,"column":4},"end":{"line":485,"column":35}},"186":{"start":{"line":486,"column":4},"end":{"line":486,"column":47}},"187":{"start":{"line":487,"column":9},"end":{"line":490,"column":3}},"188":{"start":{"line":488,"column":4},"end":{"line":488,"column":81}},"189":{"start":{"line":489,"column":4},"end":{"line":489,"column":45}}},"branchMap":{"1":{"line":1,"type":"cond-expr","locations":[{"start":{"line":1,"column":40},"end":{"line":1,"column":57}},{"start":{"line":1,"column":45},"end":{"line":1,"column":78}}]},"2":{"line":124,"type":"if","locations":[{"start":{"line":124,"column":2},"end":{"line":124,"column":2}},{"start":{"line":124,"column":2},"end":{"line":124,"column":2}}]},"3":{"line":124,"type":"binary-expr","locations":[{"start":{"line":124,"column":7},"end":{"line":124,"column":32}},{"start":{"line":124,"column":38},"end":{"line":124,"column":59}},{"start":{"line":125,"column":7},"end":{"line":125,"column":30}},{"start":{"line":125,"column":36},"end":{"line":125,"column":66}}]},"4":{"line":141,"type":"if","locations":[{"start":{"line":141,"column":2},"end":{"line":141,"column":2}},{"start":{"line":141,"column":2},"end":{"line":141,"column":2}}]},"5":{"line":158,"type":"if","locations":[{"start":{"line":158,"column":2},"end":{"line":158,"column":2}},{"start":{"line":158,"column":2},"end":{"line":158,"column":2}}]},"6":{"line":164,"type":"if","locations":[{"start":{"line":164,"column":7},"end":{"line":164,"column":7}},{"start":{"line":164,"column":7},"end":{"line":164,"column":7}}]},"7":{"line":164,"type":"binary-expr","locations":[{"start":{"line":164,"column":12},"end":{"line":164,"column":41}},{"start":{"line":164,"column":47},"end":{"line":164,"column":82}}]},"8":{"line":199,"type":"binary-expr","locations":[{"start":{"line":199,"column":10},"end":{"line":199,"column":32}},{"start":{"line":199,"column":38},"end":{"line":199,"column":82}}]},"9":{"line":253,"type":"if","locations":[{"start":{"line":253,"column":6},"end":{"line":253,"column":6}},{"start":{"line":253,"column":6},"end":{"line":253,"column":6}}]},"10":{"line":258,"type":"if","locations":[{"start":{"line":258,"column":6},"end":{"line":258,"column":6}},{"start":{"line":258,"column":6},"end":{"line":258,"column":6}}]},"11":{"line":263,"type":"if","locations":[{"start":{"line":263,"column":6},"end":{"line":263,"column":6}},{"start":{"line":263,"column":6},"end":{"line":263,"column":6}}]},"12":{"line":274,"type":"if","locations":[{"start":{"line":274,"column":6},"end":{"line":274,"column":6}},{"start":{"line":274,"column":6},"end":{"line":274,"column":6}}]},"13":{"line":278,"type":"if","locations":[{"start":{"line":278,"column":6},"end":{"line":278,"column":6}},{"start":{"line":278,"column":6},"end":{"line":278,"column":6}}]},"14":{"line":280,"type":"if","locations":[{"start":{"line":280,"column":13},"end":{"line":280,"column":13}},{"start":{"line":280,"column":13},"end":{"line":280,"column":13}}]},"15":{"line":298,"type":"if","locations":[{"start":{"line":298,"column":2},"end":{"line":298,"column":2}},{"start":{"line":298,"column":2},"end":{"line":298,"column":2}}]},"16":{"line":303,"type":"if","locations":[{"start":{"line":303,"column":2},"end":{"line":303,"column":2}},{"start":{"line":303,"column":2},"end":{"line":303,"column":2}}]},"17":{"line":326,"type":"binary-expr","locations":[{"start":{"line":326,"column":11},"end":{"line":326,"column":19}},{"start":{"line":326,"column":23},"end":{"line":326,"column":38}}]},"18":{"line":330,"type":"if","locations":[{"start":{"line":330,"column":4},"end":{"line":330,"column":4}},{"start":{"line":330,"column":4},"end":{"line":330,"column":4}}]},"19":{"line":330,"type":"binary-expr","locations":[{"start":{"line":330,"column":9},"end":{"line":330,"column":27}},{"start":{"line":330,"column":33},"end":{"line":330,"column":58}}]},"20":{"line":404,"type":"if","locations":[{"start":{"line":404,"column":2},"end":{"line":404,"column":2}},{"start":{"line":404,"column":2},"end":{"line":404,"column":2}}]},"21":{"line":406,"type":"if","locations":[{"start":{"line":406,"column":4},"end":{"line":406,"column":4}},{"start":{"line":406,"column":4},"end":{"line":406,"column":4}}]},"22":{"line":434,"type":"binary-expr","locations":[{"start":{"line":434,"column":11},"end":{"line":434,"column":16}},{"start":{"line":434,"column":20},"end":{"line":434,"column":30}}]},"23":{"line":469,"type":"if","locations":[{"start":{"line":469,"column":2},"end":{"line":469,"column":2}},{"start":{"line":469,"column":2},"end":{"line":469,"column":2}}]},"24":{"line":469,"type":"binary-expr","locations":[{"start":{"line":469,"column":7},"end":{"line":469,"column":49}},{"start":{"line":469,"column":55},"end":{"line":469,"column":72}}]},"25":{"line":484,"type":"if","locations":[{"start":{"line":484,"column":2},"end":{"line":484,"column":2}},{"start":{"line":484,"column":2},"end":{"line":484,"column":2}}]},"26":{"line":487,"type":"if","locations":[{"start":{"line":487,"column":9},"end":{"line":487,"column":9}},{"start":{"line":487,"column":9},"end":{"line":487,"column":9}}]}}},"/data/upstream/node-http2/lib/flow.js":{"path":"/data/upstream/node-http2/lib/flow.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":68,"7":68,"8":68,"9":68,"10":68,"11":68,"12":68,"13":1,"14":1,"15":0,"16":1,"17":105,"18":105,"19":19,"20":105,"21":0,"22":0,"23":0,"24":0,"25":0,"26":105,"27":105,"28":3,"29":1,"30":0,"31":0,"32":0,"33":0,"34":1,"35":0,"36":0,"37":1,"38":0,"39":1,"40":524,"41":524,"42":0,"43":0,"44":524,"45":1,"46":34,"47":34,"48":34,"49":0,"50":34,"51":1,"52":1,"53":111,"54":111,"55":111,"56":111,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":111,"65":111,"66":111,"67":111,"68":19,"69":19,"70":19,"71":111,"72":111,"73":111,"74":0,"75":111,"76":1,"77":84,"78":2,"79":82,"80":82,"81":82,"82":84,"83":84,"84":0,"85":0,"86":1,"87":12,"88":12,"89":1,"90":1,"91":37,"92":3,"93":3,"94":34,"95":34,"96":34,"97":0,"98":0,"99":34,"100":1,"101":3,"102":1,"103":28,"104":28,"105":1,"106":0},"b":{"1":[1,0],"2":[19,86],"3":[0,105],"4":[105,31,17],"5":[0,0],"6":[3,102],"7":[105,3,0],"8":[0,0],"9":[0,0,0],"10":[524,0],"11":[34,34],"12":[111,0],"13":[111,0],"14":[111,109,26,26],"15":[0,0],"16":[111,0],"17":[19,92],"18":[111,109,26],"19":[0,111],"20":[2,82],"21":[82,71],"22":[84,0],"23":[12,12],"24":[3,34],"25":[37,4],"26":[0,34],"27":[34,26],"28":[0,3]},"f":{"1":0,"2":68,"3":0,"4":105,"5":0,"6":0,"7":0,"8":0,"9":524,"10":34,"11":111,"12":84,"13":12,"14":37,"15":3,"16":28,"17":0},"fnMap":{"1":{"name":"noop","line":1,"loc":{"start":{"line":1,"column":45},"end":{"line":1,"column":76}}},"2":{"name":"Flow","line":72,"loc":{"start":{"line":72,"column":0},"end":{"line":72,"column":29}}},"3":{"name":"_receive","line":89,"loc":{"start":{"line":89,"column":26},"end":{"line":89,"column":61}}},"4":{"name":"_write","line":97,"loc":{"start":{"line":97,"column":24},"end":{"line":97,"column":67}}},"5":{"name":"(anonymous_5)","line":105,"loc":{"start":{"line":105,"column":25},"end":{"line":105,"column":36}}},"6":{"name":"_restoreWindow","line":126,"loc":{"start":{"line":126,"column":32},"end":{"line":126,"column":58}}},"7":{"name":"disableRemoteFlowControl","line":140,"loc":{"start":{"line":140,"column":42},"end":{"line":140,"column":78}}},"8":{"name":"_send","line":170,"loc":{"start":{"line":170,"column":23},"end":{"line":170,"column":40}}},"9":{"name":"_read","line":178,"loc":{"start":{"line":178,"column":23},"end":{"line":178,"column":40}}},"10":{"name":"_onWindowIncrease","line":191,"loc":{"start":{"line":191,"column":35},"end":{"line":191,"column":64}}},"11":{"name":"_push","line":212,"loc":{"start":{"line":212,"column":23},"end":{"line":212,"column":64}}},"12":{"name":"push","line":261,"loc":{"start":{"line":261,"column":22},"end":{"line":261,"column":43}}},"13":{"name":"getLastQueuedFrame","line":280,"loc":{"start":{"line":280,"column":36},"end":{"line":280,"column":66}}},"14":{"name":"_increaseWindow","line":298,"loc":{"start":{"line":298,"column":33},"end":{"line":298,"column":64}}},"15":{"name":"_updateWindow","line":322,"loc":{"start":{"line":322,"column":31},"end":{"line":322,"column":61}}},"16":{"name":"setInitialWindow","line":330,"loc":{"start":{"line":330,"column":34},"end":{"line":330,"column":75}}},"17":{"name":"disableLocalFlowControl","line":336,"loc":{"start":{"line":336,"column":41},"end":{"line":336,"column":76}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":79}},"2":{"start":{"line":10,"column":0},"end":{"line":10,"column":39}},"3":{"start":{"line":12,"column":0},"end":{"line":12,"column":20}},"4":{"start":{"line":69,"column":0},"end":{"line":69,"column":32}},"5":{"start":{"line":72,"column":0},"end":{"line":82,"column":1}},"6":{"start":{"line":73,"column":2},"end":{"line":73,"column":42}},"7":{"start":{"line":75,"column":2},"end":{"line":75,"column":59}},"8":{"start":{"line":76,"column":2},"end":{"line":76,"column":38}},"9":{"start":{"line":77,"column":2},"end":{"line":77,"column":19}},"10":{"start":{"line":79,"column":2},"end":{"line":79,"column":22}},"11":{"start":{"line":80,"column":2},"end":{"line":80,"column":21}},"12":{"start":{"line":81,"column":2},"end":{"line":81,"column":41}},"13":{"start":{"line":83,"column":0},"end":{"line":83,"column":83}},"14":{"start":{"line":89,"column":0},"end":{"line":91,"column":2}},"15":{"start":{"line":90,"column":2},"end":{"line":90,"column":99}},"16":{"start":{"line":97,"column":0},"end":{"line":122,"column":2}},"17":{"start":{"line":98,"column":2},"end":{"line":98,"column":32}},"18":{"start":{"line":100,"column":2},"end":{"line":102,"column":3}},"19":{"start":{"line":101,"column":4},"end":{"line":101,"column":23}},"20":{"start":{"line":104,"column":2},"end":{"line":116,"column":3}},"21":{"start":{"line":105,"column":4},"end":{"line":111,"column":18}},"22":{"start":{"line":106,"column":6},"end":{"line":106,"column":42}},"23":{"start":{"line":107,"column":6},"end":{"line":109,"column":7}},"24":{"start":{"line":108,"column":8},"end":{"line":108,"column":80}},"25":{"start":{"line":110,"column":6},"end":{"line":110,"column":17}},"26":{"start":{"line":115,"column":4},"end":{"line":115,"column":35}},"27":{"start":{"line":118,"column":2},"end":{"line":121,"column":3}},"28":{"start":{"line":120,"column":4},"end":{"line":120,"column":30}},"29":{"start":{"line":126,"column":0},"end":{"line":136,"column":2}},"30":{"start":{"line":127,"column":2},"end":{"line":127,"column":34}},"31":{"start":{"line":128,"column":2},"end":{"line":135,"column":3}},"32":{"start":{"line":129,"column":4},"end":{"line":133,"column":7}},"33":{"start":{"line":134,"column":4},"end":{"line":134,"column":23}},"34":{"start":{"line":140,"column":0},"end":{"line":149,"column":2}},"35":{"start":{"line":141,"column":2},"end":{"line":141,"column":41}},"36":{"start":{"line":142,"column":2},"end":{"line":148,"column":5}},"37":{"start":{"line":170,"column":0},"end":{"line":172,"column":2}},"38":{"start":{"line":171,"column":2},"end":{"line":171,"column":81}},"39":{"start":{"line":178,"column":0},"end":{"line":186,"column":2}},"40":{"start":{"line":179,"column":2},"end":{"line":184,"column":3}},"41":{"start":{"line":180,"column":4},"end":{"line":180,"column":17}},"42":{"start":{"line":182,"column":4},"end":{"line":182,"column":31}},"43":{"start":{"line":183,"column":4},"end":{"line":183,"column":43}},"44":{"start":{"line":185,"column":2},"end":{"line":185,"column":38}},"45":{"start":{"line":191,"column":0},"end":{"line":200,"column":2}},"46":{"start":{"line":192,"column":2},"end":{"line":192,"column":31}},"47":{"start":{"line":194,"column":2},"end":{"line":194,"column":63}},"48":{"start":{"line":195,"column":2},"end":{"line":197,"column":3}},"49":{"start":{"line":196,"column":4},"end":{"line":196,"column":53}},"50":{"start":{"line":199,"column":2},"end":{"line":199,"column":15}},"51":{"start":{"line":210,"column":0},"end":{"line":210,"column":28}},"52":{"start":{"line":212,"column":0},"end":{"line":258,"column":2}},"53":{"start":{"line":213,"column":2},"end":{"line":251,"column":36}},"54":{"start":{"line":214,"column":4},"end":{"line":214,"column":55}},"55":{"start":{"line":215,"column":4},"end":{"line":236,"column":5}},"56":{"start":{"line":217,"column":6},"end":{"line":217,"column":26}},"57":{"start":{"line":220,"column":9},"end":{"line":236,"column":5}},"58":{"start":{"line":221,"column":6},"end":{"line":221,"column":24}},"59":{"start":{"line":225,"column":6},"end":{"line":225,"column":63}},"60":{"start":{"line":226,"column":6},"end":{"line":230,"column":8}},"61":{"start":{"line":232,"column":6},"end":{"line":233,"column":73}},"62":{"start":{"line":234,"column":6},"end":{"line":234,"column":47}},"63":{"start":{"line":235,"column":6},"end":{"line":235,"column":24}},"64":{"start":{"line":238,"column":4},"end":{"line":238,"column":26}},"65":{"start":{"line":239,"column":4},"end":{"line":248,"column":5}},"66":{"start":{"line":240,"column":6},"end":{"line":240,"column":85}},"67":{"start":{"line":241,"column":6},"end":{"line":246,"column":7}},"68":{"start":{"line":242,"column":8},"end":{"line":243,"column":65}},"69":{"start":{"line":244,"column":8},"end":{"line":244,"column":48}},"70":{"start":{"line":245,"column":8},"end":{"line":245,"column":34}},"71":{"start":{"line":247,"column":6},"end":{"line":247,"column":65}},"72":{"start":{"line":250,"column":4},"end":{"line":250,"column":22}},"73":{"start":{"line":253,"column":2},"end":{"line":255,"column":3}},"74":{"start":{"line":254,"column":4},"end":{"line":254,"column":33}},"75":{"start":{"line":257,"column":2},"end":{"line":257,"column":20}},"76":{"start":{"line":261,"column":0},"end":{"line":276,"column":2}},"77":{"start":{"line":262,"column":2},"end":{"line":268,"column":3}},"78":{"start":{"line":263,"column":4},"end":{"line":263,"column":57}},"79":{"start":{"line":265,"column":4},"end":{"line":265,"column":36}},"80":{"start":{"line":266,"column":4},"end":{"line":266,"column":67}},"81":{"start":{"line":267,"column":4},"end":{"line":267,"column":32}},"82":{"start":{"line":270,"column":2},"end":{"line":275,"column":3}},"83":{"start":{"line":271,"column":4},"end":{"line":271,"column":65}},"84":{"start":{"line":273,"column":4},"end":{"line":273,"column":28}},"85":{"start":{"line":274,"column":4},"end":{"line":274,"column":16}},"86":{"start":{"line":280,"column":0},"end":{"line":283,"column":2}},"87":{"start":{"line":281,"column":2},"end":{"line":281,"column":49}},"88":{"start":{"line":282,"column":2},"end":{"line":282,"column":88}},"89":{"start":{"line":296,"column":0},"end":{"line":296,"column":44}},"90":{"start":{"line":298,"column":0},"end":{"line":312,"column":2}},"91":{"start":{"line":299,"column":2},"end":{"line":311,"column":3}},"92":{"start":{"line":300,"column":4},"end":{"line":300,"column":97}},"93":{"start":{"line":301,"column":4},"end":{"line":301,"column":45}},"94":{"start":{"line":303,"column":4},"end":{"line":303,"column":96}},"95":{"start":{"line":304,"column":4},"end":{"line":304,"column":25}},"96":{"start":{"line":305,"column":4},"end":{"line":310,"column":5}},"97":{"start":{"line":306,"column":6},"end":{"line":306,"column":61}},"98":{"start":{"line":307,"column":6},"end":{"line":307,"column":47}},"99":{"start":{"line":309,"column":6},"end":{"line":309,"column":31}},"100":{"start":{"line":322,"column":0},"end":{"line":324,"column":2}},"101":{"start":{"line":323,"column":2},"end":{"line":323,"column":84}},"102":{"start":{"line":330,"column":0},"end":{"line":333,"column":2}},"103":{"start":{"line":331,"column":2},"end":{"line":331,"column":60}},"104":{"start":{"line":332,"column":2},"end":{"line":332,"column":38}},"105":{"start":{"line":336,"column":0},"end":{"line":338,"column":2}},"106":{"start":{"line":337,"column":2},"end":{"line":337,"column":33}}},"branchMap":{"1":{"line":1,"type":"cond-expr","locations":[{"start":{"line":1,"column":40},"end":{"line":1,"column":57}},{"start":{"line":1,"column":45},"end":{"line":1,"column":78}}]},"2":{"line":100,"type":"if","locations":[{"start":{"line":100,"column":2},"end":{"line":100,"column":2}},{"start":{"line":100,"column":2},"end":{"line":100,"column":2}}]},"3":{"line":104,"type":"if","locations":[{"start":{"line":104,"column":2},"end":{"line":104,"column":2}},{"start":{"line":104,"column":2},"end":{"line":104,"column":2}}]},"4":{"line":104,"type":"binary-expr","locations":[{"start":{"line":104,"column":7},"end":{"line":104,"column":28}},{"start":{"line":104,"column":34},"end":{"line":104,"column":55}},{"start":{"line":104,"column":60},"end":{"line":104,"column":92}}]},"5":{"line":107,"type":"if","locations":[{"start":{"line":107,"column":6},"end":{"line":107,"column":6}},{"start":{"line":107,"column":6},"end":{"line":107,"column":6}}]},"6":{"line":118,"type":"if","locations":[{"start":{"line":118,"column":2},"end":{"line":118,"column":2}},{"start":{"line":118,"column":2},"end":{"line":118,"column":2}}]},"7":{"line":118,"type":"binary-expr","locations":[{"start":{"line":118,"column":7},"end":{"line":118,"column":37}},{"start":{"line":119,"column":8},"end":{"line":119,"column":41}},{"start":{"line":119,"column":47},"end":{"line":119,"column":83}}]},"8":{"line":128,"type":"if","locations":[{"start":{"line":128,"column":2},"end":{"line":128,"column":2}},{"start":{"line":128,"column":2},"end":{"line":128,"column":2}}]},"9":{"line":128,"type":"binary-expr","locations":[{"start":{"line":128,"column":6},"end":{"line":128,"column":18}},{"start":{"line":128,"column":22},"end":{"line":128,"column":54}},{"start":{"line":128,"column":59},"end":{"line":128,"column":77}}]},"10":{"line":179,"type":"if","locations":[{"start":{"line":179,"column":2},"end":{"line":179,"column":2}},{"start":{"line":179,"column":2},"end":{"line":179,"column":2}}]},"11":{"line":195,"type":"binary-expr","locations":[{"start":{"line":195,"column":9},"end":{"line":195,"column":19}},{"start":{"line":195,"column":24},"end":{"line":195,"column":51}}]},"12":{"line":251,"type":"binary-expr","locations":[{"start":{"line":251,"column":11},"end":{"line":251,"column":20}},{"start":{"line":251,"column":24},"end":{"line":251,"column":34}}]},"13":{"line":215,"type":"if","locations":[{"start":{"line":215,"column":4},"end":{"line":215,"column":4}},{"start":{"line":215,"column":4},"end":{"line":215,"column":4}}]},"14":{"line":215,"type":"binary-expr","locations":[{"start":{"line":215,"column":9},"end":{"line":215,"column":23}},{"start":{"line":215,"column":29},"end":{"line":215,"column":50}},{"start":{"line":216,"column":10},"end":{"line":216,"column":43}},{"start":{"line":216,"column":49},"end":{"line":216,"column":86}}]},"15":{"line":220,"type":"if","locations":[{"start":{"line":220,"column":9},"end":{"line":220,"column":9}},{"start":{"line":220,"column":9},"end":{"line":220,"column":9}}]},"16":{"line":239,"type":"if","locations":[{"start":{"line":239,"column":4},"end":{"line":239,"column":4}},{"start":{"line":239,"column":4},"end":{"line":239,"column":4}}]},"17":{"line":241,"type":"if","locations":[{"start":{"line":241,"column":6},"end":{"line":241,"column":6}},{"start":{"line":241,"column":6},"end":{"line":241,"column":6}}]},"18":{"line":241,"type":"binary-expr","locations":[{"start":{"line":241,"column":10},"end":{"line":241,"column":21}},{"start":{"line":241,"column":26},"end":{"line":241,"column":53}},{"start":{"line":241,"column":59},"end":{"line":241,"column":84}}]},"19":{"line":253,"type":"if","locations":[{"start":{"line":253,"column":2},"end":{"line":253,"column":2}},{"start":{"line":253,"column":2},"end":{"line":253,"column":2}}]},"20":{"line":262,"type":"if","locations":[{"start":{"line":262,"column":2},"end":{"line":262,"column":2}},{"start":{"line":262,"column":2},"end":{"line":262,"column":2}}]},"21":{"line":265,"type":"binary-expr","locations":[{"start":{"line":265,"column":18},"end":{"line":265,"column":29}},{"start":{"line":265,"column":33},"end":{"line":265,"column":35}}]},"22":{"line":270,"type":"if","locations":[{"start":{"line":270,"column":2},"end":{"line":270,"column":2}},{"start":{"line":270,"column":2},"end":{"line":270,"column":2}}]},"23":{"line":282,"type":"binary-expr","locations":[{"start":{"line":282,"column":9},"end":{"line":282,"column":44}},{"start":{"line":282,"column":48},"end":{"line":282,"column":87}}]},"24":{"line":299,"type":"if","locations":[{"start":{"line":299,"column":2},"end":{"line":299,"column":2}},{"start":{"line":299,"column":2},"end":{"line":299,"column":2}}]},"25":{"line":299,"type":"binary-expr","locations":[{"start":{"line":299,"column":7},"end":{"line":299,"column":32}},{"start":{"line":299,"column":38},"end":{"line":299,"column":55}}]},"26":{"line":305,"type":"if","locations":[{"start":{"line":305,"column":4},"end":{"line":305,"column":4}},{"start":{"line":305,"column":4},"end":{"line":305,"column":4}}]},"27":{"line":305,"type":"binary-expr","locations":[{"start":{"line":305,"column":9},"end":{"line":305,"column":34}},{"start":{"line":305,"column":40},"end":{"line":305,"column":72}}]},"28":{"line":323,"type":"cond-expr","locations":[{"start":{"line":323,"column":54},"end":{"line":323,"column":62}},{"start":{"line":323,"column":65},"end":{"line":323,"column":82}}]}}},"/data/upstream/node-http2/lib/stream.js":{"path":"/data/upstream/node-http2/lib/stream.js","s":{"1":1,"2":1,"3":1,"4":1,"5":43,"6":43,"7":43,"8":43,"9":43,"10":1,"11":1,"12":1,"13":1,"14":43,"15":43,"16":43,"17":8,"18":43,"19":20,"20":0,"21":20,"22":43,"23":2,"24":1,"25":4,"26":4,"27":4,"28":4,"29":1,"30":18,"31":1,"32":2,"33":2,"34":0,"35":0,"36":0,"37":0,"38":0,"39":2,"40":2,"41":2,"42":1,"43":15,"44":1,"45":1,"46":43,"47":43,"48":43,"49":43,"50":43,"51":43,"52":43,"53":43,"54":1,"55":53,"56":53,"57":53,"58":20,"59":20,"60":0,"61":0,"62":33,"63":53,"64":12,"65":53,"66":53,"67":1,"68":13,"69":0,"70":0,"71":0,"72":1,"73":8,"74":8,"75":8,"76":0,"77":1,"78":335,"79":0,"80":0,"81":0,"82":1,"83":1,"84":12,"85":12,"86":12,"87":5,"88":5,"89":5,"90":5,"91":7,"92":1,"93":43,"94":43,"95":43,"96":43,"97":43,"98":1,"99":56,"100":56,"101":56,"102":56,"103":1,"104":100,"105":1,"106":110,"107":110,"108":110,"109":110,"110":110,"111":40,"112":40,"113":38,"114":38,"115":2,"116":2,"117":15,"118":15,"119":0,"120":0,"121":12,"122":12,"123":0,"124":0,"125":0,"126":0,"127":3,"128":3,"129":110,"130":110,"131":24,"132":20,"133":20,"134":1,"135":20,"136":4,"137":24,"138":6,"139":2,"140":4,"141":0,"142":4,"143":4,"144":6,"145":6,"146":0,"147":6,"148":2,"149":4,"150":4,"151":6,"152":23,"153":9,"154":14,"155":0,"156":23,"157":21,"158":9,"159":12,"160":0,"161":21,"162":15,"163":5,"164":10,"165":3,"166":15,"167":15,"168":0,"169":15,"170":110,"171":12,"172":110,"173":8,"174":8,"175":8,"176":110,"177":50,"178":50,"179":29,"180":21,"181":60,"182":28,"183":110,"184":15,"185":15,"186":0,"187":0,"188":15,"189":15,"190":15,"191":15,"192":1,"193":1,"194":1,"195":0,"196":0,"197":0,"198":0},"b":{"1":[1,0],"2":[0,20],"3":[2,0],"4":[2,2,0],"5":[0,2],"6":[0,0],"7":[0,0,0],"8":[20,33],"9":[0,20],"10":[12,41],"11":[53,0],"12":[0,13],"13":[8,0],"14":[0,335],"15":[5,7],"16":[12,5,1],"17":[5,0],"18":[56,0],"19":[100,66,58],"20":[40,38,2,15,0,12,0,0,3],"21":[24,6,6,23,21,15,15],"22":[20,4],"23":[1,19],"24":[0,1],"25":[2,4],"26":[6,2],"27":[0,4],"28":[0,4],"29":[4,4],"30":[0,6],"31":[2,4],"32":[6,6],"33":[0,4],"34":[4,0],"35":[9,14],"36":[7,2],"37":[0,14],"38":[9,12],"39":[21,21,21],"40":[12,0],"41":[12,0,0,0],"42":[5,10],"43":[15,15,12],"44":[7,3],"45":[10,3,3,3],"46":[15,0],"47":[15,15,0,0,0,0,0],"48":[12,98],"49":[110,53,53],"50":[8,102],"51":[110,12],"52":[4,4],"53":[50,60],"54":[29,21],"55":[28,32],"56":[15,95],"57":[0,15],"58":[0,0]},"f":{"1":0,"2":43,"3":43,"4":8,"5":20,"6":2,"7":4,"8":18,"9":2,"10":15,"11":43,"12":53,"13":13,"14":8,"15":335,"16":12,"17":43,"18":56,"19":100,"20":110,"21":0},"fnMap":{"1":{"name":"noop","line":1,"loc":{"start":{"line":1,"column":45},"end":{"line":1,"column":76}}},"2":{"name":"Stream","line":47,"loc":{"start":{"line":47,"column":0},"end":{"line":47,"column":21}}},"3":{"name":"_initializeManagement","line":73,"loc":{"start":{"line":73,"column":41},"end":{"line":73,"column":74}}},"4":{"name":"(anonymous_4)","line":76,"loc":{"start":{"line":76,"column":26},"end":{"line":76,"column":42}}},"5":{"name":"(anonymous_5)","line":79,"loc":{"start":{"line":79,"column":21},"end":{"line":79,"column":37}}},"6":{"name":"(anonymous_6)","line":85,"loc":{"start":{"line":85,"column":22},"end":{"line":85,"column":38}}},"7":{"name":"promise","line":90,"loc":{"start":{"line":90,"column":27},"end":{"line":90,"column":53}}},"8":{"name":"headers","line":101,"loc":{"start":{"line":101,"column":27},"end":{"line":101,"column":53}}},"9":{"name":"priority","line":108,"loc":{"start":{"line":108,"column":28},"end":{"line":108,"column":62}}},"10":{"name":"reset","line":130,"loc":{"start":{"line":130,"column":25},"end":{"line":130,"column":47}}},"11":{"name":"_initializeDataFlow","line":172,"loc":{"start":{"line":172,"column":39},"end":{"line":172,"column":70}}},"12":{"name":"_receive","line":185,"loc":{"start":{"line":185,"column":28},"end":{"line":185,"column":60}}},"13":{"name":"_read","line":217,"loc":{"start":{"line":217,"column":25},"end":{"line":217,"column":42}}},"14":{"name":"_write","line":226,"loc":{"start":{"line":226,"column":26},"end":{"line":226,"column":67}}},"15":{"name":"_send","line":244,"loc":{"start":{"line":244,"column":25},"end":{"line":244,"column":42}}},"16":{"name":"_finishing","line":261,"loc":{"start":{"line":261,"column":30},"end":{"line":261,"column":52}}},"17":{"name":"_initializeState","line":304,"loc":{"start":{"line":304,"column":36},"end":{"line":304,"column":64}}},"18":{"name":"transition","line":314,"loc":{"start":{"line":314,"column":29},"end":{"line":314,"column":56}}},"19":{"name":"activeState","line":324,"loc":{"start":{"line":324,"column":0},"end":{"line":324,"column":28}}},"20":{"name":"transition","line":331,"loc":{"start":{"line":331,"column":31},"end":{"line":331,"column":67}}},"21":{"name":"(anonymous_21)","line":553,"loc":{"start":{"line":553,"column":24},"end":{"line":553,"column":41}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":79}},"2":{"start":{"line":12,"column":0},"end":{"line":12,"column":38}},"3":{"start":{"line":14,"column":0},"end":{"line":14,"column":24}},"4":{"start":{"line":47,"column":0},"end":{"line":61,"column":1}},"5":{"start":{"line":48,"column":2},"end":{"line":48,"column":20}},"6":{"start":{"line":51,"column":2},"end":{"line":51,"column":58}},"7":{"start":{"line":54,"column":2},"end":{"line":54,"column":31}},"8":{"start":{"line":57,"column":2},"end":{"line":57,"column":29}},"9":{"start":{"line":60,"column":2},"end":{"line":60,"column":26}},"10":{"start":{"line":63,"column":0},"end":{"line":63,"column":87}},"11":{"start":{"line":69,"column":0},"end":{"line":69,"column":39}},"12":{"start":{"line":70,"column":0},"end":{"line":70,"column":39}},"13":{"start":{"line":73,"column":0},"end":{"line":88,"column":2}},"14":{"start":{"line":74,"column":2},"end":{"line":74,"column":36}},"15":{"start":{"line":75,"column":2},"end":{"line":75,"column":33}},"16":{"start":{"line":76,"column":2},"end":{"line":78,"column":5}},"17":{"start":{"line":77,"column":4},"end":{"line":77,"column":63}},"18":{"start":{"line":79,"column":2},"end":{"line":84,"column":5}},"19":{"start":{"line":80,"column":4},"end":{"line":82,"column":5}},"20":{"start":{"line":81,"column":6},"end":{"line":81,"column":42}},"21":{"start":{"line":83,"column":4},"end":{"line":83,"column":40}},"22":{"start":{"line":85,"column":2},"end":{"line":87,"column":5}},"23":{"start":{"line":86,"column":4},"end":{"line":86,"column":40}},"24":{"start":{"line":90,"column":0},"end":{"line":99,"column":2}},"25":{"start":{"line":91,"column":2},"end":{"line":91,"column":37}},"26":{"start":{"line":92,"column":2},"end":{"line":92,"column":64}},"27":{"start":{"line":93,"column":2},"end":{"line":97,"column":5}},"28":{"start":{"line":98,"column":2},"end":{"line":98,"column":16}},"29":{"start":{"line":101,"column":0},"end":{"line":106,"column":2}},"30":{"start":{"line":102,"column":2},"end":{"line":105,"column":5}},"31":{"start":{"line":108,"column":0},"end":{"line":128,"column":2}},"32":{"start":{"line":109,"column":2},"end":{"line":127,"column":3}},"33":{"start":{"line":110,"column":4},"end":{"line":122,"column":5}},"34":{"start":{"line":111,"column":6},"end":{"line":111,"column":38}},"35":{"start":{"line":113,"column":6},"end":{"line":113,"column":57}},"36":{"start":{"line":114,"column":6},"end":{"line":121,"column":7}},"37":{"start":{"line":115,"column":8},"end":{"line":115,"column":38}},"38":{"start":{"line":117,"column":8},"end":{"line":120,"column":11}},"39":{"start":{"line":124,"column":4},"end":{"line":124,"column":65}},"40":{"start":{"line":125,"column":4},"end":{"line":125,"column":30}},"41":{"start":{"line":126,"column":4},"end":{"line":126,"column":36}},"42":{"start":{"line":130,"column":0},"end":{"line":135,"column":2}},"43":{"start":{"line":131,"column":2},"end":{"line":134,"column":5}},"44":{"start":{"line":170,"column":0},"end":{"line":170,"column":34}},"45":{"start":{"line":172,"column":0},"end":{"line":182,"column":2}},"46":{"start":{"line":173,"column":2},"end":{"line":173,"column":29}},"47":{"start":{"line":174,"column":2},"end":{"line":174,"column":33}},"48":{"start":{"line":175,"column":2},"end":{"line":175,"column":46}},"49":{"start":{"line":176,"column":2},"end":{"line":176,"column":52}},"50":{"start":{"line":177,"column":2},"end":{"line":177,"column":63}},"51":{"start":{"line":178,"column":2},"end":{"line":178,"column":67}},"52":{"start":{"line":179,"column":2},"end":{"line":179,"column":59}},"53":{"start":{"line":181,"column":2},"end":{"line":181,"column":37}},"54":{"start":{"line":185,"column":0},"end":{"line":213,"column":2}},"55":{"start":{"line":186,"column":2},"end":{"line":186,"column":55}},"56":{"start":{"line":188,"column":2},"end":{"line":188,"column":23}},"57":{"start":{"line":192,"column":2},"end":{"line":203,"column":3}},"58":{"start":{"line":193,"column":4},"end":{"line":193,"column":43}},"59":{"start":{"line":194,"column":4},"end":{"line":197,"column":5}},"60":{"start":{"line":195,"column":6},"end":{"line":195,"column":32}},"61":{"start":{"line":196,"column":6},"end":{"line":196,"column":24}},"62":{"start":{"line":202,"column":4},"end":{"line":202,"column":33}},"63":{"start":{"line":206,"column":2},"end":{"line":208,"column":3}},"64":{"start":{"line":207,"column":4},"end":{"line":207,"column":20}},"65":{"start":{"line":210,"column":2},"end":{"line":212,"column":3}},"66":{"start":{"line":211,"column":4},"end":{"line":211,"column":12}},"67":{"start":{"line":217,"column":0},"end":{"line":223,"column":2}},"68":{"start":{"line":218,"column":2},"end":{"line":222,"column":3}},"69":{"start":{"line":219,"column":4},"end":{"line":219,"column":40}},"70":{"start":{"line":220,"column":4},"end":{"line":220,"column":29}},"71":{"start":{"line":221,"column":4},"end":{"line":221,"column":18}},"72":{"start":{"line":226,"column":0},"end":{"line":239,"column":2}},"73":{"start":{"line":228,"column":2},"end":{"line":231,"column":5}},"74":{"start":{"line":234,"column":2},"end":{"line":238,"column":3}},"75":{"start":{"line":235,"column":4},"end":{"line":235,"column":12}},"76":{"start":{"line":237,"column":4},"end":{"line":237,"column":27}},"77":{"start":{"line":244,"column":0},"end":{"line":250,"column":2}},"78":{"start":{"line":245,"column":2},"end":{"line":249,"column":3}},"79":{"start":{"line":246,"column":4},"end":{"line":246,"column":34}},"80":{"start":{"line":247,"column":4},"end":{"line":247,"column":26}},"81":{"start":{"line":248,"column":4},"end":{"line":248,"column":15}},"82":{"start":{"line":256,"column":0},"end":{"line":260,"column":2}},"83":{"start":{"line":261,"column":0},"end":{"line":272,"column":2}},"84":{"start":{"line":262,"column":2},"end":{"line":262,"column":25}},"85":{"start":{"line":263,"column":2},"end":{"line":263,"column":53}},"86":{"start":{"line":264,"column":2},"end":{"line":271,"column":3}},"87":{"start":{"line":265,"column":4},"end":{"line":265,"column":86}},"88":{"start":{"line":266,"column":4},"end":{"line":266,"column":44}},"89":{"start":{"line":267,"column":4},"end":{"line":267,"column":38}},"90":{"start":{"line":268,"column":4},"end":{"line":268,"column":37}},"91":{"start":{"line":270,"column":4},"end":{"line":270,"column":33}},"92":{"start":{"line":304,"column":0},"end":{"line":310,"column":2}},"93":{"start":{"line":305,"column":2},"end":{"line":305,"column":22}},"94":{"start":{"line":306,"column":2},"end":{"line":306,"column":30}},"95":{"start":{"line":307,"column":2},"end":{"line":307,"column":29}},"96":{"start":{"line":308,"column":2},"end":{"line":308,"column":56}},"97":{"start":{"line":309,"column":2},"end":{"line":309,"column":59}},"98":{"start":{"line":314,"column":0},"end":{"line":320,"column":2}},"99":{"start":{"line":315,"column":2},"end":{"line":319,"column":3}},"100":{"start":{"line":316,"column":4},"end":{"line":316,"column":73}},"101":{"start":{"line":317,"column":4},"end":{"line":317,"column":23}},"102":{"start":{"line":318,"column":4},"end":{"line":318,"column":30}},"103":{"start":{"line":324,"column":0},"end":{"line":326,"column":1}},"104":{"start":{"line":325,"column":2},"end":{"line":325,"column":101}},"105":{"start":{"line":331,"column":0},"end":{"line":545,"column":2}},"106":{"start":{"line":332,"column":2},"end":{"line":332,"column":27}},"107":{"start":{"line":333,"column":2},"end":{"line":333,"column":24}},"108":{"start":{"line":335,"column":2},"end":{"line":335,"column":92}},"109":{"start":{"line":336,"column":2},"end":{"line":336,"column":80}},"110":{"start":{"line":337,"column":2},"end":{"line":347,"column":3}},"111":{"start":{"line":338,"column":26},"end":{"line":338,"column":47}},"112":{"start":{"line":338,"column":48},"end":{"line":338,"column":54}},"113":{"start":{"line":339,"column":26},"end":{"line":339,"column":47}},"114":{"start":{"line":339,"column":48},"end":{"line":339,"column":54}},"115":{"start":{"line":340,"column":26},"end":{"line":340,"column":47}},"116":{"start":{"line":340,"column":48},"end":{"line":340,"column":54}},"117":{"start":{"line":341,"column":26},"end":{"line":341,"column":47}},"118":{"start":{"line":341,"column":48},"end":{"line":341,"column":54}},"119":{"start":{"line":342,"column":26},"end":{"line":342,"column":47}},"120":{"start":{"line":342,"column":48},"end":{"line":342,"column":54}},"121":{"start":{"line":343,"column":26},"end":{"line":343,"column":47}},"122":{"start":{"line":343,"column":48},"end":{"line":343,"column":54}},"123":{"start":{"line":344,"column":26},"end":{"line":344,"column":47}},"124":{"start":{"line":344,"column":48},"end":{"line":344,"column":54}},"125":{"start":{"line":345,"column":26},"end":{"line":345,"column":47}},"126":{"start":{"line":345,"column":48},"end":{"line":345,"column":54}},"127":{"start":{"line":346,"column":26},"end":{"line":346,"column":47}},"128":{"start":{"line":346,"column":48},"end":{"line":346,"column":54}},"129":{"start":{"line":349,"column":2},"end":{"line":349,"column":33}},"130":{"start":{"line":351,"column":2},"end":{"line":492,"column":3}},"131":{"start":{"line":358,"column":6},"end":{"line":366,"column":7}},"132":{"start":{"line":359,"column":8},"end":{"line":359,"column":31}},"133":{"start":{"line":360,"column":8},"end":{"line":362,"column":9}},"134":{"start":{"line":361,"column":10},"end":{"line":361,"column":79}},"135":{"start":{"line":363,"column":8},"end":{"line":363,"column":34}},"136":{"start":{"line":365,"column":8},"end":{"line":365,"column":33}},"137":{"start":{"line":367,"column":6},"end":{"line":367,"column":12}},"138":{"start":{"line":379,"column":6},"end":{"line":387,"column":7}},"139":{"start":{"line":380,"column":8},"end":{"line":380,"column":45}},"140":{"start":{"line":381,"column":13},"end":{"line":387,"column":7}},"141":{"start":{"line":382,"column":8},"end":{"line":382,"column":33}},"142":{"start":{"line":383,"column":13},"end":{"line":387,"column":7}},"143":{"start":{"line":386,"column":8},"end":{"line":386,"column":33}},"144":{"start":{"line":388,"column":6},"end":{"line":388,"column":12}},"145":{"start":{"line":398,"column":6},"end":{"line":406,"column":7}},"146":{"start":{"line":399,"column":8},"end":{"line":399,"column":33}},"147":{"start":{"line":400,"column":13},"end":{"line":406,"column":7}},"148":{"start":{"line":401,"column":8},"end":{"line":401,"column":44}},"149":{"start":{"line":402,"column":13},"end":{"line":406,"column":7}},"150":{"start":{"line":405,"column":8},"end":{"line":405,"column":33}},"151":{"start":{"line":407,"column":6},"end":{"line":407,"column":12}},"152":{"start":{"line":419,"column":6},"end":{"line":425,"column":7}},"153":{"start":{"line":420,"column":8},"end":{"line":420,"column":77}},"154":{"start":{"line":421,"column":13},"end":{"line":425,"column":7}},"155":{"start":{"line":422,"column":8},"end":{"line":422,"column":33}},"156":{"start":{"line":426,"column":6},"end":{"line":426,"column":12}},"157":{"start":{"line":435,"column":6},"end":{"line":441,"column":7}},"158":{"start":{"line":436,"column":8},"end":{"line":436,"column":33}},"159":{"start":{"line":437,"column":13},"end":{"line":441,"column":7}},"160":{"start":{"line":440,"column":8},"end":{"line":440,"column":33}},"161":{"start":{"line":442,"column":6},"end":{"line":442,"column":12}},"162":{"start":{"line":455,"column":6},"end":{"line":461,"column":7}},"163":{"start":{"line":456,"column":8},"end":{"line":456,"column":33}},"164":{"start":{"line":457,"column":13},"end":{"line":461,"column":7}},"165":{"start":{"line":460,"column":8},"end":{"line":460,"column":33}},"166":{"start":{"line":462,"column":6},"end":{"line":462,"column":12}},"167":{"start":{"line":485,"column":6},"end":{"line":490,"column":7}},"168":{"start":{"line":489,"column":8},"end":{"line":489,"column":32}},"169":{"start":{"line":491,"column":6},"end":{"line":491,"column":12}},"170":{"start":{"line":497,"column":2},"end":{"line":499,"column":3}},"171":{"start":{"line":498,"column":4},"end":{"line":498,"column":30}},"172":{"start":{"line":507,"column":2},"end":{"line":512,"column":3}},"173":{"start":{"line":508,"column":4},"end":{"line":509,"column":86}},"174":{"start":{"line":510,"column":4},"end":{"line":510,"column":84}},"175":{"start":{"line":511,"column":4},"end":{"line":511,"column":47}},"176":{"start":{"line":515,"column":2},"end":{"line":524,"column":3}},"177":{"start":{"line":516,"column":4},"end":{"line":516,"column":72}},"178":{"start":{"line":517,"column":4},"end":{"line":521,"column":5}},"179":{"start":{"line":518,"column":6},"end":{"line":518,"column":34}},"180":{"start":{"line":520,"column":6},"end":{"line":520,"column":33}},"181":{"start":{"line":522,"column":9},"end":{"line":524,"column":3}},"182":{"start":{"line":523,"column":4},"end":{"line":523,"column":27}},"183":{"start":{"line":527,"column":2},"end":{"line":544,"column":3}},"184":{"start":{"line":528,"column":4},"end":{"line":528,"column":65}},"185":{"start":{"line":531,"column":4},"end":{"line":543,"column":5}},"186":{"start":{"line":532,"column":6},"end":{"line":532,"column":68}},"187":{"start":{"line":533,"column":6},"end":{"line":533,"column":97}},"188":{"start":{"line":539,"column":6},"end":{"line":539,"column":69}},"189":{"start":{"line":540,"column":6},"end":{"line":540,"column":28}},"190":{"start":{"line":541,"column":6},"end":{"line":541,"column":24}},"191":{"start":{"line":542,"column":6},"end":{"line":542,"column":32}},"192":{"start":{"line":550,"column":0},"end":{"line":550,"column":25}},"193":{"start":{"line":552,"column":0},"end":{"line":552,"column":15}},"194":{"start":{"line":553,"column":0},"end":{"line":559,"column":2}},"195":{"start":{"line":554,"column":2},"end":{"line":557,"column":3}},"196":{"start":{"line":555,"column":4},"end":{"line":555,"column":23}},"197":{"start":{"line":556,"column":4},"end":{"line":556,"column":16}},"198":{"start":{"line":558,"column":2},"end":{"line":558,"column":19}}},"branchMap":{"1":{"line":1,"type":"cond-expr","locations":[{"start":{"line":1,"column":40},"end":{"line":1,"column":57}},{"start":{"line":1,"column":45},"end":{"line":1,"column":78}}]},"2":{"line":80,"type":"if","locations":[{"start":{"line":80,"column":4},"end":{"line":80,"column":4}},{"start":{"line":80,"column":4},"end":{"line":80,"column":4}}]},"3":{"line":109,"type":"if","locations":[{"start":{"line":109,"column":2},"end":{"line":109,"column":2}},{"start":{"line":109,"column":2},"end":{"line":109,"column":2}}]},"4":{"line":109,"type":"binary-expr","locations":[{"start":{"line":109,"column":7},"end":{"line":109,"column":11}},{"start":{"line":109,"column":15},"end":{"line":109,"column":38}},{"start":{"line":109,"column":43},"end":{"line":109,"column":48}}]},"5":{"line":110,"type":"if","locations":[{"start":{"line":110,"column":4},"end":{"line":110,"column":4}},{"start":{"line":110,"column":4},"end":{"line":110,"column":4}}]},"6":{"line":114,"type":"if","locations":[{"start":{"line":114,"column":6},"end":{"line":114,"column":6}},{"start":{"line":114,"column":6},"end":{"line":114,"column":6}}]},"7":{"line":114,"type":"binary-expr","locations":[{"start":{"line":114,"column":10},"end":{"line":114,"column":19}},{"start":{"line":114,"column":25},"end":{"line":114,"column":53}},{"start":{"line":114,"column":59},"end":{"line":114,"column":88}}]},"8":{"line":192,"type":"if","locations":[{"start":{"line":192,"column":2},"end":{"line":192,"column":2}},{"start":{"line":192,"column":2},"end":{"line":192,"column":2}}]},"9":{"line":194,"type":"if","locations":[{"start":{"line":194,"column":4},"end":{"line":194,"column":4}},{"start":{"line":194,"column":4},"end":{"line":194,"column":4}}]},"10":{"line":206,"type":"if","locations":[{"start":{"line":206,"column":2},"end":{"line":206,"column":2}},{"start":{"line":206,"column":2},"end":{"line":206,"column":2}}]},"11":{"line":210,"type":"if","locations":[{"start":{"line":210,"column":2},"end":{"line":210,"column":2}},{"start":{"line":210,"column":2},"end":{"line":210,"column":2}}]},"12":{"line":218,"type":"if","locations":[{"start":{"line":218,"column":2},"end":{"line":218,"column":2}},{"start":{"line":218,"column":2},"end":{"line":218,"column":2}}]},"13":{"line":234,"type":"if","locations":[{"start":{"line":234,"column":2},"end":{"line":234,"column":2}},{"start":{"line":234,"column":2},"end":{"line":234,"column":2}}]},"14":{"line":245,"type":"if","locations":[{"start":{"line":245,"column":2},"end":{"line":245,"column":2}},{"start":{"line":245,"column":2},"end":{"line":245,"column":2}}]},"15":{"line":264,"type":"if","locations":[{"start":{"line":264,"column":2},"end":{"line":264,"column":2}},{"start":{"line":264,"column":2},"end":{"line":264,"column":2}}]},"16":{"line":264,"type":"binary-expr","locations":[{"start":{"line":264,"column":6},"end":{"line":264,"column":15}},{"start":{"line":264,"column":21},"end":{"line":264,"column":46}},{"start":{"line":264,"column":52},"end":{"line":264,"column":80}}]},"17":{"line":266,"type":"binary-expr","locations":[{"start":{"line":266,"column":22},"end":{"line":266,"column":37}},{"start":{"line":266,"column":41},"end":{"line":266,"column":43}}]},"18":{"line":315,"type":"if","locations":[{"start":{"line":315,"column":2},"end":{"line":315,"column":2}},{"start":{"line":315,"column":2},"end":{"line":315,"column":2}}]},"19":{"line":325,"type":"binary-expr","locations":[{"start":{"line":325,"column":11},"end":{"line":325,"column":40}},{"start":{"line":325,"column":46},"end":{"line":325,"column":76}},{"start":{"line":325,"column":82},"end":{"line":325,"column":98}}]},"20":{"line":337,"type":"switch","locations":[{"start":{"line":338,"column":4},"end":{"line":338,"column":54}},{"start":{"line":339,"column":4},"end":{"line":339,"column":54}},{"start":{"line":340,"column":4},"end":{"line":340,"column":54}},{"start":{"line":341,"column":4},"end":{"line":341,"column":54}},{"start":{"line":342,"column":4},"end":{"line":342,"column":54}},{"start":{"line":343,"column":4},"end":{"line":343,"column":54}},{"start":{"line":344,"column":4},"end":{"line":344,"column":54}},{"start":{"line":345,"column":4},"end":{"line":345,"column":54}},{"start":{"line":346,"column":4},"end":{"line":346,"column":54}}]},"21":{"line":351,"type":"switch","locations":[{"start":{"line":357,"column":4},"end":{"line":367,"column":12}},{"start":{"line":378,"column":4},"end":{"line":388,"column":12}},{"start":{"line":397,"column":4},"end":{"line":407,"column":12}},{"start":{"line":418,"column":4},"end":{"line":426,"column":12}},{"start":{"line":434,"column":4},"end":{"line":442,"column":12}},{"start":{"line":454,"column":4},"end":{"line":462,"column":12}},{"start":{"line":484,"column":4},"end":{"line":491,"column":12}}]},"22":{"line":358,"type":"if","locations":[{"start":{"line":358,"column":6},"end":{"line":358,"column":6}},{"start":{"line":358,"column":6},"end":{"line":358,"column":6}}]},"23":{"line":360,"type":"if","locations":[{"start":{"line":360,"column":8},"end":{"line":360,"column":8}},{"start":{"line":360,"column":8},"end":{"line":360,"column":8}}]},"24":{"line":361,"type":"cond-expr","locations":[{"start":{"line":361,"column":35},"end":{"line":361,"column":54}},{"start":{"line":361,"column":57},"end":{"line":361,"column":77}}]},"25":{"line":379,"type":"if","locations":[{"start":{"line":379,"column":6},"end":{"line":379,"column":6}},{"start":{"line":379,"column":6},"end":{"line":379,"column":6}}]},"26":{"line":379,"type":"binary-expr","locations":[{"start":{"line":379,"column":10},"end":{"line":379,"column":17}},{"start":{"line":379,"column":21},"end":{"line":379,"column":28}}]},"27":{"line":381,"type":"if","locations":[{"start":{"line":381,"column":13},"end":{"line":381,"column":13}},{"start":{"line":381,"column":13},"end":{"line":381,"column":13}}]},"28":{"line":383,"type":"if","locations":[{"start":{"line":383,"column":13},"end":{"line":383,"column":13}},{"start":{"line":383,"column":13},"end":{"line":383,"column":13}}]},"29":{"line":383,"type":"binary-expr","locations":[{"start":{"line":383,"column":17},"end":{"line":383,"column":26}},{"start":{"line":383,"column":30},"end":{"line":383,"column":38}}]},"30":{"line":398,"type":"if","locations":[{"start":{"line":398,"column":6},"end":{"line":398,"column":6}},{"start":{"line":398,"column":6},"end":{"line":398,"column":6}}]},"31":{"line":400,"type":"if","locations":[{"start":{"line":400,"column":13},"end":{"line":400,"column":13}},{"start":{"line":400,"column":13},"end":{"line":400,"column":13}}]},"32":{"line":400,"type":"binary-expr","locations":[{"start":{"line":400,"column":17},"end":{"line":400,"column":26}},{"start":{"line":400,"column":30},"end":{"line":400,"column":37}}]},"33":{"line":402,"type":"if","locations":[{"start":{"line":402,"column":13},"end":{"line":402,"column":13}},{"start":{"line":402,"column":13},"end":{"line":402,"column":13}}]},"34":{"line":402,"type":"binary-expr","locations":[{"start":{"line":402,"column":17},"end":{"line":402,"column":24}},{"start":{"line":402,"column":28},"end":{"line":402,"column":36}}]},"35":{"line":419,"type":"if","locations":[{"start":{"line":419,"column":6},"end":{"line":419,"column":6}},{"start":{"line":419,"column":6},"end":{"line":419,"column":6}}]},"36":{"line":420,"type":"cond-expr","locations":[{"start":{"line":420,"column":33},"end":{"line":420,"column":52}},{"start":{"line":420,"column":55},"end":{"line":420,"column":75}}]},"37":{"line":421,"type":"if","locations":[{"start":{"line":421,"column":13},"end":{"line":421,"column":13}},{"start":{"line":421,"column":13},"end":{"line":421,"column":13}}]},"38":{"line":435,"type":"if","locations":[{"start":{"line":435,"column":6},"end":{"line":435,"column":6}},{"start":{"line":435,"column":6},"end":{"line":435,"column":6}}]},"39":{"line":435,"type":"binary-expr","locations":[{"start":{"line":435,"column":10},"end":{"line":435,"column":20}},{"start":{"line":435,"column":25},"end":{"line":435,"column":34}},{"start":{"line":435,"column":38},"end":{"line":435,"column":60}}]},"40":{"line":437,"type":"if","locations":[{"start":{"line":437,"column":13},"end":{"line":437,"column":13}},{"start":{"line":437,"column":13},"end":{"line":437,"column":13}}]},"41":{"line":437,"type":"binary-expr","locations":[{"start":{"line":437,"column":17},"end":{"line":437,"column":26}},{"start":{"line":437,"column":31},"end":{"line":437,"column":38}},{"start":{"line":437,"column":43},"end":{"line":437,"column":51}},{"start":{"line":437,"column":55},"end":{"line":437,"column":68}}]},"42":{"line":455,"type":"if","locations":[{"start":{"line":455,"column":6},"end":{"line":455,"column":6}},{"start":{"line":455,"column":6},"end":{"line":455,"column":6}}]},"43":{"line":455,"type":"binary-expr","locations":[{"start":{"line":455,"column":10},"end":{"line":455,"column":20}},{"start":{"line":455,"column":25},"end":{"line":455,"column":32}},{"start":{"line":455,"column":36},"end":{"line":455,"column":58}}]},"44":{"line":457,"type":"if","locations":[{"start":{"line":457,"column":13},"end":{"line":457,"column":13}},{"start":{"line":457,"column":13},"end":{"line":457,"column":13}}]},"45":{"line":457,"type":"binary-expr","locations":[{"start":{"line":457,"column":17},"end":{"line":457,"column":24}},{"start":{"line":457,"column":29},"end":{"line":457,"column":38}},{"start":{"line":457,"column":43},"end":{"line":457,"column":56}},{"start":{"line":457,"column":60},"end":{"line":457,"column":68}}]},"46":{"line":485,"type":"if","locations":[{"start":{"line":485,"column":6},"end":{"line":485,"column":6}},{"start":{"line":485,"column":6},"end":{"line":485,"column":6}}]},"47":{"line":485,"type":"binary-expr","locations":[{"start":{"line":485,"column":11},"end":{"line":485,"column":18}},{"start":{"line":485,"column":22},"end":{"line":485,"column":32}},{"start":{"line":485,"column":38},"end":{"line":485,"column":47}},{"start":{"line":485,"column":51},"end":{"line":485,"column":70}},{"start":{"line":486,"column":11},"end":{"line":486,"column":20}},{"start":{"line":486,"column":25},"end":{"line":486,"column":38}},{"start":{"line":486,"column":42},"end":{"line":486,"column":50}}]},"48":{"line":497,"type":"if","locations":[{"start":{"line":497,"column":2},"end":{"line":497,"column":2}},{"start":{"line":497,"column":2},"end":{"line":497,"column":2}}]},"49":{"line":497,"type":"binary-expr","locations":[{"start":{"line":497,"column":6},"end":{"line":497,"column":15}},{"start":{"line":497,"column":20},"end":{"line":497,"column":30}},{"start":{"line":497,"column":34},"end":{"line":497,"column":56}}]},"50":{"line":507,"type":"if","locations":[{"start":{"line":507,"column":2},"end":{"line":507,"column":2}},{"start":{"line":507,"column":2},"end":{"line":507,"column":2}}]},"51":{"line":507,"type":"binary-expr","locations":[{"start":{"line":507,"column":6},"end":{"line":507,"column":18}},{"start":{"line":507,"column":22},"end":{"line":507,"column":28}}]},"52":{"line":510,"type":"cond-expr","locations":[{"start":{"line":510,"column":46},"end":{"line":510,"column":62}},{"start":{"line":510,"column":65},"end":{"line":510,"column":82}}]},"53":{"line":515,"type":"if","locations":[{"start":{"line":515,"column":2},"end":{"line":515,"column":2}},{"start":{"line":515,"column":2},"end":{"line":515,"column":2}}]},"54":{"line":517,"type":"if","locations":[{"start":{"line":517,"column":4},"end":{"line":517,"column":4}},{"start":{"line":517,"column":4},"end":{"line":517,"column":4}}]},"55":{"line":522,"type":"if","locations":[{"start":{"line":522,"column":9},"end":{"line":522,"column":9}},{"start":{"line":522,"column":9},"end":{"line":522,"column":9}}]},"56":{"line":527,"type":"if","locations":[{"start":{"line":527,"column":2},"end":{"line":527,"column":2}},{"start":{"line":527,"column":2},"end":{"line":527,"column":2}}]},"57":{"line":531,"type":"if","locations":[{"start":{"line":531,"column":4},"end":{"line":531,"column":4}},{"start":{"line":531,"column":4},"end":{"line":531,"column":4}}]},"58":{"line":554,"type":"if","locations":[{"start":{"line":554,"column":2},"end":{"line":554,"column":2}},{"start":{"line":554,"column":2},"end":{"line":554,"column":2}}]}}},"/data/upstream/node-http2/lib/endpoint.js":{"path":"/data/upstream/node-http2/lib/endpoint.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":4,"10":4,"11":4,"12":2,"13":2,"14":2,"15":0,"16":4,"17":4,"18":4,"19":1,"20":1,"21":1,"22":2,"23":2,"24":1,"25":2,"26":2,"27":2,"28":2,"29":48,"30":0,"31":0,"32":0,"33":48,"34":2,"35":2,"36":2,"37":2,"38":2,"39":1,"40":4,"41":4,"42":2,"43":2,"44":2,"45":2,"46":2,"47":2,"48":4,"49":4,"50":4,"51":4,"52":4,"53":4,"54":4,"55":4,"56":1,"57":31,"58":31,"59":18,"60":1,"61":10,"62":1,"63":4,"64":1,"65":1,"66":1,"67":4,"68":4,"69":4,"70":4,"71":4,"72":1,"73":0,"74":0,"75":1,"76":0,"77":1,"78":1,"79":1,"80":0,"81":0,"82":0,"83":0},"b":{"1":[2,2],"2":[2,0],"3":[50,48],"4":[0,48],"5":[2,0],"6":[2,2],"7":[49,49],"8":[0,0]},"f":{"1":4,"2":2,"3":2,"4":2,"5":4,"6":31,"7":10,"8":4,"9":1,"10":4,"11":0,"12":0,"13":0},"fnMap":{"1":{"name":"Endpoint","line":14,"loc":{"start":{"line":14,"column":0},"end":{"line":14,"column":39}}},"2":{"name":"_writePrelude","line":49,"loc":{"start":{"line":49,"column":35},"end":{"line":49,"column":60}}},"3":{"name":"_readPrelude","line":55,"loc":{"start":{"line":55,"column":34},"end":{"line":55,"column":58}}},"4":{"name":"_temporalWrite","line":60,"loc":{"start":{"line":60,"column":16},"end":{"line":60,"column":63}}},"5":{"name":"_initializeDataFlow","line":118,"loc":{"start":{"line":118,"column":41},"end":{"line":118,"column":86}}},"6":{"name":"_read","line":142,"loc":{"start":{"line":142,"column":27},"end":{"line":142,"column":44}}},"7":{"name":"_write","line":149,"loc":{"start":{"line":149,"column":28},"end":{"line":149,"column":67}}},"8":{"name":"_initializeManagement","line":156,"loc":{"start":{"line":156,"column":43},"end":{"line":156,"column":76}}},"9":{"name":"createStream","line":160,"loc":{"start":{"line":160,"column":34},"end":{"line":160,"column":58}}},"10":{"name":"_initializeErrorHandling","line":167,"loc":{"start":{"line":167,"column":46},"end":{"line":167,"column":82}}},"11":{"name":"_error","line":175,"loc":{"start":{"line":175,"column":28},"end":{"line":175,"column":62}}},"12":{"name":"close","line":180,"loc":{"start":{"line":180,"column":27},"end":{"line":180,"column":49}}},"13":{"name":"(anonymous_13)","line":190,"loc":{"start":{"line":190,"column":24},"end":{"line":190,"column":43}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":50}},"2":{"start":{"line":2,"column":0},"end":{"line":2,"column":52}},"3":{"start":{"line":3,"column":0},"end":{"line":3,"column":54}},"4":{"start":{"line":4,"column":0},"end":{"line":4,"column":56}},"5":{"start":{"line":5,"column":0},"end":{"line":5,"column":54}},"6":{"start":{"line":6,"column":0},"end":{"line":6,"column":44}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":28}},"8":{"start":{"line":14,"column":0},"end":{"line":40,"column":1}},"9":{"start":{"line":15,"column":2},"end":{"line":15,"column":20}},"10":{"start":{"line":18,"column":2},"end":{"line":18,"column":60}},"11":{"start":{"line":22,"column":2},"end":{"line":28,"column":3}},"12":{"start":{"line":23,"column":4},"end":{"line":23,"column":25}},"13":{"start":{"line":24,"column":9},"end":{"line":28,"column":3}},"14":{"start":{"line":25,"column":4},"end":{"line":25,"column":24}},"15":{"start":{"line":27,"column":4},"end":{"line":27,"column":45}},"16":{"start":{"line":33,"column":2},"end":{"line":33,"column":43}},"17":{"start":{"line":36,"column":2},"end":{"line":36,"column":31}},"18":{"start":{"line":39,"column":2},"end":{"line":39,"column":34}},"19":{"start":{"line":41,"column":0},"end":{"line":41,"column":91}},"20":{"start":{"line":46,"column":0},"end":{"line":46,"column":68}},"21":{"start":{"line":49,"column":0},"end":{"line":52,"column":2}},"22":{"start":{"line":50,"column":2},"end":{"line":50,"column":67}},"23":{"start":{"line":51,"column":2},"end":{"line":51,"column":28}},"24":{"start":{"line":55,"column":0},"end":{"line":83,"column":2}},"25":{"start":{"line":57,"column":2},"end":{"line":57,"column":17}},"26":{"start":{"line":60,"column":2},"end":{"line":82,"column":4}},"27":{"start":{"line":63,"column":4},"end":{"line":63,"column":24}},"28":{"start":{"line":64,"column":4},"end":{"line":72,"column":5}},"29":{"start":{"line":65,"column":6},"end":{"line":70,"column":7}},"30":{"start":{"line":66,"column":8},"end":{"line":67,"column":76}},"31":{"start":{"line":68,"column":8},"end":{"line":68,"column":85}},"32":{"start":{"line":69,"column":8},"end":{"line":69,"column":15}},"33":{"start":{"line":71,"column":6},"end":{"line":71,"column":18}},"34":{"start":{"line":76,"column":4},"end":{"line":81,"column":5}},"35":{"start":{"line":77,"column":6},"end":{"line":77,"column":85}},"36":{"start":{"line":78,"column":6},"end":{"line":78,"column":25}},"37":{"start":{"line":79,"column":6},"end":{"line":79,"column":43}},"38":{"start":{"line":80,"column":6},"end":{"line":80,"column":41}},"39":{"start":{"line":118,"column":0},"end":{"line":140,"column":2}},"40":{"start":{"line":119,"column":2},"end":{"line":119,"column":54}},"41":{"start":{"line":120,"column":2},"end":{"line":128,"column":3}},"42":{"start":{"line":121,"column":4},"end":{"line":121,"column":22}},"43":{"start":{"line":122,"column":4},"end":{"line":122,"column":31}},"44":{"start":{"line":123,"column":4},"end":{"line":123,"column":34}},"45":{"start":{"line":125,"column":4},"end":{"line":125,"column":22}},"46":{"start":{"line":126,"column":4},"end":{"line":126,"column":32}},"47":{"start":{"line":127,"column":4},"end":{"line":127,"column":33}},"48":{"start":{"line":130,"column":2},"end":{"line":130,"column":49}},"49":{"start":{"line":131,"column":2},"end":{"line":131,"column":51}},"50":{"start":{"line":132,"column":2},"end":{"line":132,"column":65}},"51":{"start":{"line":133,"column":2},"end":{"line":133,"column":69}},"52":{"start":{"line":134,"column":2},"end":{"line":134,"column":74}},"53":{"start":{"line":136,"column":2},"end":{"line":136,"column":65}},"54":{"start":{"line":137,"column":2},"end":{"line":137,"column":69}},"55":{"start":{"line":139,"column":2},"end":{"line":139,"column":57}},"56":{"start":{"line":142,"column":0},"end":{"line":147,"column":2}},"57":{"start":{"line":143,"column":2},"end":{"line":143,"column":31}},"58":{"start":{"line":144,"column":2},"end":{"line":146,"column":3}},"59":{"start":{"line":145,"column":4},"end":{"line":145,"column":34}},"60":{"start":{"line":149,"column":0},"end":{"line":151,"column":2}},"61":{"start":{"line":150,"column":2},"end":{"line":150,"column":50}},"62":{"start":{"line":156,"column":0},"end":{"line":158,"column":2}},"63":{"start":{"line":157,"column":2},"end":{"line":157,"column":64}},"64":{"start":{"line":160,"column":0},"end":{"line":162,"column":2}},"65":{"start":{"line":161,"column":2},"end":{"line":161,"column":41}},"66":{"start":{"line":167,"column":0},"end":{"line":173,"column":2}},"67":{"start":{"line":168,"column":2},"end":{"line":168,"column":69}},"68":{"start":{"line":169,"column":2},"end":{"line":169,"column":73}},"69":{"start":{"line":170,"column":2},"end":{"line":170,"column":69}},"70":{"start":{"line":171,"column":2},"end":{"line":171,"column":73}},"71":{"start":{"line":172,"column":2},"end":{"line":172,"column":69}},"72":{"start":{"line":175,"column":0},"end":{"line":178,"column":2}},"73":{"start":{"line":176,"column":2},"end":{"line":176,"column":95}},"74":{"start":{"line":177,"column":2},"end":{"line":177,"column":20}},"75":{"start":{"line":180,"column":0},"end":{"line":182,"column":2}},"76":{"start":{"line":181,"column":2},"end":{"line":181,"column":32}},"77":{"start":{"line":187,"column":0},"end":{"line":187,"column":25}},"78":{"start":{"line":189,"column":0},"end":{"line":189,"column":15}},"79":{"start":{"line":190,"column":0},"end":{"line":196,"column":2}},"80":{"start":{"line":191,"column":2},"end":{"line":194,"column":3}},"81":{"start":{"line":192,"column":4},"end":{"line":192,"column":25}},"82":{"start":{"line":193,"column":4},"end":{"line":193,"column":16}},"83":{"start":{"line":195,"column":2},"end":{"line":195,"column":21}}},"branchMap":{"1":{"line":22,"type":"if","locations":[{"start":{"line":22,"column":2},"end":{"line":22,"column":2}},{"start":{"line":22,"column":2},"end":{"line":22,"column":2}}]},"2":{"line":24,"type":"if","locations":[{"start":{"line":24,"column":9},"end":{"line":24,"column":9}},{"start":{"line":24,"column":9},"end":{"line":24,"column":9}}]},"3":{"line":64,"type":"binary-expr","locations":[{"start":{"line":64,"column":10},"end":{"line":64,"column":40}},{"start":{"line":64,"column":44},"end":{"line":64,"column":76}}]},"4":{"line":65,"type":"if","locations":[{"start":{"line":65,"column":6},"end":{"line":65,"column":6}},{"start":{"line":65,"column":6},"end":{"line":65,"column":6}}]},"5":{"line":76,"type":"if","locations":[{"start":{"line":76,"column":4},"end":{"line":76,"column":4}},{"start":{"line":76,"column":4},"end":{"line":76,"column":4}}]},"6":{"line":120,"type":"if","locations":[{"start":{"line":120,"column":2},"end":{"line":120,"column":2}},{"start":{"line":120,"column":2},"end":{"line":120,"column":2}}]},"7":{"line":144,"type":"binary-expr","locations":[{"start":{"line":144,"column":9},"end":{"line":144,"column":19}},{"start":{"line":144,"column":24},"end":{"line":144,"column":55}}]},"8":{"line":191,"type":"if","locations":[{"start":{"line":191,"column":2},"end":{"line":191,"column":2}},{"start":{"line":191,"column":2},"end":{"line":191,"column":2}}]}}},"/data/upstream/node-http2/lib/framer.js":{"path":"/data/upstream/node-http2/lib/framer.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":5,"8":5,"9":1,"10":1,"11":19,"12":19,"13":19,"14":19,"15":19,"16":19,"17":40,"18":0,"19":40,"20":19,"21":1,"22":5,"23":5,"24":5,"25":1,"26":1,"27":43,"28":43,"29":43,"30":43,"31":24,"32":1,"33":30,"34":30,"35":0,"36":30,"37":50,"38":50,"39":50,"40":50,"41":50,"42":19,"43":19,"44":50,"45":19,"46":19,"47":19,"48":0,"49":0,"50":19,"51":19,"52":0,"53":19,"54":30,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":29,"63":29,"64":29,"65":31,"66":29,"67":29,"68":29,"69":29,"70":29,"71":29,"72":30,"73":30,"74":30,"75":6,"76":29,"77":29,"78":29,"79":29,"80":1,"81":29,"82":29,"83":29,"84":29,"85":29,"86":29,"87":40,"88":29,"89":1,"90":1,"91":1,"92":1,"93":5,"94":1,"95":5,"96":1,"97":1,"98":1,"99":1,"100":6,"101":2,"102":2,"103":2,"104":2,"105":6,"106":1,"107":6,"108":2,"109":2,"110":4,"111":1,"112":1,"113":1,"114":1,"115":2,"116":2,"117":2,"118":1,"119":2,"120":1,"121":1,"122":1,"123":1,"124":2,"125":2,"126":2,"127":2,"128":2,"129":1,"130":2,"131":1,"132":1,"133":1,"134":1,"135":6,"136":6,"137":18,"138":12,"139":12,"140":12,"141":6,"142":6,"143":6,"144":12,"145":12,"146":6,"147":1,"148":6,"149":6,"150":0,"151":6,"152":12,"153":12,"154":12,"155":12,"156":0,"157":12,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1,"166":2,"167":2,"168":2,"169":2,"170":2,"171":1,"172":2,"173":2,"174":1,"175":1,"176":1,"177":1,"178":2,"179":2,"180":1,"181":2,"182":0,"183":2,"184":1,"185":1,"186":1,"187":1,"188":2,"189":2,"190":2,"191":2,"192":2,"193":2,"194":2,"195":1,"196":2,"197":2,"198":1,"199":1,"200":1,"201":1,"202":2,"203":2,"204":2,"205":2,"206":1,"207":2,"208":1,"209":1,"210":1,"211":1,"212":0,"213":0,"214":0,"215":0,"216":0,"217":0,"218":0,"219":0,"220":0,"221":0,"222":0,"223":0,"224":0,"225":0,"226":0,"227":0,"228":0,"229":0,"230":0,"231":0,"232":1,"233":0},"b":{"1":[1,0],"2":[0,40],"3":[24,19],"4":[0,30],"5":[19,31],"6":[50,36],"7":[19,31],"8":[50,19],"9":[19,0],"10":[0,19],"11":[6,24],"12":[29,4],"13":[2,4],"14":[2,2],"15":[2,4],"16":[2,2],"17":[12,6],"18":[4,8],"19":[0,6],"20":[0,12],"21":[12,12],"22":[4,8],"23":[2,2],"24":[2,2],"25":[0,2],"26":[2,2],"27":[2,2],"28":[2,2],"29":[0,0],"30":[0,0],"31":[0,0],"32":[0,0],"33":[0,0],"34":[0,0],"35":[0,0]},"f":{"1":0,"2":5,"3":19,"4":5,"5":43,"6":30,"7":29,"8":29,"9":5,"10":5,"11":6,"12":6,"13":2,"14":2,"15":2,"16":2,"17":6,"18":18,"19":6,"20":2,"21":2,"22":2,"23":2,"24":2,"25":2,"26":2,"27":2,"28":0,"29":0,"30":0,"31":0},"fnMap":{"1":{"name":"noop","line":5,"loc":{"start":{"line":5,"column":60},"end":{"line":5,"column":76}}},"2":{"name":"Serializer","line":25,"loc":{"start":{"line":25,"column":0},"end":{"line":25,"column":25}}},"3":{"name":"_transform","line":34,"loc":{"start":{"line":34,"column":34},"end":{"line":34,"column":77}}},"4":{"name":"Deserializer","line":64,"loc":{"start":{"line":64,"column":0},"end":{"line":64,"column":27}}},"5":{"name":"(anonymous_5)","line":76,"loc":{"start":{"line":76,"column":31},"end":{"line":76,"column":46}}},"6":{"name":"_transform","line":87,"loc":{"start":{"line":87,"column":36},"end":{"line":87,"column":79}}},"7":{"name":"writeCommonHeader","line":193,"loc":{"start":{"line":193,"column":26},"end":{"line":193,"column":69}}},"8":{"name":"readCommonHeader","line":222,"loc":{"start":{"line":222,"column":28},"end":{"line":222,"column":69}}},"9":{"name":"writeData","line":267,"loc":{"start":{"line":267,"column":18},"end":{"line":267,"column":53}}},"10":{"name":"readData","line":271,"loc":{"start":{"line":271,"column":20},"end":{"line":271,"column":53}}},"11":{"name":"writeHeadersPriority","line":310,"loc":{"start":{"line":310,"column":21},"end":{"line":310,"column":67}}},"12":{"name":"readHeadersPriority","line":320,"loc":{"start":{"line":320,"column":23},"end":{"line":320,"column":67}}},"13":{"name":"writePriority","line":350,"loc":{"start":{"line":350,"column":22},"end":{"line":350,"column":61}}},"14":{"name":"readPriority","line":356,"loc":{"start":{"line":356,"column":24},"end":{"line":356,"column":61}}},"15":{"name":"writeRstStream","line":382,"loc":{"start":{"line":382,"column":24},"end":{"line":382,"column":64}}},"16":{"name":"readRstStream","line":390,"loc":{"start":{"line":390,"column":26},"end":{"line":390,"column":64}}},"17":{"name":"writeSettings","line":426,"loc":{"start":{"line":426,"column":22},"end":{"line":426,"column":61}}},"18":{"name":"(anonymous_18)","line":428,"loc":{"start":{"line":428,"column":26},"end":{"line":428,"column":48}}},"19":{"name":"readSettings","line":446,"loc":{"start":{"line":446,"column":24},"end":{"line":446,"column":61}}},"20":{"name":"writePushPromise","line":510,"loc":{"start":{"line":510,"column":26},"end":{"line":510,"column":68}}},"21":{"name":"readPushPromise","line":518,"loc":{"start":{"line":518,"column":28},"end":{"line":518,"column":68}}},"22":{"name":"writePing","line":542,"loc":{"start":{"line":542,"column":18},"end":{"line":542,"column":53}}},"23":{"name":"readPing","line":547,"loc":{"start":{"line":547,"column":20},"end":{"line":547,"column":53}}},"24":{"name":"writeGoaway","line":582,"loc":{"start":{"line":582,"column":20},"end":{"line":582,"column":57}}},"25":{"name":"readGoaway","line":595,"loc":{"start":{"line":595,"column":22},"end":{"line":595,"column":57}}},"26":{"name":"writeWindowUpdate","line":622,"loc":{"start":{"line":622,"column":27},"end":{"line":622,"column":70}}},"27":{"name":"readWindowUpdate","line":629,"loc":{"start":{"line":629,"column":29},"end":{"line":629,"column":70}}},"28":{"name":"(anonymous_28)","line":659,"loc":{"start":{"line":659,"column":28},"end":{"line":659,"column":44}}},"29":{"name":"(anonymous_29)","line":672,"loc":{"start":{"line":672,"column":71},"end":{"line":672,"column":86}}},"30":{"name":"(anonymous_30)","line":692,"loc":{"start":{"line":692,"column":57},"end":{"line":692,"column":72}}},"31":{"name":"(anonymous_31)","line":700,"loc":{"start":{"line":700,"column":27},"end":{"line":700,"column":42}}}},"statementMap":{"1":{"start":{"line":5,"column":0},"end":{"line":5,"column":79}},"2":{"start":{"line":7,"column":0},"end":{"line":7,"column":44}},"3":{"start":{"line":9,"column":0},"end":{"line":9,"column":32}},"4":{"start":{"line":10,"column":0},"end":{"line":10,"column":36}},"5":{"start":{"line":12,"column":0},"end":{"line":12,"column":50}},"6":{"start":{"line":25,"column":0},"end":{"line":28,"column":1}},"7":{"start":{"line":26,"column":2},"end":{"line":26,"column":53}},"8":{"start":{"line":27,"column":2},"end":{"line":27,"column":45}},"9":{"start":{"line":29,"column":0},"end":{"line":29,"column":98}},"10":{"start":{"line":34,"column":0},"end":{"line":51,"column":2}},"11":{"start":{"line":35,"column":2},"end":{"line":35,"column":54}},"12":{"start":{"line":37,"column":2},"end":{"line":37,"column":72}},"13":{"start":{"line":39,"column":2},"end":{"line":39,"column":19}},"14":{"start":{"line":40,"column":2},"end":{"line":40,"column":41}},"15":{"start":{"line":41,"column":2},"end":{"line":41,"column":42}},"16":{"start":{"line":43,"column":2},"end":{"line":48,"column":3}},"17":{"start":{"line":44,"column":4},"end":{"line":46,"column":5}},"18":{"start":{"line":45,"column":6},"end":{"line":45,"column":61}},"19":{"start":{"line":47,"column":4},"end":{"line":47,"column":26}},"20":{"start":{"line":50,"column":2},"end":{"line":50,"column":9}},"21":{"start":{"line":64,"column":0},"end":{"line":68,"column":1}},"22":{"start":{"line":65,"column":2},"end":{"line":65,"column":55}},"23":{"start":{"line":66,"column":2},"end":{"line":66,"column":45}},"24":{"start":{"line":67,"column":2},"end":{"line":67,"column":33}},"25":{"start":{"line":69,"column":0},"end":{"line":69,"column":102}},"26":{"start":{"line":76,"column":0},"end":{"line":83,"column":2}},"27":{"start":{"line":77,"column":2},"end":{"line":77,"column":19}},"28":{"start":{"line":78,"column":2},"end":{"line":78,"column":34}},"29":{"start":{"line":79,"column":2},"end":{"line":79,"column":51}},"30":{"start":{"line":80,"column":2},"end":{"line":82,"column":3}},"31":{"start":{"line":81,"column":4},"end":{"line":81,"column":21}},"32":{"start":{"line":87,"column":0},"end":{"line":135,"column":2}},"33":{"start":{"line":88,"column":2},"end":{"line":88,"column":17}},"34":{"start":{"line":90,"column":2},"end":{"line":92,"column":3}},"35":{"start":{"line":91,"column":4},"end":{"line":91,"column":54}},"36":{"start":{"line":94,"column":2},"end":{"line":132,"column":3}},"37":{"start":{"line":97,"column":4},"end":{"line":97,"column":85}},"38":{"start":{"line":98,"column":4},"end":{"line":98,"column":68}},"39":{"start":{"line":99,"column":4},"end":{"line":99,"column":27}},"40":{"start":{"line":100,"column":4},"end":{"line":100,"column":21}},"41":{"start":{"line":107,"column":4},"end":{"line":110,"column":5}},"42":{"start":{"line":108,"column":6},"end":{"line":108,"column":59}},"43":{"start":{"line":109,"column":6},"end":{"line":109,"column":37}},"44":{"start":{"line":117,"column":4},"end":{"line":131,"column":5}},"45":{"start":{"line":118,"column":6},"end":{"line":129,"column":7}},"46":{"start":{"line":119,"column":8},"end":{"line":119,"column":78}},"47":{"start":{"line":120,"column":8},"end":{"line":126,"column":9}},"48":{"start":{"line":121,"column":10},"end":{"line":121,"column":58}},"49":{"start":{"line":122,"column":10},"end":{"line":122,"column":47}},"50":{"start":{"line":124,"column":10},"end":{"line":124,"column":68}},"51":{"start":{"line":125,"column":10},"end":{"line":125,"column":33}},"52":{"start":{"line":128,"column":8},"end":{"line":128,"column":78}},"53":{"start":{"line":130,"column":6},"end":{"line":130,"column":37}},"54":{"start":{"line":134,"column":2},"end":{"line":134,"column":9}},"55":{"start":{"line":182,"column":0},"end":{"line":182,"column":27}},"56":{"start":{"line":183,"column":0},"end":{"line":183,"column":29}},"57":{"start":{"line":185,"column":0},"end":{"line":185,"column":20}},"58":{"start":{"line":187,"column":0},"end":{"line":187,"column":20}},"59":{"start":{"line":189,"column":0},"end":{"line":189,"column":62}},"60":{"start":{"line":191,"column":0},"end":{"line":191,"column":32}},"61":{"start":{"line":193,"column":0},"end":{"line":220,"column":2}},"62":{"start":{"line":194,"column":2},"end":{"line":194,"column":52}},"63":{"start":{"line":196,"column":2},"end":{"line":196,"column":15}},"64":{"start":{"line":197,"column":2},"end":{"line":199,"column":3}},"65":{"start":{"line":198,"column":4},"end":{"line":198,"column":30}},"66":{"start":{"line":200,"column":2},"end":{"line":200,"column":73}},"67":{"start":{"line":201,"column":2},"end":{"line":201,"column":38}},"68":{"start":{"line":203,"column":2},"end":{"line":203,"column":46}},"69":{"start":{"line":204,"column":2},"end":{"line":204,"column":37}},"70":{"start":{"line":206,"column":2},"end":{"line":206,"column":19}},"71":{"start":{"line":207,"column":2},"end":{"line":213,"column":3}},"72":{"start":{"line":208,"column":4},"end":{"line":208,"column":56}},"73":{"start":{"line":209,"column":4},"end":{"line":209,"column":87}},"74":{"start":{"line":210,"column":4},"end":{"line":212,"column":5}},"75":{"start":{"line":211,"column":6},"end":{"line":211,"column":34}},"76":{"start":{"line":214,"column":2},"end":{"line":214,"column":39}},"77":{"start":{"line":216,"column":2},"end":{"line":216,"column":76}},"78":{"start":{"line":217,"column":2},"end":{"line":217,"column":51}},"79":{"start":{"line":219,"column":2},"end":{"line":219,"column":32}},"80":{"start":{"line":222,"column":0},"end":{"line":235,"column":2}},"81":{"start":{"line":223,"column":2},"end":{"line":223,"column":40}},"82":{"start":{"line":225,"column":2},"end":{"line":225,"column":47}},"83":{"start":{"line":227,"column":2},"end":{"line":227,"column":19}},"84":{"start":{"line":228,"column":2},"end":{"line":228,"column":37}},"85":{"start":{"line":229,"column":2},"end":{"line":229,"column":44}},"86":{"start":{"line":230,"column":2},"end":{"line":232,"column":3}},"87":{"start":{"line":231,"column":4},"end":{"line":231,"column":64}},"88":{"start":{"line":234,"column":2},"end":{"line":234,"column":53}},"89":{"start":{"line":261,"column":0},"end":{"line":261,"column":25}},"90":{"start":{"line":263,"column":0},"end":{"line":263,"column":45}},"91":{"start":{"line":265,"column":0},"end":{"line":265,"column":39}},"92":{"start":{"line":267,"column":0},"end":{"line":269,"column":2}},"93":{"start":{"line":268,"column":2},"end":{"line":268,"column":27}},"94":{"start":{"line":271,"column":0},"end":{"line":273,"column":2}},"95":{"start":{"line":272,"column":2},"end":{"line":272,"column":22}},"96":{"start":{"line":294,"column":0},"end":{"line":294,"column":28}},"97":{"start":{"line":296,"column":0},"end":{"line":296,"column":75}},"98":{"start":{"line":298,"column":0},"end":{"line":298,"column":65}},"99":{"start":{"line":310,"column":0},"end":{"line":318,"column":2}},"100":{"start":{"line":311,"column":2},"end":{"line":316,"column":3}},"101":{"start":{"line":312,"column":4},"end":{"line":312,"column":31}},"102":{"start":{"line":313,"column":4},"end":{"line":313,"column":68}},"103":{"start":{"line":314,"column":4},"end":{"line":314,"column":44}},"104":{"start":{"line":315,"column":4},"end":{"line":315,"column":25}},"105":{"start":{"line":317,"column":2},"end":{"line":317,"column":27}},"106":{"start":{"line":320,"column":0},"end":{"line":327,"column":2}},"107":{"start":{"line":321,"column":2},"end":{"line":326,"column":3}},"108":{"start":{"line":322,"column":4},"end":{"line":322,"column":57}},"109":{"start":{"line":323,"column":4},"end":{"line":323,"column":33}},"110":{"start":{"line":325,"column":4},"end":{"line":325,"column":24}},"111":{"start":{"line":336,"column":0},"end":{"line":336,"column":29}},"112":{"start":{"line":338,"column":0},"end":{"line":338,"column":25}},"113":{"start":{"line":340,"column":0},"end":{"line":340,"column":47}},"114":{"start":{"line":350,"column":0},"end":{"line":354,"column":2}},"115":{"start":{"line":351,"column":2},"end":{"line":351,"column":29}},"116":{"start":{"line":352,"column":2},"end":{"line":352,"column":42}},"117":{"start":{"line":353,"column":2},"end":{"line":353,"column":23}},"118":{"start":{"line":356,"column":0},"end":{"line":358,"column":2}},"119":{"start":{"line":357,"column":2},"end":{"line":357,"column":42}},"120":{"start":{"line":367,"column":0},"end":{"line":367,"column":31}},"121":{"start":{"line":369,"column":0},"end":{"line":369,"column":27}},"122":{"start":{"line":371,"column":0},"end":{"line":371,"column":46}},"123":{"start":{"line":382,"column":0},"end":{"line":388,"column":2}},"124":{"start":{"line":383,"column":2},"end":{"line":383,"column":29}},"125":{"start":{"line":384,"column":2},"end":{"line":384,"column":45}},"126":{"start":{"line":385,"column":2},"end":{"line":385,"column":46}},"127":{"start":{"line":386,"column":2},"end":{"line":386,"column":32}},"128":{"start":{"line":387,"column":2},"end":{"line":387,"column":23}},"129":{"start":{"line":390,"column":0},"end":{"line":392,"column":2}},"130":{"start":{"line":391,"column":2},"end":{"line":391,"column":51}},"131":{"start":{"line":402,"column":0},"end":{"line":402,"column":29}},"132":{"start":{"line":404,"column":0},"end":{"line":404,"column":25}},"133":{"start":{"line":406,"column":0},"end":{"line":406,"column":47}},"134":{"start":{"line":426,"column":0},"end":{"line":444,"column":2}},"135":{"start":{"line":427,"column":2},"end":{"line":427,"column":64}},"136":{"start":{"line":428,"column":2},"end":{"line":434,"column":5}},"137":{"start":{"line":429,"column":4},"end":{"line":433,"column":5}},"138":{"start":{"line":430,"column":6},"end":{"line":430,"column":65}},"139":{"start":{"line":431,"column":6},"end":{"line":431,"column":47}},"140":{"start":{"line":432,"column":6},"end":{"line":432,"column":78}},"141":{"start":{"line":435,"column":2},"end":{"line":435,"column":84}},"142":{"start":{"line":437,"column":2},"end":{"line":437,"column":47}},"143":{"start":{"line":438,"column":2},"end":{"line":441,"column":3}},"144":{"start":{"line":439,"column":4},"end":{"line":439,"column":57}},"145":{"start":{"line":440,"column":4},"end":{"line":440,"column":53}},"146":{"start":{"line":443,"column":2},"end":{"line":443,"column":23}},"147":{"start":{"line":446,"column":0},"end":{"line":461,"column":2}},"148":{"start":{"line":447,"column":2},"end":{"line":447,"column":22}},"149":{"start":{"line":449,"column":2},"end":{"line":451,"column":3}},"150":{"start":{"line":450,"column":4},"end":{"line":450,"column":36}},"151":{"start":{"line":452,"column":2},"end":{"line":460,"column":3}},"152":{"start":{"line":453,"column":4},"end":{"line":453,"column":49}},"153":{"start":{"line":454,"column":4},"end":{"line":454,"column":38}},"154":{"start":{"line":455,"column":4},"end":{"line":455,"column":45}},"155":{"start":{"line":456,"column":4},"end":{"line":458,"column":5}},"156":{"start":{"line":457,"column":6},"end":{"line":457,"column":15}},"157":{"start":{"line":459,"column":4},"end":{"line":459,"column":79}},"158":{"start":{"line":464,"column":0},"end":{"line":464,"column":25}},"159":{"start":{"line":468,"column":0},"end":{"line":468,"column":78}},"160":{"start":{"line":472,"column":0},"end":{"line":472,"column":75}},"161":{"start":{"line":478,"column":0},"end":{"line":478,"column":76}},"162":{"start":{"line":492,"column":0},"end":{"line":492,"column":33}},"163":{"start":{"line":494,"column":0},"end":{"line":494,"column":47}},"164":{"start":{"line":496,"column":0},"end":{"line":496,"column":77}},"165":{"start":{"line":510,"column":0},"end":{"line":516,"column":2}},"166":{"start":{"line":511,"column":2},"end":{"line":511,"column":29}},"167":{"start":{"line":512,"column":2},"end":{"line":512,"column":80}},"168":{"start":{"line":513,"column":2},"end":{"line":513,"column":49}},"169":{"start":{"line":514,"column":2},"end":{"line":514,"column":23}},"170":{"start":{"line":515,"column":2},"end":{"line":515,"column":27}},"171":{"start":{"line":518,"column":0},"end":{"line":521,"column":2}},"172":{"start":{"line":519,"column":2},"end":{"line":519,"column":62}},"173":{"start":{"line":520,"column":2},"end":{"line":520,"column":31}},"174":{"start":{"line":534,"column":0},"end":{"line":534,"column":25}},"175":{"start":{"line":536,"column":0},"end":{"line":536,"column":27}},"176":{"start":{"line":538,"column":0},"end":{"line":538,"column":39}},"177":{"start":{"line":542,"column":0},"end":{"line":545,"column":2}},"178":{"start":{"line":543,"column":2},"end":{"line":543,"column":101}},"179":{"start":{"line":544,"column":2},"end":{"line":544,"column":27}},"180":{"start":{"line":547,"column":0},"end":{"line":552,"column":2}},"181":{"start":{"line":548,"column":2},"end":{"line":550,"column":3}},"182":{"start":{"line":549,"column":4},"end":{"line":549,"column":37}},"183":{"start":{"line":551,"column":2},"end":{"line":551,"column":22}},"184":{"start":{"line":561,"column":0},"end":{"line":561,"column":27}},"185":{"start":{"line":563,"column":0},"end":{"line":563,"column":23}},"186":{"start":{"line":565,"column":0},"end":{"line":565,"column":57}},"187":{"start":{"line":582,"column":0},"end":{"line":593,"column":2}},"188":{"start":{"line":583,"column":2},"end":{"line":583,"column":29}},"189":{"start":{"line":585,"column":2},"end":{"line":585,"column":72}},"190":{"start":{"line":586,"column":2},"end":{"line":586,"column":45}},"191":{"start":{"line":588,"column":2},"end":{"line":588,"column":45}},"192":{"start":{"line":589,"column":2},"end":{"line":589,"column":46}},"193":{"start":{"line":590,"column":2},"end":{"line":590,"column":32}},"194":{"start":{"line":592,"column":2},"end":{"line":592,"column":23}},"195":{"start":{"line":595,"column":0},"end":{"line":598,"column":2}},"196":{"start":{"line":596,"column":2},"end":{"line":596,"column":58}},"197":{"start":{"line":597,"column":2},"end":{"line":597,"column":51}},"198":{"start":{"line":611,"column":0},"end":{"line":611,"column":34}},"199":{"start":{"line":613,"column":0},"end":{"line":613,"column":48}},"200":{"start":{"line":615,"column":0},"end":{"line":615,"column":55}},"201":{"start":{"line":622,"column":0},"end":{"line":627,"column":2}},"202":{"start":{"line":623,"column":2},"end":{"line":623,"column":29}},"203":{"start":{"line":624,"column":2},"end":{"line":624,"column":72}},"204":{"start":{"line":625,"column":2},"end":{"line":625,"column":45}},"205":{"start":{"line":626,"column":2},"end":{"line":626,"column":23}},"206":{"start":{"line":629,"column":0},"end":{"line":631,"column":2}},"207":{"start":{"line":630,"column":2},"end":{"line":630,"column":58}},"208":{"start":{"line":636,"column":0},"end":{"line":647,"column":2}},"209":{"start":{"line":654,"column":0},"end":{"line":654,"column":25}},"210":{"start":{"line":658,"column":0},"end":{"line":658,"column":21}},"211":{"start":{"line":659,"column":0},"end":{"line":697,"column":2}},"212":{"start":{"line":660,"column":2},"end":{"line":662,"column":3}},"213":{"start":{"line":661,"column":4},"end":{"line":661,"column":16}},"214":{"start":{"line":664,"column":2},"end":{"line":666,"column":3}},"215":{"start":{"line":665,"column":4},"end":{"line":665,"column":20}},"216":{"start":{"line":668,"column":2},"end":{"line":668,"column":26}},"217":{"start":{"line":669,"column":2},"end":{"line":669,"column":20}},"218":{"start":{"line":671,"column":2},"end":{"line":671,"column":34}},"219":{"start":{"line":672,"column":2},"end":{"line":674,"column":5}},"220":{"start":{"line":673,"column":4},"end":{"line":673,"column":33}},"221":{"start":{"line":676,"column":2},"end":{"line":686,"column":3}},"222":{"start":{"line":677,"column":4},"end":{"line":681,"column":5}},"223":{"start":{"line":678,"column":6},"end":{"line":678,"column":70}},"224":{"start":{"line":680,"column":6},"end":{"line":680,"column":49}},"225":{"start":{"line":683,"column":4},"end":{"line":685,"column":5}},"226":{"start":{"line":684,"column":6},"end":{"line":684,"column":42}},"227":{"start":{"line":688,"column":2},"end":{"line":690,"column":3}},"228":{"start":{"line":689,"column":4},"end":{"line":689,"column":68}},"229":{"start":{"line":692,"column":2},"end":{"line":694,"column":5}},"230":{"start":{"line":693,"column":4},"end":{"line":693,"column":38}},"231":{"start":{"line":696,"column":2},"end":{"line":696,"column":18}},"232":{"start":{"line":700,"column":0},"end":{"line":702,"column":2}},"233":{"start":{"line":701,"column":2},"end":{"line":701,"column":30}}},"branchMap":{"1":{"line":5,"type":"cond-expr","locations":[{"start":{"line":5,"column":40},"end":{"line":5,"column":57}},{"start":{"line":5,"column":60},"end":{"line":5,"column":78}}]},"2":{"line":44,"type":"if","locations":[{"start":{"line":44,"column":4},"end":{"line":44,"column":4}},{"start":{"line":44,"column":4},"end":{"line":44,"column":4}}]},"3":{"line":80,"type":"if","locations":[{"start":{"line":80,"column":2},"end":{"line":80,"column":2}},{"start":{"line":80,"column":2},"end":{"line":80,"column":2}}]},"4":{"line":90,"type":"if","locations":[{"start":{"line":90,"column":2},"end":{"line":90,"column":2}},{"start":{"line":90,"column":2},"end":{"line":90,"column":2}}]},"5":{"line":107,"type":"if","locations":[{"start":{"line":107,"column":4},"end":{"line":107,"column":4}},{"start":{"line":107,"column":4},"end":{"line":107,"column":4}}]},"6":{"line":107,"type":"binary-expr","locations":[{"start":{"line":107,"column":9},"end":{"line":107,"column":45}},{"start":{"line":107,"column":50},"end":{"line":107,"column":72}}]},"7":{"line":117,"type":"if","locations":[{"start":{"line":117,"column":4},"end":{"line":117,"column":4}},{"start":{"line":117,"column":4},"end":{"line":117,"column":4}}]},"8":{"line":117,"type":"binary-expr","locations":[{"start":{"line":117,"column":9},"end":{"line":117,"column":45}},{"start":{"line":117,"column":50},"end":{"line":117,"column":73}}]},"9":{"line":118,"type":"if","locations":[{"start":{"line":118,"column":6},"end":{"line":118,"column":6}},{"start":{"line":118,"column":6},"end":{"line":118,"column":6}}]},"10":{"line":120,"type":"if","locations":[{"start":{"line":120,"column":8},"end":{"line":120,"column":8}},{"start":{"line":120,"column":8},"end":{"line":120,"column":8}}]},"11":{"line":210,"type":"if","locations":[{"start":{"line":210,"column":4},"end":{"line":210,"column":4}},{"start":{"line":210,"column":4},"end":{"line":210,"column":4}}]},"12":{"line":217,"type":"binary-expr","locations":[{"start":{"line":217,"column":29},"end":{"line":217,"column":41}},{"start":{"line":217,"column":45},"end":{"line":217,"column":46}}]},"13":{"line":311,"type":"if","locations":[{"start":{"line":311,"column":2},"end":{"line":311,"column":2}},{"start":{"line":311,"column":2},"end":{"line":311,"column":2}}]},"14":{"line":313,"type":"binary-expr","locations":[{"start":{"line":313,"column":12},"end":{"line":313,"column":31}},{"start":{"line":313,"column":37},"end":{"line":313,"column":65}}]},"15":{"line":321,"type":"if","locations":[{"start":{"line":321,"column":2},"end":{"line":321,"column":2}},{"start":{"line":321,"column":2},"end":{"line":321,"column":2}}]},"16":{"line":385,"type":"binary-expr","locations":[{"start":{"line":385,"column":10},"end":{"line":385,"column":19}},{"start":{"line":385,"column":25},"end":{"line":385,"column":43}}]},"17":{"line":429,"type":"if","locations":[{"start":{"line":429,"column":4},"end":{"line":429,"column":4}},{"start":{"line":429,"column":4},"end":{"line":429,"column":4}}]},"18":{"line":432,"type":"cond-expr","locations":[{"start":{"line":432,"column":52},"end":{"line":432,"column":66}},{"start":{"line":432,"column":69},"end":{"line":432,"column":74}}]},"19":{"line":449,"type":"if","locations":[{"start":{"line":449,"column":2},"end":{"line":449,"column":2}},{"start":{"line":449,"column":2},"end":{"line":449,"column":2}}]},"20":{"line":456,"type":"if","locations":[{"start":{"line":456,"column":4},"end":{"line":456,"column":4}},{"start":{"line":456,"column":4},"end":{"line":456,"column":4}}]},"21":{"line":456,"type":"binary-expr","locations":[{"start":{"line":456,"column":8},"end":{"line":456,"column":16}},{"start":{"line":456,"column":21},"end":{"line":456,"column":51}}]},"22":{"line":459,"type":"cond-expr","locations":[{"start":{"line":459,"column":50},"end":{"line":459,"column":70}},{"start":{"line":459,"column":73},"end":{"line":459,"column":78}}]},"23":{"line":512,"type":"binary-expr","locations":[{"start":{"line":512,"column":10},"end":{"line":512,"column":36}},{"start":{"line":512,"column":42},"end":{"line":512,"column":77}}]},"24":{"line":543,"type":"binary-expr","locations":[{"start":{"line":543,"column":10},"end":{"line":543,"column":25}},{"start":{"line":543,"column":31},"end":{"line":543,"column":54}}]},"25":{"line":548,"type":"if","locations":[{"start":{"line":548,"column":2},"end":{"line":548,"column":2}},{"start":{"line":548,"column":2},"end":{"line":548,"column":2}}]},"26":{"line":585,"type":"binary-expr","locations":[{"start":{"line":585,"column":10},"end":{"line":585,"column":32}},{"start":{"line":585,"column":38},"end":{"line":585,"column":69}}]},"27":{"line":589,"type":"binary-expr","locations":[{"start":{"line":589,"column":10},"end":{"line":589,"column":19}},{"start":{"line":589,"column":25},"end":{"line":589,"column":43}}]},"28":{"line":624,"type":"binary-expr","locations":[{"start":{"line":624,"column":10},"end":{"line":624,"column":32}},{"start":{"line":624,"column":38},"end":{"line":624,"column":69}}]},"29":{"line":660,"type":"if","locations":[{"start":{"line":660,"column":2},"end":{"line":660,"column":2}},{"start":{"line":660,"column":2},"end":{"line":660,"column":2}}]},"30":{"line":664,"type":"if","locations":[{"start":{"line":664,"column":2},"end":{"line":664,"column":2}},{"start":{"line":664,"column":2},"end":{"line":664,"column":2}}]},"31":{"line":676,"type":"if","locations":[{"start":{"line":676,"column":2},"end":{"line":676,"column":2}},{"start":{"line":676,"column":2},"end":{"line":676,"column":2}}]},"32":{"line":677,"type":"if","locations":[{"start":{"line":677,"column":4},"end":{"line":677,"column":4}},{"start":{"line":677,"column":4},"end":{"line":677,"column":4}}]},"33":{"line":683,"type":"if","locations":[{"start":{"line":683,"column":4},"end":{"line":683,"column":4}},{"start":{"line":683,"column":4},"end":{"line":683,"column":4}}]},"34":{"line":688,"type":"if","locations":[{"start":{"line":688,"column":2},"end":{"line":688,"column":2}},{"start":{"line":688,"column":2},"end":{"line":688,"column":2}}]},"35":{"line":692,"type":"binary-expr","locations":[{"start":{"line":692,"column":31},"end":{"line":692,"column":42}},{"start":{"line":692,"column":46},"end":{"line":692,"column":48}}]}}},"/data/upstream/node-http2/lib/http.js":{"path":"/data/upstream/node-http2/lib/http.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":10,"18":1,"19":1,"20":1,"21":6,"22":1,"23":2,"24":2,"25":2,"26":2,"27":2,"28":2,"29":2,"30":2,"31":1,"32":1,"33":1,"34":2,"35":2,"36":2,"37":2,"38":1,"39":1,"40":1,"41":1,"42":0,"43":1,"44":3,"45":2,"46":1,"47":1,"48":0,"49":0,"50":0,"51":1,"52":0,"53":0,"54":0,"55":1,"56":0,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":0,"80":1,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":0,"102":0,"103":0,"104":0,"105":1,"106":1,"107":1,"108":1,"109":0,"110":0,"111":1,"112":0,"113":0,"114":1,"115":0,"116":0,"117":0,"118":0,"119":0,"120":1,"121":1,"122":0,"123":1,"124":1,"125":1,"126":0,"127":0,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":7,"139":7,"140":0,"141":0,"142":0,"143":1,"144":1,"145":1,"146":4,"147":4,"148":4,"149":0,"150":0,"151":0,"152":4,"153":0,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":0,"168":1,"169":1,"170":1,"171":0,"172":1,"173":1,"174":1,"175":1,"176":1,"177":1,"178":1,"179":2,"180":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"189":1,"190":0,"191":0,"192":0,"193":0,"194":0,"195":0,"196":0,"197":0,"198":0,"199":0,"200":1,"201":1,"202":0,"203":1,"204":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":0,"211":1,"212":1,"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"221":1,"222":1,"223":1,"224":1,"225":1,"226":1,"227":1,"228":1,"229":1,"230":1,"231":1,"232":0,"233":0,"234":1,"235":1,"236":1,"237":1,"238":1,"239":0,"240":0,"241":1,"242":1,"243":1,"244":1,"245":1,"246":1,"247":0,"248":1,"249":1,"250":1,"251":1,"252":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":0,"262":1,"263":1,"264":1,"265":1,"266":0,"267":1,"268":1,"269":1,"270":1,"271":1,"272":1,"273":1,"274":1,"275":1,"276":1,"277":1,"278":1,"279":1,"280":1,"281":1,"282":0,"283":0,"284":1,"285":1,"286":1,"287":1,"288":1,"289":1,"290":1,"291":1,"292":1,"293":1,"294":1,"295":1,"296":0,"297":1,"298":1,"299":0,"300":1,"301":1,"302":1,"303":1,"304":1,"305":1,"306":1,"307":1,"308":1,"309":1,"310":1,"311":0,"312":0,"313":0,"314":1,"315":0,"316":0,"317":0,"318":1,"319":3,"320":0,"321":3,"322":1,"323":0,"324":0,"325":0,"326":0,"327":1,"328":0,"329":0,"330":0,"331":0,"332":1,"333":0,"334":0,"335":0,"336":0,"337":1,"338":0,"339":0,"340":0,"341":0,"342":0,"343":1,"344":0,"345":0,"346":0,"347":0,"348":0,"349":1,"350":1,"351":1,"352":1,"353":1,"354":1,"355":1,"356":0,"357":0,"358":0,"359":1,"360":1,"361":1,"362":1,"363":1,"364":0,"365":0,"366":0,"367":0,"368":0,"369":0,"370":0,"371":0,"372":0,"373":0,"374":1,"375":1,"376":0,"377":1,"378":0,"379":1},"b":{"1":[1,0],"2":[2,1],"3":[0,0],"4":[0,0],"5":[1,0],"6":[1,0],"7":[1,0],"8":[1,1,0],"9":[1,0],"10":[0,0],"11":[0,1],"12":[0,0],"13":[0,0],"14":[0,0],"15":[0,1],"16":[1,1],"17":[0,1],"18":[1,0],"19":[0,7],"20":[4,0],"21":[0,4],"22":[4,4],"23":[0,1],"24":[1,1],"25":[1,0],"26":[1,1],"27":[1,1],"28":[0,0],"29":[0,0],"30":[0,0],"31":[0,0],"32":[0,0,0],"33":[0,0,0],"34":[0,1],"35":[1,0],"36":[0,0],"37":[1,1],"38":[1,1],"39":[1,1],"40":[1,0],"41":[1,1],"42":[1,0],"43":[1,0,0],"44":[1,0],"45":[1,0],"46":[0,1],"47":[1,0],"48":[0,1],"49":[0,1],"50":[1,0],"51":[1,0],"52":[1,0],"53":[0,1],"54":[1,1],"55":[0,0],"56":[0,3],"57":[3,0],"58":[0,0],"59":[0,0],"60":[0,0],"61":[0,0],"62":[0,0],"63":[0,0],"64":[0,0],"65":[0,0],"66":[0,0],"67":[0,1],"68":[1,1]},"f":{"1":79,"2":10,"3":6,"4":2,"5":0,"6":2,"7":1,"8":3,"9":0,"10":0,"11":0,"12":0,"13":1,"14":1,"15":1,"16":1,"17":0,"18":1,"19":0,"20":0,"21":0,"22":0,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":2,"30":1,"31":1,"32":1,"33":0,"34":1,"35":0,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":0,"45":0,"46":1,"47":1,"48":0,"49":0,"50":3,"51":0,"52":0,"53":0,"54":0,"55":0,"56":1,"57":1,"58":0,"59":0,"60":0,"61":0},"fnMap":{"1":{"name":"noop","line":133,"loc":{"start":{"line":133,"column":0},"end":{"line":133,"column":16}}},"2":{"name":"(anonymous_2)","line":142,"loc":{"start":{"line":142,"column":9},"end":{"line":142,"column":20}}},"3":{"name":"(anonymous_3)","line":148,"loc":{"start":{"line":148,"column":16},"end":{"line":148,"column":33}}},"4":{"name":"IncomingMessage","line":155,"loc":{"start":{"line":155,"column":0},"end":{"line":155,"column":33}}},"5":{"name":"noop","line":174,"loc":{"start":{"line":174,"column":39},"end":{"line":174,"column":55}}},"6":{"name":"OutgoingMessage","line":179,"loc":{"start":{"line":179,"column":0},"end":{"line":179,"column":27}}},"7":{"name":"_write","line":190,"loc":{"start":{"line":190,"column":35},"end":{"line":190,"column":78}}},"8":{"name":"_finish","line":198,"loc":{"start":{"line":198,"column":36},"end":{"line":198,"column":55}}},"9":{"name":"setHeader","line":206,"loc":{"start":{"line":206,"column":38},"end":{"line":206,"column":70}}},"10":{"name":"removeHeader","line":214,"loc":{"start":{"line":214,"column":41},"end":{"line":214,"column":69}}},"11":{"name":"getHeader","line":222,"loc":{"start":{"line":222,"column":38},"end":{"line":222,"column":63}}},"12":{"name":"noop","line":226,"loc":{"start":{"line":226,"column":39},"end":{"line":226,"column":55}}},"13":{"name":"Server","line":240,"loc":{"start":{"line":240,"column":0},"end":{"line":240,"column":25}}},"14":{"name":"(anonymous_14)","line":257,"loc":{"start":{"line":257,"column":40},"end":{"line":257,"column":57}}},"15":{"name":"_start","line":285,"loc":{"start":{"line":285,"column":26},"end":{"line":285,"column":50}}},"16":{"name":"_onStream","line":294,"loc":{"start":{"line":294,"column":24},"end":{"line":294,"column":51}}},"17":{"name":"_fallback","line":306,"loc":{"start":{"line":306,"column":29},"end":{"line":306,"column":56}}},"18":{"name":"listen","line":320,"loc":{"start":{"line":320,"column":26},"end":{"line":320,"column":58}}},"19":{"name":"close","line":326,"loc":{"start":{"line":326,"column":25},"end":{"line":326,"column":50}}},"20":{"name":"setTimeout","line":331,"loc":{"start":{"line":331,"column":39},"end":{"line":331,"column":78}}},"21":{"name":"getTimeout","line":338,"loc":{"start":{"line":338,"column":7},"end":{"line":338,"column":29}}},"22":{"name":"setTimeout","line":345,"loc":{"start":{"line":345,"column":7},"end":{"line":345,"column":36}}},"23":{"name":"on","line":356,"loc":{"start":{"line":356,"column":22},"end":{"line":356,"column":51}}},"24":{"name":"createServer","line":364,"loc":{"start":{"line":364,"column":0},"end":{"line":364,"column":48}}},"25":{"name":"IncomingRequest","line":382,"loc":{"start":{"line":382,"column":0},"end":{"line":382,"column":33}}},"26":{"name":"_onHeaders","line":391,"loc":{"start":{"line":391,"column":39},"end":{"line":391,"column":68}}},"27":{"name":"OutgoingResponse","line":458,"loc":{"start":{"line":458,"column":0},"end":{"line":458,"column":34}}},"28":{"name":"writeHead","line":471,"loc":{"start":{"line":471,"column":39},"end":{"line":471,"column":93}}},"29":{"name":"_implicitHeaders","line":497,"loc":{"start":{"line":497,"column":46},"end":{"line":497,"column":74}}},"30":{"name":"write","line":503,"loc":{"start":{"line":503,"column":35},"end":{"line":503,"column":52}}},"31":{"name":"end","line":508,"loc":{"start":{"line":508,"column":33},"end":{"line":508,"column":48}}},"32":{"name":"_onRequestHeaders","line":513,"loc":{"start":{"line":513,"column":47},"end":{"line":513,"column":83}}},"33":{"name":"push","line":517,"loc":{"start":{"line":517,"column":34},"end":{"line":517,"column":57}}},"34":{"name":"on","line":548,"loc":{"start":{"line":548,"column":32},"end":{"line":548,"column":61}}},"35":{"name":"request","line":564,"loc":{"start":{"line":564,"column":18},"end":{"line":564,"column":54}}},"36":{"name":"get","line":567,"loc":{"start":{"line":567,"column":14},"end":{"line":567,"column":46}}},"37":{"name":"Agent","line":574,"loc":{"start":{"line":574,"column":0},"end":{"line":574,"column":24}}},"38":{"name":"request","line":596,"loc":{"start":{"line":596,"column":26},"end":{"line":596,"column":62}}},"39":{"name":"(anonymous_39)","line":633,"loc":{"start":{"line":633,"column":30},"end":{"line":633,"column":47}}},"40":{"name":"negotiated","line":642,"loc":{"start":{"line":642,"column":4},"end":{"line":642,"column":26}}},"41":{"name":"(anonymous_41)","line":660,"loc":{"start":{"line":660,"column":19},"end":{"line":660,"column":38}}},"42":{"name":"get","line":673,"loc":{"start":{"line":673,"column":22},"end":{"line":673,"column":54}}},"43":{"name":"unbundleSocket","line":679,"loc":{"start":{"line":679,"column":0},"end":{"line":679,"column":32}}},"44":{"name":"getMaxSockets","line":691,"loc":{"start":{"line":691,"column":7},"end":{"line":691,"column":32}}},"45":{"name":"setMaxSockets","line":694,"loc":{"start":{"line":694,"column":7},"end":{"line":694,"column":37}}},"46":{"name":"OutgoingRequest","line":704,"loc":{"start":{"line":704,"column":0},"end":{"line":704,"column":27}}},"47":{"name":"_start","line":714,"loc":{"start":{"line":714,"column":35},"end":{"line":714,"column":68}}},"48":{"name":"_fallback","line":746,"loc":{"start":{"line":746,"column":38},"end":{"line":746,"column":66}}},"49":{"name":"setPriority","line":753,"loc":{"start":{"line":753,"column":40},"end":{"line":753,"column":71}}},"50":{"name":"on","line":763,"loc":{"start":{"line":763,"column":31},"end":{"line":763,"column":60}}},"51":{"name":"setNoDelay","line":772,"loc":{"start":{"line":772,"column":39},"end":{"line":772,"column":68}}},"52":{"name":"setSocketKeepAlive","line":780,"loc":{"start":{"line":780,"column":47},"end":{"line":780,"column":97}}},"53":{"name":"setTimeout","line":788,"loc":{"start":{"line":788,"column":39},"end":{"line":788,"column":78}}},"54":{"name":"abort","line":797,"loc":{"start":{"line":797,"column":34},"end":{"line":797,"column":51}}},"55":{"name":"_onPromise","line":808,"loc":{"start":{"line":808,"column":39},"end":{"line":808,"column":76}}},"56":{"name":"IncomingResponse","line":823,"loc":{"start":{"line":823,"column":0},"end":{"line":823,"column":34}}},"57":{"name":"_onHeaders","line":829,"loc":{"start":{"line":829,"column":40},"end":{"line":829,"column":69}}},"58":{"name":"IncomingPromise","line":858,"loc":{"start":{"line":858,"column":0},"end":{"line":858,"column":57}}},"59":{"name":"noop","line":860,"loc":{"start":{"line":860,"column":17},"end":{"line":860,"column":33}}},"60":{"name":"cancel","line":877,"loc":{"start":{"line":877,"column":35},"end":{"line":877,"column":53}}},"61":{"name":"setPriority","line":881,"loc":{"start":{"line":881,"column":40},"end":{"line":881,"column":71}}}},"statementMap":{"1":{"start":{"line":110,"column":0},"end":{"line":110,"column":25}},"2":{"start":{"line":111,"column":0},"end":{"line":111,"column":25}},"3":{"start":{"line":112,"column":0},"end":{"line":112,"column":27}},"4":{"start":{"line":113,"column":0},"end":{"line":113,"column":50}},"5":{"start":{"line":114,"column":0},"end":{"line":114,"column":48}},"6":{"start":{"line":115,"column":0},"end":{"line":115,"column":42}},"7":{"start":{"line":116,"column":0},"end":{"line":116,"column":42}},"8":{"start":{"line":117,"column":0},"end":{"line":117,"column":46}},"9":{"start":{"line":118,"column":0},"end":{"line":118,"column":27}},"10":{"start":{"line":119,"column":0},"end":{"line":119,"column":29}},"11":{"start":{"line":121,"column":0},"end":{"line":121,"column":41}},"12":{"start":{"line":122,"column":0},"end":{"line":122,"column":42}},"13":{"start":{"line":123,"column":0},"end":{"line":123,"column":42}},"14":{"start":{"line":127,"column":0},"end":{"line":127,"column":45}},"15":{"start":{"line":133,"column":0},"end":{"line":133,"column":18}},"16":{"start":{"line":134,"column":0},"end":{"line":143,"column":2}},"17":{"start":{"line":142,"column":22},"end":{"line":142,"column":34}},"18":{"start":{"line":146,"column":0},"end":{"line":146,"column":25}},"19":{"start":{"line":147,"column":0},"end":{"line":147,"column":95}},"20":{"start":{"line":148,"column":0},"end":{"line":150,"column":3}},"21":{"start":{"line":149,"column":2},"end":{"line":149,"column":65}},"22":{"start":{"line":155,"column":0},"end":{"line":171,"column":1}},"23":{"start":{"line":157,"column":2},"end":{"line":157,"column":25}},"24":{"start":{"line":158,"column":2},"end":{"line":158,"column":20}},"25":{"start":{"line":159,"column":2},"end":{"line":159,"column":37}},"26":{"start":{"line":161,"column":2},"end":{"line":161,"column":55}},"27":{"start":{"line":165,"column":2},"end":{"line":165,"column":27}},"28":{"start":{"line":166,"column":2},"end":{"line":166,"column":28}},"29":{"start":{"line":167,"column":2},"end":{"line":167,"column":28}},"30":{"start":{"line":170,"column":2},"end":{"line":170,"column":53}},"31":{"start":{"line":172,"column":0},"end":{"line":172,"column":110}},"32":{"start":{"line":174,"column":0},"end":{"line":174,"column":58}},"33":{"start":{"line":179,"column":0},"end":{"line":187,"column":1}},"34":{"start":{"line":181,"column":2},"end":{"line":181,"column":22}},"35":{"start":{"line":183,"column":2},"end":{"line":183,"column":21}},"36":{"start":{"line":184,"column":2},"end":{"line":184,"column":27}},"37":{"start":{"line":186,"column":2},"end":{"line":186,"column":45}},"38":{"start":{"line":188,"column":0},"end":{"line":188,"column":107}},"39":{"start":{"line":190,"column":0},"end":{"line":196,"column":2}},"40":{"start":{"line":191,"column":2},"end":{"line":195,"column":3}},"41":{"start":{"line":192,"column":4},"end":{"line":192,"column":49}},"42":{"start":{"line":194,"column":4},"end":{"line":194,"column":75}},"43":{"start":{"line":198,"column":0},"end":{"line":204,"column":2}},"44":{"start":{"line":199,"column":2},"end":{"line":203,"column":3}},"45":{"start":{"line":200,"column":4},"end":{"line":200,"column":22}},"46":{"start":{"line":202,"column":4},"end":{"line":202,"column":49}},"47":{"start":{"line":206,"column":0},"end":{"line":212,"column":2}},"48":{"start":{"line":207,"column":2},"end":{"line":211,"column":3}},"49":{"start":{"line":208,"column":4},"end":{"line":208,"column":63}},"50":{"start":{"line":210,"column":4},"end":{"line":210,"column":46}},"51":{"start":{"line":214,"column":0},"end":{"line":220,"column":2}},"52":{"start":{"line":215,"column":2},"end":{"line":219,"column":3}},"53":{"start":{"line":216,"column":4},"end":{"line":216,"column":66}},"54":{"start":{"line":218,"column":4},"end":{"line":218,"column":45}},"55":{"start":{"line":222,"column":0},"end":{"line":224,"column":2}},"56":{"start":{"line":223,"column":2},"end":{"line":223,"column":43}},"57":{"start":{"line":226,"column":0},"end":{"line":226,"column":58}},"58":{"start":{"line":231,"column":0},"end":{"line":231,"column":36}},"59":{"start":{"line":232,"column":0},"end":{"line":232,"column":24}},"60":{"start":{"line":233,"column":0},"end":{"line":233,"column":42}},"61":{"start":{"line":234,"column":0},"end":{"line":234,"column":44}},"62":{"start":{"line":235,"column":0},"end":{"line":235,"column":42}},"63":{"start":{"line":240,"column":0},"end":{"line":281,"column":1}},"64":{"start":{"line":241,"column":2},"end":{"line":241,"column":26}},"65":{"start":{"line":243,"column":2},"end":{"line":243,"column":74}},"66":{"start":{"line":244,"column":2},"end":{"line":244,"column":36}},"67":{"start":{"line":246,"column":2},"end":{"line":246,"column":37}},"68":{"start":{"line":247,"column":2},"end":{"line":247,"column":43}},"69":{"start":{"line":250,"column":2},"end":{"line":278,"column":3}},"70":{"start":{"line":251,"column":4},"end":{"line":251,"column":58}},"71":{"start":{"line":252,"column":4},"end":{"line":252,"column":23}},"72":{"start":{"line":253,"column":4},"end":{"line":253,"column":72}},"73":{"start":{"line":254,"column":4},"end":{"line":254,"column":47}},"74":{"start":{"line":255,"column":4},"end":{"line":255,"column":79}},"75":{"start":{"line":256,"column":4},"end":{"line":256,"column":56}},"76":{"start":{"line":257,"column":4},"end":{"line":263,"column":7}},"77":{"start":{"line":258,"column":6},"end":{"line":262,"column":7}},"78":{"start":{"line":259,"column":8},"end":{"line":259,"column":22}},"79":{"start":{"line":261,"column":8},"end":{"line":261,"column":25}},"80":{"start":{"line":264,"column":4},"end":{"line":264,"column":64}},"81":{"start":{"line":268,"column":7},"end":{"line":278,"column":3}},"82":{"start":{"line":269,"column":4},"end":{"line":269,"column":60}},"83":{"start":{"line":270,"column":4},"end":{"line":270,"column":25}},"84":{"start":{"line":271,"column":4},"end":{"line":271,"column":43}},"85":{"start":{"line":276,"column":4},"end":{"line":276,"column":81}},"86":{"start":{"line":277,"column":4},"end":{"line":277,"column":95}},"87":{"start":{"line":280,"column":2},"end":{"line":280,"column":58}},"88":{"start":{"line":282,"column":0},"end":{"line":282,"column":93}},"89":{"start":{"line":285,"column":0},"end":{"line":304,"column":2}},"90":{"start":{"line":286,"column":2},"end":{"line":286,"column":67}},"91":{"start":{"line":288,"column":2},"end":{"line":289,"column":50}},"92":{"start":{"line":291,"column":2},"end":{"line":291,"column":39}},"93":{"start":{"line":293,"column":2},"end":{"line":293,"column":18}},"94":{"start":{"line":294,"column":2},"end":{"line":299,"column":5}},"95":{"start":{"line":295,"column":4},"end":{"line":295,"column":48}},"96":{"start":{"line":296,"column":4},"end":{"line":296,"column":46}},"97":{"start":{"line":298,"column":4},"end":{"line":298,"column":78}},"98":{"start":{"line":301,"column":2},"end":{"line":301,"column":60}},"99":{"start":{"line":303,"column":2},"end":{"line":303,"column":44}},"100":{"start":{"line":306,"column":0},"end":{"line":315,"column":2}},"101":{"start":{"line":307,"column":2},"end":{"line":308,"column":49}},"102":{"start":{"line":310,"column":2},"end":{"line":312,"column":3}},"103":{"start":{"line":311,"column":4},"end":{"line":311,"column":64}},"104":{"start":{"line":314,"column":2},"end":{"line":314,"column":34}},"105":{"start":{"line":320,"column":0},"end":{"line":324,"column":2}},"106":{"start":{"line":321,"column":2},"end":{"line":322,"column":55}},"107":{"start":{"line":323,"column":2},"end":{"line":323,"column":53}},"108":{"start":{"line":326,"column":0},"end":{"line":329,"column":2}},"109":{"start":{"line":327,"column":2},"end":{"line":327,"column":35}},"110":{"start":{"line":328,"column":2},"end":{"line":328,"column":31}},"111":{"start":{"line":331,"column":0},"end":{"line":335,"column":2}},"112":{"start":{"line":332,"column":2},"end":{"line":334,"column":3}},"113":{"start":{"line":333,"column":4},"end":{"line":333,"column":47}},"114":{"start":{"line":337,"column":0},"end":{"line":350,"column":3}},"115":{"start":{"line":339,"column":4},"end":{"line":343,"column":5}},"116":{"start":{"line":340,"column":6},"end":{"line":340,"column":34}},"117":{"start":{"line":342,"column":6},"end":{"line":342,"column":23}},"118":{"start":{"line":346,"column":4},"end":{"line":348,"column":5}},"119":{"start":{"line":347,"column":6},"end":{"line":347,"column":37}},"120":{"start":{"line":356,"column":0},"end":{"line":362,"column":2}},"121":{"start":{"line":357,"column":2},"end":{"line":361,"column":3}},"122":{"start":{"line":358,"column":4},"end":{"line":358,"column":48}},"123":{"start":{"line":360,"column":4},"end":{"line":360,"column":58}},"124":{"start":{"line":364,"column":0},"end":{"line":377,"column":1}},"125":{"start":{"line":365,"column":2},"end":{"line":368,"column":3}},"126":{"start":{"line":366,"column":4},"end":{"line":366,"column":30}},"127":{"start":{"line":367,"column":4},"end":{"line":367,"column":24}},"128":{"start":{"line":370,"column":2},"end":{"line":370,"column":35}},"129":{"start":{"line":372,"column":2},"end":{"line":374,"column":3}},"130":{"start":{"line":373,"column":4},"end":{"line":373,"column":42}},"131":{"start":{"line":376,"column":2},"end":{"line":376,"column":16}},"132":{"start":{"line":382,"column":0},"end":{"line":384,"column":1}},"133":{"start":{"line":383,"column":2},"end":{"line":383,"column":37}},"134":{"start":{"line":385,"column":0},"end":{"line":385,"column":114}},"135":{"start":{"line":391,"column":0},"end":{"line":453,"column":2}},"136":{"start":{"line":395,"column":2},"end":{"line":403,"column":4}},"137":{"start":{"line":404,"column":2},"end":{"line":411,"column":3}},"138":{"start":{"line":405,"column":4},"end":{"line":405,"column":35}},"139":{"start":{"line":406,"column":4},"end":{"line":410,"column":5}},"140":{"start":{"line":407,"column":6},"end":{"line":407,"column":84}},"141":{"start":{"line":408,"column":6},"end":{"line":408,"column":50}},"142":{"start":{"line":409,"column":6},"end":{"line":409,"column":13}},"143":{"start":{"line":414,"column":2},"end":{"line":414,"column":20}},"144":{"start":{"line":426,"column":2},"end":{"line":431,"column":4}},"145":{"start":{"line":432,"column":2},"end":{"line":444,"column":3}},"146":{"start":{"line":433,"column":4},"end":{"line":443,"column":5}},"147":{"start":{"line":434,"column":6},"end":{"line":434,"column":32}},"148":{"start":{"line":435,"column":6},"end":{"line":439,"column":7}},"149":{"start":{"line":436,"column":8},"end":{"line":436,"column":77}},"150":{"start":{"line":437,"column":8},"end":{"line":437,"column":52}},"151":{"start":{"line":438,"column":8},"end":{"line":438,"column":15}},"152":{"start":{"line":440,"column":6},"end":{"line":440,"column":34}},"153":{"start":{"line":442,"column":6},"end":{"line":442,"column":41}},"154":{"start":{"line":447,"column":2},"end":{"line":447,"column":32}},"155":{"start":{"line":450,"column":2},"end":{"line":451,"column":80}},"156":{"start":{"line":452,"column":2},"end":{"line":452,"column":21}},"157":{"start":{"line":458,"column":0},"end":{"line":468,"column":1}},"158":{"start":{"line":459,"column":2},"end":{"line":459,"column":29}},"159":{"start":{"line":461,"column":2},"end":{"line":461,"column":55}},"160":{"start":{"line":463,"column":2},"end":{"line":463,"column":23}},"161":{"start":{"line":464,"column":2},"end":{"line":464,"column":30}},"162":{"start":{"line":465,"column":2},"end":{"line":465,"column":23}},"163":{"start":{"line":467,"column":2},"end":{"line":467,"column":65}},"164":{"start":{"line":469,"column":0},"end":{"line":469,"column":116}},"165":{"start":{"line":471,"column":0},"end":{"line":495,"column":2}},"166":{"start":{"line":472,"column":2},"end":{"line":476,"column":3}},"167":{"start":{"line":473,"column":4},"end":{"line":473,"column":93}},"168":{"start":{"line":475,"column":4},"end":{"line":475,"column":27}},"169":{"start":{"line":478,"column":2},"end":{"line":478,"column":26}},"170":{"start":{"line":480,"column":2},"end":{"line":482,"column":3}},"171":{"start":{"line":481,"column":4},"end":{"line":481,"column":54}},"172":{"start":{"line":484,"column":2},"end":{"line":486,"column":3}},"173":{"start":{"line":485,"column":4},"end":{"line":485,"column":52}},"174":{"start":{"line":488,"column":2},"end":{"line":488,"column":92}},"175":{"start":{"line":490,"column":2},"end":{"line":490,"column":58}},"176":{"start":{"line":492,"column":2},"end":{"line":492,"column":37}},"177":{"start":{"line":494,"column":2},"end":{"line":494,"column":26}},"178":{"start":{"line":497,"column":0},"end":{"line":501,"column":2}},"179":{"start":{"line":498,"column":2},"end":{"line":500,"column":3}},"180":{"start":{"line":499,"column":4},"end":{"line":499,"column":36}},"181":{"start":{"line":503,"column":0},"end":{"line":506,"column":2}},"182":{"start":{"line":504,"column":2},"end":{"line":504,"column":26}},"183":{"start":{"line":505,"column":2},"end":{"line":505,"column":64}},"184":{"start":{"line":508,"column":0},"end":{"line":511,"column":2}},"185":{"start":{"line":509,"column":2},"end":{"line":509,"column":26}},"186":{"start":{"line":510,"column":2},"end":{"line":510,"column":62}},"187":{"start":{"line":513,"column":0},"end":{"line":515,"column":2}},"188":{"start":{"line":514,"column":2},"end":{"line":514,"column":33}},"189":{"start":{"line":517,"column":0},"end":{"line":544,"column":2}},"190":{"start":{"line":518,"column":2},"end":{"line":521,"column":3}},"191":{"start":{"line":519,"column":4},"end":{"line":520,"column":40}},"192":{"start":{"line":523,"column":2},"end":{"line":525,"column":3}},"193":{"start":{"line":524,"column":4},"end":{"line":524,"column":33}},"194":{"start":{"line":527,"column":2},"end":{"line":529,"column":3}},"195":{"start":{"line":528,"column":4},"end":{"line":528,"column":51}},"196":{"start":{"line":531,"column":2},"end":{"line":536,"column":22}},"197":{"start":{"line":538,"column":2},"end":{"line":539,"column":96}},"198":{"start":{"line":541,"column":2},"end":{"line":541,"column":48}},"199":{"start":{"line":543,"column":2},"end":{"line":543,"column":42}},"200":{"start":{"line":548,"column":0},"end":{"line":554,"column":2}},"201":{"start":{"line":549,"column":2},"end":{"line":553,"column":3}},"202":{"start":{"line":550,"column":4},"end":{"line":550,"column":48}},"203":{"start":{"line":552,"column":4},"end":{"line":552,"column":61}},"204":{"start":{"line":559,"column":0},"end":{"line":559,"column":40}},"205":{"start":{"line":560,"column":0},"end":{"line":560,"column":42}},"206":{"start":{"line":561,"column":0},"end":{"line":561,"column":44}},"207":{"start":{"line":562,"column":0},"end":{"line":562,"column":22}},"208":{"start":{"line":563,"column":0},"end":{"line":563,"column":32}},"209":{"start":{"line":564,"column":0},"end":{"line":566,"column":2}},"210":{"start":{"line":565,"column":2},"end":{"line":565,"column":75}},"211":{"start":{"line":567,"column":0},"end":{"line":569,"column":2}},"212":{"start":{"line":568,"column":2},"end":{"line":568,"column":71}},"213":{"start":{"line":574,"column":0},"end":{"line":593,"column":1}},"214":{"start":{"line":575,"column":2},"end":{"line":575,"column":26}},"215":{"start":{"line":577,"column":2},"end":{"line":577,"column":26}},"216":{"start":{"line":579,"column":2},"end":{"line":579,"column":36}},"217":{"start":{"line":580,"column":2},"end":{"line":580,"column":74}},"218":{"start":{"line":581,"column":2},"end":{"line":581,"column":22}},"219":{"start":{"line":587,"column":2},"end":{"line":589,"column":5}},"220":{"start":{"line":591,"column":2},"end":{"line":591,"column":42}},"221":{"start":{"line":592,"column":2},"end":{"line":592,"column":44}},"222":{"start":{"line":594,"column":0},"end":{"line":594,"column":91}},"223":{"start":{"line":596,"column":0},"end":{"line":671,"column":2}},"224":{"start":{"line":597,"column":2},"end":{"line":599,"column":3}},"225":{"start":{"line":598,"column":4},"end":{"line":598,"column":33}},"226":{"start":{"line":601,"column":2},"end":{"line":601,"column":59}},"227":{"start":{"line":602,"column":2},"end":{"line":602,"column":50}},"228":{"start":{"line":603,"column":2},"end":{"line":603,"column":65}},"229":{"start":{"line":604,"column":2},"end":{"line":604,"column":37}},"230":{"start":{"line":605,"column":2},"end":{"line":605,"column":37}},"231":{"start":{"line":607,"column":2},"end":{"line":610,"column":3}},"232":{"start":{"line":608,"column":4},"end":{"line":608,"column":85}},"233":{"start":{"line":609,"column":4},"end":{"line":609,"column":70}},"234":{"start":{"line":612,"column":2},"end":{"line":612,"column":47}},"235":{"start":{"line":614,"column":2},"end":{"line":616,"column":3}},"236":{"start":{"line":615,"column":4},"end":{"line":615,"column":37}},"237":{"start":{"line":618,"column":2},"end":{"line":618,"column":51}},"238":{"start":{"line":621,"column":2},"end":{"line":668,"column":3}},"239":{"start":{"line":622,"column":4},"end":{"line":622,"column":39}},"240":{"start":{"line":623,"column":4},"end":{"line":623,"column":53}},"241":{"start":{"line":628,"column":4},"end":{"line":628,"column":24}},"242":{"start":{"line":629,"column":4},"end":{"line":629,"column":72}},"243":{"start":{"line":630,"column":4},"end":{"line":630,"column":37}},"244":{"start":{"line":631,"column":4},"end":{"line":631,"column":46}},"245":{"start":{"line":633,"column":4},"end":{"line":639,"column":7}},"246":{"start":{"line":634,"column":6},"end":{"line":638,"column":7}},"247":{"start":{"line":635,"column":8},"end":{"line":635,"column":21}},"248":{"start":{"line":637,"column":8},"end":{"line":637,"column":47}},"249":{"start":{"line":641,"column":4},"end":{"line":641,"column":20}},"250":{"start":{"line":642,"column":4},"end":{"line":658,"column":5}},"251":{"start":{"line":643,"column":6},"end":{"line":657,"column":7}},"252":{"start":{"line":644,"column":8},"end":{"line":656,"column":9}},"253":{"start":{"line":645,"column":10},"end":{"line":645,"column":50}},"254":{"start":{"line":646,"column":10},"end":{"line":646,"column":46}},"255":{"start":{"line":647,"column":10},"end":{"line":647,"column":75}},"256":{"start":{"line":648,"column":10},"end":{"line":649,"column":59}},"257":{"start":{"line":650,"column":10},"end":{"line":650,"column":48}},"258":{"start":{"line":651,"column":10},"end":{"line":651,"column":56}},"259":{"start":{"line":652,"column":10},"end":{"line":652,"column":41}},"260":{"start":{"line":653,"column":10},"end":{"line":653,"column":35}},"261":{"start":{"line":655,"column":10},"end":{"line":655,"column":36}},"262":{"start":{"line":660,"column":4},"end":{"line":667,"column":7}},"263":{"start":{"line":661,"column":6},"end":{"line":661,"column":21}},"264":{"start":{"line":662,"column":6},"end":{"line":666,"column":7}},"265":{"start":{"line":663,"column":8},"end":{"line":663,"column":57}},"266":{"start":{"line":665,"column":8},"end":{"line":665,"column":40}},"267":{"start":{"line":670,"column":2},"end":{"line":670,"column":17}},"268":{"start":{"line":673,"column":0},"end":{"line":677,"column":2}},"269":{"start":{"line":674,"column":2},"end":{"line":674,"column":48}},"270":{"start":{"line":675,"column":2},"end":{"line":675,"column":16}},"271":{"start":{"line":676,"column":2},"end":{"line":676,"column":17}},"272":{"start":{"line":679,"column":0},"end":{"line":688,"column":1}},"273":{"start":{"line":680,"column":2},"end":{"line":680,"column":36}},"274":{"start":{"line":681,"column":2},"end":{"line":681,"column":35}},"275":{"start":{"line":682,"column":2},"end":{"line":682,"column":40}},"276":{"start":{"line":683,"column":2},"end":{"line":683,"column":37}},"277":{"start":{"line":684,"column":2},"end":{"line":684,"column":37}},"278":{"start":{"line":685,"column":2},"end":{"line":685,"column":18}},"279":{"start":{"line":686,"column":2},"end":{"line":686,"column":23}},"280":{"start":{"line":687,"column":2},"end":{"line":687,"column":22}},"281":{"start":{"line":690,"column":0},"end":{"line":697,"column":3}},"282":{"start":{"line":692,"column":4},"end":{"line":692,"column":39}},"283":{"start":{"line":695,"column":4},"end":{"line":695,"column":40}},"284":{"start":{"line":699,"column":0},"end":{"line":699,"column":34}},"285":{"start":{"line":704,"column":0},"end":{"line":711,"column":1}},"286":{"start":{"line":705,"column":2},"end":{"line":705,"column":29}},"287":{"start":{"line":707,"column":2},"end":{"line":707,"column":24}},"288":{"start":{"line":709,"column":2},"end":{"line":709,"column":26}},"289":{"start":{"line":710,"column":2},"end":{"line":710,"column":26}},"290":{"start":{"line":712,"column":0},"end":{"line":712,"column":114}},"291":{"start":{"line":714,"column":0},"end":{"line":744,"column":2}},"292":{"start":{"line":715,"column":2},"end":{"line":715,"column":23}},"293":{"start":{"line":717,"column":2},"end":{"line":717,"column":55}},"294":{"start":{"line":719,"column":2},"end":{"line":719,"column":19}},"295":{"start":{"line":720,"column":2},"end":{"line":722,"column":3}},"296":{"start":{"line":721,"column":4},"end":{"line":721,"column":40}},"297":{"start":{"line":723,"column":2},"end":{"line":723,"column":22}},"298":{"start":{"line":725,"column":2},"end":{"line":727,"column":3}},"299":{"start":{"line":726,"column":4},"end":{"line":726,"column":83}},"300":{"start":{"line":729,"column":2},"end":{"line":729,"column":53}},"301":{"start":{"line":730,"column":2},"end":{"line":730,"column":38}},"302":{"start":{"line":731,"column":2},"end":{"line":731,"column":34}},"303":{"start":{"line":732,"column":2},"end":{"line":732,"column":34}},"304":{"start":{"line":734,"column":2},"end":{"line":735,"column":98}},"305":{"start":{"line":736,"column":2},"end":{"line":736,"column":31}},"306":{"start":{"line":738,"column":2},"end":{"line":738,"column":35}},"307":{"start":{"line":740,"column":2},"end":{"line":740,"column":51}},"308":{"start":{"line":741,"column":2},"end":{"line":741,"column":69}},"309":{"start":{"line":743,"column":2},"end":{"line":743,"column":56}},"310":{"start":{"line":746,"column":0},"end":{"line":751,"column":2}},"311":{"start":{"line":747,"column":2},"end":{"line":747,"column":39}},"312":{"start":{"line":748,"column":2},"end":{"line":748,"column":35}},"313":{"start":{"line":750,"column":2},"end":{"line":750,"column":21}},"314":{"start":{"line":753,"column":0},"end":{"line":759,"column":2}},"315":{"start":{"line":754,"column":2},"end":{"line":758,"column":3}},"316":{"start":{"line":755,"column":4},"end":{"line":755,"column":35}},"317":{"start":{"line":757,"column":4},"end":{"line":757,"column":63}},"318":{"start":{"line":763,"column":0},"end":{"line":769,"column":2}},"319":{"start":{"line":764,"column":2},"end":{"line":768,"column":3}},"320":{"start":{"line":765,"column":4},"end":{"line":765,"column":48}},"321":{"start":{"line":767,"column":4},"end":{"line":767,"column":61}},"322":{"start":{"line":772,"column":0},"end":{"line":778,"column":2}},"323":{"start":{"line":773,"column":2},"end":{"line":777,"column":3}},"324":{"start":{"line":774,"column":4},"end":{"line":774,"column":37}},"325":{"start":{"line":775,"column":9},"end":{"line":777,"column":3}},"326":{"start":{"line":776,"column":4},"end":{"line":776,"column":59}},"327":{"start":{"line":780,"column":0},"end":{"line":786,"column":2}},"328":{"start":{"line":781,"column":2},"end":{"line":785,"column":3}},"329":{"start":{"line":782,"column":4},"end":{"line":782,"column":58}},"330":{"start":{"line":783,"column":9},"end":{"line":785,"column":3}},"331":{"start":{"line":784,"column":4},"end":{"line":784,"column":80}},"332":{"start":{"line":788,"column":0},"end":{"line":794,"column":2}},"333":{"start":{"line":789,"column":2},"end":{"line":793,"column":3}},"334":{"start":{"line":790,"column":4},"end":{"line":790,"column":47}},"335":{"start":{"line":791,"column":9},"end":{"line":793,"column":3}},"336":{"start":{"line":792,"column":4},"end":{"line":792,"column":69}},"337":{"start":{"line":797,"column":0},"end":{"line":805,"column":2}},"338":{"start":{"line":798,"column":2},"end":{"line":804,"column":3}},"339":{"start":{"line":799,"column":4},"end":{"line":799,"column":25}},"340":{"start":{"line":800,"column":9},"end":{"line":804,"column":3}},"341":{"start":{"line":801,"column":4},"end":{"line":801,"column":32}},"342":{"start":{"line":803,"column":4},"end":{"line":803,"column":45}},"343":{"start":{"line":808,"column":0},"end":{"line":818,"column":2}},"344":{"start":{"line":809,"column":2},"end":{"line":809,"column":71}},"345":{"start":{"line":811,"column":2},"end":{"line":811,"column":53}},"346":{"start":{"line":813,"column":2},"end":{"line":817,"column":3}},"347":{"start":{"line":814,"column":4},"end":{"line":814,"column":31}},"348":{"start":{"line":816,"column":4},"end":{"line":816,"column":21}},"349":{"start":{"line":823,"column":0},"end":{"line":825,"column":1}},"350":{"start":{"line":824,"column":2},"end":{"line":824,"column":37}},"351":{"start":{"line":826,"column":0},"end":{"line":826,"column":116}},"352":{"start":{"line":829,"column":0},"end":{"line":853,"column":2}},"353":{"start":{"line":833,"column":2},"end":{"line":833,"column":25}},"354":{"start":{"line":841,"column":2},"end":{"line":841,"column":38}},"355":{"start":{"line":842,"column":2},"end":{"line":846,"column":3}},"356":{"start":{"line":843,"column":4},"end":{"line":843,"column":83}},"357":{"start":{"line":844,"column":4},"end":{"line":844,"column":48}},"358":{"start":{"line":845,"column":4},"end":{"line":845,"column":11}},"359":{"start":{"line":847,"column":2},"end":{"line":847,"column":31}},"360":{"start":{"line":848,"column":2},"end":{"line":848,"column":28}},"361":{"start":{"line":851,"column":2},"end":{"line":851,"column":79}},"362":{"start":{"line":852,"column":2},"end":{"line":852,"column":21}},"363":{"start":{"line":858,"column":0},"end":{"line":874,"column":1}},"364":{"start":{"line":859,"column":2},"end":{"line":859,"column":30}},"365":{"start":{"line":860,"column":2},"end":{"line":860,"column":36}},"366":{"start":{"line":861,"column":2},"end":{"line":861,"column":20}},"367":{"start":{"line":862,"column":2},"end":{"line":862,"column":36}},"368":{"start":{"line":864,"column":2},"end":{"line":864,"column":37}},"369":{"start":{"line":866,"column":2},"end":{"line":866,"column":34}},"370":{"start":{"line":868,"column":2},"end":{"line":868,"column":40}},"371":{"start":{"line":870,"column":2},"end":{"line":870,"column":60}},"372":{"start":{"line":871,"column":2},"end":{"line":871,"column":69}},"373":{"start":{"line":873,"column":2},"end":{"line":873,"column":56}},"374":{"start":{"line":875,"column":0},"end":{"line":875,"column":114}},"375":{"start":{"line":877,"column":0},"end":{"line":879,"column":2}},"376":{"start":{"line":878,"column":2},"end":{"line":878,"column":39}},"377":{"start":{"line":881,"column":0},"end":{"line":883,"column":2}},"378":{"start":{"line":882,"column":2},"end":{"line":882,"column":42}},"379":{"start":{"line":885,"column":0},"end":{"line":885,"column":76}}},"branchMap":{"1":{"line":191,"type":"if","locations":[{"start":{"line":191,"column":2},"end":{"line":191,"column":2}},{"start":{"line":191,"column":2},"end":{"line":191,"column":2}}]},"2":{"line":199,"type":"if","locations":[{"start":{"line":199,"column":2},"end":{"line":199,"column":2}},{"start":{"line":199,"column":2},"end":{"line":199,"column":2}}]},"3":{"line":207,"type":"if","locations":[{"start":{"line":207,"column":2},"end":{"line":207,"column":2}},{"start":{"line":207,"column":2},"end":{"line":207,"column":2}}]},"4":{"line":215,"type":"if","locations":[{"start":{"line":215,"column":2},"end":{"line":215,"column":2}},{"start":{"line":215,"column":2},"end":{"line":215,"column":2}}]},"5":{"line":241,"type":"binary-expr","locations":[{"start":{"line":241,"column":12},"end":{"line":241,"column":19}},{"start":{"line":241,"column":23},"end":{"line":241,"column":25}}]},"6":{"line":243,"type":"binary-expr","locations":[{"start":{"line":243,"column":15},"end":{"line":243,"column":26}},{"start":{"line":243,"column":30},"end":{"line":243,"column":43}}]},"7":{"line":250,"type":"if","locations":[{"start":{"line":250,"column":2},"end":{"line":250,"column":2}},{"start":{"line":250,"column":2},"end":{"line":250,"column":2}}]},"8":{"line":250,"type":"binary-expr","locations":[{"start":{"line":250,"column":7},"end":{"line":250,"column":18}},{"start":{"line":250,"column":22},"end":{"line":250,"column":34}},{"start":{"line":250,"column":39},"end":{"line":250,"column":50}}]},"9":{"line":258,"type":"if","locations":[{"start":{"line":258,"column":6},"end":{"line":258,"column":6}},{"start":{"line":258,"column":6},"end":{"line":258,"column":6}}]},"10":{"line":268,"type":"if","locations":[{"start":{"line":268,"column":7},"end":{"line":268,"column":7}},{"start":{"line":268,"column":7},"end":{"line":268,"column":7}}]},"11":{"line":321,"type":"cond-expr","locations":[{"start":{"line":321,"column":58},"end":{"line":321,"column":79}},{"start":{"line":321,"column":83},"end":{"line":321,"column":87}}]},"12":{"line":332,"type":"if","locations":[{"start":{"line":332,"column":2},"end":{"line":332,"column":2}},{"start":{"line":332,"column":2},"end":{"line":332,"column":2}}]},"13":{"line":339,"type":"if","locations":[{"start":{"line":339,"column":4},"end":{"line":339,"column":4}},{"start":{"line":339,"column":4},"end":{"line":339,"column":4}}]},"14":{"line":346,"type":"if","locations":[{"start":{"line":346,"column":4},"end":{"line":346,"column":4}},{"start":{"line":346,"column":4},"end":{"line":346,"column":4}}]},"15":{"line":357,"type":"if","locations":[{"start":{"line":357,"column":2},"end":{"line":357,"column":2}},{"start":{"line":357,"column":2},"end":{"line":357,"column":2}}]},"16":{"line":357,"type":"binary-expr","locations":[{"start":{"line":357,"column":7},"end":{"line":357,"column":26}},{"start":{"line":357,"column":32},"end":{"line":357,"column":51}}]},"17":{"line":365,"type":"if","locations":[{"start":{"line":365,"column":2},"end":{"line":365,"column":2}},{"start":{"line":365,"column":2},"end":{"line":365,"column":2}}]},"18":{"line":372,"type":"if","locations":[{"start":{"line":372,"column":2},"end":{"line":372,"column":2}},{"start":{"line":372,"column":2},"end":{"line":372,"column":2}}]},"19":{"line":406,"type":"if","locations":[{"start":{"line":406,"column":4},"end":{"line":406,"column":4}},{"start":{"line":406,"column":4},"end":{"line":406,"column":4}}]},"20":{"line":433,"type":"if","locations":[{"start":{"line":433,"column":4},"end":{"line":433,"column":4}},{"start":{"line":433,"column":4},"end":{"line":433,"column":4}}]},"21":{"line":435,"type":"if","locations":[{"start":{"line":435,"column":6},"end":{"line":435,"column":6}},{"start":{"line":435,"column":6},"end":{"line":435,"column":6}}]},"22":{"line":435,"type":"binary-expr","locations":[{"start":{"line":435,"column":11},"end":{"line":435,"column":36}},{"start":{"line":435,"column":42},"end":{"line":435,"column":60}}]},"23":{"line":472,"type":"if","locations":[{"start":{"line":472,"column":2},"end":{"line":472,"column":2}},{"start":{"line":472,"column":2},"end":{"line":472,"column":2}}]},"24":{"line":478,"type":"binary-expr","locations":[{"start":{"line":478,"column":12},"end":{"line":478,"column":19}},{"start":{"line":478,"column":23},"end":{"line":478,"column":25}}]},"25":{"line":484,"type":"if","locations":[{"start":{"line":484,"column":2},"end":{"line":484,"column":2}},{"start":{"line":484,"column":2},"end":{"line":484,"column":2}}]},"26":{"line":484,"type":"binary-expr","locations":[{"start":{"line":484,"column":6},"end":{"line":484,"column":19}},{"start":{"line":484,"column":23},"end":{"line":484,"column":49}}]},"27":{"line":498,"type":"if","locations":[{"start":{"line":498,"column":2},"end":{"line":498,"column":2}},{"start":{"line":498,"column":2},"end":{"line":498,"column":2}}]},"28":{"line":518,"type":"if","locations":[{"start":{"line":518,"column":2},"end":{"line":518,"column":2}},{"start":{"line":518,"column":2},"end":{"line":518,"column":2}}]},"29":{"line":523,"type":"if","locations":[{"start":{"line":523,"column":2},"end":{"line":523,"column":2}},{"start":{"line":523,"column":2},"end":{"line":523,"column":2}}]},"30":{"line":527,"type":"if","locations":[{"start":{"line":527,"column":2},"end":{"line":527,"column":2}},{"start":{"line":527,"column":2},"end":{"line":527,"column":2}}]},"31":{"line":532,"type":"binary-expr","locations":[{"start":{"line":532,"column":16},"end":{"line":532,"column":30}},{"start":{"line":532,"column":34},"end":{"line":532,"column":39}}]},"32":{"line":533,"type":"binary-expr","locations":[{"start":{"line":533,"column":16},"end":{"line":533,"column":32}},{"start":{"line":533,"column":36},"end":{"line":533,"column":65}},{"start":{"line":533,"column":70},"end":{"line":533,"column":101}}]},"33":{"line":534,"type":"binary-expr","locations":[{"start":{"line":534,"column":13},"end":{"line":534,"column":29}},{"start":{"line":534,"column":33},"end":{"line":534,"column":45}},{"start":{"line":534,"column":49},"end":{"line":534,"column":78}}]},"34":{"line":549,"type":"if","locations":[{"start":{"line":549,"column":2},"end":{"line":549,"column":2}},{"start":{"line":549,"column":2},"end":{"line":549,"column":2}}]},"35":{"line":549,"type":"binary-expr","locations":[{"start":{"line":549,"column":6},"end":{"line":549,"column":18}},{"start":{"line":549,"column":23},"end":{"line":549,"column":42}}]},"36":{"line":565,"type":"binary-expr","locations":[{"start":{"line":565,"column":10},"end":{"line":565,"column":23}},{"start":{"line":565,"column":27},"end":{"line":565,"column":46}}]},"37":{"line":568,"type":"binary-expr","locations":[{"start":{"line":568,"column":10},"end":{"line":568,"column":23}},{"start":{"line":568,"column":27},"end":{"line":568,"column":46}}]},"38":{"line":577,"type":"binary-expr","locations":[{"start":{"line":577,"column":12},"end":{"line":577,"column":19}},{"start":{"line":577,"column":23},"end":{"line":577,"column":25}}]},"39":{"line":580,"type":"binary-expr","locations":[{"start":{"line":580,"column":15},"end":{"line":580,"column":26}},{"start":{"line":580,"column":30},"end":{"line":580,"column":43}}]},"40":{"line":597,"type":"if","locations":[{"start":{"line":597,"column":2},"end":{"line":597,"column":2}},{"start":{"line":597,"column":2},"end":{"line":597,"column":2}}]},"41":{"line":601,"type":"binary-expr","locations":[{"start":{"line":601,"column":20},"end":{"line":601,"column":34}},{"start":{"line":601,"column":38},"end":{"line":601,"column":43}}]},"42":{"line":602,"type":"binary-expr","locations":[{"start":{"line":602,"column":21},"end":{"line":602,"column":37}},{"start":{"line":602,"column":41},"end":{"line":602,"column":49}}]},"43":{"line":603,"type":"binary-expr","locations":[{"start":{"line":603,"column":17},"end":{"line":603,"column":33}},{"start":{"line":603,"column":37},"end":{"line":603,"column":49}},{"start":{"line":603,"column":53},"end":{"line":603,"column":64}}]},"44":{"line":604,"type":"binary-expr","locations":[{"start":{"line":604,"column":17},"end":{"line":604,"column":29}},{"start":{"line":604,"column":33},"end":{"line":604,"column":36}}]},"45":{"line":605,"type":"binary-expr","locations":[{"start":{"line":605,"column":17},"end":{"line":605,"column":29}},{"start":{"line":605,"column":33},"end":{"line":605,"column":36}}]},"46":{"line":607,"type":"if","locations":[{"start":{"line":607,"column":2},"end":{"line":607,"column":2}},{"start":{"line":607,"column":2},"end":{"line":607,"column":2}}]},"47":{"line":614,"type":"if","locations":[{"start":{"line":614,"column":2},"end":{"line":614,"column":2}},{"start":{"line":614,"column":2},"end":{"line":614,"column":2}}]},"48":{"line":621,"type":"if","locations":[{"start":{"line":621,"column":2},"end":{"line":621,"column":2}},{"start":{"line":621,"column":2},"end":{"line":621,"column":2}}]},"49":{"line":634,"type":"if","locations":[{"start":{"line":634,"column":6},"end":{"line":634,"column":6}},{"start":{"line":634,"column":6},"end":{"line":634,"column":6}}]},"50":{"line":643,"type":"if","locations":[{"start":{"line":643,"column":6},"end":{"line":643,"column":6}},{"start":{"line":643,"column":6},"end":{"line":643,"column":6}}]},"51":{"line":644,"type":"if","locations":[{"start":{"line":644,"column":8},"end":{"line":644,"column":8}},{"start":{"line":644,"column":8},"end":{"line":644,"column":8}}]},"52":{"line":662,"type":"if","locations":[{"start":{"line":662,"column":6},"end":{"line":662,"column":6}},{"start":{"line":662,"column":6},"end":{"line":662,"column":6}}]},"53":{"line":725,"type":"if","locations":[{"start":{"line":725,"column":2},"end":{"line":725,"column":2}},{"start":{"line":725,"column":2},"end":{"line":725,"column":2}}]},"54":{"line":735,"type":"binary-expr","locations":[{"start":{"line":735,"column":53},"end":{"line":735,"column":68}},{"start":{"line":735,"column":72},"end":{"line":735,"column":74}}]},"55":{"line":754,"type":"if","locations":[{"start":{"line":754,"column":2},"end":{"line":754,"column":2}},{"start":{"line":754,"column":2},"end":{"line":754,"column":2}}]},"56":{"line":764,"type":"if","locations":[{"start":{"line":764,"column":2},"end":{"line":764,"column":2}},{"start":{"line":764,"column":2},"end":{"line":764,"column":2}}]},"57":{"line":764,"type":"binary-expr","locations":[{"start":{"line":764,"column":6},"end":{"line":764,"column":18}},{"start":{"line":764,"column":23},"end":{"line":764,"column":42}}]},"58":{"line":773,"type":"if","locations":[{"start":{"line":773,"column":2},"end":{"line":773,"column":2}},{"start":{"line":773,"column":2},"end":{"line":773,"column":2}}]},"59":{"line":775,"type":"if","locations":[{"start":{"line":775,"column":9},"end":{"line":775,"column":9}},{"start":{"line":775,"column":9},"end":{"line":775,"column":9}}]},"60":{"line":781,"type":"if","locations":[{"start":{"line":781,"column":2},"end":{"line":781,"column":2}},{"start":{"line":781,"column":2},"end":{"line":781,"column":2}}]},"61":{"line":783,"type":"if","locations":[{"start":{"line":783,"column":9},"end":{"line":783,"column":9}},{"start":{"line":783,"column":9},"end":{"line":783,"column":9}}]},"62":{"line":789,"type":"if","locations":[{"start":{"line":789,"column":2},"end":{"line":789,"column":2}},{"start":{"line":789,"column":2},"end":{"line":789,"column":2}}]},"63":{"line":791,"type":"if","locations":[{"start":{"line":791,"column":9},"end":{"line":791,"column":9}},{"start":{"line":791,"column":9},"end":{"line":791,"column":9}}]},"64":{"line":798,"type":"if","locations":[{"start":{"line":798,"column":2},"end":{"line":798,"column":2}},{"start":{"line":798,"column":2},"end":{"line":798,"column":2}}]},"65":{"line":800,"type":"if","locations":[{"start":{"line":800,"column":9},"end":{"line":800,"column":9}},{"start":{"line":800,"column":9},"end":{"line":800,"column":9}}]},"66":{"line":813,"type":"if","locations":[{"start":{"line":813,"column":2},"end":{"line":813,"column":2}},{"start":{"line":813,"column":2},"end":{"line":813,"column":2}}]},"67":{"line":842,"type":"if","locations":[{"start":{"line":842,"column":2},"end":{"line":842,"column":2}},{"start":{"line":842,"column":2},"end":{"line":842,"column":2}}]},"68":{"line":842,"type":"binary-expr","locations":[{"start":{"line":842,"column":7},"end":{"line":842,"column":37}},{"start":{"line":842,"column":43},"end":{"line":842,"column":66}}]}}}} \ No newline at end of file diff --git a/coverage/lcov-report/index.html b/coverage/lcov-report/index.html index bc1852a1..e3907aae 100644 --- a/coverage/lcov-report/index.html +++ b/coverage/lcov-report/index.html @@ -183,16 +183,16 @@

Code coverage report for All files

- Statements: 86.53% (1195 / 1381)      + Statements: 84.83% (1253 / 1477)      - Branches: 73.43% (387 / 527)      + Branches: 69.47% (405 / 583)      - Functions: 84.9% (163 / 192)      + Functions: 78.95% (165 / 209)      - Lines: 86.66% (1189 / 1372)      + Lines: 84.95% (1247 / 1468)     

@@ -216,15 +216,15 @@

lib/ - - 86.53% - (1195 / 1381) - 73.43% - (387 / 527) - 84.9% - (163 / 192) - 86.66% - (1189 / 1372) + + 84.83% + (1253 / 1477) + 69.47% + (405 / 583) + 78.95% + (165 / 209) + 84.95% + (1247 / 1468) @@ -232,7 +232,7 @@

diff --git a/coverage/lcov-report/lib/compressor.js.html b/coverage/lcov-report/lib/compressor.js.html index 34af9787..2d83d2eb 100644 --- a/coverage/lcov-report/lib/compressor.js.html +++ b/coverage/lcov-report/lib/compressor.js.html @@ -183,16 +183,16 @@

Code coverage report for lib/compressor.js

- Statements: 98.62% (286 / 290)      + Statements: 98.62% (285 / 289)      - Branches: 100% (101 / 101)      + Branches: 100% (97 / 97)      Functions: 100% (34 / 34)      - Lines: 98.62% (286 / 290)      + Lines: 98.62% (285 / 289)     

All files » lib/ » compressor.js
@@ -1057,8 +1057,7 @@

856 857 858 -859 -860  +859        @@ -1074,7 +1073,6 @@

    1 -1   1 1 @@ -1175,13 +1173,13 @@

    184 -52 -52 +54 +54 139   -52 -2 -2 +54 +4 +4   50   @@ -1192,23 +1190,23 @@

      -132 -47 +130 +45   85     -132 -131 +130 +129 88   -43 +41   -131 -131 +129 +129     -132 +130       @@ -1227,9 +1225,9 @@

  64 64 -5 -5 -1 +6 +6 +2       @@ -1237,14 +1235,14 @@

      -63 -63 -1251 +62 +62 +1213   -63 -37 -37 -21 +62 +36 +36 +20       @@ -1286,15 +1284,15 @@

    1 -131 -131 -131 -2789 -204 +129 +129 +129 +2713 +202   -2789 +2713   -131 +129 218 218   @@ -1454,31 +1452,31 @@

    1 -234 -234 +232 +232 94     -140 -140 +138 +138 2   -140 +138   -140 -140 -148 -148 +138 +138 +146 +146   -148 +146 8   -148 +146   -148 +146     -140 +138       @@ -1495,23 +1493,23 @@

    1 -252 +250   -252 -252 +250 +250 106     -252 -151 -151 -161 -161 -161 +250 +149 +149 +159 +159 +159       -252 +250       @@ -1525,16 +1523,16 @@

    1 -116 -116 -116 +115 +115 +115     1 -121 -121 -121 -121 +120 +120 +120 +120       @@ -1587,31 +1585,31 @@

96   96 -27 -69 -1 +28 68 +1 +67 46   -22 +21     96 -27 +28     -69 -26 +68 +25   43 43     -69 -22 +68 +21     -69 +68     96 @@ -1624,36 +1622,36 @@

  104 104 -29 -75 +30 +74 52 2   50     -23 +22     104 -29 -29 +30 +30     -75 -75 +74 +74 44     -75 -23 +74 +22 52 50   2     -75 +74     104 @@ -1690,7 +1688,7 @@

  1   -18 +19   12   @@ -1722,10 +1720,10 @@

      -6 +7     -18 +19       @@ -1746,7 +1744,7 @@

1     -22 +23 3 1 1 @@ -1757,7 +1755,7 @@

      -19 +20 13 13 13 @@ -1766,13 +1764,13 @@

      -6 +7           -21 +22 12 14   @@ -1794,7 +1792,7 @@

12     -21 +22       @@ -1886,12 +1884,12 @@

1 34 34 -333 +330     34 34 -333 +330     34 @@ -1932,7 +1930,6 @@

// [2]: http://nodejs.org/api/stream.html#stream_new_stream_readable_options // [3]: http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-00   -var logging = require('./logging'); var Transform = require('stream').Transform;   exports.CompressionContext = CompressionContext; @@ -2167,7 +2164,7 @@

// The compression related mutable state is stored in a contained `CompressionContext` object. // The initial value of it's Header Table depends on which side of the connection is it on. function Decompressor(type, log) { - this._log = (log || logging.root).child({ component: 'decompressor' }); + this._log = log.child({ component: 'decompressor' });   var initialTable = (type === 'REQUEST') ? CompressionContext.initialRequestTable : CompressionContext.initialResponseTable; @@ -2228,7 +2225,7 @@

// The compression related mutable state is stored in a contained `CompressionContext` object. // The initial value of it's Header Table depends on which side of the connection is it on. function Compressor(type, log) { - this._log = (log || logging.root).child({ component: 'compressor' }); + this._log = log.child({ component: 'compressor' });   var initialTable = (type === 'REQUEST') ? CompressionContext.initialRequestTable : CompressionContext.initialResponseTable; @@ -2442,7 +2439,7 @@

literalSubstitution : { prefix: 6, pattern: 0x00 } };   -Compressor.header = function writeString(header) { +Compressor.header = function writeHeader(header) { var representation, buffers = [];   if (typeof header.value === 'number') { @@ -2478,7 +2475,7 @@

return Array.prototype.concat.apply([], buffers); // array of arrays of buffers -> array of buffers };   -Decompressor.header = function readString(buffer) { +Decompressor.header = function readHeader(buffer) { var representation, header = {};   var firstByte = buffer[buffer.cursor]; @@ -2781,7 +2778,7 @@

diff --git a/coverage/lcov-report/lib/connection.js.html b/coverage/lcov-report/lib/connection.js.html index cc7f9448..02942ce0 100644 --- a/coverage/lcov-report/lib/connection.js.html +++ b/coverage/lcov-report/lib/connection.js.html @@ -183,16 +183,16 @@

Code coverage report for lib/connection.js

- Statements: 88.7% (157 / 177)      + Statements: 93.65% (177 / 189)      - Branches: 69.57% (32 / 46)      + Branches: 83.33% (45 / 54)      Functions: 93.75% (30 / 32)      - Lines: 88.7% (157 / 177)      + Lines: 93.65% (177 / 189)     

All files » lib/ » connection.js
@@ -677,7 +677,20 @@

476 477 478 -4791 +479 +480 +481 +482 +483 +484 +485 +486 +487 +488 +489 +490 +491 +4921       @@ -714,22 +727,22 @@

  1   -18 +25     -18 +25     -18 +25     -18 +25     -18 +25     -18 +25       @@ -776,38 +789,34 @@

      +25 +25     -  -18 -  -18 -  -  -18 -18 +25 +25     -18 +25       -18 -18 -18 +25 +25 +25     1 -139 +197         1 -23 +25   -23 -23 +25 +25       @@ -816,14 +825,16 @@

    1 -16 -16 -  +18 +18     1 -1 -1 +43 +15 +15 +15 +        @@ -835,147 +846,162 @@

    1 -16 -16 -16 -16 -16   +22 +11 +11   -1 -16 -16 -16     +11 +11         +    +  +      -1 -9 +22   -9 -2 -2 -    +22 +22 +22   -7 -7 -7 -7 -7 +22       1 +22 +22 +22 +22 +22   -9 -9   -9   +1 +43 +43 +43 +78 +  +43   -9       -9 1 -9 -  +1 +1 +1 +1   -9       +1 +11   +11 +11 +11 +11   +11   -9 -9 -3 -3 -3     +1 +8   -9 -9 -    -9 +8 +8   +8       -9   -9       +1 +189     +189 +189 +197 +197 +197 +197 +27 +  +      -1 -123 -  -  -123 -123 -120 -120 -120 -120 -120 -26 -26 +27 +8 +  +  +27 +27 3 3     -26 -26 +27 +27 +27 +  +  +  +27 +27   -26 +  +27   -26 +27           -123 +189         1 -47 +52     -47 +52     -47 -6 +52 +8       -46 +52 3     +52   -45   -45 +52 +  +52       @@ -988,13 +1014,13 @@

  1   -18 -18 +25 +25     -18 -18 -18 +25 +20 +20       @@ -1002,19 +1028,19 @@

      -18 +25       1 -18 -34 +20 +38         1 -18 +25       @@ -1032,9 +1058,9 @@

    1 -18 -18 -18 +25 +25 +25       @@ -1067,14 +1093,14 @@

    1 -4 -2 -2 +5 +3 +3 2 2 2   -  +1       @@ -1092,19 +1118,19 @@

    1 -  -  +1 +1           -  +1     1 -  -  +1 +1       @@ -1112,13 +1138,13 @@

  1   -18 -18 -16 +25 +25 +22   -18 -18 -18 +25 +25 +25       @@ -1132,14 +1158,14 @@

    1 -18 -  -  +25 +1 +1   -18 -18 -18 24 +24 +24 +30       @@ -1147,15 +1173,15 @@

    1 +8 +6 +6 2 -2 -2 -  -  -  +1 +1     - 
var logging = require('./logging');
+ 
var assert = process.env.HTTP2_ASSERT ? require('assert') : function noop() {};
  
 // The Connection class
 // ====================
@@ -1195,7 +1221,7 @@ 

Flow.call(this, 0);   // * logging: every method uses the common logger object - this._log = (log || logging.root).child({ component: 'connection' }); + this._log = log.child({ component: 'connection' });   // * stream management this._initializeStreamManagement(firstStreamId); @@ -1252,21 +1278,17 @@

// Initialization: Connection.prototype._initializeStreamManagement = function _initializeStreamManagement(firstStreamId) { // * streams are stored in two data structures: - // * `_streamsIds` is the primary registry of streams. It's a sparse array that serves as an - // id -> stream map. - // - // * `_streamPriorities` is an ordered set of streams that are allowed to send data. The order - // is determined by stream priorities. (currently, it's order of creation) - this._streamsIds = []; -  - this._streamPriorities = []; + // * `_streamsIn` is an id -> stream map of the streams that are allowed to receive frames. + // * `_streamsOut` is the list of all streams ordered by priority. + this._streamsIn = []; + this._streamsOut = [];   // * The next outbound stream ID and the last inbound stream id this._nextStreamId = firstStreamId; this._lastIncomingStream = 0;   // * Calling `_writeControlFrame` when there's an incoming stream with 0 as stream ID - this._streamsIds[0] = { upstream: { write: this._writeControlFrame.bind(this) } }; + this._streamsIn[0] = { upstream: { write: this._writeControlFrame.bind(this) } };   // * By default, the number of concurrent outbound streams is not limited. The `_streamLimit` can // be set by the SETTINGS_MAX_CONCURRENT_STREAMS setting. @@ -1276,14 +1298,14 @@

};   Connection.prototype._getIdOf = function _getIdOf(stream) { - return this._streamsIds.indexOf(stream); + return this._streamsIn.indexOf(stream); };   // `_writeControlFrame` is called when there's an incoming frame in the `_control` stream. It // broadcasts the message by creating an event on it. Connection.prototype._writeControlFrame = function _writeControlFrame(frame) { Eif ((frame.type === 'SETTINGS') || (frame.type === 'PING') || - (frame.type === 'GOAWAY') || (frame.type === 'WINDOW_UPDATE')) { + (frame.type === 'GOAWAY') || (frame.type === 'WINDOW_UPDATE')) { this._log.debug({ frame: frame }, 'Receiving connection level frame'); this.emit(frame.type, frame); } else { @@ -1292,106 +1314,106 @@

} };   -// Changing the stream count limit +// Method to manage the stream slot pool: Connection.prototype._updateStreamLimit = function _updateStreamLimit(newStreamLimit) { this._streamLimit = newStreamLimit; - this.emit('stream_slot_change'); + this.read(0); };   -// Freeing a slot in the stream pool -Connection.prototype._decreaseStreamCount = function _decreaseStreamCount() { - this._streamCount -= 1; - this.emit('stream_slot_change'); +Connection.prototype._changeStreamCount = function _changeStreamCount(change) { + if (change) { + this._log.trace({ count: this._streamCount, change: change }, 'Changing active stream count.'); + this._streamCount += change; + this.read(0); + } };   -// Creating a new *inbound or outbound* stream with the given `id` consists of two steps: +// Creating a new *inbound or outbound* stream with the given `id` (which is undefined in case of +// an outbound stream) consists of three steps: // -// 1. `var newstream = this._newStream(id);` -// * creates the new stream and registers it in `this._streamsIds` -// 2. `this._activateStream(newstream);` -// * adds it to `_streamPriorities` (in the appropriate position) -// * transforms 'readable' events on the stream to 'stream_readable' events on the connection -  -Connection.prototype._newStream = function _newStream(id) { - this._log.trace({ stream_id: id }, 'Adding new stream.'); - var stream = new Stream(this._log.child({ stream_id: id })); - this._streamsIds[id] = stream; +// 1. var stream = new Stream(this._log); +// 2. this._enableReceiving(stream, id); +// 2. this._enableSending(stream); +  +// Enabling receiving +Connection.prototype._enableReceiving = function _enableReceiving(stream, id) { + // * initiated stream without definite ID + if (id === undefined) { + id = this._nextStreamId; + this._nextStreamId += 2; + } +  + // * incoming stream with a legitim ID (larger than any previous and different parity than ours) + else Eif ((id > this._lastIncomingStream) && ((id - this._nextStreamId) % 2 !== 0)) { + this._lastIncomingStream = id; + } +  + // * incoming stream with invalid ID + else { + this._log.error({ stream_id: id, lastIncomingStream: this._lastIncomingStream }, + 'Invalid incoming stream ID.'); + this.emit('error', 'PROTOCOL_ERROR'); + return undefined; + } +  + assert(!(id in this._streamsIn)); +  + // * adding to `this._streamsIn` + this._log.trace({ s: stream, stream_id: id }, 'Enabling receiving for a stream.'); + this._streamsIn[id] = stream; this.emit('new_stream', stream, id); - return stream; +  + return id; };   -Connection.prototype._activateStream = function _activateStream(stream) { - this._log.trace({ stream_id: this._getIdOf(stream) }, 'Activating stream.'); - this._streamPriorities.push(stream); +// Enabling sending +Connection.prototype._enableSending = function _enableSending(stream) { + this._log.trace({ s: stream }, 'Enabling sending for a stream.'); + this._insert(stream); + stream.on('priority', this._reprioritize.bind(this, stream)); stream.upstream.on('readable', this.read.bind(this, 0)); + this.read(0); +}; +  +// `_insert(stream)` inserts `stream` in `_streamsOut` in a place determined by `stream._priority` +Connection.prototype._insert = function _insert(stream) { + var streams = this._streamsOut; + var index = 0; + while ((index < streams.length) && (streams[index]._priority <= stream._priority)) { + index += 1; + } + streams.splice(index, 0, stream); +}; +  +// `_reprioritize(stream)` moves `stream` to the apprioriate place in `_streamsOut` (according to +// its `_priority`) +Connection.prototype._reprioritize = function _reprioritize(stream) { + var index = this._streamsOut.indexOf(stream); + assert(index !== -1); + this._streamsOut.splice(index, 1); + this._insert(stream); };   // Creating an *inbound* stream with the given ID. It is called when there's an incoming frame to // a previously nonexistent stream. -// -// * Incoming stream IDs have to be greater than any previous incoming stream ID, and have to be of -// different parity than IDs used for outbound streams. -// * It creates and activates the stream. -// * Emits 'stream' event with the new stream. Connection.prototype._createIncomingStream = function _createIncomingStream(id) { this._log.debug({ stream_id: id }, 'New incoming stream.');   - if ((id <= this._lastIncomingStream) || ((id - this._nextStreamId) % 2 === 0)) { - this._log.error({ stream_id: id, lastIncomingStream: this._lastIncomingStream }, 'Invalid incoming stream ID.'); - this.emit('error', 'PROTOCOL_ERROR'); - return undefined; - } -  - this._lastIncomingStream = id; - var stream = this._newStream(id); - this._activateStream(stream); + var stream = new Stream(this._log); + this._enableReceiving(stream, id); + this._enableSending(stream); this.emit('stream', stream, id); +  return stream; };   -// Creating an *outbound* stream with the next available ID +// Creating an *outbound* stream Connection.prototype.createStream = function createStream() { - // * Allocating a new ID with the appropriate parity. - var id = this._nextStreamId; - this._nextStreamId += 2; -  - this._log.trace({ stream_id: id }, 'Creating new outbound stream.'); -  - // * Creating a new Stream. - var stream = this._newStream(id); -  - // * Activating the created stream is only possible when there's enough space in the stream pool. - // `tryToActivate` tries to activate the stream until it finally succeeds. - var self = this; - function tryToActivate() { - Iif (self._streamCount >= self._streamLimit) { - self.once('stream_slot_change', tryToActivate); - } else { - self._activateStream(stream); - } - } -  - // * Starting activation process when - // * it becomes 'active' (tries to send a frame) - // * and if it is a promised stream, the PUSH_PROMISE is sent - var promisePending = false; - stream.once('promise_initiated', function() { - promisePending = true; - stream.once('promise_sent', function() { - promisePending = false; - }); - }); -  - stream.once('active', function() { - Iif (promisePending) { - stream.once('promise_sent', tryToActivate); - } else { - tryToActivate(); - } - }); + this._log.trace('Creating new outbound stream.');   - // * When the stream becomes inactive, decreasing the `_streamCount` - stream.once('inactive', this._decreaseStreamCount.bind(this)); + // * Receiving is enabled immediately, and an ID gets assigned to the stream + var stream = new Stream(this._log); + this._enableSending(stream);   return stream; }; @@ -1406,20 +1428,35 @@

  // * Looping through the active streams in priority order and forwarding frames from streams stream_loop: - for (var i = 0; i < this._streamPriorities.length; i++) { - var stream = this._streamPriorities[i]; + for (var i = 0; i < this._streamsOut.length; i++) { + var stream = this._streamsOut[i]; var id = this._getIdOf(stream); var frame; - var unshiftRemainder = stream.upstream.unshift.bind(stream.upstream); while (frame = stream.upstream.read()) { + Iif (this._streamCount + frame.count_change > this._streamLimit) { + stream.upstream.unshift(frame); + continue stream_loop; + } +  + if (id === -1) { + id = this._enableReceiving(stream); + } +  frame.stream = id; if (frame.type === 'PUSH_PROMISE') { - frame.promised_stream.emit('promise_sent'); - frame.promised_stream = this._getIdOf(frame.promised_stream); + setImmediate(this._enableSending.bind(this, frame.promised_stream)); + frame.promised_stream = this._enableReceiving(frame.promised_stream); }   - this._log.trace({ stream_id: id, frame: frame }, 'Trying to forward outgoing frame'); - var moreNeeded = this._push(frame, unshiftRemainder); + this._log.trace({ s: stream, frame: frame }, 'Trying to forward outgoing frame'); + var remainder = null; + var moreNeeded = this._push(frame, function(remainderFrame) { + stream.upstream.unshift(remainder = remainderFrame); + }); +  + Eif (!remainder) { + this._changeStreamCount(frame.count_change); + }   Iif (moreNeeded === null) { continue stream_loop; @@ -1438,7 +1475,7 @@

this._log.trace({ frame: frame }, 'Forwarding incoming frame');   // * gets the appropriate stream from the stream registry - var stream = this._streamsIds[frame.stream]; + var stream = this._streamsIn[frame.stream];   // * or creates one if it's not in `this.streams` if (!stream) { @@ -1449,6 +1486,8 @@

if (frame.type === 'PUSH_PROMISE') { frame.promised_stream = this._createIncomingStream(frame.promised_stream); } +  + frame.count_change = this._changeStreamCount.bind(this);   // * and writes it to the `stream`'s `upstream` stream.upstream.write(frame); @@ -1466,13 +1505,13 @@

// Settings management initialization: Connection.prototype._initializeSettingsManagement = function _initializeSettingsManagement(settings) { // * Sending the initial settings. - this._log.info('Sending the first SETTINGS frame as part of the connection header.'); + this._log.debug('Sending the first SETTINGS frame as part of the connection header.'); this.set(settings || defaultSettings);   // * Checking that the first frame the other endpoint sends is SETTINGS this.once('receiving', function(frame) { Eif ((frame.stream === 0) && (frame.type === 'SETTINGS')) { - this._log.info('Receiving the first SETTINGS frame as part of the connection header.'); + this._log.debug('Receiving the first SETTINGS frame as part of the connection header.'); } else { this._log.fatal({ frame: frame }, 'Invalid connection header: first frame is not SETTINGS.'); this.emit('error'); @@ -1547,12 +1586,12 @@

Connection.prototype._receivePing = function _receivePing(frame) { if (frame.flags.PONG) { var id = frame.data.toString('hex'); - Eif (id in this._pings) { + if (id in this._pings) { this._log.debug({ data: frame.data }, 'Receiving answer for a PING.'); this._pings[id](); delete this._pings[id]; } else { - this._log.warn({ data: frame.data }, 'Unsolicited PING answer.'); + this._log.warn({ data: frame.data }, 'Unsolicited PING answer.'); }   } else { @@ -1569,20 +1608,20 @@

};   // Terminating the connection -Connection.prototype.close = function close(error) { - this._log.info({ error: error }, 'Closing the connection'); - this.push({ +Connection.prototype.close = function close(error) { + this._log.info({ error: error }, 'Closing the connection'); + this.push({ stream: 0, type: 'GOAWAY', last_stream: this._lastIncomingStream, error: error || 'NO_ERROR' }); - this.push(null); + this.push(null); };   -Connection.prototype._receiveGoaway = function _receiveGoaway(frame) { - this._log.info({ error: frame.error }, 'Other end closed the connection'); - this.push(null); +Connection.prototype._receiveGoaway = function _receiveGoaway(frame) { + this._log.info({ error: frame.error }, 'Other end closed the connection'); + this.push(null); };   // Flow control @@ -1596,7 +1635,7 @@

}); this.on('SETTINGS_INITIAL_WINDOW_SIZE', this._setInitialStreamWindowSize); this.on('SETTINGS_FLOW_CONTROL_OPTIONS', this._setStreamFlowControl); - this._streamsIds[0].upstream.setInitialWindow = function noop() {}; + this._streamsIn[0].upstream.setInitialWindow = function noop() {};   // Flow control for incoming frames is not yet supported, and is turned off in the initial // SETTINGS frame. @@ -1610,13 +1649,13 @@

// stream by calling the `setInitialStreamWindowSize` method. The window size has to be modified by // the difference between the new value and the old value. Connection.prototype._setInitialStreamWindowSize = function _setInitialStreamWindowSize(size) { - Iif ((this._initialStreamWindowSize === Infinity) && (size !== Infinity)) { - this._log.error('Trying to manipulate initial flow control window size after flow control was turned off.'); - this.emit('error', 'FLOW_CONTROL_ERROR'); + if ((this._initialStreamWindowSize === Infinity) && (size !== Infinity)) { + this._log.error('Trying to manipulate initial flow control window size after flow control was turned off.'); + this.emit('error', 'FLOW_CONTROL_ERROR'); } else { this._log.debug({ size: size }, 'Changing stream initial window size.'); this._initialStreamWindowSize = size; - this._streamsIds.forEach(function(stream) { + this._streamsIn.forEach(function(stream) { stream.upstream.setInitialWindow(size); }); } @@ -1625,12 +1664,12 @@

// `_setStreamFlowControl()` may be used to disable/enable flow control. In practice, it is just // for turning off flow control since it can not be turned on. Connection.prototype._setStreamFlowControl = function _setStreamFlowControl(disable) { - Eif (disable) { + if (disable) { this._increaseWindow(Infinity); this._setInitialStreamWindowSize(Infinity); - } else if (this._initialStreamWindowSize === Infinity) { - this._log.error('Trying to re-enable flow control after it was turned off.'); - this.emit('error', 'FLOW_CONTROL_ERROR'); + } else if (this._initialStreamWindowSize === Infinity) { + this._log.error('Trying to re-enable flow control after it was turned off.'); + this.emit('error', 'FLOW_CONTROL_ERROR'); } };  

@@ -1638,7 +1677,7 @@

diff --git a/coverage/lcov-report/lib/endpoint.js.html b/coverage/lcov-report/lib/endpoint.js.html index 3e7ac06f..c9b11b35 100644 --- a/coverage/lcov-report/lib/endpoint.js.html +++ b/coverage/lcov-report/lib/endpoint.js.html @@ -183,16 +183,16 @@

Code coverage report for lib/endpoint.js

- Statements: 90.91% (70 / 77)      + Statements: 86.75% (72 / 83)      - Branches: 75% (12 / 16)      + Branches: 68.75% (11 / 16)      - Functions: 83.33% (10 / 12)      + Functions: 76.92% (10 / 13)      - Lines: 90.91% (70 / 77)      + Lines: 86.75% (72 / 83)     

All files » lib/ » endpoint.js
@@ -382,8 +382,20 @@

181 182 183 -1841 -1 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +1971 1 1 1 @@ -525,9 +537,9 @@

    1 -29 -29 -16 +31 +31 +18       @@ -565,8 +577,21 @@

1     - 
var logging      = require('./logging');
-var Serializer   = require('./framer').Serializer;
+ 
+ 
+ 
+ 
+1
+ 
+1
+1
+ 
+ 
+ 
+ 
+ 
+ 
+ 
var Serializer   = require('./framer').Serializer;
 var Deserializer = require('./framer').Deserializer;
 var Compressor   = require('./compressor').Compressor;
 var Decompressor = require('./compressor').Decompressor;
@@ -583,7 +608,7 @@ 

Duplex.call(this);   // * Initializing logging infrastructure - this._log = (log || logging.root).child({ component: 'endpoint' }); + this._log = log.child({ component: 'endpoint', e: this });   // * First part of the handshake process: sending and receiving the client connection header // prelude. @@ -615,7 +640,7 @@

  // Writing the client header is simple and synchronous. Endpoint.prototype._writePrelude = function _writePrelude() { - this._log.info('Sending the client connection header prelude.'); + this._log.debug('Sending the client connection header prelude.'); this.push(CLIENT_PRELUDE); };   @@ -642,7 +667,7 @@

// * if the whole header is over, and there were no error then restore the original `_write` // and call it with the remaining part of the current chunk Eif (cursor === CLIENT_PRELUDE.length) { - this._log.info('Successfully received the client connection header prelude.'); + this._log.debug('Successfully received the client connection header prelude.'); delete this._write; chunk = chunk.slice(cursor - offset); this._write(chunk, encoding, done); @@ -748,12 +773,26 @@

Endpoint.prototype.close = function close(error) { this._connection.close(error); }; +  +// Bunyan serializers +// ------------------ +  +exports.serializers = {}; +  +var nextId = 0; +exports.serializers.e = function(endpoint) { + if (!('id' in endpoint)) { + endpoint.id = nextId; + nextId += 1; + } + return endpoint.id; +};  

diff --git a/coverage/lcov-report/lib/flow.js.html b/coverage/lcov-report/lib/flow.js.html index 232a32df..03070a46 100644 --- a/coverage/lcov-report/lib/flow.js.html +++ b/coverage/lcov-report/lib/flow.js.html @@ -179,20 +179,20 @@ -
+

Code coverage report for lib/flow.js

- Statements: 80.37% (86 / 107)      + Statements: 72.64% (77 / 106)      - Branches: 80.65% (50 / 62)      + Branches: 67.74% (42 / 62)      - Functions: 76.47% (13 / 17)      + Functions: 58.82% (10 / 17)      - Lines: 80.37% (86 / 107)      + Lines: 72.64% (77 / 106)     

All files » lib/ » flow.js
@@ -538,7 +538,6 @@

337 338 3391 -1       @@ -610,15 +609,15 @@

    1 -42 +68   -42 -42 -42 +68 +68 +68   -42 -42 -42 +68 +68 +68   1   @@ -635,43 +634,43 @@

    1 -77 +105   -77 -6 +105 +19     -77 -8 -8 -8 -7 +105 +  +  +  +    -8 +          -69 +105     -75 +105   -5 +3           1 -7 -7 -3 +  +  +          -3 +        @@ -706,8 +705,6 @@

      -1 -    1   @@ -718,27 +715,28 @@

    1 -341 -341 +524 +524         -341 +524           1 -27 +34   -27 -27 +34 +34       -27 +34 +        @@ -749,11 +747,13 @@

    1 -83 -83 -83   -83 +1 +111 +111 +111 +  +111       @@ -774,40 +774,40 @@

      -83 -83 -83 -83 -12 +111 +111 +111 +111 +19   -12 -12 +19 +19   -83 +111     -83 +111     -83 +111       -83 +111       1 -57 -  +84 +2   -57 -57 -57 +82 +82 +82     -57 -57 +84 +84       @@ -817,8 +817,8 @@

    1 -3 -3 +12 +12       @@ -835,17 +835,17 @@

1   1 -29 -2 -2 +37 +3 +3   -27 -27 -27 +34 +34 +34       -27 +34       @@ -859,7 +859,7 @@

    1 -5 +3       @@ -867,16 +867,15 @@

    1 -22 -22 +28 +28       1     - 
var assert = process.env.HTTP2_ASSERT ? require('assert') : function noop() {};
-var logging = require('./logging');
+ 
var assert = process.env.HTTP2_ASSERT ? require('assert') : function noop() {};
  
 // The Flow class
 // ==============
@@ -956,7 +955,7 @@ 

  this._ended = false; this._received = 0; - this._remoteFlowControlDisabled = false; + this._remoteFlowControlDisabled = true; } Flow.prototype = Object.create(Duplex.prototype, { constructor: { value: Flow } });   @@ -979,13 +978,13 @@

this._ended = true; }   - if ((frame.type === 'DATA') && (frame.data.length > 0) && !this._remoteFlowControlDisabled) { - this._receive(frame, function() { - this._received += frame.data.length; - if (!this._restoreWindowTimer) { - this._restoreWindowTimer = setImmediate(this._restoreWindow.bind(this)); + Iif ((frame.type === 'DATA') && (frame.data.length > 0) && !this._remoteFlowControlDisabled) { + this._receive(frame, function() { + this._received += frame.data.length; + if (!this._restoreWindowTimer) { + this._restoreWindowTimer = setImmediate(this._restoreWindow.bind(this)); } - callback(); + callback(); }.bind(this)); }   @@ -994,22 +993,22 @@

}   if ((frame.type === 'WINDOW_UPDATE') && - ((this._flowControlId === undefined) || (frame.stream === this._flowControlId))) { + ((this._flowControlId === undefined) || (frame.stream === this._flowControlId))) { this._updateWindow(frame); } };   // `_restoreWindow` basically acknowledges the DATA frames received since it's last call. It sends // a WINDOW_UPDATE that restores the flow control window of the remote end. -Flow.prototype._restoreWindow = function _restoreWindow() { - delete this._restoreWindowTimer; - if (!this._ended && !this._remoteFlowControlDisabled && (this._received > 0)) { - this.push({ +Flow.prototype._restoreWindow = function _restoreWindow() { + delete this._restoreWindowTimer; + if (!this._ended && !this._remoteFlowControlDisabled && (this._received > 0)) { + this.push({ type: 'WINDOW_UPDATE', stream: this._flowControlId, window_size: this._received }); - this._received = 0; + this._received = 0; } };   @@ -1044,8 +1043,6 @@

// | | // +----------------------------------------------------+   -var MAX_HTTP_PAYLOAD_SIZE = 16383; // TODO: this is repeated in multiple files -  // `_send` is called when more frames should be pushed to the output buffer. Flow.prototype._send = function _send() { throw new Error('The _send() method has to be overridden by the child class!'); @@ -1086,11 +1083,14 @@

// synchronously before returning with the frame it was not able to push to the output queue. The // remainder may be the whole frame or the remaining part of a DATA frame. The return value is // similar to `push` except that it returns `null` if it did not push anything to the output queue. +  +var MAX_PAYLOAD_SIZE = 4096; // Must not be greater than MAX_HTTP_PAYLOAD_SIZE which is 16383 +  Flow.prototype._push = function _push(frame, remainderCallback) { do { var forwardable = undefined, remainder = undefined; Eif ((frame === null) || (frame.type !== 'DATA') || - ((frame.data.length <= this._window) && (frame.data.length <= MAX_HTTP_PAYLOAD_SIZE))) { + ((frame.data.length <= this._window) && (frame.data.length <= MAX_PAYLOAD_SIZE))) { forwardable = frame; }   @@ -1099,7 +1099,7 @@

}   else { - var chunkSize = Math.min(this._window, MAX_HTTP_PAYLOAD_SIZE); + var chunkSize = Math.min(this._window, MAX_PAYLOAD_SIZE); forwardable = { stream: frame.stream, type: 'DATA', @@ -1136,8 +1136,8 @@

  // Push `frame` into the flow control queue, or if it's empty, then directly into the output queue Flow.prototype.push = function push(frame) { - Iif (frame === null) { - this._log.debug('Enqueueing outgoing End Of Stream'); + if (frame === null) { + this._log.debug('Enqueueing outgoing End Of Stream'); } else { frame.flags = frame.flags || {}; this._log.debug({ frame: frame }, 'Enqueueing outgoing frame'); @@ -1218,7 +1218,7 @@

diff --git a/coverage/lcov-report/lib/framer.js.html b/coverage/lcov-report/lib/framer.js.html index 58fe5144..50f39482 100644 --- a/coverage/lcov-report/lib/framer.js.html +++ b/coverage/lcov-report/lib/framer.js.html @@ -183,16 +183,16 @@

Code coverage report for lib/framer.js

- Statements: 89.04% (203 / 228)      + Statements: 87.55% (204 / 233)      - Branches: 73.53% (50 / 68)      + Branches: 68.57% (48 / 70)      - Functions: 87.1% (27 / 31)      + Functions: 83.87% (26 / 31)      - Lines: 89.04% (203 / 228)      + Lines: 87.55% (204 / 233)     

All files » lib/ » framer.js
@@ -892,18 +892,27 @@

691 692 693 -694  +694 +695 +696 +697 +698 +699 +700 +701 +702 +703        1 -1   1   1 1   +1       @@ -926,20 +935,22 @@

    1 -18 +19   -18 +19   -18 -18 -18 +19 +19 +19   -18 -38 -38 +19 +40 +    +40   -18 +  +19       @@ -966,62 +977,64 @@

    1 -41 -41 -41 -41 -23 +43 +43 +43 +43 +24           1 -25 +30   -25 +30 +    -25   +30   -48 -48 -48 -48   +50 +50 +50 +50           -48 -18 -18   +50 +19 +19             -48 -18 -18 -18 +  +50 +19 +19 +19       -18 -18 +19 +19         -18 +19       -25 +30       @@ -1081,47 +1094,47 @@

1   1 -28 -  -28 -28 -30 +29   -28 -28 +29 +29 +31   -28 -28 +29 +29   -28 -28 29 29 +  29 -5 +29 +30 +30 +30 +6     -28 +29   -28 -28 +29 +29   -28 +29     1 -28 +29   -28 +29   -28 -28 -28 -28 -38 +29 +29 +29 +29 +40     -28 +29       @@ -1155,11 +1168,11 @@

1   1 -4 +5     1 -4 +5       @@ -1541,6 +1554,7 @@

      +1       @@ -1579,6 +1593,10 @@

      +  +  +  +        @@ -1589,14 +1607,14 @@

// the Serializer and the Deserializer // [1]: http://nodejs.org/api/stream.html#stream_class_stream_transform // [2]: http://nodejs.org/api/stream.html#stream_new_stream_readable_options -var assert = process.env.HTTP2_ASSERT ? require('assert') : function noop() {}; -var logging = require('./logging'); +var assert = process.env.HTTP2_ASSERT ? require('assert') : function noop() {};   var Transform = require('stream').Transform;   exports.Serializer = Serializer; exports.Deserializer = Deserializer;   +var logData = Boolean(process.env.HTTP2_LOG_DATA);   // Serializer // ---------- @@ -1610,7 +1628,7 @@

// array buffers buffer   function Serializer(log) { - this._log = (log || logging.root).child({ component: 'serializer' }); + this._log = log.child({ component: 'serializer' }); Transform.call(this, { objectMode: true }); } Serializer.prototype = Object.create(Transform.prototype, { constructor: { value: Serializer } }); @@ -1628,7 +1646,9 @@

Serializer.commonHeader(frame, buffers);   for (var i = 0; i < buffers.length; i++) { - this._log.trace({ data: buffers[i] }, 'Outgoing data'); + Iif (logData) { + this._log.trace({ data: buffers[i] }, 'Outgoing data'); + } this.push(buffers[i]); }   @@ -1647,7 +1667,7 @@

// object header properties payload properties   function Deserializer(log) { - this._log = (log || logging.root).child({ component: 'deserializer' }); + this._log = log.child({ component: 'deserializer' }); Transform.call(this, { objectMode: true }); this._next(COMMON_HEADER_SIZE); } @@ -1672,7 +1692,9 @@

Deserializer.prototype._transform = function _transform(chunk, encoding, done) { var cursor = 0;   - this._log.trace({ data: chunk }, 'Incoming data'); + Iif (logData) { + this._log.trace({ data: chunk }, 'Incoming data'); + }   while(cursor < chunk.length) { // The content of an incoming buffer is first copied to `_buffer`. If it can't hold the full @@ -2234,11 +2256,12 @@

  // [Bunyan serializers](https://github.com/trentm/node-bunyan#serializers) to improve logging output // for debug messages emitted in this component. +exports.serializers = {};   // * `frame` serializer: it transforms data attributes from Buffers to hex strings and filters out // flags that are not present. var frameCounter = 0; -logging.serializers.frame = function(frame) { +exports.serializers.frame = function(frame) { if (!frame) { return null; } @@ -2267,6 +2290,10 @@

} }   + if (frame.promised_stream instanceof Object) { + logEntry.promised_stream = 'stream-' + frame.promised_stream.id; + } +  logEntry.flags = Object.keys(frame.flags || {}).filter(function(name) { return frame.flags[name] === true; }); @@ -2275,7 +2302,7 @@

};   // * `data` serializer: it simply transforms a buffer to a hex string. -logging.serializers.data = function(data) { +exports.serializers.data = function(data) { return data.toString('hex'); };  

@@ -2283,7 +2310,7 @@

diff --git a/coverage/lcov-report/lib/http.js.html b/coverage/lcov-report/lib/http.js.html index 779dee6f..4c6c2fc4 100644 --- a/coverage/lcov-report/lib/http.js.html +++ b/coverage/lcov-report/lib/http.js.html @@ -183,16 +183,16 @@

Code coverage report for lib/http.js

- Statements: 76.76% (251 / 327)      + Statements: 71.77% (272 / 379)      - Branches: 47.62% (50 / 105)      + Branches: 41.43% (58 / 140)      - Functions: 63.83% (30 / 47)      + Functions: 59.02% (36 / 61)      - Lines: 76.76% (251 / 327)      + Lines: 71.77% (272 / 379)     

All files » lib/ » http.js
@@ -952,7 +952,147 @@

751 752 753 -754  +754 +755 +756 +757 +758 +759 +760 +761 +762 +763 +764 +765 +766 +767 +768 +769 +770 +771 +772 +773 +774 +775 +776 +777 +778 +779 +780 +781 +782 +783 +784 +785 +786 +787 +788 +789 +790 +791 +792 +793 +794 +795 +796 +797 +798 +799 +800 +801 +802 +803 +804 +805 +806 +807 +808 +809 +810 +811 +812 +813 +814 +815 +816 +817 +818 +819 +820 +821 +822 +823 +824 +825 +826 +827 +828 +829 +830 +831 +832 +833 +834 +835 +836 +837 +838 +839 +840 +841 +842 +843 +844 +845 +846 +847 +848 +849 +850 +851 +852 +853 +854 +855 +856 +857 +858 +859 +860 +861 +862 +863 +864 +865 +866 +867 +868 +869 +870 +871 +872 +873 +874 +875 +876 +877 +878 +879 +880 +881 +882 +883 +884 +885 +886  +  +  +  +  +  +  +  +        @@ -1053,7 +1193,6 @@

      -1 1 1 1 @@ -1075,6 +1214,9 @@

      +  +  +1 1     @@ -1082,6 +1224,20 @@

      +  +10 +  +  +  +1 +1 +1 +6 +  +  +  +  +  1   2 @@ -1112,7 +1268,6 @@

  2 2 -2   2   @@ -1127,8 +1282,8 @@

    1 +3 2 -1   1   @@ -1187,6 +1342,7 @@

1 1 1 +1       @@ -1198,6 +1354,7 @@

      +        @@ -1213,10 +1370,10 @@

  1 1 -1   1   +  1   1 @@ -1229,6 +1386,8 @@

  1   +1 +    1   @@ -1256,31 +1415,48 @@

    1 -1         -1   1 -1   +  +  +  +  +  +  +  +  +    -1           +  +  +1 1 +  +  1   +  +  +1 1 +  +      1   +1 +1     1 @@ -1289,7 +1465,10 @@

      +1 +1   +1       @@ -1299,23 +1478,29 @@

      +1 +  +  +  +  +  +      1 -4 -4 +7 +7         -4 -4       +1 +      -1       @@ -1325,12 +1510,23 @@

    1 -7 -7 +  +  +  +  +  +1 +4 +4 +4         +4 +  +  +        @@ -1349,6 +1545,7 @@

1   1 +  1 1 1 @@ -1425,10 +1622,22 @@

      +  +  +  +      +  +  +  +1 +1     +1 +  +        @@ -1439,11 +1648,15 @@

1 1 1 +  +  +1 1         +  1 1   @@ -1462,6 +1675,9 @@

    1 +1 +  +1   1 1 @@ -1495,14 +1711,11 @@

      -  -  -  -  1 1 1 1 +  1 1   @@ -1519,6 +1732,8 @@

1 1 1 +  +1 1 1 1 @@ -1560,13 +1775,14 @@

  1   -1       -1 -1 +  +  +    +1       @@ -1575,7 +1791,7 @@

1   1 -1 +  1 1   @@ -1583,7 +1799,6 @@

  1 1 -1   1   @@ -1592,6 +1807,11 @@

    1 +  +1 +  +  +  1 1 1 @@ -1606,11 +1826,17 @@

1 1   +1 +    1   +      +  +  +1       @@ -1618,29 +1844,68 @@

      +  +  +1 +3 +  +  +3 +  +  +  +  1     +  +        1     +  +        1     +  +          +1 +  +  +  +  +  +  +        1 +  +  +  +  +  +  +  +  +  +  +  +  +  +  1 1   @@ -1673,16 +1938,6 @@

1     -1 -  -  -  -  -  -  -  -  -        @@ -1690,6 +1945,7 @@

      +        @@ -1700,11 +1956,19 @@

      +  +  +1 +  1 +  +    1     +  +1  
// Public API
 // ==========
  
@@ -1717,11 +1981,21 @@ 

// Additional and modified API elements: // // - **Class: http2.Server** +// - **Event: 'upgrade'**: upgrade is deprecated in HTTP/2 so it will never be emitted for HTTP/2 +// requests. // - **Event: 'connection' (socket, [endpoint])**: there's a second argument if the negotiation of // HTTP/2 was successful: the reference to the [Endpoint](endpoint.html) object tied to the // socket. +// - **Event: 'timeout'**: only emitted for HTTP/1 responses. +// - **server.setTimeout(msecs, callback)**: only affects HTTP/1 connections. +// - **server.timeout**: only affects HTTP/1 connections. +// +// - **http2.createServer(options, [requestListener])**: additional option: +// - **log**: an optional [bunyan](https://github.com/trentm/node-bunyan) logger object // // - **Class: http2.ServerResponse** +// - **Event: 'close'**: only emitted for HTTP/1 responses. +// - **Event: 'timeout'**: only emitted for HTTP/1 responses. // - **response.push(options)**: initiates a server push. `options` describes the 'imaginary' // request to which the push stream is a response; the possible options are identical to the // ones accepted by `http2.request`. Returns a ServerResponse object that can be used to send @@ -1730,20 +2004,34 @@

// ignored since [it's not supported in HTTP/2][3] // - **response.setTimeout(timeout, [callback])**: will be ignored for HTTP/2 requests // +// - **Class: http2.Agent** +// - **new Agent(options)**: additional option: +// - **log**: an optional [bunyan](https://github.com/trentm/node-bunyan) logger object +// - **agent.maxSockets**: only affects HTTP/1 connection pool. For HTTP/2, there's always one +// connection per host. +// - **agent.sockets**: only contains TCP sockets that corresponds to HTTP/1 requests. +// - **agent.endpoints**: contains [Endpoint](endpoint.html) objects for HTTP/2 connections. +// // - **Class: http2.ClientRequest** -// - **Event: 'socket' (socket)**: it's not emitted in case of an HTTP/2 incoming message. -// - **Event: 'stream' (stream)**: in case of an HTTP/2 incoming message, a reference to the -// associated [HTTP/2 Stream](stream.html) object is emitted. +// - **Event: 'upgrade'**: upgrade is deprecated in HTTP/2 so it will never be emitted for HTTP/2 +// requests. +// - **Event: 'socket' (socket)**: in case of an HTTP/2 incoming message, `socket` is a reference +// to the associated [HTTP/2 Stream](stream.html) object (and not to the TCP socket). +// - **Event: 'push' (promise)**: signals the intention of a server push associated to this +// request. `promise` is an IncomingPromise. If there's no listener for this event, the server +// push is cancelled. // - **request.setTimeout(timeout, [callback])**: will be ignored for HTTP/2 requests // - **request.setNoDelay([noDelay])**: will be ignored for HTTP/2 requests // - **request.setSocketKeepAlive([enable], [initialDelay])**: will be ignored for HTTP/2 requests +// - **request.setPriority(priority)**: assign a priority to this request. `priority` is a number +// between 0 (highest priority) and 2^31-1 (lowest priority). Default value is 2^30. // // - **Class: http2.IncomingMessage** // - has two subclasses for easier interface description: **IncomingRequest** and // **IncomingResponse** -// - **message.socket**: it's not present in case of an HTTP/2 incoming message. -// - **message.stream**: in case of an HTTP/2 incoming message, it's a reference to the associated -// [HTTP/2 Stream](stream.html) object. +// - **Event: 'close'**: only emitted for HTTP/1 messages. +// - **message.socket**: in case of an HTTP/2 incoming message, it's a reference to the associated +// [HTTP/2 Stream](stream.html) object (and not to the TCP socket). // - **message.setTimeout(timeout, [callback])**: will be ignored for HTTP/2 requests // // - **Class: http2.IncomingRequest (IncomingMessage)** @@ -1754,49 +2042,33 @@

// replaces the old Host header field, but node-http2 will add Host to the `message.headers` for // backwards compatibility. // -// - **Class: http2.IncomingResponse (IncomingMessage)** -// - **Event: 'push' (promise)**: signals the intention of a server push. `promise` is an -// IncomingPromise. If there's no listener for this event, the server push is cancelled. -// // - **Class: http2.IncomingPromise (IncomingRequest)** // - contains the metadata of the 'imaginary' request to which the server push is an answer. // - **Event: 'response' (response)**: signals the arrival of the actual push stream. `response` // is an IncomingResponse. +// - **Event: 'push' (promise)**: signals the intention of a server push associated to this +// request. `promise` is an IncomingPromise. If there's no listener for this event, the server +// push is cancelled. // - **promise.cancel()**: cancels the promised server push. +// - **promise.setPriority(priority)**: assign a priority to this push stream. `priority` is a +// number between 0 (highest priority) and 2^31-1 (lowest priority). Default value is 2^30. // // API elements not yet implemented: // // - **Class: http2.Server** // - **Event: 'checkContinue'** // - **Event: 'connect'** -// - **Event: 'upgrade'** -// - **Event: 'clientError'** // - **server.maxHeadersCount** -// - **server.setTimeout(msecs, callback)** -// - **server.timeout** // // - **Class: http2.ServerResponse** -// - **Event: 'close'** // - **response.writeContinue()** // - **response.addTrailers(headers)** // -// - **http.request(options, callback)**: not implemented options: -// - **auth** -// - **agent** -// -// - **Class: http2.Agent** -// - **agent.maxSockets** -// - **agent.sockets** -// - **agent.requests** -// // - **Class: http2.ClientRequest** // - **Event: 'connect'** -// - **Event: 'upgrade'** // - **Event: 'continue'** -// - **request.abort()** // // - **Class: http2.IncomingMessage** -// - **Event: 'close'** // - **message.trailers** // // [1]: http://nodejs.org/api/https.html @@ -1814,7 +2086,6 @@

var Readable = require('stream').Readable; var Writable = require('stream').Writable; var Endpoint = require('./endpoint').Endpoint; -var logging = require('./logging'); var http = require('http'); var https = require('https');   @@ -1826,22 +2097,39 @@

// [1]: http://tools.ietf.org/html/draft-ietf-httpbis-http2-04 var implementedVersion = 'HTTP-draft-04/2.0';   -// This should hold sane defaults. These can be overridden by the user using the options -// configuration object in client and server APIs. -var default_settings = { - SETTINGS_MAX_CONCURRENT_STREAMS: 100 +// Logging +// ------- +  +// Logger shim, used when no logger is provided by the user. +function noop() {} +var defaultLogger = { + fatal: noop, + error: noop, + warn : noop, + info : noop, + debug: noop, + trace: noop, +  + child: function() { return this; } };   +// Bunyan serializers exported by submodules that are worth adding when creating a logger. +exports.serializers = {}; +var modules = ['./framer', './compressor', './flow', './connection', './stream', './endpoint']; +modules.forEach(function(module) { + util._extend(exports.serializers, require(module).serializers); +}); +  // IncomingMessage class // ---------------------   -function IncomingMessage(stream, log) { +function IncomingMessage(stream) { // * This is basically a read-only wrapper for the [Stream](stream.html) class. PassThrough.call(this); stream.pipe(this); - this.stream = stream; + this.socket = this.stream = stream;   - this._log = log; + this._log = stream._log.child({ component: 'http' });   // * HTTP/2.0 does not define a way to carry the version identifier that is included in the // HTTP/1.1 request/status line. Version is always 2.0. @@ -1859,11 +2147,10 @@

// OutgoingMessage class // ---------------------   -function OutgoingMessage(log) { +function OutgoingMessage() { // * This is basically a read-only wrapper for the [Stream](stream.html) class. Writable.call(this);   - this._log = log; this._headers = {}; this.headersSent = false;   @@ -1924,7 +2211,7 @@

function Server(options) { options = options || {};   - this._log = (options.log || logging.root).child({ component: 'http' }); + this._log = (options.log || defaultLogger).child({ component: 'http' }); this._settings = options.settings;   var start = this._start.bind(this); @@ -1933,6 +2220,7 @@

// HTTP2 over TLS (using NPN instean of ALPN) Eif ((options.key && options.cert) || options.pfx) { this._log.info('Creating HTTP/2 server over TLS/NPN'); + this._mode = 'tls'; options.NPNProtocols = [implementedVersion, 'http/1.1', 'http/1.0']; this._server = https.createServer(options); this._originalSocketListeners = this._server.listeners('secureConnection'); @@ -1950,6 +2238,7 @@

// HTTP2 over plain TCP else if (options.plain) { this._log.info('Creating HTTP/2 server over plain TCP'); + this._mode = 'plain'; this._server = net.createServer(start); }   @@ -1965,20 +2254,22 @@

  // Starting HTTP/2 Server.prototype._start = function _start(socket) { - var logger = this._log.child({ client: socket.remoteAddress + ':' + socket.remotePort }); - logger.info('Incoming HTTP/2 connection'); + var endpoint = new Endpoint('SERVER', this._settings, this._log);   - var endpoint = new Endpoint('SERVER', this._settings, logger); + this._log.info({ e: endpoint, client: socket.remoteAddress + ':' + socket.remotePort }, + 'New incoming HTTP/2 connection');   endpoint.pipe(socket).pipe(endpoint);   var self = this; endpoint.on('stream', function _onStream(stream) { - var response = new OutgoingResponse(endpoint, stream, logger); - var request = new IncomingRequest(stream, logger); + var response = new OutgoingResponse(stream); + var request = new IncomingRequest(stream);   request.once('ready', self.emit.bind(self, 'request', request, response)); }); +  + endpoint.on('error', this.emit.bind(this, 'clientError'));   this.emit('connection', socket, endpoint); }; @@ -2008,6 +2299,39 @@

this._server.close(callback); };   +OutgoingRequest.prototype.setTimeout = function setTimeout(timeout, callback) { + if (this._mode === 'tls') { + this._server.setTimeout(timeout, callback); + } +}; +  +Object.defineProperty(OutgoingRequest.prototype, 'timeout', { + get: function getTimeout() { + if (this._mode === 'tls') { + return this._server.timeout; + } else { + return undefined; + } + }, + set: function setTimeout(timeout) { + if (this._mode === 'tls') { + this._server.timeout = timeout; + } + } +}); +  +// Overriding `EventEmitter`'s `on(event, listener)` method to forward certain subscriptions to +// `server`.There are events on the `http.Server` class where it makes difference whether someone is +// listening on the event or not. In these cases, we can not simply forward the events from the +// `server` to `this` since that means a listener. Instead, we forward the subscriptions. +Server.prototype.on = function on(event, listener) { + Iif ((event === 'upgrade') || (event === 'timeout')) { + this._server.on(event, listener.bind(this)); + } else { + EventEmitter.prototype.on.call(this, event, listener); + } +}; +  function createServer(options, requestListener) { Iif (typeof options === 'function') { requestListener = options; @@ -2026,45 +2350,16 @@

// IncomingRequest class // ---------------------   -function IncomingRequest(stream, log) { - IncomingMessage.call(this, stream, log); +function IncomingRequest(stream) { + IncomingMessage.call(this, stream); } IncomingRequest.prototype = Object.create(IncomingMessage.prototype, { constructor: { value: IncomingRequest } });   // [Request Header Fields](http://tools.ietf.org/html/draft-ietf-httpbis-http2-05#section-8.1.2.1) +// * `headers` argument: HTTP/2.0 request and response header fields carry information as a series +// of key-value pairs. This includes the target URI for the request, the status code for the +// response, as well as HTTP header fields. IncomingRequest.prototype._onHeaders = function _onHeaders(headers) { - // * HTTP/2.0 request and response header fields carry information as a series of key-value pairs. - // This includes the target URI for the request, the status code for the response, as well as - // HTTP header fields. - this.headers = headers; -  - // * The ":method" header field includes the HTTP method - // * The ":scheme" header field includes the scheme portion of the target URI - // * The ":host" header field includes the authority portion of the target URI - // * The ":path" header field includes the path and query parts of the target URI. - // This field MUST NOT be empty; URIs that do not contain a path component MUST include a value - // of '/', unless the request is an OPTIONS request for '*', in which case the ":path" header - // field MUST include '*'. - // * All HTTP/2.0 requests MUST include exactly one valid value for all of these header fields. A - // server MUST treat the absence of any of these header fields, presence of multiple values, or - // an invalid value as a stream error of type PROTOCOL_ERROR. - var mapping = { - method: ':method', - scheme: ':scheme', - host: ':host', - url: ':path' - }; - for (var property in mapping) { - var value = headers[mapping[property]]; - Iif ((typeof value !== 'string') || (value.length === 0)) { - this._log.error({ key: mapping[property], value: value }, 'Invalid header field'); - this.stream.emit('error', 'PROTOCOL_ERROR'); - return; - } - this[property] = value; - delete headers[mapping[property]]; - } -  // * An HTTP/2.0 request MUST NOT include any of the following header fields: Connection, Host, // Keep-Alive, Proxy-Connection, TE, Transfer-Encoding, and Upgrade. A server MUST treat the // presence of any of these header fields as a stream error of type PROTOCOL_ERROR. @@ -2085,23 +2380,57 @@

return; } } +  + // `this.headers` will store the regular headers (and none of the special colon headers) + this.headers = {}; +  + // * The ":method" header field includes the HTTP method + // * The ":scheme" header field includes the scheme portion of the target URI + // * The ":host" header field includes the authority portion of the target URI + // * The ":path" header field includes the path and query parts of the target URI. + // This field MUST NOT be empty; URIs that do not contain a path component MUST include a value + // of '/', unless the request is an OPTIONS request for '*', in which case the ":path" header + // field MUST include '*'. + // * All HTTP/2.0 requests MUST include exactly one valid value for all of these header fields. A + // server MUST treat the absence of any of these header fields, presence of multiple values, or + // an invalid value as a stream error of type PROTOCOL_ERROR. + var mapping = { + ':method': 'method', + ':scheme': 'scheme', + ':host': 'host', + ':path': 'url' + }; + for (var name in headers) { + Eif (name in mapping) { + var value = headers[name]; + Iif ((typeof value !== 'string') || (value.length === 0)) { + this._log.error({ key: name, value: value }, 'Invalid header field'); + this.stream.emit('error', 'PROTOCOL_ERROR'); + return; + } + this[mapping[name]] = value; + } else { + this.headers[name] = headers[name]; + } + }   // * Host header is included in the headers object for backwards compatibility. - headers.host = this.host; + this.headers.host = this.host;   // * Signaling that the header arrived. this._log.info({ method: this.method, scheme: this.scheme, host: this.host, - path: this.url, headers: headers}, 'Incoming request'); + path: this.url, headers: this.headers }, 'Incoming request'); this.emit('ready'); };   // OutgoingResponse class // ----------------------   -function OutgoingResponse(endpoint, stream, log) { - OutgoingMessage.call(this, log); +function OutgoingResponse(stream) { + OutgoingMessage.call(this); +  + this._log = stream._log.child({ component: 'http' });   - this.endpoint = endpoint; this.stream = stream; this.statusCode = undefined; this.sendDate = true; @@ -2170,29 +2499,45 @@

throw new Error('`path` option is mandatory.'); }   - var promiseHeaders = util._extend({ + var promise = util._extend({ ':method': (options.method || 'GET').toUpperCase(), - ':scheme': options.protocol || this._requestHeaders[':scheme'], + ':scheme': (options.protocol && options.protocol.slice(0, -1)) || this._requestHeaders[':scheme'], ':host': options.hostname || options.host || this._requestHeaders[':host'], ':path': options.path }, options.headers);   - var pushStream = this.endpoint.createStream(); - this.stream.promise(pushStream, promiseHeaders); + this._log.info({ method: promise[':method'], scheme: promise[':scheme'], host: promise[':host'], + path: promise[':path'], headers: options.headers }, 'Promising push stream'); +  + var pushStream = this.stream.promise(promise); +  + return new OutgoingResponse(pushStream); +};   - return new OutgoingResponse(this.endpoint, pushStream, this._log); +// Overriding `EventEmitter`'s `on(event, listener)` method to forward certain subscriptions to +// `request`. See `Server.prototype.on` for explanation. +OutgoingResponse.prototype.on = function on(event, listener) { + Iif (this.request && (event === 'timeout')) { + this.request.on(event, listener.bind(this)); + } else { + OutgoingMessage.prototype.on.call(this, event, listener); + } };   // Client side // ===========   -exports.request = request; -exports.get = get; -exports.Agent = Agent; exports.ClientRequest = OutgoingRequest; // for API compatibility exports.OutgoingRequest = OutgoingRequest; exports.IncomingResponse = IncomingResponse; +exports.Agent = Agent; exports.globalAgent = undefined; +exports.request = function request(options, callback) { + return (options.agent || exports.globalAgent).request(options, callback); +}; +exports.get = function get(options, callback) { + return (options.agent || exports.globalAgent).get(options, callback); +};   // Agent class // ----------- @@ -2203,8 +2548,8 @@

options = options || {};   this._settings = options.settings; - this._log = (options.log || logging.root).child({ component: 'http' }); - this._endpoints = {}; + this._log = (options.log || defaultLogger).child({ component: 'http' }); + this.endpoints = {};   // * Using an own HTTPS agent, because the global agent does not look at `NPNProtocols` when // generating the key identifying the connection, so we may get useless non-negotiated TLS @@ -2213,6 +2558,9 @@

this._httpsAgent = new https.Agent({ NPNProtocols: [implementedVersion, 'http/1.1', 'http/1.0'] }); +  + this.sockets = this._httpsAgent.sockets; + this.requests = this._httpsAgent.requests; } Agent.prototype = Object.create(EventEmitter.prototype, { constructor: { value: Agent } });   @@ -2222,7 +2570,7 @@

}   options.method = (options.method || 'GET').toUpperCase(); - options.protocol = options.protocol || 'https'; + options.protocol = options.protocol || 'https:'; options.host = options.hostname || options.host || 'localhost'; options.port = options.port || 443; options.path = options.path || '/'; @@ -2232,7 +2580,7 @@

throw new Error('HTTP1.1 -> HTTP2 upgrade is not yet supported.'); }   - var request = new OutgoingRequest(logging.root); + var request = new OutgoingRequest(this._log);   Eif (callback) { request.on('response', callback); @@ -2241,21 +2589,18 @@

var key = [options.host, options.port].join(':');   // * There's an existing HTTP/2 connection to this host - Iif (key in this._endpoints) { - var endpoint = this._endpoints[key]; + Iif (key in this.endpoints) { + var endpoint = this.endpoints[key]; request._start(endpoint.createStream(), options); }   // * HTTP/2 over TLS negotiated using NPN (or later ALPN) - // * if the negotiation is unsuccessful - // * adding socket to the HTTPS agent's socket pool - // * initiating a request with the HTTPS agent - // * calling request's fallback() to fall back to use the new request object else { var started = false; options.NPNProtocols = [implementedVersion, 'http/1.1', 'http/1.0']; options.agent = this._httpsAgent; var httpsRequest = https.request(options); +  httpsRequest.on('socket', function(socket) { Iif (socket.npnProtocol !== undefined) { negotiated(); @@ -2264,22 +2609,24 @@

} });   - var negotiated = function negotiated() { + var self = this; + function negotiated() { Eif (!started) { Eif (httpsRequest.socket.npnProtocol === implementedVersion) { httpsRequest.socket.emit('agentRemove'); unbundleSocket(httpsRequest.socket); - var logger = this._log.child({ server: options.host + ':' + options.port }); - var endpoint = new Endpoint('CLIENT', this._settings, logger); + var endpoint = new Endpoint('CLIENT', self._settings, self._log); + self._log.info({ e: endpoint, server: options.host + ':' + options.port }, + 'New outgoing HTTP/2 connection'); endpoint.socket = httpsRequest.socket; endpoint.pipe(endpoint.socket).pipe(endpoint); - this._endpoints[key] = endpoint; - this.emit(key, endpoint); + self.endpoints[key] = endpoint; + self.emit(key, endpoint); } else { - this.emit(key, undefined); + self.emit(key, undefined); } } - }.bind(this); + }   this.once(key, function(endpoint) { started = true; @@ -2311,91 +2658,141 @@

delete socket.onend; }   -var globalAgent = exports.globalAgent = new Agent(); -  -function request(options, callback) { - return globalAgent.request(options, callback); -} +Object.defineProperty(Agent.prototype, 'maxSockets', { + get: function getMaxSockets() { + return this._httpsAgent.maxSockets; + }, + set: function setMaxSockets(value) { + this._httpsAgent.maxSockets = value; + } +});   -function get(options, callback) { - return globalAgent.get(options, callback); -} +exports.globalAgent = new Agent();   // OutgoingRequest class // ---------------------   -function OutgoingRequest(log) { - OutgoingMessage.call(this, log); +function OutgoingRequest() { + OutgoingMessage.call(this); +  + this._log = undefined;   - this.socket = undefined; this.stream = undefined; - this.request = undefined; this.headersSent = true; } OutgoingRequest.prototype = Object.create(OutgoingMessage.prototype, { constructor: { value: OutgoingRequest } });   OutgoingRequest.prototype._start = function _start(stream, options) { - var logger = this._log.child({ server: (options.hostname || options.host) + ':' + (options.port || 80) }); - logger.info('Successfully initiated HTTP/2 connection'); -  this.stream = stream; +  + this._log = stream._log.child({ component: 'http' });   var headers = {}; for (var key in options.headers) { headers[key] = options.headers[key]; } delete headers.host; - headers[':scheme'] = options.protocol; +  + Iif (options.auth) { + headers.authorization = 'Basic ' + new Buffer(options.auth).toString('base64'); + } +  + headers[':scheme'] = options.protocol.slice(0, -1); headers[':method'] = options.method; - headers[':host'] = options.hostname; + headers[':host'] = options.host; headers[':path'] = options.path;   - logger.info({ scheme: headers[':scheme'], method: headers[':method'], host: headers[':host'], - path: headers[':path'], headers: (options.headers || {}) }, 'Sending request'); + this._log.info({ scheme: headers[':scheme'], method: headers[':method'], host: headers[':host'], + path: headers[':path'], headers: (options.headers || {}) }, 'Sending request'); this.stream.headers(headers);   - this.emit('stream', this.stream); + this.emit('socket', this.stream);   - var response = new IncomingResponse(this.stream, logger); + var response = new IncomingResponse(this.stream); response.once('ready', this.emit.bind(this, 'response', response)); +  + this.stream.on('promise', this._onPromise.bind(this)); };   OutgoingRequest.prototype._fallback = function _fallback(request) { - this._log.info('Falling back to simple HTTPS'); -  - this.request = request; - this.socket = request.socket; - this.emit('socket', request.socket); + this.stream = this.request = request; + this.emit('socket', this.socket);   this.pipe(request); };   +OutgoingRequest.prototype.setPriority = function setPriority(priority) { + if (this.stream) { + this.stream.priority(priority); + } else { + this.once('socket', this.setPriority.bind(this, priority)); + } +}; +  +// Overriding `EventEmitter`'s `on(event, listener)` method to forward certain subscriptions to +// `request`. See `Server.prototype.on` for explanation. +OutgoingRequest.prototype.on = function on(event, listener) { + Iif (this.request && (event === 'upgrade')) { + this.request.on(event, listener.bind(this)); + } else { + OutgoingMessage.prototype.on.call(this, event, listener); + } +}; +  // Methods only in fallback mode OutgoingRequest.prototype.setNoDelay = function setNoDelay(noDelay) { if (this.request) { this.request.setNoDelay(noDelay); + } else if (!this.stream) { + this.on('socket', this.setNoDelay.bind(this, noDelay)); } };   OutgoingRequest.prototype.setSocketKeepAlive = function setSocketKeepAlive(enable, initialDelay) { if (this.request) { this.request.setSocketKeepAlive(enable, initialDelay); + } else if (!this.stream) { + this.on('socket', this.setSocketKeepAlive.bind(this, enable, initialDelay)); } };   OutgoingRequest.prototype.setTimeout = function setTimeout(timeout, callback) { if (this.request) { this.request.setTimeout(timeout, callback); + } else if (!this.stream) { + this.on('socket', this.setTimeout.bind(this, timeout, callback)); + } +}; +  +// Aborting the request +OutgoingRequest.prototype.abort = function abort() { + if (this.request) { + this.request.abort(); + } else if (this.stream) { + this.stream.reset('CANCEL'); + } else { + this.on('socket', this.abort.bind(this)); } };   +// Receiving push promises +OutgoingRequest.prototype._onPromise = function _onPromise(stream, headers) { + this._log.info({ push_stream: stream.id }, 'Receiving push promise'); +  + var promise = new IncomingPromise(stream, headers); +  + if (this.listeners('push').length > 0) { + this.emit('push', promise); + } else { + promise.cancel(); + } +};   // IncomingResponse class // ----------------------   -function IncomingResponse(stream, log) { - IncomingMessage.call(this, stream, log); - stream.on('promise', this._onPromise.bind(this)); +function IncomingResponse(stream) { + IncomingMessage.call(this, stream); } IncomingResponse.prototype = Object.create(IncomingMessage.prototype, { constructor: { value: IncomingResponse } });   @@ -2426,44 +2823,43 @@

this.emit('ready'); };   -IncomingResponse.prototype._onPromise = function _onPromise(stream, headers) { - var promise = new IncomingPromise(stream, headers, this._log); -  - if (this.listeners('push').length > 0) { - this.emit('push', promise); - } else { - promise.cancel(); - } -}; -  // IncomingPromise class // -------------------------   -function IncomingPromise(responseStream, promiseHeaders, log) { +function IncomingPromise(responseStream, promiseHeaders) { var stream = new Readable(); stream._read = function noop() {}; stream.push(null); + stream._log = responseStream._log;   - IncomingRequest.call(this, stream, log); + IncomingRequest.call(this, stream);   - stream.emit('headers', promiseHeaders); + this._onHeaders(promiseHeaders);   this._responseStream = responseStream;   - var response = new IncomingResponse(this._responseStream, log); + var response = new IncomingResponse(this._responseStream); response.once('ready', this.emit.bind(this, 'response', response)); +  + this.stream.on('promise', this._onPromise.bind(this)); } IncomingPromise.prototype = Object.create(IncomingRequest.prototype, { constructor: { value: IncomingPromise } });   IncomingPromise.prototype.cancel = function cancel() { this._responseStream.reset('CANCEL'); }; +  +IncomingPromise.prototype.setPriority = function setPriority(priority) { + this._responseStream.priority(priority); +}; +  +IncomingPromise.prototype._onPromise = OutgoingRequest.prototype._onPromise;  

diff --git a/coverage/lcov-report/lib/index.html b/coverage/lcov-report/lib/index.html index d36ed6da..2998945e 100644 --- a/coverage/lcov-report/lib/index.html +++ b/coverage/lcov-report/lib/index.html @@ -183,16 +183,16 @@

Code coverage report for lib/

- Statements: 86.53% (1195 / 1381)      + Statements: 84.83% (1253 / 1477)      - Branches: 73.43% (387 / 527)      + Branches: 69.47% (405 / 583)      - Functions: 84.9% (163 / 192)      + Functions: 78.95% (165 / 209)      - Lines: 86.66% (1189 / 1372)      + Lines: 84.95% (1247 / 1468)     

All files » lib/
@@ -218,104 +218,91 @@

compressor.js 98.62% - (286 / 290) + (285 / 289) 100% - (101 / 101) + (97 / 97) 100% (34 / 34) 98.62% - (286 / 290) + (285 / 289) connection.js - - 88.7% - (157 / 177) - 69.57% - (32 / 46) + + 93.65% + (177 / 189) + 83.33% + (45 / 54) 93.75% (30 / 32) - 88.7% - (157 / 177) + 93.65% + (177 / 189) endpoint.js - - 90.91% - (70 / 77) - 75% - (12 / 16) - 83.33% - (10 / 12) - 90.91% - (70 / 77) + + 86.75% + (72 / 83) + 68.75% + (11 / 16) + 76.92% + (10 / 13) + 86.75% + (72 / 83) - flow.js - - 80.37% - (86 / 107) - 80.65% - (50 / 62) - 76.47% - (13 / 17) - 80.37% - (86 / 107) + flow.js + + 72.64% + (77 / 106) + 67.74% + (42 / 62) + 58.82% + (10 / 17) + 72.64% + (77 / 106) framer.js - - 89.04% - (203 / 228) - 73.53% - (50 / 68) - 87.1% - (27 / 31) - 89.04% - (203 / 228) + + 87.55% + (204 / 233) + 68.57% + (48 / 70) + 83.87% + (26 / 31) + 87.55% + (204 / 233) http.js - - 76.76% - (251 / 327) - 47.62% - (50 / 105) - 63.83% - (30 / 47) - 76.76% - (251 / 327) - - - - logging.js - - 66.67% - (6 / 9) - 50% - (1 / 2) - 100% - (2 / 2) - 66.67% - (6 / 9) + + 71.77% + (272 / 379) + 41.43% + (58 / 140) + 59.02% + (36 / 61) + 71.77% + (272 / 379) stream.js - - 81.93% - (136 / 166) - 71.65% - (91 / 127) - 100% - (17 / 17) - 82.8% - (130 / 157) + + 83.84% + (166 / 198) + 72.22% + (104 / 144) + 90.48% + (19 / 21) + 84.66% + (160 / 189) @@ -323,7 +310,7 @@

diff --git a/coverage/lcov-report/lib/logging.js.html b/coverage/lcov-report/lib/logging.js.html deleted file mode 100644 index f831faf8..00000000 --- a/coverage/lcov-report/lib/logging.js.html +++ /dev/null @@ -1,389 +0,0 @@ - - - - Code coverage report for lib/logging.js - - - - - - - -
-

Code coverage report for lib/logging.js

-

- - Statements: 66.67% (6 / 9)      - - - Branches: 50% (1 / 2)      - - - Functions: 100% (2 / 2)      - - - Lines: 66.67% (6 / 9)      - -

-
All files » lib/ » logging.js
-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -291 -  -1 -  -  -  -  -  -  -  -  -  -  -  -1 -1 -  -  -  -  -  -  -  -105 -  -  -1 -  - 
var logging = exports;
- 
-Iif (process.env.HTTP2_LOG) {
-  var bunyan = require('bunyan');
- 
-  logging.root = bunyan.createLogger({
-    name: 'http2',
-    level: process.env.HTTP2_LOG,
-    serializers: bunyan.stdSerializers
-  });
- 
-  logging.serializers = logging.root.serializers;
- 
-} else {
-  function noop() {}
-  logging.root = {
-    fatal: noop,
-    error: noop,
-    warn : noop,
-    info : noop,
-    debug: noop,
-    trace: noop,
- 
-    child: function() { return this; }
-  };
- 
-  logging.serializers = {};
-}
- 
- -
- - - - - - - - diff --git a/coverage/lcov-report/lib/stream.js.html b/coverage/lcov-report/lib/stream.js.html index 147f6ee3..aae1b68d 100644 --- a/coverage/lcov-report/lib/stream.js.html +++ b/coverage/lcov-report/lib/stream.js.html @@ -183,16 +183,16 @@

Code coverage report for lib/stream.js

- Statements: 81.93% (136 / 166)      + Statements: 83.84% (166 / 198)      - Branches: 71.65% (91 / 127)      + Branches: 72.22% (104 / 144)      - Functions: 100% (17 / 17)      + Functions: 90.48% (19 / 21)      - Lines: 82.8% (130 / 157)      + Lines: 84.66% (160 / 189)     

All files » lib/ » stream.js
@@ -697,8 +697,68 @@

496 497 498 -4991 -1 +499 +500 +501 +502 +503 +504 +505 +506 +507 +508 +509 +510 +511 +512 +513 +514 +515 +516 +517 +518 +519 +520 +521 +522 +523 +524 +525 +526 +527 +528 +529 +530 +531 +532 +533 +534 +535 +536 +537 +538 +539 +540 +541 +542 +543 +544 +545 +546 +547 +548 +549 +550 +551 +552 +553 +554 +555 +556 +557 +558 +559 +5601       @@ -738,20 +798,26 @@

      +  +  +  +  +  +  1 -24 +43     -24 +43     -24 +43     -24 +43     -24 +43     1 @@ -760,40 +826,69 @@

      -  1 -24 -4 +1   -24 -11 -11   +1 +43 +43 +43 +8 +  +43 +20 +    +20   +43 +2       1 -3 -3 +4 +4 +4         +4     1 -13 +18         -13 +  +1 +2 +2 +  +  +  +  +  +  +  +  +  +  +  +  +  +2 +2 +2 +      1 -8 +15       @@ -835,28 +930,28 @@

1   1 -24 -24 -24 -24 -24 -24 -24 +43 +43 +43 +43 +43 +43 +43   -24 +43       1 -30 +53   -30 +53       -30 -10 -10 +53 +20 +20       @@ -864,23 +959,23 @@

      -20 +33       -30 -3 +53 +12     -30 -30 +53 +53           1 -11 +13       @@ -890,14 +985,14 @@

  1   -5 +8           -5 -5 +8 +8       @@ -907,7 +1002,7 @@

    1 -218 +335       @@ -924,14 +1019,15 @@

    1 -3 -3 -3 -  -  -  +12 +12 +12 +5 +5 +5 +5   -3 +7       @@ -966,70 +1062,69 @@

    1 -24 -24 -24 -24 -  +43 +43 +43 +43 +43       -1   1 -26 -26 +56 +56 +56 +56   -26 -26 -26   -26 -26 -15 -11 -2       +1 +100         -1 -64 -64   -64 -64 -64 -18 -24 1 -8 +110 +110 +  +110 +110 +110 +40 +38 +2 +15   -7 +12     -6 +3     -64 +110   +110           -15 -11 -11 -    +24 +20 +20 +1 +  +20   4   -15 +24       @@ -1041,8 +1136,8 @@

      -7 -3 +6 +2 4   4 @@ -1050,7 +1145,7 @@

  4   -7 +6       @@ -1060,16 +1155,16 @@

      -1 -  -1 -1 +6   +6 +2 +4     -  +4   -1 +6       @@ -1081,14 +1176,14 @@

      -24 -4 -20 +23 +9 +14         -24 +23       @@ -1097,14 +1192,14 @@

      -7 -2 -5 +21 +9 +12         -7 +21       @@ -1117,14 +1212,14 @@

      -2 -  -2 +15 +5 +10     -  +3   -2 +15       @@ -1147,20 +1242,20 @@

      -8 +15           -8 +15           -64 -3 +110 +12       @@ -1169,18 +1264,31 @@

      -64 -5 +110 +8   -5 +8 +8       -64 -8 +110 +50 +50 +29   +21   -8 +60 +28 +  +  +  +110 +15 +  +  +15       @@ -1188,15 +1296,28 @@

      -8 -8 -8 -8 +15 +15 +15 +15       - 
var assert = process.env.HTTP2_ASSERT ? require('assert') : function noop() {};
-var logging = require('./logging');
+ 
+ 
+ 
+ 
+1
+ 
+1
+1
+ 
+ 
+ 
+ 
+ 
+ 
+ 
var assert = process.env.HTTP2_ASSERT ? require('assert') : function noop() {};
  
 // The Stream class
 // ================
@@ -1218,11 +1339,17 @@ 

// // * **Event: 'promise' (stream, headers)**: signals an incoming push promise // +// * **Event: 'priority' (priority)**: signals a priority change. `priority` is a number between 0 +// (highest priority) and 2^31-1 (lowest priority). Default value is 2^30. +// // * **Event: 'error' (type)**: signals an error // -// * **headers(headers, [priority])**: send headers +// * **headers(headers)**: send headers +// +// * **promise(headers): Stream**: promise a stream // -// * **promise(stream, headers)**: promise a stream +// * **priority(priority)**: set the priority of the stream. Priority can be changed by the peer +// too, but once it is set locally, it can not be changed remotely. // // * **reset(error)**: reset the stream with an error code // @@ -1239,8 +1366,8 @@

function Stream(log) { Duplex.call(this);   - // * every method uses the common logger object - this._log = (log || logging.root).child({ component: 'stream' }); + // * logging + this._log = log.child({ component: 'stream', s: this });   // * receiving and sending stream management commands this._initializeManagement(); @@ -1257,37 +1384,66 @@

// Managing the stream // -------------------   -// PUSH_PROMISE and HEADERS are forwarded to the user through events. When error happens, we first -// close the stream. +// the default stream priority is 2^30 +var DEFAULT_PRIORITY = Math.pow(2, 30); +var MAX_PRIORITY = Math.pow(2, 31) - 1; +  +// PUSH_PROMISE and HEADERS are forwarded to the user through events. Stream.prototype._initializeManagement = function _initializeManagement() { + this._priority = DEFAULT_PRIORITY; + this._letPeerPrioritize = true; this.on('PUSH_PROMISE', function(frame) { this.emit('promise', frame.promised_stream, frame.headers); }); this.on('HEADERS', function(frame) { - this.priority = frame.priority; + Iif (frame.priority !== undefined) { + this.priority(frame.priority, true); + } this.emit('headers', frame.headers); }); + this.on('PRIORITY', function(frame) { + this.priority(frame.priority, true); + }); };   -// For sending management frames, the `this.upstream.push(frame)` method is used. It notifies the -// state management code about the sent frames (using the 'sending' event) so we don't have to -// manage state transitions here. -Stream.prototype.promise = function promise(stream, headers) { - stream.emit('promise_initiated'); +Stream.prototype.promise = function promise(headers) { + var stream = new Stream(this._log); + stream._priority = Math.min(this._priority + 1, MAX_PRIORITY); this.upstream.push({ type: 'PUSH_PROMISE', promised_stream: stream, headers: headers }); + return stream; };   -Stream.prototype.headers = function headers(headers, priority) { +Stream.prototype.headers = function headers(headers) { this.upstream.push({ type: 'HEADERS', - priority: priority, headers: headers }); - this.priority = priority; +}; +  +Stream.prototype.priority = function priority(priority, peer) { + Eif ((peer && this._letPeerPrioritize) || !peer) { + Iif (!peer) { + this._letPeerPrioritize = false; +  + var lastFrame = this.upstream.getLastQueuedFrame(); + if (lastFrame && ((lastFrame.type === 'HEADERS') || (lastFrame.type === 'PRIORITY'))) { + lastFrame.priority = priority; + } else { + this.upstream.push({ + type: 'PRIORITY', + priority: priority + }); + } + } +  + this._log.debug({ priority: priority }, 'Changing priority'); + this._priority = priority; + this.emit('priority', priority); + } };   Stream.prototype.reset = function reset(error) { @@ -1424,10 +1580,11 @@

Stream.prototype._finishing = function _finishing() { delete endFrame.stream; var lastFrame = this.upstream.getLastQueuedFrame(); - Iif (lastFrame && ((lastFrame.type === 'DATA') || (lastFrame.type === 'HEADERS'))) { - this._log.trace({ frame: lastFrame }, 'Marking last frame with END_STREAM flag.'); - lastFrame.flags.END_STREAM = true; - this._transition(true, endFrame); + if (lastFrame && ((lastFrame.type === 'DATA') || (lastFrame.type === 'HEADERS'))) { + this._log.debug({ frame: lastFrame }, 'Marking last frame with END_STREAM flag.'); + lastFrame.flags = lastFrame.flags || {}; + lastFrame.flags.END_STREAM = true; + this._transition(true, endFrame); } else { this.upstream.push(endFrame); } @@ -1465,32 +1622,28 @@

// Streams begin in the IDLE state and transitions happen when there's an incoming or outgoing frame Stream.prototype._initializeState = function _initializeState() { this.state = 'IDLE'; + this._initiated = undefined; this._closedByPeer = false; this.on('sending', this._transition.bind(this, true)); this.on('receiving', this._transition.bind(this, false)); };   // Only `_setState` should change `this.state` directly. It also logs the state change and notifies -// interested parties using the 'state', 'active' and 'inactive' event. -var ACTIVE_STATES = ['HALF_CLOSED_LOCAL', 'HALF_CLOSED_REMOTE', 'OPEN']; -  +// interested parties using the 'state' event. Stream.prototype._setState = function transition(state) { Eif (this.state !== state) { this._log.debug({ from: this.state, to: state }, 'State transition'); -  - var wasActive = (ACTIVE_STATES.indexOf(this.state) !== -1); - var isActive = (ACTIVE_STATES.indexOf(state) !== -1); this.state = state; -  this.emit('state', state); - if (!wasActive && isActive) { - this.emit('active'); - } else if (wasActive && !isActive) { - this.emit('inactive'); - } } };   +// A state is 'active' if the stream in that state counts towards the concurrency limit. Streams +// that are in the "open" state, or either of the "half closed" states count toward this limit. +function activeState(state) { + return ((state === 'HALF_CLOSED_LOCAL') || (state === 'HALF_CLOSED_REMOTE') || (state === 'OPEN')); +} +  // `_transition` is called every time there's an incoming or outgoing frame. It manages state // transitions, and detects stream errors. A stream error is always caused by a frame that is not // allowed in the current state. @@ -1511,6 +1664,8 @@

case 'GOAWAY' : GOAWAY = true; break; case 'WINDOW_UPDATE': WINDOW_UPDATE = true; break; } +  + var previousState = this.state;   switch (this.state) { // All streams start in the **idle** state. In this state, no frames have been exchanged. @@ -1521,9 +1676,10 @@

case 'IDLE': if (HEADERS) { this._setState('OPEN'); - Iif (frame.flags.END_STREAM) { - this._setState(sending ? 'HALF_CLOSED_LOCAL' : 'HALF_CLOSED_REMOTE'); + if (frame.flags.END_STREAM) { + this._setState(sending ? 'HALF_CLOSED_LOCAL' : 'HALF_CLOSED_REMOTE'); } + this._initiated = sending; } else { error = 'PROTOCOL_ERROR'; } @@ -1560,12 +1716,12 @@

case 'RESERVED_REMOTE': Iif (RST_STREAM) { this._setState('CLOSED'); - } else Eif (receiving && HEADERS) { + } else if (receiving && HEADERS) { this._setState('HALF_CLOSED_LOCAL'); - } else if (sending && PRIORITY) { + } else Iif (sending && PRIORITY) { /* No state change */ } else { - error = 'PROTOCOL_ERROR'; + error = 'PROTOCOL_ERROR'; } break;   @@ -1597,7 +1753,7 @@

case 'HALF_CLOSED_LOCAL': if (RST_STREAM || (receiving && frame.flags.END_STREAM)) { this._setState('CLOSED'); - } else Eif (receiving || (sending && (PRIORITY || WINDOW_UPDATE))) { + } else Eif (receiving || (sending && (PRIORITY || WINDOW_UPDATE))) { /* No state change */ } else { error = 'PROTOCOL_ERROR'; @@ -1615,12 +1771,12 @@

// * An endpoint MAY send or receive PRIORITY frames in this state to reprioritize the stream. // * A receiver MAY receive a WINDOW_UPDATE frame on a "half closed (remote)" stream. case 'HALF_CLOSED_REMOTE': - Iif (RST_STREAM || (sending && frame.flags.END_STREAM)) { - this._setState('CLOSED'); - } else Eif (sending || (receiving && (WINDOW_UPDATE || PRIORITY))) { + if (RST_STREAM || (sending && frame.flags.END_STREAM)) { + this._setState('CLOSED'); + } else if (sending || (receiving && (WINDOW_UPDATE || PRIORITY))) { /* No state change */ } else { - error = 'PROTOCOL_ERROR'; + error = 'PROTOCOL_ERROR'; } break;   @@ -1671,6 +1827,19 @@

assert(frame.promised_stream.state === 'IDLE', 'Promised stream is in invalid state (' + frame.promised_stream.state + ')'); frame.promised_stream._setState(sending ? 'RESERVED_LOCAL' : 'RESERVED_REMOTE'); + frame.promised_stream._initiated = sending; + } +  + // Signaling how sending/receiving this frame changes the active stream count (-1, 0 or +1) + if (this._initiated) { + var change = (activeState(this.state) - activeState(previousState)); + if (sending) { + frame.count_change = change; + } else { + frame.count_change(change); + } + } else if (sending) { + frame.count_change = 0; }   // Common error handling. @@ -1693,12 +1862,26 @@

} } }; +  +// Bunyan serializers +// ------------------ +  +exports.serializers = {}; +  +var nextId = 0; +exports.serializers.s = function(stream) { + if (!('id' in stream)) { + stream.id = nextId; + nextId += 1; + } + return stream.id; +};  

diff --git a/coverage/lcov.info b/coverage/lcov.info index 49db3d16..a2540e70 100644 --- a/coverage/lcov.info +++ b/coverage/lcov.info @@ -1,39 +1,39 @@ TN: SF:/data/upstream/node-http2/lib/compressor.js -FN:39,CompressionContext -FN:49,(anonymous_2) -FN:54,getWorkingSet -FN:55,(anonymous_4) -FN:61,reinitialize -FN:67,(anonymous_6) -FN:69,(anonymous_7) -FN:77,(anonymous_8) -FN:106,execute -FN:119,(anonymous_10) -FN:157,(anonymous_11) -FN:158,(anonymous_12) -FN:165,(anonymous_13) -FN:181,(anonymous_14) -FN:204,(anonymous_15) -FN:228,(anonymous_16) -FN:250,Decompressor -FN:265,decompress -FN:311,Compressor -FN:326,compress -FN:396,writeInteger -FN:437,readInteger -FN:467,writeString -FN:473,readString -FN:526,writeString -FN:562,readString -FN:627,_initializeStream -FN:631,_transform -FN:677,_initializeStream -FN:686,_transform -FN:716,(anonymous_31) -FN:826,concat -FN:841,cut -FN:853,shallowCopy +FN:38,CompressionContext +FN:48,(anonymous_2) +FN:53,getWorkingSet +FN:54,(anonymous_4) +FN:60,reinitialize +FN:66,(anonymous_6) +FN:68,(anonymous_7) +FN:76,(anonymous_8) +FN:105,execute +FN:118,(anonymous_10) +FN:156,(anonymous_11) +FN:157,(anonymous_12) +FN:164,(anonymous_13) +FN:180,(anonymous_14) +FN:203,(anonymous_15) +FN:227,(anonymous_16) +FN:249,Decompressor +FN:264,decompress +FN:310,Compressor +FN:325,compress +FN:395,writeInteger +FN:436,readInteger +FN:466,writeString +FN:472,readString +FN:525,writeHeader +FN:561,readHeader +FN:626,_initializeStream +FN:630,_transform +FN:676,_initializeStream +FN:685,_transform +FN:715,(anonymous_31) +FN:825,concat +FN:840,cut +FN:852,shallowCopy FNF:34 FNH:34 FNDA:14,CompressionContext @@ -49,755 +49,746 @@ FNDA:139,(anonymous_10) FNDA:42,(anonymous_11) FNDA:97,(anonymous_12) FNDA:64,(anonymous_13) -FNDA:1251,(anonymous_14) +FNDA:1213,(anonymous_14) FNDA:24,(anonymous_15) -FNDA:131,(anonymous_16) +FNDA:129,(anonymous_16) FNDA:8,Decompressor FNDA:25,decompress FNDA:6,Compressor FNDA:22,compress -FNDA:234,writeInteger -FNDA:252,readInteger -FNDA:116,writeString -FNDA:121,readString -FNDA:96,writeString -FNDA:104,readString +FNDA:232,writeInteger +FNDA:250,readInteger +FNDA:115,writeString +FNDA:120,readString +FNDA:96,writeHeader +FNDA:104,readHeader FNDA:6,_initializeStream -FNDA:18,_transform +FNDA:19,_transform FNDA:8,_initializeStream -FNDA:22,_transform +FNDA:23,_transform FNDA:14,(anonymous_31) FNDA:34,concat FNDA:12,cut FNDA:14,shallowCopy DA:16,1 -DA:17,1 +DA:18,1 DA:19,1 DA:20,1 -DA:21,1 -DA:37,1 -DA:39,1 +DA:36,1 +DA:38,1 +DA:39,14 DA:40,14 DA:41,14 DA:42,14 DA:43,14 -DA:44,14 -DA:49,1 -DA:50,1643 -DA:54,1 -DA:55,47 -DA:56,142 -DA:61,1 -DA:62,47 -DA:67,47 -DA:68,154 -DA:70,98 -DA:77,47 +DA:48,1 +DA:49,1643 +DA:53,1 +DA:54,47 +DA:55,142 +DA:60,1 +DA:61,47 +DA:66,47 +DA:67,154 +DA:69,98 +DA:76,47 +DA:77,98 DA:78,98 -DA:79,98 -DA:106,1 -DA:107,184 -DA:110,184 -DA:117,184 -DA:118,52 -DA:119,52 -DA:120,139 -DA:122,52 -DA:123,2 -DA:124,2 -DA:126,50 -DA:135,132 -DA:136,47 -DA:138,85 -DA:141,132 -DA:142,131 -DA:143,88 -DA:145,43 -DA:147,131 -DA:148,131 -DA:151,132 -DA:157,1 -DA:158,42 -DA:159,97 -DA:165,1 -DA:166,64 +DA:105,1 +DA:106,184 +DA:109,184 +DA:116,184 +DA:117,54 +DA:118,54 +DA:119,139 +DA:121,54 +DA:122,4 +DA:123,4 +DA:125,50 +DA:134,130 +DA:135,45 +DA:137,85 +DA:140,130 +DA:141,129 +DA:142,88 +DA:144,41 +DA:146,129 +DA:147,129 +DA:150,130 +DA:156,1 +DA:157,42 +DA:158,97 +DA:164,1 +DA:165,64 +DA:167,64 DA:168,64 -DA:169,64 -DA:170,5 -DA:171,5 -DA:172,1 -DA:180,63 -DA:181,63 -DA:182,1251 -DA:184,63 -DA:185,37 -DA:186,37 -DA:187,21 -DA:195,42 -DA:204,1 -DA:205,24 -DA:207,24 -DA:208,42 +DA:169,6 +DA:170,6 +DA:171,2 +DA:179,62 +DA:180,62 +DA:181,1213 +DA:183,62 +DA:184,36 +DA:185,36 +DA:186,20 +DA:194,42 +DA:203,1 +DA:204,24 +DA:206,24 +DA:207,42 +DA:208,24 DA:209,24 -DA:210,24 -DA:214,24 -DA:228,1 -DA:229,131 -DA:230,131 -DA:231,131 -DA:232,2789 -DA:233,204 -DA:235,2789 -DA:237,131 +DA:213,24 +DA:227,1 +DA:228,129 +DA:229,129 +DA:230,129 +DA:231,2713 +DA:232,202 +DA:234,2713 +DA:236,129 +DA:237,218 DA:238,218 -DA:239,218 -DA:250,1 -DA:251,8 -DA:253,8 -DA:255,8 -DA:257,8 -DA:259,1 -DA:265,1 -DA:266,25 -DA:270,25 +DA:249,1 +DA:250,8 +DA:252,8 +DA:254,8 +DA:256,8 +DA:258,1 +DA:264,1 +DA:265,25 +DA:269,25 +DA:274,25 DA:275,25 -DA:276,25 -DA:277,96 -DA:282,25 +DA:276,96 +DA:281,25 +DA:285,25 DA:286,25 -DA:287,25 +DA:287,96 DA:288,96 DA:289,96 -DA:290,96 -DA:291,17 -DA:292,8 -DA:294,9 -DA:297,79 +DA:290,17 +DA:291,8 +DA:293,9 +DA:296,79 +DA:299,25 DA:300,25 -DA:301,25 -DA:311,1 -DA:312,6 -DA:314,6 -DA:316,6 -DA:318,6 -DA:320,1 -DA:326,1 +DA:310,1 +DA:311,6 +DA:313,6 +DA:315,6 +DA:317,6 +DA:319,1 +DA:325,1 +DA:326,22 DA:327,22 -DA:328,22 +DA:331,22 DA:332,22 -DA:333,22 +DA:333,70 DA:334,70 -DA:335,70 -DA:336,8 -DA:337,24 -DA:340,62 +DA:335,8 +DA:336,24 +DA:339,62 +DA:345,22 DA:346,22 -DA:347,22 -DA:350,22 -DA:351,46 +DA:349,22 +DA:350,46 +DA:351,24 DA:352,24 DA:353,24 -DA:354,24 -DA:359,22 -DA:360,86 +DA:358,22 +DA:359,86 +DA:360,64 DA:361,64 DA:362,64 -DA:363,64 +DA:367,22 DA:368,22 -DA:369,22 -DA:370,88 -DA:373,22 +DA:369,88 +DA:372,22 +DA:374,22 DA:375,22 -DA:376,22 -DA:396,1 -DA:397,234 -DA:398,234 -DA:399,94 -DA:402,140 -DA:403,140 -DA:404,2 -DA:406,140 -DA:408,140 -DA:409,140 -DA:410,148 -DA:411,148 -DA:413,148 -DA:414,8 -DA:416,148 -DA:418,148 -DA:421,140 -DA:437,1 -DA:438,252 -DA:440,252 -DA:441,252 -DA:442,106 -DA:445,252 -DA:446,151 -DA:447,151 -DA:448,161 -DA:449,161 -DA:450,161 -DA:454,252 -DA:467,1 -DA:468,116 -DA:469,116 -DA:470,116 -DA:473,1 -DA:474,121 -DA:475,121 -DA:476,121 -DA:477,121 -DA:519,1 -DA:526,1 -DA:527,96 -DA:529,96 -DA:530,27 -DA:531,69 -DA:532,1 -DA:533,68 -DA:534,46 -DA:536,22 -DA:539,96 -DA:540,27 -DA:543,69 -DA:544,26 +DA:395,1 +DA:396,232 +DA:397,232 +DA:398,94 +DA:401,138 +DA:402,138 +DA:403,2 +DA:405,138 +DA:407,138 +DA:408,138 +DA:409,146 +DA:410,146 +DA:412,146 +DA:413,8 +DA:415,146 +DA:417,146 +DA:420,138 +DA:436,1 +DA:437,250 +DA:439,250 +DA:440,250 +DA:441,106 +DA:444,250 +DA:445,149 +DA:446,149 +DA:447,159 +DA:448,159 +DA:449,159 +DA:453,250 +DA:466,1 +DA:467,115 +DA:468,115 +DA:469,115 +DA:472,1 +DA:473,120 +DA:474,120 +DA:475,120 +DA:476,120 +DA:518,1 +DA:525,1 +DA:526,96 +DA:528,96 +DA:529,28 +DA:530,68 +DA:531,1 +DA:532,67 +DA:533,46 +DA:535,21 +DA:538,96 +DA:539,28 +DA:542,68 +DA:543,25 +DA:545,43 DA:546,43 -DA:547,43 -DA:550,69 -DA:551,22 -DA:554,69 -DA:557,96 -DA:559,96 -DA:562,1 -DA:563,104 +DA:549,68 +DA:550,21 +DA:553,68 +DA:556,96 +DA:558,96 +DA:561,1 +DA:562,104 +DA:564,104 DA:565,104 -DA:566,104 -DA:567,29 -DA:568,75 -DA:569,52 -DA:570,2 -DA:572,50 -DA:575,23 -DA:578,104 -DA:579,29 -DA:580,29 -DA:583,75 -DA:584,75 -DA:585,44 -DA:588,75 -DA:589,23 -DA:590,52 -DA:591,50 -DA:593,2 -DA:596,75 -DA:599,104 -DA:624,1 -DA:627,1 -DA:628,6 -DA:631,1 -DA:633,18 -DA:635,12 -DA:638,12 -DA:643,12 +DA:566,30 +DA:567,74 +DA:568,52 +DA:569,2 +DA:571,50 +DA:574,22 +DA:577,104 +DA:578,30 +DA:579,30 +DA:582,74 +DA:583,74 +DA:584,44 +DA:587,74 +DA:588,22 +DA:589,52 +DA:590,50 +DA:592,2 +DA:595,74 +DA:598,104 +DA:623,1 +DA:626,1 +DA:627,6 +DA:630,1 +DA:632,19 +DA:634,12 +DA:637,12 +DA:642,12 +DA:643,14 DA:644,14 -DA:645,14 -DA:646,12 +DA:645,12 +DA:647,2 DA:648,2 -DA:649,2 -DA:652,14 -DA:665,6 -DA:668,18 -DA:677,1 +DA:651,14 +DA:664,7 +DA:667,19 +DA:676,1 +DA:677,8 DA:678,8 DA:679,8 DA:680,8 DA:681,8 -DA:682,8 -DA:686,1 -DA:689,22 -DA:690,3 +DA:685,1 +DA:688,23 +DA:689,3 +DA:690,1 DA:691,1 DA:692,1 -DA:693,1 -DA:695,2 -DA:700,19 +DA:694,2 +DA:699,20 +DA:700,13 DA:701,13 DA:702,13 DA:703,13 -DA:704,13 -DA:709,6 -DA:715,21 -DA:716,12 -DA:717,14 +DA:708,7 +DA:714,22 +DA:715,12 +DA:716,14 +DA:718,12 DA:719,12 -DA:720,12 +DA:721,0 DA:722,0 DA:723,0 -DA:724,0 -DA:726,12 -DA:734,12 -DA:737,21 -DA:743,1 -DA:784,1 -DA:826,1 +DA:725,12 +DA:733,12 +DA:736,22 +DA:742,1 +DA:783,1 +DA:825,1 +DA:826,34 DA:827,34 -DA:828,34 -DA:829,333 +DA:828,330 +DA:831,34 DA:832,34 -DA:833,34 -DA:834,333 -DA:837,34 -DA:841,1 +DA:833,330 +DA:836,34 +DA:840,1 +DA:841,12 DA:842,12 DA:843,12 -DA:844,12 +DA:844,14 DA:845,14 DA:846,14 -DA:847,14 -DA:849,12 -DA:853,1 +DA:848,12 +DA:852,1 +DA:853,14 DA:854,14 -DA:855,14 -DA:856,0 -DA:858,14 -LF:290 -LH:286 -BRDA:42,1,0,14 -BRDA:42,1,1,14 -BRDA:50,2,0,1643 -BRDA:50,2,1,128 -BRDA:117,3,0,52 -BRDA:117,3,1,132 -BRDA:122,4,0,2 -BRDA:122,4,1,50 -BRDA:135,5,0,47 -BRDA:135,5,1,85 -BRDA:141,6,0,131 -BRDA:141,6,1,1 -BRDA:142,7,0,88 -BRDA:142,7,1,43 -BRDA:169,8,0,5 -BRDA:169,8,1,59 -BRDA:171,9,0,1 -BRDA:171,9,1,4 -BRDA:184,10,0,37 -BRDA:184,10,1,26 -BRDA:186,11,0,21 -BRDA:186,11,1,16 -BRDA:208,12,0,24 -BRDA:208,12,1,18 -BRDA:232,13,0,204 -BRDA:232,13,1,2585 -BRDA:251,14,0,8 -BRDA:251,14,1,4 -BRDA:253,15,0,5 -BRDA:253,15,1,3 -BRDA:290,16,0,17 -BRDA:290,16,1,79 -BRDA:291,17,0,8 -BRDA:291,17,1,9 -BRDA:312,18,0,6 -BRDA:312,18,1,2 -BRDA:314,19,0,3 -BRDA:314,19,1,3 -BRDA:335,20,0,8 -BRDA:335,20,1,62 -BRDA:351,21,0,24 -BRDA:351,21,1,22 -BRDA:360,22,0,64 -BRDA:360,22,1,22 -BRDA:398,23,0,94 -BRDA:398,23,1,140 -BRDA:403,24,0,2 -BRDA:403,24,1,138 -BRDA:413,25,0,8 -BRDA:413,25,1,140 -BRDA:441,26,0,106 -BRDA:441,26,1,146 -BRDA:445,27,0,151 -BRDA:445,27,1,101 -BRDA:529,28,0,27 -BRDA:529,28,1,69 -BRDA:531,29,0,1 -BRDA:531,29,1,68 -BRDA:533,30,0,46 -BRDA:533,30,1,22 -BRDA:539,31,0,27 -BRDA:539,31,1,69 -BRDA:543,32,0,26 -BRDA:543,32,1,43 -BRDA:550,33,0,22 -BRDA:550,33,1,47 -BRDA:566,34,0,29 -BRDA:566,34,1,75 -BRDA:568,35,0,52 -BRDA:568,35,1,23 -BRDA:569,36,0,2 -BRDA:569,36,1,50 -BRDA:578,37,0,29 -BRDA:578,37,1,75 -BRDA:584,38,0,44 -BRDA:584,38,1,31 -BRDA:588,39,0,23 -BRDA:588,39,1,52 -BRDA:590,40,0,50 -BRDA:590,40,1,2 -BRDA:633,41,0,12 -BRDA:633,41,1,6 -BRDA:633,42,0,18 -BRDA:633,42,1,11 -BRDA:645,43,0,12 -BRDA:645,43,1,2 +DA:855,0 +DA:857,14 +LF:289 +LH:285 +BRDA:41,1,0,14 +BRDA:41,1,1,14 +BRDA:49,2,0,1643 +BRDA:49,2,1,128 +BRDA:116,3,0,54 +BRDA:116,3,1,130 +BRDA:121,4,0,4 +BRDA:121,4,1,50 +BRDA:134,5,0,45 +BRDA:134,5,1,85 +BRDA:140,6,0,129 +BRDA:140,6,1,1 +BRDA:141,7,0,88 +BRDA:141,7,1,41 +BRDA:168,8,0,6 +BRDA:168,8,1,58 +BRDA:170,9,0,2 +BRDA:170,9,1,4 +BRDA:183,10,0,36 +BRDA:183,10,1,26 +BRDA:185,11,0,20 +BRDA:185,11,1,16 +BRDA:207,12,0,24 +BRDA:207,12,1,18 +BRDA:231,13,0,202 +BRDA:231,13,1,2511 +BRDA:252,14,0,5 +BRDA:252,14,1,3 +BRDA:289,15,0,17 +BRDA:289,15,1,79 +BRDA:290,16,0,8 +BRDA:290,16,1,9 +BRDA:313,17,0,3 +BRDA:313,17,1,3 +BRDA:334,18,0,8 +BRDA:334,18,1,62 +BRDA:350,19,0,24 +BRDA:350,19,1,22 +BRDA:359,20,0,64 +BRDA:359,20,1,22 +BRDA:397,21,0,94 +BRDA:397,21,1,138 +BRDA:402,22,0,2 +BRDA:402,22,1,136 +BRDA:412,23,0,8 +BRDA:412,23,1,138 +BRDA:440,24,0,106 +BRDA:440,24,1,144 +BRDA:444,25,0,149 +BRDA:444,25,1,101 +BRDA:528,26,0,28 +BRDA:528,26,1,68 +BRDA:530,27,0,1 +BRDA:530,27,1,67 +BRDA:532,28,0,46 +BRDA:532,28,1,21 +BRDA:538,29,0,28 +BRDA:538,29,1,68 +BRDA:542,30,0,25 +BRDA:542,30,1,43 +BRDA:549,31,0,21 +BRDA:549,31,1,47 +BRDA:565,32,0,30 +BRDA:565,32,1,74 +BRDA:567,33,0,52 +BRDA:567,33,1,22 +BRDA:568,34,0,2 +BRDA:568,34,1,50 +BRDA:577,35,0,30 +BRDA:577,35,1,74 +BRDA:583,36,0,44 +BRDA:583,36,1,30 +BRDA:587,37,0,22 +BRDA:587,37,1,52 +BRDA:589,38,0,50 +BRDA:589,38,1,2 +BRDA:632,39,0,12 +BRDA:632,39,1,7 +BRDA:632,40,0,19 +BRDA:632,40,1,12 +BRDA:644,41,0,12 +BRDA:644,41,1,2 +BRDA:688,42,0,3 +BRDA:688,42,1,20 +BRDA:689,43,0,1 +BRDA:689,43,1,2 BRDA:689,44,0,3 -BRDA:689,44,1,19 -BRDA:690,45,0,1 -BRDA:690,45,1,2 -BRDA:690,46,0,3 -BRDA:690,46,1,2 -BRDA:700,47,0,13 -BRDA:700,47,1,6 -BRDA:700,48,0,19 -BRDA:700,48,1,11 -BRDA:715,49,0,12 -BRDA:715,49,1,9 -BRDA:715,50,0,21 -BRDA:715,50,1,15 -BRDA:715,50,2,8 -BRF:101 -BRH:101 -end_of_record -TN: -SF:/data/upstream/node-http2/lib/logging.js -FN:15,noop -FN:24,(anonymous_2) -FNF:2 -FNH:2 -FNDA:1090,noop -FNDA:105,(anonymous_2) -DA:1,1 -DA:3,1 -DA:4,0 -DA:6,0 -DA:12,0 -DA:15,1 -DA:16,1 -DA:24,105 -DA:27,1 -LF:9 -LH:6 -BRDA:3,1,0,0 -BRDA:3,1,1,1 -BRF:2 -BRH:1 +BRDA:689,44,1,2 +BRDA:699,45,0,13 +BRDA:699,45,1,7 +BRDA:699,46,0,20 +BRDA:699,46,1,12 +BRDA:714,47,0,12 +BRDA:714,47,1,10 +BRDA:714,48,0,22 +BRDA:714,48,1,15 +BRDA:714,48,2,8 +BRF:97 +BRH:97 end_of_record TN: SF:/data/upstream/node-http2/lib/connection.js +FN:1,noop FN:36,Connection FN:96,_initializeStreamManagement -FN:121,_getIdOf -FN:127,_writeControlFrame -FN:139,_updateStreamLimit -FN:145,_decreaseStreamCount -FN:158,_newStream -FN:166,_activateStream -FN:179,_createIncomingStream -FN:196,createStream -FN:209,tryToActivate -FN:221,(anonymous_12) -FN:223,(anonymous_13) -FN:228,(anonymous_14) -FN:247,_send -FN:280,_receive -FN:310,_initializeSettingsManagement -FN:316,(anonymous_18) -FN:330,_receiveSettings -FN:337,set -FN:355,_initializeLifecycleManagement -FN:362,_generatePingId -FN:373,ping -FN:390,_receivePing -FN:415,close -FN:426,_receiveGoaway -FN:434,_initializeFlowControl -FN:437,(anonymous_28) -FN:442,noop -FN:455,_setInitialStreamWindowSize -FN:462,(anonymous_31) -FN:470,_setStreamFlowControl +FN:117,_getIdOf +FN:123,_writeControlFrame +FN:135,_updateStreamLimit +FN:140,_changeStreamCount +FN:156,_enableReceiving +FN:187,_enableSending +FN:196,_insert +FN:207,_reprioritize +FN:216,_createIncomingStream +FN:228,createStream +FN:243,_send +FN:270,(anonymous_15) +FN:291,_receive +FN:323,_initializeSettingsManagement +FN:329,(anonymous_18) +FN:343,_receiveSettings +FN:350,set +FN:368,_initializeLifecycleManagement +FN:375,_generatePingId +FN:386,ping +FN:403,_receivePing +FN:428,close +FN:439,_receiveGoaway +FN:447,_initializeFlowControl +FN:450,(anonymous_28) +FN:455,noop +FN:468,_setInitialStreamWindowSize +FN:475,(anonymous_31) +FN:483,_setStreamFlowControl FNF:32 FNH:30 -FNDA:18,Connection -FNDA:18,_initializeStreamManagement -FNDA:139,_getIdOf -FNDA:23,_writeControlFrame -FNDA:16,_updateStreamLimit -FNDA:1,_decreaseStreamCount -FNDA:16,_newStream -FNDA:16,_activateStream -FNDA:9,_createIncomingStream -FNDA:9,createStream -FNDA:9,tryToActivate -FNDA:3,(anonymous_12) -FNDA:3,(anonymous_13) -FNDA:9,(anonymous_14) -FNDA:123,_send -FNDA:47,_receive -FNDA:18,_initializeSettingsManagement -FNDA:18,(anonymous_18) -FNDA:18,_receiveSettings -FNDA:18,set -FNDA:18,_initializeLifecycleManagement +FNDA:0,noop +FNDA:25,Connection +FNDA:25,_initializeStreamManagement +FNDA:197,_getIdOf +FNDA:25,_writeControlFrame +FNDA:18,_updateStreamLimit +FNDA:43,_changeStreamCount +FNDA:22,_enableReceiving +FNDA:22,_enableSending +FNDA:43,_insert +FNDA:1,_reprioritize +FNDA:11,_createIncomingStream +FNDA:8,createStream +FNDA:189,_send +FNDA:0,(anonymous_15) +FNDA:52,_receive +FNDA:25,_initializeSettingsManagement +FNDA:20,(anonymous_18) +FNDA:20,_receiveSettings +FNDA:25,set +FNDA:25,_initializeLifecycleManagement FNDA:2,_generatePingId FNDA:2,ping -FNDA:4,_receivePing -FNDA:0,close -FNDA:0,_receiveGoaway -FNDA:18,_initializeFlowControl -FNDA:16,(anonymous_28) -FNDA:18,noop -FNDA:18,_setInitialStreamWindowSize -FNDA:24,(anonymous_31) -FNDA:2,_setStreamFlowControl +FNDA:5,_receivePing +FNDA:1,close +FNDA:1,_receiveGoaway +FNDA:25,_initializeFlowControl +FNDA:22,(anonymous_28) +FNDA:24,noop +FNDA:25,_setInitialStreamWindowSize +FNDA:30,(anonymous_31) +FNDA:8,_setStreamFlowControl DA:1,1 DA:10,1 DA:12,1 DA:36,1 -DA:38,18 -DA:41,18 -DA:44,18 -DA:47,18 -DA:50,18 -DA:53,18 +DA:38,25 +DA:41,25 +DA:44,25 +DA:47,25 +DA:50,25 +DA:53,25 DA:57,1 DA:93,1 DA:96,1 -DA:103,18 -DA:105,18 -DA:108,18 -DA:109,18 -DA:112,18 -DA:116,18 -DA:117,18 -DA:118,18 -DA:121,1 -DA:122,139 -DA:127,1 -DA:128,23 -DA:130,23 -DA:131,23 -DA:133,0 -DA:134,0 -DA:139,1 -DA:140,16 -DA:141,16 -DA:145,1 -DA:146,1 -DA:147,1 -DA:158,1 -DA:159,16 -DA:160,16 -DA:161,16 -DA:162,16 -DA:163,16 -DA:166,1 -DA:167,16 -DA:168,16 -DA:169,16 -DA:179,1 -DA:180,9 -DA:182,9 -DA:183,2 -DA:184,2 -DA:185,0 -DA:188,7 -DA:189,7 -DA:190,7 -DA:191,7 -DA:192,7 +DA:100,25 +DA:101,25 +DA:104,25 +DA:105,25 +DA:108,25 +DA:112,25 +DA:113,25 +DA:114,25 +DA:117,1 +DA:118,197 +DA:123,1 +DA:124,25 +DA:126,25 +DA:127,25 +DA:129,0 +DA:130,0 +DA:135,1 +DA:136,18 +DA:137,18 +DA:140,1 +DA:141,43 +DA:142,15 +DA:143,15 +DA:144,15 +DA:156,1 +DA:158,22 +DA:159,11 +DA:160,11 +DA:164,11 +DA:165,11 +DA:170,0 +DA:172,0 +DA:173,0 +DA:176,22 +DA:179,22 +DA:180,22 +DA:181,22 +DA:183,22 +DA:187,1 +DA:188,22 +DA:189,22 +DA:190,22 +DA:191,22 +DA:192,22 DA:196,1 -DA:198,9 -DA:199,9 -DA:201,9 -DA:204,9 -DA:208,9 +DA:197,43 +DA:198,43 +DA:199,43 +DA:200,78 +DA:202,43 +DA:207,1 +DA:208,1 DA:209,1 -DA:210,9 -DA:211,0 -DA:213,9 -DA:220,9 -DA:221,9 -DA:222,3 -DA:223,3 -DA:224,3 -DA:228,9 -DA:229,9 -DA:230,0 -DA:232,9 -DA:237,9 -DA:239,9 -DA:247,1 -DA:248,123 -DA:251,123 -DA:252,123 -DA:253,120 -DA:254,120 -DA:255,120 -DA:256,120 -DA:257,120 -DA:258,26 -DA:259,26 -DA:260,3 -DA:261,3 -DA:264,26 -DA:265,26 -DA:267,26 -DA:268,0 -DA:269,26 -DA:270,0 -DA:275,123 -DA:280,1 -DA:281,47 -DA:284,47 -DA:287,47 -DA:288,6 -DA:292,46 -DA:293,3 -DA:297,45 -DA:299,45 -DA:305,1 -DA:310,1 -DA:312,18 -DA:313,18 -DA:316,18 -DA:317,18 -DA:318,18 -DA:320,0 -DA:321,0 -DA:326,18 -DA:330,1 -DA:331,18 -DA:332,34 -DA:337,1 -DA:338,18 -DA:355,1 -DA:356,18 -DA:357,18 -DA:358,18 -DA:362,1 -DA:363,2 -DA:364,2 -DA:365,2 -DA:366,32 -DA:369,2 -DA:373,1 -DA:374,2 -DA:375,2 +DA:210,1 +DA:211,1 +DA:216,1 +DA:217,11 +DA:219,11 +DA:220,11 +DA:221,11 +DA:222,11 +DA:224,11 +DA:228,1 +DA:229,8 +DA:232,8 +DA:233,8 +DA:235,8 +DA:243,1 +DA:244,189 +DA:247,189 +DA:248,189 +DA:249,197 +DA:250,197 +DA:251,197 +DA:252,197 +DA:253,27 +DA:254,0 +DA:255,0 +DA:258,27 +DA:259,8 +DA:262,27 +DA:263,27 +DA:264,3 +DA:265,3 +DA:268,27 +DA:269,27 +DA:270,27 +DA:271,0 +DA:274,27 +DA:275,27 +DA:278,27 +DA:279,0 +DA:280,27 +DA:281,0 +DA:286,189 +DA:291,1 +DA:292,52 +DA:295,52 +DA:298,52 +DA:299,8 +DA:303,52 +DA:304,3 +DA:307,52 +DA:310,52 +DA:312,52 +DA:318,1 +DA:323,1 +DA:325,25 +DA:326,25 +DA:329,25 +DA:330,20 +DA:331,20 +DA:333,0 +DA:334,0 +DA:339,25 +DA:343,1 +DA:344,20 +DA:345,38 +DA:350,1 +DA:351,25 +DA:368,1 +DA:369,25 +DA:370,25 +DA:371,25 +DA:375,1 DA:376,2 +DA:377,2 DA:378,2 -DA:379,2 -DA:390,1 -DA:391,4 +DA:379,32 +DA:382,2 +DA:386,1 +DA:387,2 +DA:388,2 +DA:389,2 +DA:391,2 DA:392,2 -DA:393,2 -DA:394,2 -DA:395,2 -DA:396,2 -DA:398,0 -DA:402,2 -DA:403,2 -DA:415,1 -DA:416,0 -DA:417,0 -DA:423,0 -DA:426,1 -DA:427,0 -DA:428,0 -DA:434,1 -DA:436,18 -DA:437,18 -DA:438,16 -DA:440,18 -DA:441,18 -DA:442,18 -DA:449,1 -DA:455,1 -DA:456,18 -DA:457,0 -DA:458,0 -DA:460,18 -DA:461,18 -DA:462,18 -DA:463,24 +DA:403,1 +DA:404,5 +DA:405,3 +DA:406,3 +DA:407,2 +DA:408,2 +DA:409,2 +DA:411,1 +DA:415,2 +DA:416,2 +DA:428,1 +DA:429,1 +DA:430,1 +DA:436,1 +DA:439,1 +DA:440,1 +DA:441,1 +DA:447,1 +DA:449,25 +DA:450,25 +DA:451,22 +DA:453,25 +DA:454,25 +DA:455,25 +DA:462,1 +DA:468,1 +DA:469,25 DA:470,1 -DA:471,2 -DA:472,2 -DA:473,2 -DA:474,0 -DA:475,0 -DA:476,0 -LF:177 -LH:157 -BRDA:41,1,0,18 -BRDA:41,1,1,2 -BRDA:128,2,0,23 -BRDA:128,2,1,0 -BRDA:128,3,0,23 -BRDA:128,3,1,5 -BRDA:128,3,2,1 -BRDA:128,3,3,1 -BRDA:182,4,0,2 -BRDA:182,4,1,7 -BRDA:182,5,0,9 -BRDA:182,5,1,7 -BRDA:210,6,0,0 -BRDA:210,6,1,9 -BRDA:229,7,0,0 -BRDA:229,7,1,9 -BRDA:259,8,0,3 -BRDA:259,8,1,23 -BRDA:267,9,0,0 -BRDA:267,9,1,26 -BRDA:269,10,0,0 -BRDA:269,10,1,26 -BRDA:287,11,0,6 -BRDA:287,11,1,41 -BRDA:292,12,0,3 -BRDA:292,12,1,43 -BRDA:313,13,0,18 -BRDA:313,13,1,2 -BRDA:317,14,0,18 -BRDA:317,14,1,0 -BRDA:317,15,0,18 -BRDA:317,15,1,18 -BRDA:391,16,0,2 -BRDA:391,16,1,2 -BRDA:393,17,0,2 -BRDA:393,17,1,0 -BRDA:421,18,0,0 -BRDA:421,18,1,0 -BRDA:456,19,0,0 -BRDA:456,19,1,18 -BRDA:456,20,0,18 -BRDA:456,20,1,0 -BRDA:471,21,0,2 -BRDA:471,21,1,0 -BRDA:474,22,0,0 -BRDA:474,22,1,0 -BRF:46 -BRH:32 +DA:471,1 +DA:473,24 +DA:474,24 +DA:475,24 +DA:476,30 +DA:483,1 +DA:484,8 +DA:485,6 +DA:486,6 +DA:487,2 +DA:488,1 +DA:489,1 +LF:189 +LH:177 +BRDA:1,1,0,1 +BRDA:1,1,1,0 +BRDA:124,2,0,25 +BRDA:124,2,1,0 +BRDA:124,3,0,25 +BRDA:124,3,1,5 +BRDA:124,3,2,1 +BRDA:124,3,3,0 +BRDA:141,4,0,15 +BRDA:141,4,1,28 +BRDA:158,5,0,11 +BRDA:158,5,1,11 +BRDA:164,6,0,11 +BRDA:164,6,1,0 +BRDA:164,7,0,11 +BRDA:164,7,1,11 +BRDA:199,8,0,121 +BRDA:199,8,1,92 +BRDA:253,9,0,0 +BRDA:253,9,1,27 +BRDA:258,10,0,8 +BRDA:258,10,1,19 +BRDA:263,11,0,3 +BRDA:263,11,1,24 +BRDA:274,12,0,27 +BRDA:274,12,1,0 +BRDA:278,13,0,0 +BRDA:278,13,1,27 +BRDA:280,14,0,0 +BRDA:280,14,1,27 +BRDA:298,15,0,8 +BRDA:298,15,1,44 +BRDA:303,16,0,3 +BRDA:303,16,1,49 +BRDA:326,17,0,25 +BRDA:326,17,1,2 +BRDA:330,18,0,20 +BRDA:330,18,1,0 +BRDA:330,19,0,20 +BRDA:330,19,1,20 +BRDA:404,20,0,3 +BRDA:404,20,1,2 +BRDA:406,21,0,2 +BRDA:406,21,1,1 +BRDA:434,22,0,1 +BRDA:434,22,1,1 +BRDA:469,23,0,1 +BRDA:469,23,1,24 +BRDA:469,24,0,25 +BRDA:469,24,1,2 +BRDA:484,25,0,6 +BRDA:484,25,1,2 +BRDA:487,26,0,1 +BRDA:487,26,1,1 +BRF:54 +BRH:45 end_of_record TN: SF:/data/upstream/node-http2/lib/flow.js FN:1,noop -FN:73,Flow -FN:90,_receive -FN:98,_write -FN:106,(anonymous_5) -FN:127,_restoreWindow -FN:141,disableRemoteFlowControl -FN:173,_send -FN:181,_read -FN:194,_onWindowIncrease +FN:72,Flow +FN:89,_receive +FN:97,_write +FN:105,(anonymous_5) +FN:126,_restoreWindow +FN:140,disableRemoteFlowControl +FN:170,_send +FN:178,_read +FN:191,_onWindowIncrease FN:212,_push FN:261,push FN:280,getLastQueuedFrame @@ -806,81 +797,80 @@ FN:322,_updateWindow FN:330,setInitialWindow FN:336,disableLocalFlowControl FNF:17 -FNH:13 -FNDA:12,noop -FNDA:42,Flow +FNH:10 +FNDA:0,noop +FNDA:68,Flow FNDA:0,_receive -FNDA:77,_write -FNDA:8,(anonymous_5) -FNDA:7,_restoreWindow +FNDA:105,_write +FNDA:0,(anonymous_5) +FNDA:0,_restoreWindow FNDA:0,disableRemoteFlowControl FNDA:0,_send -FNDA:341,_read -FNDA:27,_onWindowIncrease -FNDA:83,_push -FNDA:57,push -FNDA:3,getLastQueuedFrame -FNDA:29,_increaseWindow -FNDA:5,_updateWindow -FNDA:22,setInitialWindow +FNDA:524,_read +FNDA:34,_onWindowIncrease +FNDA:111,_push +FNDA:84,push +FNDA:12,getLastQueuedFrame +FNDA:37,_increaseWindow +FNDA:3,_updateWindow +FNDA:28,setInitialWindow FNDA:0,disableLocalFlowControl DA:1,1 -DA:2,1 -DA:11,1 -DA:13,1 -DA:70,1 -DA:73,1 -DA:74,42 -DA:76,42 -DA:77,42 -DA:78,42 -DA:80,42 -DA:81,42 -DA:82,42 -DA:84,1 -DA:90,1 -DA:91,0 -DA:98,1 -DA:99,77 -DA:101,77 -DA:102,6 -DA:105,77 -DA:106,8 -DA:107,8 -DA:108,8 -DA:109,7 -DA:111,8 -DA:116,69 -DA:119,75 -DA:121,5 -DA:127,1 -DA:128,7 -DA:129,7 -DA:130,3 -DA:135,3 -DA:141,1 +DA:10,1 +DA:12,1 +DA:69,1 +DA:72,1 +DA:73,68 +DA:75,68 +DA:76,68 +DA:77,68 +DA:79,68 +DA:80,68 +DA:81,68 +DA:83,1 +DA:89,1 +DA:90,0 +DA:97,1 +DA:98,105 +DA:100,105 +DA:101,19 +DA:104,105 +DA:105,0 +DA:106,0 +DA:107,0 +DA:108,0 +DA:110,0 +DA:115,105 +DA:118,105 +DA:120,3 +DA:126,1 +DA:127,0 +DA:128,0 +DA:129,0 +DA:134,0 +DA:140,1 +DA:141,0 DA:142,0 -DA:143,0 DA:170,1 -DA:173,1 -DA:174,0 -DA:181,1 -DA:182,341 -DA:183,341 -DA:185,0 -DA:186,0 -DA:188,341 -DA:194,1 -DA:195,27 -DA:197,27 -DA:198,27 -DA:199,0 -DA:202,27 +DA:171,0 +DA:178,1 +DA:179,524 +DA:180,524 +DA:182,0 +DA:183,0 +DA:185,524 +DA:191,1 +DA:192,34 +DA:194,34 +DA:195,34 +DA:196,0 +DA:199,34 +DA:210,1 DA:212,1 -DA:213,83 -DA:214,83 -DA:215,83 -DA:217,83 +DA:213,111 +DA:214,111 +DA:215,111 +DA:217,111 DA:220,0 DA:221,0 DA:225,0 @@ -888,614 +878,679 @@ DA:226,0 DA:232,0 DA:234,0 DA:235,0 -DA:238,83 -DA:239,83 -DA:240,83 -DA:241,83 -DA:242,12 -DA:244,12 -DA:245,12 -DA:247,83 -DA:250,83 -DA:253,83 +DA:238,111 +DA:239,111 +DA:240,111 +DA:241,111 +DA:242,19 +DA:244,19 +DA:245,19 +DA:247,111 +DA:250,111 +DA:253,111 DA:254,0 -DA:257,83 +DA:257,111 DA:261,1 -DA:262,57 -DA:263,0 -DA:265,57 -DA:266,57 -DA:267,57 -DA:270,57 -DA:271,57 +DA:262,84 +DA:263,2 +DA:265,82 +DA:266,82 +DA:267,82 +DA:270,84 +DA:271,84 DA:273,0 DA:274,0 DA:280,1 -DA:281,3 -DA:282,3 +DA:281,12 +DA:282,12 DA:296,1 DA:298,1 -DA:299,29 -DA:300,2 -DA:301,2 -DA:303,27 -DA:304,27 -DA:305,27 +DA:299,37 +DA:300,3 +DA:301,3 +DA:303,34 +DA:304,34 +DA:305,34 DA:306,0 DA:307,0 -DA:309,27 +DA:309,34 DA:322,1 -DA:323,5 +DA:323,3 DA:330,1 -DA:331,22 -DA:332,22 +DA:331,28 +DA:332,28 DA:336,1 DA:337,0 -LF:107 -LH:86 -BRDA:1,1,0,0 -BRDA:1,1,1,1 -BRDA:101,2,0,6 -BRDA:101,2,1,71 -BRDA:105,3,0,8 -BRDA:105,3,1,69 -BRDA:105,4,0,77 -BRDA:105,4,1,18 -BRDA:105,4,2,10 -BRDA:108,5,0,7 -BRDA:108,5,1,1 -BRDA:119,6,0,5 -BRDA:119,6,1,70 -BRDA:119,7,0,75 -BRDA:119,7,1,7 -BRDA:119,7,2,3 -BRDA:129,8,0,3 -BRDA:129,8,1,4 -BRDA:129,9,0,7 -BRDA:129,9,1,3 -BRDA:129,9,2,3 -BRDA:182,10,0,341 -BRDA:182,10,1,0 -BRDA:198,11,0,27 -BRDA:198,11,1,27 -BRDA:251,12,0,83 +LF:106 +LH:77 +BRDA:1,1,0,1 +BRDA:1,1,1,0 +BRDA:100,2,0,19 +BRDA:100,2,1,86 +BRDA:104,3,0,0 +BRDA:104,3,1,105 +BRDA:104,4,0,105 +BRDA:104,4,1,31 +BRDA:104,4,2,17 +BRDA:107,5,0,0 +BRDA:107,5,1,0 +BRDA:118,6,0,3 +BRDA:118,6,1,102 +BRDA:118,7,0,105 +BRDA:118,7,1,3 +BRDA:118,7,2,0 +BRDA:128,8,0,0 +BRDA:128,8,1,0 +BRDA:128,9,0,0 +BRDA:128,9,1,0 +BRDA:128,9,2,0 +BRDA:179,10,0,524 +BRDA:179,10,1,0 +BRDA:195,11,0,34 +BRDA:195,11,1,34 +BRDA:251,12,0,111 BRDA:251,12,1,0 -BRDA:215,13,0,83 +BRDA:215,13,0,111 BRDA:215,13,1,0 -BRDA:215,14,0,83 -BRDA:215,14,1,83 -BRDA:215,14,2,16 -BRDA:215,14,3,16 +BRDA:215,14,0,111 +BRDA:215,14,1,109 +BRDA:215,14,2,26 +BRDA:215,14,3,26 BRDA:220,15,0,0 BRDA:220,15,1,0 -BRDA:239,16,0,83 +BRDA:239,16,0,111 BRDA:239,16,1,0 -BRDA:241,17,0,12 -BRDA:241,17,1,71 -BRDA:241,18,0,83 -BRDA:241,18,1,83 -BRDA:241,18,2,16 +BRDA:241,17,0,19 +BRDA:241,17,1,92 +BRDA:241,18,0,111 +BRDA:241,18,1,109 +BRDA:241,18,2,26 BRDA:253,19,0,0 -BRDA:253,19,1,83 -BRDA:262,20,0,0 -BRDA:262,20,1,57 -BRDA:265,21,0,57 -BRDA:265,21,1,50 -BRDA:270,22,0,57 +BRDA:253,19,1,111 +BRDA:262,20,0,2 +BRDA:262,20,1,82 +BRDA:265,21,0,82 +BRDA:265,21,1,71 +BRDA:270,22,0,84 BRDA:270,22,1,0 -BRDA:282,23,0,3 -BRDA:282,23,1,3 -BRDA:299,24,0,2 -BRDA:299,24,1,27 -BRDA:299,25,0,29 -BRDA:299,25,1,2 +BRDA:282,23,0,12 +BRDA:282,23,1,12 +BRDA:299,24,0,3 +BRDA:299,24,1,34 +BRDA:299,25,0,37 +BRDA:299,25,1,4 BRDA:305,26,0,0 -BRDA:305,26,1,27 -BRDA:305,27,0,27 -BRDA:305,27,1,23 +BRDA:305,26,1,34 +BRDA:305,27,0,34 +BRDA:305,27,1,26 BRDA:323,28,0,0 -BRDA:323,28,1,5 +BRDA:323,28,1,3 BRF:62 -BRH:50 +BRH:42 end_of_record TN: SF:/data/upstream/node-http2/lib/stream.js FN:1,noop -FN:42,Stream -FN:65,_initializeManagement -FN:66,(anonymous_4) -FN:69,(anonymous_5) -FN:78,promise -FN:87,headers -FN:96,reset -FN:138,_initializeDataFlow -FN:151,_receive -FN:183,_read -FN:192,_write -FN:210,_send -FN:227,_finishing -FN:269,_initializeState -FN:280,transition -FN:300,transition -FNF:17 -FNH:17 -FNDA:5,noop -FNDA:24,Stream -FNDA:24,_initializeManagement -FNDA:4,(anonymous_4) -FNDA:11,(anonymous_5) -FNDA:3,promise -FNDA:13,headers -FNDA:8,reset -FNDA:24,_initializeDataFlow -FNDA:30,_receive -FNDA:11,_read -FNDA:5,_write -FNDA:218,_send -FNDA:3,_finishing -FNDA:24,_initializeState -FNDA:26,transition -FNDA:64,transition +FN:47,Stream +FN:73,_initializeManagement +FN:76,(anonymous_4) +FN:79,(anonymous_5) +FN:85,(anonymous_6) +FN:90,promise +FN:101,headers +FN:108,priority +FN:130,reset +FN:172,_initializeDataFlow +FN:185,_receive +FN:217,_read +FN:226,_write +FN:244,_send +FN:261,_finishing +FN:304,_initializeState +FN:314,transition +FN:324,activeState +FN:331,transition +FN:553,(anonymous_21) +FNF:21 +FNH:19 +FNDA:0,noop +FNDA:43,Stream +FNDA:43,_initializeManagement +FNDA:8,(anonymous_4) +FNDA:20,(anonymous_5) +FNDA:2,(anonymous_6) +FNDA:4,promise +FNDA:18,headers +FNDA:2,priority +FNDA:15,reset +FNDA:43,_initializeDataFlow +FNDA:53,_receive +FNDA:13,_read +FNDA:8,_write +FNDA:335,_send +FNDA:12,_finishing +FNDA:43,_initializeState +FNDA:56,transition +FNDA:100,activeState +FNDA:110,transition +FNDA:0,(anonymous_21) DA:1,1 -DA:2,1 -DA:13,1 -DA:15,1 -DA:42,1 -DA:43,24 -DA:46,24 -DA:49,24 -DA:52,24 -DA:55,24 -DA:58,1 -DA:65,1 -DA:66,24 -DA:67,4 -DA:69,24 -DA:70,11 -DA:71,11 -DA:78,1 -DA:79,3 -DA:80,3 -DA:87,1 -DA:88,13 -DA:93,13 -DA:96,1 -DA:97,8 -DA:136,1 -DA:138,1 -DA:139,24 -DA:140,24 -DA:141,24 -DA:142,24 -DA:143,24 -DA:144,24 -DA:145,24 -DA:147,24 -DA:151,1 -DA:152,30 -DA:154,30 -DA:158,30 -DA:159,10 -DA:160,10 -DA:161,0 -DA:162,0 -DA:168,20 -DA:172,30 -DA:173,3 -DA:176,30 -DA:177,30 -DA:183,1 -DA:184,11 -DA:185,0 -DA:186,0 -DA:187,0 -DA:192,1 -DA:194,5 -DA:200,5 -DA:201,5 -DA:203,0 -DA:210,1 -DA:211,218 -DA:212,0 -DA:213,0 -DA:214,0 -DA:222,1 -DA:227,1 -DA:228,3 -DA:229,3 -DA:230,3 -DA:231,0 -DA:232,0 -DA:233,0 -DA:235,3 -DA:269,1 -DA:270,24 -DA:271,24 -DA:272,24 -DA:273,24 -DA:278,1 -DA:280,1 -DA:281,26 -DA:282,26 -DA:284,26 -DA:285,26 -DA:286,26 -DA:288,26 -DA:289,26 -DA:290,15 -DA:291,11 -DA:292,2 -DA:300,1 -DA:301,64 -DA:302,64 -DA:304,64 -DA:305,64 -DA:306,64 -DA:307,18 -DA:308,24 -DA:309,1 -DA:310,8 -DA:311,0 -DA:312,7 -DA:313,0 -DA:314,0 -DA:315,6 -DA:318,64 -DA:325,15 -DA:326,11 -DA:327,11 -DA:328,0 -DA:331,4 -DA:333,15 -DA:345,7 +DA:12,1 +DA:14,1 +DA:47,1 +DA:48,43 +DA:51,43 +DA:54,43 +DA:57,43 +DA:60,43 +DA:63,1 +DA:69,1 +DA:70,1 +DA:73,1 +DA:74,43 +DA:75,43 +DA:76,43 +DA:77,8 +DA:79,43 +DA:80,20 +DA:81,0 +DA:83,20 +DA:85,43 +DA:86,2 +DA:90,1 +DA:91,4 +DA:92,4 +DA:93,4 +DA:98,4 +DA:101,1 +DA:102,18 +DA:108,1 +DA:109,2 +DA:110,2 +DA:111,0 +DA:113,0 +DA:114,0 +DA:115,0 +DA:117,0 +DA:124,2 +DA:125,2 +DA:126,2 +DA:130,1 +DA:131,15 +DA:170,1 +DA:172,1 +DA:173,43 +DA:174,43 +DA:175,43 +DA:176,43 +DA:177,43 +DA:178,43 +DA:179,43 +DA:181,43 +DA:185,1 +DA:186,53 +DA:188,53 +DA:192,53 +DA:193,20 +DA:194,20 +DA:195,0 +DA:196,0 +DA:202,33 +DA:206,53 +DA:207,12 +DA:210,53 +DA:211,53 +DA:217,1 +DA:218,13 +DA:219,0 +DA:220,0 +DA:221,0 +DA:226,1 +DA:228,8 +DA:234,8 +DA:235,8 +DA:237,0 +DA:244,1 +DA:245,335 +DA:246,0 +DA:247,0 +DA:248,0 +DA:256,1 +DA:261,1 +DA:262,12 +DA:263,12 +DA:264,12 +DA:265,5 +DA:266,5 +DA:267,5 +DA:268,5 +DA:270,7 +DA:304,1 +DA:305,43 +DA:306,43 +DA:307,43 +DA:308,43 +DA:309,43 +DA:314,1 +DA:315,56 +DA:316,56 +DA:317,56 +DA:318,56 +DA:324,1 +DA:325,100 +DA:331,1 +DA:332,110 +DA:333,110 +DA:335,110 +DA:336,110 +DA:337,110 +DA:338,40 +DA:339,38 +DA:340,2 +DA:341,15 +DA:342,0 +DA:343,12 +DA:344,0 +DA:345,0 DA:346,3 -DA:347,4 -DA:348,0 -DA:349,4 -DA:352,4 -DA:354,7 -DA:364,1 -DA:365,0 -DA:366,1 -DA:367,1 -DA:368,0 -DA:371,0 -DA:373,1 -DA:385,24 +DA:349,110 +DA:351,110 +DA:358,24 +DA:359,20 +DA:360,20 +DA:361,1 +DA:363,20 +DA:365,4 +DA:367,24 +DA:379,6 +DA:380,2 +DA:381,4 +DA:382,0 +DA:383,4 DA:386,4 -DA:387,20 -DA:388,0 -DA:392,24 -DA:401,7 -DA:402,2 -DA:403,5 -DA:406,0 -DA:408,7 -DA:421,2 +DA:388,6 +DA:398,6 +DA:399,0 +DA:400,6 +DA:401,2 +DA:402,4 +DA:405,4 +DA:407,6 +DA:419,23 +DA:420,9 +DA:421,14 DA:422,0 -DA:423,2 -DA:426,0 -DA:428,2 -DA:451,8 -DA:455,0 -DA:457,8 -DA:463,64 -DA:464,3 -DA:473,64 -DA:474,5 -DA:476,5 -DA:480,64 -DA:481,8 -DA:484,8 -DA:485,0 -DA:486,0 -DA:492,8 -DA:493,8 -DA:494,8 -DA:495,8 -LF:157 -LH:130 -BRDA:1,1,0,0 -BRDA:1,1,1,1 -BRDA:46,2,0,24 -BRDA:46,2,1,8 -BRDA:158,3,0,10 -BRDA:158,3,1,20 -BRDA:160,4,0,0 -BRDA:160,4,1,10 -BRDA:172,5,0,3 -BRDA:172,5,1,27 -BRDA:176,6,0,30 -BRDA:176,6,1,0 -BRDA:184,7,0,0 -BRDA:184,7,1,11 -BRDA:200,8,0,5 -BRDA:200,8,1,0 -BRDA:211,9,0,0 -BRDA:211,9,1,218 -BRDA:230,10,0,0 -BRDA:230,10,1,3 -BRDA:230,11,0,3 -BRDA:230,11,1,0 -BRDA:230,11,2,0 -BRDA:281,12,0,26 -BRDA:281,12,1,0 -BRDA:289,13,0,15 -BRDA:289,13,1,11 -BRDA:289,14,0,26 -BRDA:289,14,1,20 -BRDA:291,15,0,2 -BRDA:291,15,1,9 -BRDA:291,16,0,11 -BRDA:291,16,1,6 -BRDA:306,17,0,18 -BRDA:306,17,1,24 -BRDA:306,17,2,1 -BRDA:306,17,3,8 -BRDA:306,17,4,0 -BRDA:306,17,5,7 -BRDA:306,17,6,0 -BRDA:306,17,7,0 -BRDA:306,17,8,6 -BRDA:318,18,0,15 -BRDA:318,18,1,7 -BRDA:318,18,2,1 -BRDA:318,18,3,24 -BRDA:318,18,4,7 -BRDA:318,18,5,2 -BRDA:318,18,6,8 -BRDA:325,19,0,11 -BRDA:325,19,1,4 -BRDA:327,20,0,0 -BRDA:327,20,1,11 -BRDA:328,21,0,0 -BRDA:328,21,1,0 -BRDA:345,22,0,3 -BRDA:345,22,1,4 -BRDA:345,23,0,7 -BRDA:345,23,1,3 -BRDA:347,24,0,0 -BRDA:347,24,1,4 -BRDA:349,25,0,0 -BRDA:349,25,1,4 -BRDA:349,26,0,4 -BRDA:349,26,1,4 -BRDA:364,27,0,0 -BRDA:364,27,1,1 -BRDA:366,28,0,1 -BRDA:366,28,1,0 -BRDA:366,29,0,1 -BRDA:366,29,1,1 -BRDA:368,30,0,0 -BRDA:368,30,1,0 -BRDA:368,31,0,0 -BRDA:368,31,1,0 -BRDA:385,32,0,4 -BRDA:385,32,1,20 -BRDA:386,33,0,3 -BRDA:386,33,1,1 -BRDA:387,34,0,0 -BRDA:387,34,1,20 -BRDA:401,35,0,2 -BRDA:401,35,1,5 -BRDA:401,36,0,7 -BRDA:401,36,1,7 -BRDA:401,36,2,6 -BRDA:403,37,0,5 -BRDA:403,37,1,0 -BRDA:403,38,0,5 -BRDA:403,38,1,1 -BRDA:403,38,2,1 -BRDA:403,38,3,1 -BRDA:421,39,0,0 -BRDA:421,39,1,2 -BRDA:421,40,0,2 -BRDA:421,40,1,2 -BRDA:421,40,2,1 -BRDA:423,41,0,2 -BRDA:423,41,1,0 -BRDA:423,42,0,2 -BRDA:423,42,1,1 -BRDA:423,42,2,1 -BRDA:423,42,3,0 -BRDA:451,43,0,8 -BRDA:451,43,1,0 -BRDA:451,44,0,8 -BRDA:451,44,1,8 -BRDA:451,44,2,0 -BRDA:451,44,3,0 -BRDA:451,44,4,0 -BRDA:451,44,5,0 -BRDA:451,44,6,0 -BRDA:463,45,0,3 -BRDA:463,45,1,61 -BRDA:463,46,0,64 -BRDA:463,46,1,30 -BRDA:463,46,2,30 -BRDA:473,47,0,5 -BRDA:473,47,1,59 -BRDA:473,48,0,64 -BRDA:473,48,1,7 -BRDA:476,49,0,3 -BRDA:476,49,1,2 -BRDA:480,50,0,8 -BRDA:480,50,1,56 -BRDA:484,51,0,0 -BRDA:484,51,1,8 -BRF:127 -BRH:91 +DA:426,23 +DA:435,21 +DA:436,9 +DA:437,12 +DA:440,0 +DA:442,21 +DA:455,15 +DA:456,5 +DA:457,10 +DA:460,3 +DA:462,15 +DA:485,15 +DA:489,0 +DA:491,15 +DA:497,110 +DA:498,12 +DA:507,110 +DA:508,8 +DA:510,8 +DA:511,8 +DA:515,110 +DA:516,50 +DA:517,50 +DA:518,29 +DA:520,21 +DA:522,60 +DA:523,28 +DA:527,110 +DA:528,15 +DA:531,15 +DA:532,0 +DA:533,0 +DA:539,15 +DA:540,15 +DA:541,15 +DA:542,15 +DA:550,1 +DA:552,1 +DA:553,1 +DA:554,0 +DA:555,0 +DA:556,0 +DA:558,0 +LF:189 +LH:160 +BRDA:1,1,0,1 +BRDA:1,1,1,0 +BRDA:80,2,0,0 +BRDA:80,2,1,20 +BRDA:109,3,0,2 +BRDA:109,3,1,0 +BRDA:109,4,0,2 +BRDA:109,4,1,2 +BRDA:109,4,2,0 +BRDA:110,5,0,0 +BRDA:110,5,1,2 +BRDA:114,6,0,0 +BRDA:114,6,1,0 +BRDA:114,7,0,0 +BRDA:114,7,1,0 +BRDA:114,7,2,0 +BRDA:192,8,0,20 +BRDA:192,8,1,33 +BRDA:194,9,0,0 +BRDA:194,9,1,20 +BRDA:206,10,0,12 +BRDA:206,10,1,41 +BRDA:210,11,0,53 +BRDA:210,11,1,0 +BRDA:218,12,0,0 +BRDA:218,12,1,13 +BRDA:234,13,0,8 +BRDA:234,13,1,0 +BRDA:245,14,0,0 +BRDA:245,14,1,335 +BRDA:264,15,0,5 +BRDA:264,15,1,7 +BRDA:264,16,0,12 +BRDA:264,16,1,5 +BRDA:264,16,2,1 +BRDA:266,17,0,5 +BRDA:266,17,1,0 +BRDA:315,18,0,56 +BRDA:315,18,1,0 +BRDA:325,19,0,100 +BRDA:325,19,1,66 +BRDA:325,19,2,58 +BRDA:337,20,0,40 +BRDA:337,20,1,38 +BRDA:337,20,2,2 +BRDA:337,20,3,15 +BRDA:337,20,4,0 +BRDA:337,20,5,12 +BRDA:337,20,6,0 +BRDA:337,20,7,0 +BRDA:337,20,8,3 +BRDA:351,21,0,24 +BRDA:351,21,1,6 +BRDA:351,21,2,6 +BRDA:351,21,3,23 +BRDA:351,21,4,21 +BRDA:351,21,5,15 +BRDA:351,21,6,15 +BRDA:358,22,0,20 +BRDA:358,22,1,4 +BRDA:360,23,0,1 +BRDA:360,23,1,19 +BRDA:361,24,0,0 +BRDA:361,24,1,1 +BRDA:379,25,0,2 +BRDA:379,25,1,4 +BRDA:379,26,0,6 +BRDA:379,26,1,2 +BRDA:381,27,0,0 +BRDA:381,27,1,4 +BRDA:383,28,0,0 +BRDA:383,28,1,4 +BRDA:383,29,0,4 +BRDA:383,29,1,4 +BRDA:398,30,0,0 +BRDA:398,30,1,6 +BRDA:400,31,0,2 +BRDA:400,31,1,4 +BRDA:400,32,0,6 +BRDA:400,32,1,6 +BRDA:402,33,0,0 +BRDA:402,33,1,4 +BRDA:402,34,0,4 +BRDA:402,34,1,0 +BRDA:419,35,0,9 +BRDA:419,35,1,14 +BRDA:420,36,0,7 +BRDA:420,36,1,2 +BRDA:421,37,0,0 +BRDA:421,37,1,14 +BRDA:435,38,0,9 +BRDA:435,38,1,12 +BRDA:435,39,0,21 +BRDA:435,39,1,21 +BRDA:435,39,2,21 +BRDA:437,40,0,12 +BRDA:437,40,1,0 +BRDA:437,41,0,12 +BRDA:437,41,1,0 +BRDA:437,41,2,0 +BRDA:437,41,3,0 +BRDA:455,42,0,5 +BRDA:455,42,1,10 +BRDA:455,43,0,15 +BRDA:455,43,1,15 +BRDA:455,43,2,12 +BRDA:457,44,0,7 +BRDA:457,44,1,3 +BRDA:457,45,0,10 +BRDA:457,45,1,3 +BRDA:457,45,2,3 +BRDA:457,45,3,3 +BRDA:485,46,0,15 +BRDA:485,46,1,0 +BRDA:485,47,0,15 +BRDA:485,47,1,15 +BRDA:485,47,2,0 +BRDA:485,47,3,0 +BRDA:485,47,4,0 +BRDA:485,47,5,0 +BRDA:485,47,6,0 +BRDA:497,48,0,12 +BRDA:497,48,1,98 +BRDA:497,49,0,110 +BRDA:497,49,1,53 +BRDA:497,49,2,53 +BRDA:507,50,0,8 +BRDA:507,50,1,102 +BRDA:507,51,0,110 +BRDA:507,51,1,12 +BRDA:510,52,0,4 +BRDA:510,52,1,4 +BRDA:515,53,0,50 +BRDA:515,53,1,60 +BRDA:517,54,0,29 +BRDA:517,54,1,21 +BRDA:522,55,0,28 +BRDA:522,55,1,32 +BRDA:527,56,0,15 +BRDA:527,56,1,95 +BRDA:531,57,0,0 +BRDA:531,57,1,15 +BRDA:554,58,0,0 +BRDA:554,58,1,0 +BRF:144 +BRH:104 end_of_record TN: SF:/data/upstream/node-http2/lib/endpoint.js -FN:15,Endpoint -FN:50,_writePrelude -FN:56,_readPrelude -FN:61,_temporalWrite -FN:119,_initializeDataFlow -FN:143,_read -FN:150,_write -FN:157,_initializeManagement -FN:161,createStream -FN:168,_initializeErrorHandling -FN:176,_error -FN:181,close -FNF:12 +FN:14,Endpoint +FN:49,_writePrelude +FN:55,_readPrelude +FN:60,_temporalWrite +FN:118,_initializeDataFlow +FN:142,_read +FN:149,_write +FN:156,_initializeManagement +FN:160,createStream +FN:167,_initializeErrorHandling +FN:175,_error +FN:180,close +FN:190,(anonymous_13) +FNF:13 FNH:10 FNDA:4,Endpoint FNDA:2,_writePrelude FNDA:2,_readPrelude FNDA:2,_temporalWrite FNDA:4,_initializeDataFlow -FNDA:29,_read +FNDA:31,_read FNDA:10,_write FNDA:4,_initializeManagement FNDA:1,createStream FNDA:4,_initializeErrorHandling FNDA:0,_error FNDA:0,close +FNDA:0,(anonymous_13) DA:1,1 DA:2,1 DA:3,1 DA:4,1 DA:5,1 DA:6,1 -DA:7,1 -DA:9,1 -DA:15,1 -DA:16,4 -DA:19,4 -DA:23,4 +DA:8,1 +DA:14,1 +DA:15,4 +DA:18,4 +DA:22,4 +DA:23,2 DA:24,2 DA:25,2 -DA:26,2 -DA:28,0 -DA:34,4 -DA:37,4 -DA:40,4 -DA:42,1 -DA:47,1 -DA:50,1 +DA:27,0 +DA:33,4 +DA:36,4 +DA:39,4 +DA:41,1 +DA:46,1 +DA:49,1 +DA:50,2 DA:51,2 -DA:52,2 -DA:56,1 -DA:58,2 -DA:61,2 +DA:55,1 +DA:57,2 +DA:60,2 +DA:63,2 DA:64,2 -DA:65,2 -DA:66,48 -DA:67,0 +DA:65,48 +DA:66,0 +DA:68,0 DA:69,0 -DA:70,0 -DA:72,48 +DA:71,48 +DA:76,2 DA:77,2 DA:78,2 DA:79,2 DA:80,2 -DA:81,2 -DA:119,1 +DA:118,1 +DA:119,4 DA:120,4 -DA:121,4 +DA:121,2 DA:122,2 DA:123,2 -DA:124,2 +DA:125,2 DA:126,2 DA:127,2 -DA:128,2 +DA:130,4 DA:131,4 DA:132,4 DA:133,4 DA:134,4 -DA:135,4 +DA:136,4 DA:137,4 -DA:138,4 -DA:140,4 -DA:143,1 -DA:144,29 -DA:145,29 -DA:146,16 -DA:150,1 -DA:151,10 -DA:157,1 -DA:158,4 +DA:139,4 +DA:142,1 +DA:143,31 +DA:144,31 +DA:145,18 +DA:149,1 +DA:150,10 +DA:156,1 +DA:157,4 +DA:160,1 DA:161,1 -DA:162,1 -DA:168,1 +DA:167,1 +DA:168,4 DA:169,4 DA:170,4 DA:171,4 DA:172,4 -DA:173,4 -DA:176,1 +DA:175,1 +DA:176,0 DA:177,0 -DA:178,0 -DA:181,1 -DA:182,0 -LF:77 -LH:70 -BRDA:19,1,0,4 -BRDA:19,1,1,0 -BRDA:23,2,0,2 -BRDA:23,2,1,2 -BRDA:25,3,0,2 -BRDA:25,3,1,0 -BRDA:65,4,0,50 +DA:180,1 +DA:181,0 +DA:187,1 +DA:189,1 +DA:190,1 +DA:191,0 +DA:192,0 +DA:193,0 +DA:195,0 +LF:83 +LH:72 +BRDA:22,1,0,2 +BRDA:22,1,1,2 +BRDA:24,2,0,2 +BRDA:24,2,1,0 +BRDA:64,3,0,50 +BRDA:64,3,1,48 +BRDA:65,4,0,0 BRDA:65,4,1,48 -BRDA:66,5,0,0 -BRDA:66,5,1,48 -BRDA:77,6,0,2 -BRDA:77,6,1,0 -BRDA:121,7,0,2 -BRDA:121,7,1,2 -BRDA:145,8,0,45 -BRDA:145,8,1,45 +BRDA:76,5,0,2 +BRDA:76,5,1,0 +BRDA:120,6,0,2 +BRDA:120,6,1,2 +BRDA:144,7,0,49 +BRDA:144,7,1,49 +BRDA:191,8,0,0 +BRDA:191,8,1,0 BRF:16 -BRH:12 +BRH:11 end_of_record TN: SF:/data/upstream/node-http2/lib/framer.js FN:5,noop FN:25,Serializer FN:34,_transform -FN:62,Deserializer -FN:74,(anonymous_5) -FN:85,_transform -FN:189,writeCommonHeader -FN:218,readCommonHeader -FN:263,writeData -FN:267,readData -FN:306,writeHeadersPriority -FN:316,readHeadersPriority -FN:346,writePriority -FN:352,readPriority -FN:378,writeRstStream -FN:386,readRstStream -FN:422,writeSettings -FN:424,(anonymous_18) -FN:442,readSettings -FN:506,writePushPromise -FN:514,readPushPromise -FN:538,writePing -FN:543,readPing -FN:578,writeGoaway -FN:591,readGoaway -FN:618,writeWindowUpdate -FN:625,readWindowUpdate -FN:654,(anonymous_28) -FN:667,(anonymous_29) -FN:683,(anonymous_30) -FN:691,(anonymous_31) +FN:64,Deserializer +FN:76,(anonymous_5) +FN:87,_transform +FN:193,writeCommonHeader +FN:222,readCommonHeader +FN:267,writeData +FN:271,readData +FN:310,writeHeadersPriority +FN:320,readHeadersPriority +FN:350,writePriority +FN:356,readPriority +FN:382,writeRstStream +FN:390,readRstStream +FN:426,writeSettings +FN:428,(anonymous_18) +FN:446,readSettings +FN:510,writePushPromise +FN:518,readPushPromise +FN:542,writePing +FN:547,readPing +FN:582,writeGoaway +FN:595,readGoaway +FN:622,writeWindowUpdate +FN:629,readWindowUpdate +FN:659,(anonymous_28) +FN:672,(anonymous_29) +FN:692,(anonymous_30) +FN:700,(anonymous_31) FNF:31 -FNH:27 -FNDA:123,noop +FNH:26 +FNDA:0,noop FNDA:5,Serializer -FNDA:18,_transform +FNDA:19,_transform FNDA:5,Deserializer -FNDA:41,(anonymous_5) -FNDA:25,_transform -FNDA:28,writeCommonHeader -FNDA:28,readCommonHeader -FNDA:4,writeData -FNDA:4,readData +FNDA:43,(anonymous_5) +FNDA:30,_transform +FNDA:29,writeCommonHeader +FNDA:29,readCommonHeader +FNDA:5,writeData +FNDA:5,readData FNDA:6,writeHeadersPriority FNDA:6,readHeadersPriority FNDA:2,writePriority @@ -1518,373 +1573,401 @@ FNDA:0,(anonymous_29) FNDA:0,(anonymous_30) FNDA:0,(anonymous_31) DA:5,1 -DA:6,1 -DA:8,1 +DA:7,1 +DA:9,1 DA:10,1 -DA:11,1 +DA:12,1 DA:25,1 DA:26,5 DA:27,5 DA:29,1 DA:34,1 -DA:35,18 -DA:37,18 -DA:39,18 -DA:40,18 -DA:41,18 -DA:43,18 -DA:44,38 -DA:45,38 -DA:48,18 -DA:62,1 -DA:63,5 -DA:64,5 +DA:35,19 +DA:37,19 +DA:39,19 +DA:40,19 +DA:41,19 +DA:43,19 +DA:44,40 +DA:45,0 +DA:47,40 +DA:50,19 +DA:64,1 DA:65,5 -DA:67,1 -DA:74,1 -DA:75,41 -DA:76,41 -DA:77,41 -DA:78,41 -DA:79,23 -DA:85,1 -DA:86,25 -DA:88,25 -DA:90,25 -DA:93,48 -DA:94,48 -DA:95,48 -DA:96,48 -DA:103,48 -DA:104,18 -DA:105,18 -DA:113,48 -DA:114,18 -DA:115,18 -DA:116,18 -DA:117,0 -DA:118,0 -DA:120,18 -DA:121,18 -DA:124,0 -DA:126,18 -DA:130,25 -DA:178,1 -DA:179,1 -DA:181,1 +DA:66,5 +DA:67,5 +DA:69,1 +DA:76,1 +DA:77,43 +DA:78,43 +DA:79,43 +DA:80,43 +DA:81,24 +DA:87,1 +DA:88,30 +DA:90,30 +DA:91,0 +DA:94,30 +DA:97,50 +DA:98,50 +DA:99,50 +DA:100,50 +DA:107,50 +DA:108,19 +DA:109,19 +DA:117,50 +DA:118,19 +DA:119,19 +DA:120,19 +DA:121,0 +DA:122,0 +DA:124,19 +DA:125,19 +DA:128,0 +DA:130,19 +DA:134,30 +DA:182,1 DA:183,1 DA:185,1 DA:187,1 DA:189,1 -DA:190,28 -DA:192,28 -DA:193,28 -DA:194,30 -DA:196,28 -DA:197,28 -DA:199,28 -DA:200,28 -DA:202,28 -DA:203,28 +DA:191,1 +DA:193,1 +DA:194,29 +DA:196,29 +DA:197,29 +DA:198,31 +DA:200,29 +DA:201,29 +DA:203,29 DA:204,29 -DA:205,29 DA:206,29 -DA:207,5 -DA:210,28 -DA:212,28 -DA:213,28 -DA:215,28 -DA:218,1 -DA:219,28 -DA:221,28 -DA:223,28 -DA:224,28 -DA:225,28 -DA:226,28 -DA:227,38 -DA:230,28 -DA:257,1 -DA:259,1 +DA:207,29 +DA:208,30 +DA:209,30 +DA:210,30 +DA:211,6 +DA:214,29 +DA:216,29 +DA:217,29 +DA:219,29 +DA:222,1 +DA:223,29 +DA:225,29 +DA:227,29 +DA:228,29 +DA:229,29 +DA:230,29 +DA:231,40 +DA:234,29 DA:261,1 DA:263,1 -DA:264,4 +DA:265,1 DA:267,1 -DA:268,4 -DA:290,1 -DA:292,1 +DA:268,5 +DA:271,1 +DA:272,5 DA:294,1 -DA:306,1 -DA:307,6 -DA:308,2 -DA:309,2 -DA:310,2 -DA:311,2 -DA:313,6 -DA:316,1 +DA:296,1 +DA:298,1 +DA:310,1 +DA:311,6 +DA:312,2 +DA:313,2 +DA:314,2 +DA:315,2 DA:317,6 -DA:318,2 -DA:319,2 -DA:321,4 -DA:332,1 -DA:334,1 +DA:320,1 +DA:321,6 +DA:322,2 +DA:323,2 +DA:325,4 DA:336,1 -DA:346,1 -DA:347,2 -DA:348,2 -DA:349,2 -DA:352,1 +DA:338,1 +DA:340,1 +DA:350,1 +DA:351,2 +DA:352,2 DA:353,2 -DA:363,1 -DA:365,1 +DA:356,1 +DA:357,2 DA:367,1 -DA:378,1 -DA:379,2 -DA:380,2 -DA:381,2 -DA:382,2 +DA:369,1 +DA:371,1 +DA:382,1 DA:383,2 -DA:386,1 +DA:384,2 +DA:385,2 +DA:386,2 DA:387,2 -DA:398,1 -DA:400,1 +DA:390,1 +DA:391,2 DA:402,1 -DA:422,1 -DA:423,6 -DA:424,6 -DA:425,18 -DA:426,12 -DA:427,12 -DA:428,12 -DA:431,6 -DA:433,6 -DA:434,6 -DA:435,12 -DA:436,12 -DA:439,6 -DA:442,1 +DA:404,1 +DA:406,1 +DA:426,1 +DA:427,6 +DA:428,6 +DA:429,18 +DA:430,12 +DA:431,12 +DA:432,12 +DA:435,6 +DA:437,6 +DA:438,6 +DA:439,12 +DA:440,12 DA:443,6 -DA:445,6 -DA:446,0 -DA:448,6 -DA:449,12 -DA:450,12 -DA:451,12 -DA:452,12 -DA:453,0 +DA:446,1 +DA:447,6 +DA:449,6 +DA:450,0 +DA:452,6 +DA:453,12 +DA:454,12 DA:455,12 -DA:460,1 +DA:456,12 +DA:457,0 +DA:459,12 DA:464,1 DA:468,1 -DA:474,1 -DA:488,1 -DA:490,1 +DA:472,1 +DA:478,1 DA:492,1 -DA:506,1 -DA:507,2 -DA:508,2 -DA:509,2 -DA:510,2 +DA:494,1 +DA:496,1 +DA:510,1 DA:511,2 -DA:514,1 +DA:512,2 +DA:513,2 +DA:514,2 DA:515,2 -DA:516,2 -DA:530,1 -DA:532,1 +DA:518,1 +DA:519,2 +DA:520,2 DA:534,1 +DA:536,1 DA:538,1 -DA:539,2 -DA:540,2 -DA:543,1 +DA:542,1 +DA:543,2 DA:544,2 -DA:545,0 -DA:547,2 -DA:557,1 -DA:559,1 +DA:547,1 +DA:548,2 +DA:549,0 +DA:551,2 DA:561,1 -DA:578,1 -DA:579,2 -DA:581,2 -DA:582,2 -DA:584,2 +DA:563,1 +DA:565,1 +DA:582,1 +DA:583,2 DA:585,2 DA:586,2 DA:588,2 -DA:591,1 +DA:589,2 +DA:590,2 DA:592,2 -DA:593,2 -DA:607,1 -DA:609,1 +DA:595,1 +DA:596,2 +DA:597,2 DA:611,1 -DA:618,1 -DA:619,2 -DA:620,2 -DA:621,2 -DA:622,2 -DA:625,1 +DA:613,1 +DA:615,1 +DA:622,1 +DA:623,2 +DA:624,2 +DA:625,2 DA:626,2 -DA:632,1 -DA:653,1 +DA:629,1 +DA:630,2 +DA:636,1 DA:654,1 -DA:655,0 -DA:656,0 -DA:659,0 +DA:658,1 +DA:659,1 DA:660,0 -DA:663,0 +DA:661,0 DA:664,0 -DA:666,0 -DA:667,0 +DA:665,0 DA:668,0 +DA:669,0 DA:671,0 DA:672,0 DA:673,0 -DA:675,0 +DA:676,0 +DA:677,0 DA:678,0 -DA:679,0 +DA:680,0 DA:683,0 DA:684,0 -DA:687,0 -DA:691,1 +DA:688,0 +DA:689,0 DA:692,0 -LF:228 -LH:203 -BRDA:5,1,0,0 -BRDA:5,1,1,1 -BRDA:26,2,0,5 -BRDA:26,2,1,1 -BRDA:63,3,0,5 -BRDA:63,3,1,1 -BRDA:78,4,0,23 -BRDA:78,4,1,18 -BRDA:103,5,0,18 -BRDA:103,5,1,30 -BRDA:103,6,0,48 -BRDA:103,6,1,35 -BRDA:113,7,0,18 -BRDA:113,7,1,30 -BRDA:113,8,0,48 -BRDA:113,8,1,18 -BRDA:114,9,0,18 -BRDA:114,9,1,0 -BRDA:116,10,0,0 -BRDA:116,10,1,18 -BRDA:206,11,0,5 -BRDA:206,11,1,24 -BRDA:213,12,0,28 -BRDA:213,12,1,4 -BRDA:307,13,0,2 -BRDA:307,13,1,4 -BRDA:309,14,0,2 -BRDA:309,14,1,2 -BRDA:317,15,0,2 -BRDA:317,15,1,4 -BRDA:381,16,0,2 -BRDA:381,16,1,2 -BRDA:425,17,0,12 -BRDA:425,17,1,6 -BRDA:428,18,0,4 -BRDA:428,18,1,8 -BRDA:445,19,0,0 -BRDA:445,19,1,6 -BRDA:452,20,0,0 -BRDA:452,20,1,12 -BRDA:452,21,0,12 -BRDA:452,21,1,12 -BRDA:455,22,0,4 -BRDA:455,22,1,8 -BRDA:508,23,0,2 -BRDA:508,23,1,2 -BRDA:539,24,0,2 -BRDA:539,24,1,2 -BRDA:544,25,0,0 -BRDA:544,25,1,2 -BRDA:581,26,0,2 -BRDA:581,26,1,2 -BRDA:585,27,0,2 -BRDA:585,27,1,2 -BRDA:620,28,0,2 -BRDA:620,28,1,2 -BRDA:655,29,0,0 -BRDA:655,29,1,0 -BRDA:659,30,0,0 -BRDA:659,30,1,0 -BRDA:671,31,0,0 -BRDA:671,31,1,0 -BRDA:672,32,0,0 -BRDA:672,32,1,0 -BRDA:678,33,0,0 -BRDA:678,33,1,0 -BRDA:683,34,0,0 -BRDA:683,34,1,0 -BRF:68 -BRH:50 +DA:693,0 +DA:696,0 +DA:700,1 +DA:701,0 +LF:233 +LH:204 +BRDA:5,1,0,1 +BRDA:5,1,1,0 +BRDA:44,2,0,0 +BRDA:44,2,1,40 +BRDA:80,3,0,24 +BRDA:80,3,1,19 +BRDA:90,4,0,0 +BRDA:90,4,1,30 +BRDA:107,5,0,19 +BRDA:107,5,1,31 +BRDA:107,6,0,50 +BRDA:107,6,1,36 +BRDA:117,7,0,19 +BRDA:117,7,1,31 +BRDA:117,8,0,50 +BRDA:117,8,1,19 +BRDA:118,9,0,19 +BRDA:118,9,1,0 +BRDA:120,10,0,0 +BRDA:120,10,1,19 +BRDA:210,11,0,6 +BRDA:210,11,1,24 +BRDA:217,12,0,29 +BRDA:217,12,1,4 +BRDA:311,13,0,2 +BRDA:311,13,1,4 +BRDA:313,14,0,2 +BRDA:313,14,1,2 +BRDA:321,15,0,2 +BRDA:321,15,1,4 +BRDA:385,16,0,2 +BRDA:385,16,1,2 +BRDA:429,17,0,12 +BRDA:429,17,1,6 +BRDA:432,18,0,4 +BRDA:432,18,1,8 +BRDA:449,19,0,0 +BRDA:449,19,1,6 +BRDA:456,20,0,0 +BRDA:456,20,1,12 +BRDA:456,21,0,12 +BRDA:456,21,1,12 +BRDA:459,22,0,4 +BRDA:459,22,1,8 +BRDA:512,23,0,2 +BRDA:512,23,1,2 +BRDA:543,24,0,2 +BRDA:543,24,1,2 +BRDA:548,25,0,0 +BRDA:548,25,1,2 +BRDA:585,26,0,2 +BRDA:585,26,1,2 +BRDA:589,27,0,2 +BRDA:589,27,1,2 +BRDA:624,28,0,2 +BRDA:624,28,1,2 +BRDA:660,29,0,0 +BRDA:660,29,1,0 +BRDA:664,30,0,0 +BRDA:664,30,1,0 +BRDA:676,31,0,0 +BRDA:676,31,1,0 +BRDA:677,32,0,0 +BRDA:677,32,1,0 +BRDA:683,33,0,0 +BRDA:683,33,1,0 +BRDA:688,34,0,0 +BRDA:688,34,1,0 +BRDA:692,35,0,0 +BRDA:692,35,1,0 +BRF:70 +BRH:48 end_of_record TN: SF:/data/upstream/node-http2/lib/http.js -FN:131,IncomingMessage -FN:150,noop -FN:155,OutgoingMessage -FN:167,_write -FN:175,_finish -FN:183,setHeader -FN:191,removeHeader -FN:199,getHeader -FN:203,noop -FN:217,Server -FN:233,(anonymous_11) -FN:260,_start -FN:269,_onStream -FN:279,_fallback -FN:293,listen -FN:299,close -FN:304,createServer -FN:322,IncomingRequest -FN:328,_onHeaders -FN:394,OutgoingResponse -FN:406,writeHead -FN:432,_implicitHeaders -FN:438,write -FN:443,end -FN:448,_onRequestHeaders -FN:452,push -FN:493,Agent -FN:512,request -FN:552,(anonymous_29) -FN:560,negotiated -FN:577,(anonymous_31) -FN:590,get -FN:596,unbundleSocket -FN:609,request -FN:613,get -FN:620,OutgoingRequest -FN:630,_start -FN:656,_fallback -FN:667,setNoDelay -FN:673,setSocketKeepAlive -FN:679,setTimeout -FN:689,IncomingResponse -FN:696,_onHeaders -FN:722,_onPromise -FN:735,IncomingPromise -FN:737,noop -FN:751,cancel -FNF:47 -FNH:30 +FN:133,noop +FN:142,(anonymous_2) +FN:148,(anonymous_3) +FN:155,IncomingMessage +FN:174,noop +FN:179,OutgoingMessage +FN:190,_write +FN:198,_finish +FN:206,setHeader +FN:214,removeHeader +FN:222,getHeader +FN:226,noop +FN:240,Server +FN:257,(anonymous_14) +FN:285,_start +FN:294,_onStream +FN:306,_fallback +FN:320,listen +FN:326,close +FN:331,setTimeout +FN:338,getTimeout +FN:345,setTimeout +FN:356,on +FN:364,createServer +FN:382,IncomingRequest +FN:391,_onHeaders +FN:458,OutgoingResponse +FN:471,writeHead +FN:497,_implicitHeaders +FN:503,write +FN:508,end +FN:513,_onRequestHeaders +FN:517,push +FN:548,on +FN:564,request +FN:567,get +FN:574,Agent +FN:596,request +FN:633,(anonymous_39) +FN:642,negotiated +FN:660,(anonymous_41) +FN:673,get +FN:679,unbundleSocket +FN:691,getMaxSockets +FN:694,setMaxSockets +FN:704,OutgoingRequest +FN:714,_start +FN:746,_fallback +FN:753,setPriority +FN:763,on +FN:772,setNoDelay +FN:780,setSocketKeepAlive +FN:788,setTimeout +FN:797,abort +FN:808,_onPromise +FN:823,IncomingResponse +FN:829,_onHeaders +FN:858,IncomingPromise +FN:860,noop +FN:877,cancel +FN:881,setPriority +FNF:61 +FNH:36 +FNDA:79,noop +FNDA:10,(anonymous_2) +FNDA:6,(anonymous_3) FNDA:2,IncomingMessage FNDA:0,noop FNDA:2,OutgoingMessage FNDA:1,_write -FNDA:2,_finish +FNDA:3,_finish FNDA:0,setHeader FNDA:0,removeHeader FNDA:0,getHeader FNDA:0,noop FNDA:1,Server -FNDA:1,(anonymous_11) +FNDA:1,(anonymous_14) FNDA:1,_start FNDA:1,_onStream FNDA:0,_fallback FNDA:1,listen FNDA:0,close +FNDA:0,setTimeout +FNDA:0,getTimeout +FNDA:0,setTimeout +FNDA:1,on FNDA:1,createServer FNDA:1,IncomingRequest FNDA:1,_onHeaders @@ -1895,461 +1978,555 @@ FNDA:1,write FNDA:1,end FNDA:1,_onRequestHeaders FNDA:0,push +FNDA:1,on +FNDA:0,request +FNDA:1,get FNDA:1,Agent FNDA:1,request -FNDA:1,(anonymous_29) +FNDA:1,(anonymous_39) FNDA:1,negotiated -FNDA:1,(anonymous_31) +FNDA:1,(anonymous_41) FNDA:1,get FNDA:1,unbundleSocket -FNDA:0,request -FNDA:1,get +FNDA:0,getMaxSockets +FNDA:0,setMaxSockets FNDA:1,OutgoingRequest FNDA:1,_start FNDA:0,_fallback +FNDA:0,setPriority +FNDA:3,on FNDA:0,setNoDelay FNDA:0,setSocketKeepAlive FNDA:0,setTimeout +FNDA:0,abort +FNDA:0,_onPromise FNDA:1,IncomingResponse FNDA:1,_onHeaders -FNDA:0,_onPromise FNDA:0,IncomingPromise FNDA:0,noop FNDA:0,cancel -DA:102,1 -DA:103,1 -DA:104,1 -DA:105,1 -DA:106,1 -DA:107,1 -DA:108,1 -DA:109,1 +FNDA:0,setPriority DA:110,1 DA:111,1 DA:112,1 +DA:113,1 DA:114,1 DA:115,1 DA:116,1 -DA:120,1 -DA:124,1 -DA:131,1 -DA:133,2 -DA:134,2 -DA:135,2 -DA:137,2 -DA:141,2 -DA:142,2 -DA:143,2 -DA:146,2 +DA:117,1 +DA:118,1 +DA:119,1 +DA:121,1 +DA:122,1 +DA:123,1 +DA:127,1 +DA:133,1 +DA:134,1 +DA:142,10 +DA:146,1 +DA:147,1 DA:148,1 -DA:150,1 +DA:149,6 DA:155,1 DA:157,2 +DA:158,2 DA:159,2 -DA:160,2 DA:161,2 -DA:163,2 -DA:165,1 -DA:167,1 -DA:168,1 -DA:169,1 -DA:171,0 -DA:175,1 -DA:176,2 -DA:177,1 +DA:165,2 +DA:166,2 +DA:167,2 +DA:170,2 +DA:172,1 +DA:174,1 DA:179,1 -DA:183,1 -DA:184,0 -DA:185,0 -DA:187,0 +DA:181,2 +DA:183,2 +DA:184,2 +DA:186,2 +DA:188,1 +DA:190,1 DA:191,1 -DA:192,0 -DA:193,0 -DA:195,0 -DA:199,1 -DA:200,0 -DA:203,1 -DA:208,1 -DA:209,1 -DA:210,1 -DA:211,1 -DA:212,1 -DA:217,1 -DA:218,1 -DA:220,1 -DA:221,1 -DA:223,1 -DA:224,1 -DA:227,1 -DA:228,1 -DA:229,1 -DA:230,1 +DA:192,1 +DA:194,0 +DA:198,1 +DA:199,3 +DA:200,2 +DA:202,1 +DA:206,1 +DA:207,0 +DA:208,0 +DA:210,0 +DA:214,1 +DA:215,0 +DA:216,0 +DA:218,0 +DA:222,1 +DA:223,0 +DA:226,1 DA:231,1 DA:232,1 DA:233,1 DA:234,1 DA:235,1 -DA:237,0 DA:240,1 -DA:244,0 -DA:245,0 -DA:246,0 -DA:251,0 -DA:252,0 +DA:241,1 +DA:243,1 +DA:244,1 +DA:246,1 +DA:247,1 +DA:250,1 +DA:251,1 +DA:252,1 +DA:253,1 +DA:254,1 DA:255,1 +DA:256,1 DA:257,1 -DA:260,1 -DA:261,1 -DA:262,1 +DA:258,1 +DA:259,1 +DA:261,0 DA:264,1 -DA:266,1 -DA:268,1 -DA:269,1 -DA:270,1 -DA:271,1 -DA:273,1 -DA:276,1 -DA:279,1 -DA:280,0 -DA:283,0 -DA:284,0 -DA:287,0 +DA:268,0 +DA:269,0 +DA:270,0 +DA:271,0 +DA:276,0 +DA:277,0 +DA:280,1 +DA:282,1 +DA:285,1 +DA:286,1 +DA:288,1 +DA:291,1 DA:293,1 DA:294,1 +DA:295,1 DA:296,1 -DA:299,1 -DA:300,0 -DA:301,0 -DA:304,1 -DA:305,1 -DA:306,0 +DA:298,1 +DA:301,1 +DA:303,1 +DA:306,1 DA:307,0 -DA:310,1 -DA:312,1 -DA:313,1 -DA:316,1 -DA:322,1 +DA:310,0 +DA:311,0 +DA:314,0 +DA:320,1 +DA:321,1 DA:323,1 -DA:325,1 -DA:328,1 -DA:332,1 -DA:344,1 -DA:350,1 -DA:351,4 -DA:352,4 -DA:353,0 -DA:354,0 -DA:355,0 -DA:357,4 -DA:358,4 +DA:326,1 +DA:327,0 +DA:328,0 +DA:331,1 +DA:332,0 +DA:333,0 +DA:337,1 +DA:339,0 +DA:340,0 +DA:342,0 +DA:346,0 +DA:347,0 +DA:356,1 +DA:357,1 +DA:358,0 +DA:360,1 DA:364,1 +DA:365,1 +DA:366,0 +DA:367,0 +DA:370,1 +DA:372,1 DA:373,1 -DA:374,7 -DA:375,7 -DA:376,0 -DA:377,0 -DA:378,0 +DA:376,1 +DA:382,1 DA:383,1 -DA:386,1 -DA:388,1 -DA:394,1 +DA:385,1 +DA:391,1 DA:395,1 -DA:397,1 -DA:398,1 -DA:399,1 -DA:400,1 -DA:402,1 DA:404,1 -DA:406,1 -DA:407,1 +DA:405,7 +DA:406,7 +DA:407,0 DA:408,0 -DA:410,1 -DA:413,1 -DA:415,1 -DA:416,0 -DA:419,1 -DA:420,1 -DA:423,1 -DA:425,1 -DA:427,1 -DA:429,1 +DA:409,0 +DA:414,1 +DA:426,1 DA:432,1 -DA:433,2 -DA:434,1 -DA:438,1 -DA:439,1 -DA:440,1 -DA:443,1 -DA:444,1 -DA:445,1 -DA:448,1 -DA:449,1 +DA:433,4 +DA:434,4 +DA:435,4 +DA:436,0 +DA:437,0 +DA:438,0 +DA:440,4 +DA:442,0 +DA:447,1 +DA:450,1 DA:452,1 -DA:453,0 -DA:454,0 -DA:458,0 -DA:459,0 -DA:462,0 -DA:463,0 -DA:466,0 +DA:458,1 +DA:459,1 +DA:461,1 +DA:463,1 +DA:464,1 +DA:465,1 +DA:467,1 +DA:469,1 +DA:471,1 +DA:472,1 DA:473,0 -DA:474,0 -DA:476,0 -DA:482,1 -DA:483,1 +DA:475,1 +DA:478,1 +DA:480,1 +DA:481,0 DA:484,1 DA:485,1 -DA:486,1 -DA:487,1 DA:488,1 -DA:493,1 +DA:490,1 +DA:492,1 DA:494,1 -DA:496,1 -DA:498,1 +DA:497,1 +DA:498,2 DA:499,1 -DA:500,1 -DA:506,1 +DA:503,1 +DA:504,1 +DA:505,1 +DA:508,1 +DA:509,1 DA:510,1 -DA:512,1 DA:513,1 DA:514,1 DA:517,1 -DA:518,1 -DA:519,1 -DA:520,1 -DA:521,1 -DA:523,1 +DA:518,0 +DA:519,0 +DA:523,0 DA:524,0 -DA:525,0 -DA:528,1 -DA:530,1 -DA:531,1 -DA:534,1 -DA:537,1 +DA:527,0 +DA:528,0 +DA:531,0 DA:538,0 -DA:539,0 +DA:541,0 +DA:543,0 DA:548,1 DA:549,1 -DA:550,1 -DA:551,1 +DA:550,0 DA:552,1 -DA:553,1 -DA:554,0 -DA:556,1 +DA:559,1 DA:560,1 DA:561,1 DA:562,1 DA:563,1 DA:564,1 -DA:565,1 -DA:566,1 +DA:565,0 DA:567,1 DA:568,1 -DA:569,1 -DA:570,1 -DA:572,0 +DA:574,1 +DA:575,1 DA:577,1 -DA:578,1 DA:579,1 DA:580,1 -DA:582,0 +DA:581,1 DA:587,1 -DA:590,1 DA:591,1 DA:592,1 -DA:593,1 +DA:594,1 DA:596,1 DA:597,1 DA:598,1 -DA:599,1 -DA:600,1 DA:601,1 DA:602,1 DA:603,1 DA:604,1 +DA:605,1 DA:607,1 -DA:609,1 -DA:610,0 -DA:613,1 +DA:608,0 +DA:609,0 +DA:612,1 DA:614,1 -DA:620,1 +DA:615,1 +DA:618,1 DA:621,1 -DA:623,1 -DA:624,1 -DA:625,1 -DA:626,1 +DA:622,0 +DA:623,0 DA:628,1 +DA:629,1 DA:630,1 DA:631,1 -DA:632,1 +DA:633,1 DA:634,1 -DA:636,1 +DA:635,0 DA:637,1 -DA:638,0 -DA:640,1 DA:641,1 DA:642,1 DA:643,1 DA:644,1 +DA:645,1 DA:646,1 +DA:647,1 DA:648,1 DA:650,1 +DA:651,1 DA:652,1 DA:653,1 -DA:656,1 -DA:657,0 -DA:659,0 -DA:660,0 -DA:661,0 -DA:663,0 -DA:667,1 -DA:668,0 -DA:669,0 +DA:655,0 +DA:660,1 +DA:661,1 +DA:662,1 +DA:663,1 +DA:665,0 +DA:670,1 DA:673,1 -DA:674,0 -DA:675,0 +DA:674,1 +DA:675,1 +DA:676,1 DA:679,1 -DA:680,0 -DA:681,0 -DA:689,1 +DA:680,1 +DA:681,1 +DA:682,1 +DA:683,1 +DA:684,1 +DA:685,1 +DA:686,1 +DA:687,1 DA:690,1 -DA:691,1 -DA:693,1 -DA:696,1 -DA:700,1 -DA:708,1 +DA:692,0 +DA:695,0 +DA:699,1 +DA:704,1 +DA:705,1 +DA:707,1 DA:709,1 -DA:710,0 -DA:711,0 -DA:712,0 +DA:710,1 +DA:712,1 DA:714,1 DA:715,1 -DA:718,1 +DA:717,1 DA:719,1 -DA:722,1 -DA:723,0 -DA:725,0 +DA:720,1 +DA:721,0 +DA:723,1 +DA:725,1 DA:726,0 -DA:728,0 -DA:735,1 -DA:736,0 -DA:737,0 -DA:738,0 -DA:740,0 -DA:742,0 -DA:744,0 -DA:746,0 +DA:729,1 +DA:730,1 +DA:731,1 +DA:732,1 +DA:734,1 +DA:736,1 +DA:738,1 +DA:740,1 +DA:741,1 +DA:743,1 +DA:746,1 DA:747,0 -DA:749,1 -DA:751,1 -DA:752,0 -LF:327 -LH:251 -BRDA:168,1,0,1 -BRDA:168,1,1,0 -BRDA:176,2,0,1 -BRDA:176,2,1,1 -BRDA:184,3,0,0 -BRDA:184,3,1,0 -BRDA:192,4,0,0 -BRDA:192,4,1,0 -BRDA:218,5,0,1 -BRDA:218,5,1,0 -BRDA:220,6,0,1 -BRDA:220,6,1,1 -BRDA:227,7,0,1 -BRDA:227,7,1,0 -BRDA:227,8,0,1 -BRDA:227,8,1,1 -BRDA:227,8,2,0 -BRDA:234,9,0,1 -BRDA:234,9,1,0 -BRDA:244,10,0,0 -BRDA:244,10,1,0 -BRDA:294,11,0,0 -BRDA:294,11,1,1 -BRDA:305,12,0,0 -BRDA:305,12,1,1 -BRDA:312,13,0,1 -BRDA:312,13,1,0 -BRDA:352,14,0,0 -BRDA:352,14,1,4 -BRDA:352,15,0,4 -BRDA:352,15,1,4 -BRDA:375,16,0,0 -BRDA:375,16,1,7 -BRDA:407,17,0,0 -BRDA:407,17,1,1 -BRDA:413,18,0,1 -BRDA:413,18,1,1 -BRDA:419,19,0,1 -BRDA:419,19,1,0 -BRDA:419,20,0,1 -BRDA:419,20,1,1 -BRDA:433,21,0,1 -BRDA:433,21,1,1 -BRDA:453,22,0,0 -BRDA:453,22,1,0 -BRDA:458,23,0,0 -BRDA:458,23,1,0 -BRDA:462,24,0,0 -BRDA:462,24,1,0 -BRDA:467,25,0,0 -BRDA:467,25,1,0 -BRDA:468,26,0,0 -BRDA:468,26,1,0 -BRDA:469,27,0,0 -BRDA:469,27,1,0 -BRDA:469,27,2,0 -BRDA:496,28,0,1 -BRDA:496,28,1,1 -BRDA:499,29,0,1 -BRDA:499,29,1,1 -BRDA:513,30,0,1 -BRDA:513,30,1,0 -BRDA:517,31,0,1 -BRDA:517,31,1,1 -BRDA:518,32,0,1 -BRDA:518,32,1,0 -BRDA:519,33,0,1 -BRDA:519,33,1,0 -BRDA:519,33,2,0 -BRDA:520,34,0,1 -BRDA:520,34,1,0 -BRDA:521,35,0,1 -BRDA:521,35,1,0 -BRDA:523,36,0,0 -BRDA:523,36,1,1 -BRDA:530,37,0,1 -BRDA:530,37,1,0 -BRDA:537,38,0,0 -BRDA:537,38,1,1 -BRDA:553,39,0,0 -BRDA:553,39,1,1 -BRDA:561,40,0,1 -BRDA:561,40,1,0 -BRDA:562,41,0,1 -BRDA:562,41,1,0 -BRDA:579,42,0,1 -BRDA:579,42,1,0 -BRDA:631,43,0,1 -BRDA:631,43,1,0 -BRDA:631,44,0,1 -BRDA:631,44,1,0 -BRDA:647,45,0,1 -BRDA:647,45,1,1 -BRDA:668,46,0,0 -BRDA:668,46,1,0 -BRDA:674,47,0,0 -BRDA:674,47,1,0 -BRDA:680,48,0,0 -BRDA:680,48,1,0 -BRDA:709,49,0,0 -BRDA:709,49,1,1 -BRDA:709,50,0,1 -BRDA:709,50,1,1 -BRDA:725,51,0,0 -BRDA:725,51,1,0 -BRF:105 -BRH:50 +DA:748,0 +DA:750,0 +DA:753,1 +DA:754,0 +DA:755,0 +DA:757,0 +DA:763,1 +DA:764,3 +DA:765,0 +DA:767,3 +DA:772,1 +DA:773,0 +DA:774,0 +DA:775,0 +DA:776,0 +DA:780,1 +DA:781,0 +DA:782,0 +DA:783,0 +DA:784,0 +DA:788,1 +DA:789,0 +DA:790,0 +DA:791,0 +DA:792,0 +DA:797,1 +DA:798,0 +DA:799,0 +DA:800,0 +DA:801,0 +DA:803,0 +DA:808,1 +DA:809,0 +DA:811,0 +DA:813,0 +DA:814,0 +DA:816,0 +DA:823,1 +DA:824,1 +DA:826,1 +DA:829,1 +DA:833,1 +DA:841,1 +DA:842,1 +DA:843,0 +DA:844,0 +DA:845,0 +DA:847,1 +DA:848,1 +DA:851,1 +DA:852,1 +DA:858,1 +DA:859,0 +DA:860,0 +DA:861,0 +DA:862,0 +DA:864,0 +DA:866,0 +DA:868,0 +DA:870,0 +DA:871,0 +DA:873,0 +DA:875,1 +DA:877,1 +DA:878,0 +DA:881,1 +DA:882,0 +DA:885,1 +LF:379 +LH:272 +BRDA:191,1,0,1 +BRDA:191,1,1,0 +BRDA:199,2,0,2 +BRDA:199,2,1,1 +BRDA:207,3,0,0 +BRDA:207,3,1,0 +BRDA:215,4,0,0 +BRDA:215,4,1,0 +BRDA:241,5,0,1 +BRDA:241,5,1,0 +BRDA:243,6,0,1 +BRDA:243,6,1,0 +BRDA:250,7,0,1 +BRDA:250,7,1,0 +BRDA:250,8,0,1 +BRDA:250,8,1,1 +BRDA:250,8,2,0 +BRDA:258,9,0,1 +BRDA:258,9,1,0 +BRDA:268,10,0,0 +BRDA:268,10,1,0 +BRDA:321,11,0,0 +BRDA:321,11,1,1 +BRDA:332,12,0,0 +BRDA:332,12,1,0 +BRDA:339,13,0,0 +BRDA:339,13,1,0 +BRDA:346,14,0,0 +BRDA:346,14,1,0 +BRDA:357,15,0,0 +BRDA:357,15,1,1 +BRDA:357,16,0,1 +BRDA:357,16,1,1 +BRDA:365,17,0,0 +BRDA:365,17,1,1 +BRDA:372,18,0,1 +BRDA:372,18,1,0 +BRDA:406,19,0,0 +BRDA:406,19,1,7 +BRDA:433,20,0,4 +BRDA:433,20,1,0 +BRDA:435,21,0,0 +BRDA:435,21,1,4 +BRDA:435,22,0,4 +BRDA:435,22,1,4 +BRDA:472,23,0,0 +BRDA:472,23,1,1 +BRDA:478,24,0,1 +BRDA:478,24,1,1 +BRDA:484,25,0,1 +BRDA:484,25,1,0 +BRDA:484,26,0,1 +BRDA:484,26,1,1 +BRDA:498,27,0,1 +BRDA:498,27,1,1 +BRDA:518,28,0,0 +BRDA:518,28,1,0 +BRDA:523,29,0,0 +BRDA:523,29,1,0 +BRDA:527,30,0,0 +BRDA:527,30,1,0 +BRDA:532,31,0,0 +BRDA:532,31,1,0 +BRDA:533,32,0,0 +BRDA:533,32,1,0 +BRDA:533,32,2,0 +BRDA:534,33,0,0 +BRDA:534,33,1,0 +BRDA:534,33,2,0 +BRDA:549,34,0,0 +BRDA:549,34,1,1 +BRDA:549,35,0,1 +BRDA:549,35,1,0 +BRDA:565,36,0,0 +BRDA:565,36,1,0 +BRDA:568,37,0,1 +BRDA:568,37,1,1 +BRDA:577,38,0,1 +BRDA:577,38,1,1 +BRDA:580,39,0,1 +BRDA:580,39,1,1 +BRDA:597,40,0,1 +BRDA:597,40,1,0 +BRDA:601,41,0,1 +BRDA:601,41,1,1 +BRDA:602,42,0,1 +BRDA:602,42,1,0 +BRDA:603,43,0,1 +BRDA:603,43,1,0 +BRDA:603,43,2,0 +BRDA:604,44,0,1 +BRDA:604,44,1,0 +BRDA:605,45,0,1 +BRDA:605,45,1,0 +BRDA:607,46,0,0 +BRDA:607,46,1,1 +BRDA:614,47,0,1 +BRDA:614,47,1,0 +BRDA:621,48,0,0 +BRDA:621,48,1,1 +BRDA:634,49,0,0 +BRDA:634,49,1,1 +BRDA:643,50,0,1 +BRDA:643,50,1,0 +BRDA:644,51,0,1 +BRDA:644,51,1,0 +BRDA:662,52,0,1 +BRDA:662,52,1,0 +BRDA:725,53,0,0 +BRDA:725,53,1,1 +BRDA:735,54,0,1 +BRDA:735,54,1,1 +BRDA:754,55,0,0 +BRDA:754,55,1,0 +BRDA:764,56,0,0 +BRDA:764,56,1,3 +BRDA:764,57,0,3 +BRDA:764,57,1,0 +BRDA:773,58,0,0 +BRDA:773,58,1,0 +BRDA:775,59,0,0 +BRDA:775,59,1,0 +BRDA:781,60,0,0 +BRDA:781,60,1,0 +BRDA:783,61,0,0 +BRDA:783,61,1,0 +BRDA:789,62,0,0 +BRDA:789,62,1,0 +BRDA:791,63,0,0 +BRDA:791,63,1,0 +BRDA:798,64,0,0 +BRDA:798,64,1,0 +BRDA:800,65,0,0 +BRDA:800,65,1,0 +BRDA:813,66,0,0 +BRDA:813,66,1,0 +BRDA:842,67,0,0 +BRDA:842,67,1,1 +BRDA:842,68,0,1 +BRDA:842,68,1,1 +BRF:140 +BRH:58 end_of_record From 214d736240c46e9278601b6bb1d0dbf7c35535da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Moln=C3=A1r?= Date: Tue, 3 Sep 2013 15:21:36 +0200 Subject: [PATCH 10/20] Updating test coverage statistics. --- coverage/coverage.json | 2 +- coverage/lcov-report/index.html | 28 +- coverage/lcov-report/lib/compressor.js.html | 458 +-- coverage/lcov-report/lib/connection.js.html | 228 +- coverage/lcov-report/lib/endpoint.js.html | 171 +- coverage/lcov-report/lib/flow.js.html | 326 +- coverage/lcov-report/lib/framer.js.html | 282 +- coverage/lcov-report/lib/http.js.html | 918 +++-- coverage/lcov-report/lib/index.html | 104 +- coverage/lcov-report/lib/stream.js.html | 451 ++- coverage/lcov.info | 3912 ++++++++++--------- 11 files changed, 3523 insertions(+), 3357 deletions(-) diff --git a/coverage/coverage.json b/coverage/coverage.json index 9bc19675..88232590 100644 --- a/coverage/coverage.json +++ b/coverage/coverage.json @@ -1 +1 @@ -{"/data/upstream/node-http2/lib/compressor.js":{"path":"/data/upstream/node-http2/lib/compressor.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":14,"8":14,"9":14,"10":14,"11":14,"12":1,"13":1643,"14":1,"15":47,"16":142,"17":1,"18":47,"19":47,"20":154,"21":98,"22":47,"23":98,"24":98,"25":1,"26":184,"27":184,"28":184,"29":54,"30":54,"31":139,"32":54,"33":4,"34":4,"35":50,"36":130,"37":45,"38":85,"39":130,"40":129,"41":88,"42":41,"43":129,"44":129,"45":130,"46":1,"47":42,"48":97,"49":1,"50":64,"51":64,"52":64,"53":6,"54":6,"55":2,"56":62,"57":62,"58":1213,"59":62,"60":36,"61":36,"62":20,"63":42,"64":1,"65":24,"66":24,"67":42,"68":24,"69":24,"70":24,"71":1,"72":129,"73":129,"74":129,"75":2713,"76":202,"77":2713,"78":129,"79":218,"80":218,"81":1,"82":8,"83":8,"84":8,"85":8,"86":1,"87":1,"88":25,"89":25,"90":25,"91":25,"92":96,"93":25,"94":25,"95":25,"96":96,"97":96,"98":96,"99":17,"100":8,"101":9,"102":79,"103":25,"104":25,"105":1,"106":6,"107":6,"108":6,"109":6,"110":1,"111":1,"112":22,"113":22,"114":22,"115":22,"116":70,"117":70,"118":8,"119":24,"120":62,"121":22,"122":22,"123":22,"124":46,"125":24,"126":24,"127":24,"128":22,"129":86,"130":64,"131":64,"132":64,"133":22,"134":22,"135":88,"136":22,"137":22,"138":22,"139":1,"140":232,"141":232,"142":94,"143":138,"144":138,"145":2,"146":138,"147":138,"148":138,"149":146,"150":146,"151":146,"152":8,"153":146,"154":146,"155":138,"156":1,"157":250,"158":250,"159":250,"160":106,"161":250,"162":149,"163":149,"164":159,"165":159,"166":159,"167":250,"168":1,"169":115,"170":115,"171":115,"172":1,"173":120,"174":120,"175":120,"176":120,"177":1,"178":1,"179":96,"180":96,"181":28,"182":68,"183":1,"184":67,"185":46,"186":21,"187":96,"188":28,"189":68,"190":25,"191":43,"192":43,"193":68,"194":21,"195":68,"196":96,"197":96,"198":1,"199":104,"200":104,"201":104,"202":30,"203":74,"204":52,"205":2,"206":50,"207":22,"208":104,"209":30,"210":30,"211":74,"212":74,"213":44,"214":74,"215":22,"216":52,"217":50,"218":2,"219":74,"220":104,"221":1,"222":1,"223":6,"224":1,"225":19,"226":12,"227":12,"228":12,"229":14,"230":14,"231":12,"232":2,"233":2,"234":14,"235":7,"236":19,"237":1,"238":8,"239":8,"240":8,"241":8,"242":8,"243":1,"244":23,"245":3,"246":1,"247":1,"248":1,"249":2,"250":20,"251":13,"252":13,"253":13,"254":13,"255":7,"256":22,"257":12,"258":14,"259":12,"260":12,"261":0,"262":0,"263":0,"264":12,"265":12,"266":22,"267":1,"268":1,"269":1,"270":34,"271":34,"272":330,"273":34,"274":34,"275":330,"276":34,"277":1,"278":12,"279":12,"280":12,"281":14,"282":14,"283":14,"284":12,"285":1,"286":14,"287":14,"288":0,"289":14},"b":{"1":[14,14],"2":[1643,128],"3":[54,130],"4":[4,50],"5":[45,85],"6":[129,1],"7":[88,41],"8":[6,58],"9":[2,4],"10":[36,26],"11":[20,16],"12":[24,18],"13":[202,2511],"14":[5,3],"15":[17,79],"16":[8,9],"17":[3,3],"18":[8,62],"19":[24,22],"20":[64,22],"21":[94,138],"22":[2,136],"23":[8,138],"24":[106,144],"25":[149,101],"26":[28,68],"27":[1,67],"28":[46,21],"29":[28,68],"30":[25,43],"31":[21,47],"32":[30,74],"33":[52,22],"34":[2,50],"35":[30,74],"36":[44,30],"37":[22,52],"38":[50,2],"39":[12,7],"40":[19,12],"41":[12,2],"42":[3,20],"43":[1,2],"44":[3,2],"45":[13,7],"46":[20,12],"47":[12,10],"48":[22,15,8]},"f":{"1":14,"2":1643,"3":47,"4":142,"5":47,"6":154,"7":98,"8":98,"9":184,"10":139,"11":42,"12":97,"13":64,"14":1213,"15":24,"16":129,"17":8,"18":25,"19":6,"20":22,"21":232,"22":250,"23":115,"24":120,"25":96,"26":104,"27":6,"28":19,"29":8,"30":23,"31":14,"32":34,"33":12,"34":14},"fnMap":{"1":{"name":"CompressionContext","line":38,"loc":{"start":{"line":38,"column":0},"end":{"line":38,"column":47}}},"2":{"name":"(anonymous_2)","line":48,"loc":{"start":{"line":48,"column":27},"end":{"line":48,"column":50}}},"3":{"name":"getWorkingSet","line":53,"loc":{"start":{"line":53,"column":45},"end":{"line":53,"column":70}}},"4":{"name":"(anonymous_4)","line":54,"loc":{"start":{"line":54,"column":27},"end":{"line":54,"column":43}}},"5":{"name":"reinitialize","line":60,"loc":{"start":{"line":60,"column":44},"end":{"line":60,"column":68}}},"6":{"name":"(anonymous_6)","line":66,"loc":{"start":{"line":66,"column":41},"end":{"line":66,"column":57}}},"7":{"name":"(anonymous_7)","line":68,"loc":{"start":{"line":68,"column":9},"end":{"line":68,"column":25}}},"8":{"name":"(anonymous_8)","line":76,"loc":{"start":{"line":76,"column":38},"end":{"line":76,"column":53}}},"9":{"name":"execute","line":105,"loc":{"start":{"line":105,"column":39},"end":{"line":105,"column":65}}},"10":{"name":"(anonymous_10)","line":118,"loc":{"start":{"line":118,"column":40},"end":{"line":118,"column":56}}},"11":{"name":"(anonymous_11)","line":156,"loc":{"start":{"line":156,"column":43},"end":{"line":156,"column":59}}},"12":{"name":"(anonymous_12)","line":157,"loc":{"start":{"line":157,"column":28},"end":{"line":157,"column":44}}},"13":{"name":"(anonymous_13)","line":164,"loc":{"start":{"line":164,"column":50},"end":{"line":164,"column":65}}},"14":{"name":"(anonymous_14)","line":180,"loc":{"start":{"line":180,"column":37},"end":{"line":180,"column":53}}},"15":{"name":"(anonymous_15)","line":203,"loc":{"start":{"line":203,"column":53},"end":{"line":203,"column":68}}},"16":{"name":"(anonymous_16)","line":227,"loc":{"start":{"line":227,"column":49},"end":{"line":227,"column":60}}},"17":{"name":"Decompressor","line":249,"loc":{"start":{"line":249,"column":0},"end":{"line":249,"column":33}}},"18":{"name":"decompress","line":264,"loc":{"start":{"line":264,"column":36},"end":{"line":264,"column":64}}},"19":{"name":"Compressor","line":310,"loc":{"start":{"line":310,"column":0},"end":{"line":310,"column":31}}},"20":{"name":"compress","line":325,"loc":{"start":{"line":325,"column":32},"end":{"line":325,"column":59}}},"21":{"name":"writeInteger","line":395,"loc":{"start":{"line":395,"column":21},"end":{"line":395,"column":49}}},"22":{"name":"readInteger","line":436,"loc":{"start":{"line":436,"column":23},"end":{"line":436,"column":55}}},"23":{"name":"writeString","line":466,"loc":{"start":{"line":466,"column":20},"end":{"line":466,"column":46}}},"24":{"name":"readString","line":472,"loc":{"start":{"line":472,"column":22},"end":{"line":472,"column":50}}},"25":{"name":"writeHeader","line":525,"loc":{"start":{"line":525,"column":20},"end":{"line":525,"column":49}}},"26":{"name":"readHeader","line":561,"loc":{"start":{"line":561,"column":22},"end":{"line":561,"column":50}}},"27":{"name":"_initializeStream","line":626,"loc":{"start":{"line":626,"column":41},"end":{"line":626,"column":70}}},"28":{"name":"_transform","line":630,"loc":{"start":{"line":630,"column":34},"end":{"line":630,"column":77}}},"29":{"name":"_initializeStream","line":676,"loc":{"start":{"line":676,"column":43},"end":{"line":676,"column":72}}},"30":{"name":"_transform","line":685,"loc":{"start":{"line":685,"column":36},"end":{"line":685,"column":79}}},"31":{"name":"(anonymous_31)","line":715,"loc":{"start":{"line":715,"column":41},"end":{"line":715,"column":57}}},"32":{"name":"concat","line":825,"loc":{"start":{"line":825,"column":0},"end":{"line":825,"column":25}}},"33":{"name":"cut","line":840,"loc":{"start":{"line":840,"column":0},"end":{"line":840,"column":27}}},"34":{"name":"shallowCopy","line":852,"loc":{"start":{"line":852,"column":0},"end":{"line":852,"column":29}}}},"statementMap":{"1":{"start":{"line":16,"column":0},"end":{"line":16,"column":44}},"2":{"start":{"line":18,"column":0},"end":{"line":18,"column":48}},"3":{"start":{"line":19,"column":0},"end":{"line":19,"column":36}},"4":{"start":{"line":20,"column":0},"end":{"line":20,"column":32}},"5":{"start":{"line":36,"column":0},"end":{"line":36,"column":38}},"6":{"start":{"line":38,"column":0},"end":{"line":44,"column":1}},"7":{"start":{"line":39,"column":2},"end":{"line":39,"column":18}},"8":{"start":{"line":40,"column":2},"end":{"line":40,"column":30}},"9":{"start":{"line":41,"column":2},"end":{"line":41,"column":52}},"10":{"start":{"line":42,"column":2},"end":{"line":42,"column":23}},"11":{"start":{"line":43,"column":2},"end":{"line":43,"column":21}},"12":{"start":{"line":48,"column":0},"end":{"line":50,"column":2}},"13":{"start":{"line":49,"column":2},"end":{"line":49,"column":88}},"14":{"start":{"line":53,"column":0},"end":{"line":57,"column":2}},"15":{"start":{"line":54,"column":2},"end":{"line":56,"column":5}},"16":{"start":{"line":55,"column":4},"end":{"line":55,"column":22}},"17":{"start":{"line":60,"column":0},"end":{"line":80,"column":2}},"18":{"start":{"line":61,"column":2},"end":{"line":61,"column":18}},"19":{"start":{"line":66,"column":2},"end":{"line":70,"column":5}},"20":{"start":{"line":67,"column":4},"end":{"line":67,"column":50}},"21":{"start":{"line":69,"column":4},"end":{"line":69,"column":22}},"22":{"start":{"line":76,"column":2},"end":{"line":79,"column":5}},"23":{"start":{"line":77,"column":4},"end":{"line":77,"column":42}},"24":{"start":{"line":78,"column":4},"end":{"line":78,"column":40}},"25":{"start":{"line":105,"column":0},"end":{"line":152,"column":2}},"26":{"start":{"line":106,"column":2},"end":{"line":107,"column":55}},"27":{"start":{"line":109,"column":2},"end":{"line":109,"column":18}},"28":{"start":{"line":116,"column":2},"end":{"line":151,"column":3}},"29":{"start":{"line":117,"column":4},"end":{"line":117,"column":26}},"30":{"start":{"line":118,"column":4},"end":{"line":120,"column":7}},"31":{"start":{"line":119,"column":6},"end":{"line":119,"column":35}},"32":{"start":{"line":121,"column":4},"end":{"line":126,"column":5}},"33":{"start":{"line":122,"column":6},"end":{"line":122,"column":32}},"34":{"start":{"line":123,"column":6},"end":{"line":123,"column":55}},"35":{"start":{"line":125,"column":6},"end":{"line":125,"column":31}},"36":{"start":{"line":134,"column":4},"end":{"line":138,"column":5}},"37":{"start":{"line":135,"column":6},"end":{"line":135,"column":59}},"38":{"start":{"line":137,"column":6},"end":{"line":137,"column":43}},"39":{"start":{"line":140,"column":4},"end":{"line":148,"column":5}},"40":{"start":{"line":141,"column":6},"end":{"line":145,"column":7}},"41":{"start":{"line":142,"column":8},"end":{"line":142,"column":31}},"42":{"start":{"line":144,"column":8},"end":{"line":144,"column":51}},"43":{"start":{"line":146,"column":6},"end":{"line":146,"column":31}},"44":{"start":{"line":147,"column":6},"end":{"line":147,"column":40}},"45":{"start":{"line":150,"column":4},"end":{"line":150,"column":53}},"46":{"start":{"line":156,"column":0},"end":{"line":160,"column":2}},"47":{"start":{"line":157,"column":2},"end":{"line":159,"column":5}},"48":{"start":{"line":158,"column":4},"end":{"line":158,"column":33}},"49":{"start":{"line":164,"column":0},"end":{"line":199,"column":2}},"50":{"start":{"line":165,"column":2},"end":{"line":165,"column":56}},"51":{"start":{"line":167,"column":2},"end":{"line":167,"column":44}},"52":{"start":{"line":168,"column":2},"end":{"line":177,"column":3}},"53":{"start":{"line":169,"column":4},"end":{"line":169,"column":54}},"54":{"start":{"line":170,"column":4},"end":{"line":176,"column":5}},"55":{"start":{"line":171,"column":6},"end":{"line":175,"column":8}},"56":{"start":{"line":179,"column":2},"end":{"line":179,"column":35}},"57":{"start":{"line":180,"column":2},"end":{"line":182,"column":5}},"58":{"start":{"line":181,"column":4},"end":{"line":181,"column":43}},"59":{"start":{"line":183,"column":2},"end":{"line":192,"column":3}},"60":{"start":{"line":184,"column":4},"end":{"line":184,"column":54}},"61":{"start":{"line":185,"column":4},"end":{"line":191,"column":5}},"62":{"start":{"line":186,"column":6},"end":{"line":190,"column":8}},"63":{"start":{"line":194,"column":2},"end":{"line":198,"column":4}},"64":{"start":{"line":203,"column":0},"end":{"line":218,"column":2}},"65":{"start":{"line":204,"column":2},"end":{"line":204,"column":12}},"66":{"start":{"line":206,"column":2},"end":{"line":211,"column":3}},"67":{"start":{"line":207,"column":4},"end":{"line":210,"column":5}},"68":{"start":{"line":208,"column":6},"end":{"line":208,"column":31}},"69":{"start":{"line":209,"column":6},"end":{"line":209,"column":12}},"70":{"start":{"line":213,"column":2},"end":{"line":217,"column":4}},"71":{"start":{"line":227,"column":0},"end":{"line":240,"column":2}},"72":{"start":{"line":228,"column":2},"end":{"line":228,"column":26}},"73":{"start":{"line":229,"column":2},"end":{"line":229,"column":15}},"74":{"start":{"line":230,"column":2},"end":{"line":235,"column":3}},"75":{"start":{"line":231,"column":4},"end":{"line":233,"column":5}},"76":{"start":{"line":232,"column":6},"end":{"line":232,"column":80}},"77":{"start":{"line":234,"column":4},"end":{"line":234,"column":26}},"78":{"start":{"line":236,"column":2},"end":{"line":239,"column":3}},"79":{"start":{"line":237,"column":4},"end":{"line":237,"column":32}},"80":{"start":{"line":238,"column":4},"end":{"line":238,"column":25}},"81":{"start":{"line":249,"column":0},"end":{"line":257,"column":1}},"82":{"start":{"line":250,"column":2},"end":{"line":250,"column":55}},"83":{"start":{"line":252,"column":2},"end":{"line":253,"column":84}},"84":{"start":{"line":254,"column":2},"end":{"line":254,"column":66}},"85":{"start":{"line":256,"column":2},"end":{"line":256,"column":27}},"86":{"start":{"line":258,"column":0},"end":{"line":258,"column":102}},"87":{"start":{"line":264,"column":0},"end":{"line":301,"column":2}},"88":{"start":{"line":265,"column":2},"end":{"line":265,"column":69}},"89":{"start":{"line":269,"column":2},"end":{"line":269,"column":31}},"90":{"start":{"line":274,"column":2},"end":{"line":274,"column":20}},"91":{"start":{"line":275,"column":2},"end":{"line":277,"column":3}},"92":{"start":{"line":276,"column":4},"end":{"line":276,"column":55}},"93":{"start":{"line":281,"column":2},"end":{"line":281,"column":44}},"94":{"start":{"line":285,"column":2},"end":{"line":285,"column":19}},"95":{"start":{"line":286,"column":2},"end":{"line":298,"column":3}},"96":{"start":{"line":287,"column":4},"end":{"line":287,"column":27}},"97":{"start":{"line":288,"column":4},"end":{"line":288,"column":28}},"98":{"start":{"line":289,"column":4},"end":{"line":297,"column":5}},"99":{"start":{"line":290,"column":6},"end":{"line":294,"column":7}},"100":{"start":{"line":291,"column":8},"end":{"line":291,"column":34}},"101":{"start":{"line":293,"column":8},"end":{"line":293,"column":47}},"102":{"start":{"line":296,"column":6},"end":{"line":296,"column":28}},"103":{"start":{"line":299,"column":2},"end":{"line":299,"column":72}},"104":{"start":{"line":300,"column":2},"end":{"line":300,"column":17}},"105":{"start":{"line":310,"column":0},"end":{"line":318,"column":1}},"106":{"start":{"line":311,"column":2},"end":{"line":311,"column":53}},"107":{"start":{"line":313,"column":2},"end":{"line":314,"column":84}},"108":{"start":{"line":315,"column":2},"end":{"line":315,"column":66}},"109":{"start":{"line":317,"column":2},"end":{"line":317,"column":27}},"110":{"start":{"line":319,"column":0},"end":{"line":319,"column":98}},"111":{"start":{"line":325,"column":0},"end":{"line":376,"column":2}},"112":{"start":{"line":326,"column":2},"end":{"line":326,"column":71}},"113":{"start":{"line":327,"column":2},"end":{"line":327,"column":8}},"114":{"start":{"line":331,"column":2},"end":{"line":331,"column":17}},"115":{"start":{"line":332,"column":2},"end":{"line":341,"column":3}},"116":{"start":{"line":333,"column":4},"end":{"line":333,"column":30}},"117":{"start":{"line":334,"column":4},"end":{"line":340,"column":5}},"118":{"start":{"line":335,"column":6},"end":{"line":337,"column":7}},"119":{"start":{"line":336,"column":8},"end":{"line":336,"column":53}},"120":{"start":{"line":339,"column":6},"end":{"line":339,"column":48}},"121":{"start":{"line":345,"column":2},"end":{"line":345,"column":31}},"122":{"start":{"line":346,"column":2},"end":{"line":346,"column":70}},"123":{"start":{"line":349,"column":2},"end":{"line":355,"column":3}},"124":{"start":{"line":350,"column":4},"end":{"line":354,"column":5}},"125":{"start":{"line":351,"column":6},"end":{"line":351,"column":64}},"126":{"start":{"line":352,"column":6},"end":{"line":352,"column":37}},"127":{"start":{"line":353,"column":6},"end":{"line":353,"column":29}},"128":{"start":{"line":358,"column":2},"end":{"line":364,"column":3}},"129":{"start":{"line":359,"column":4},"end":{"line":363,"column":5}},"130":{"start":{"line":360,"column":6},"end":{"line":360,"column":59}},"131":{"start":{"line":361,"column":6},"end":{"line":361,"column":37}},"132":{"start":{"line":362,"column":6},"end":{"line":362,"column":29}},"133":{"start":{"line":367,"column":2},"end":{"line":367,"column":19}},"134":{"start":{"line":368,"column":2},"end":{"line":370,"column":3}},"135":{"start":{"line":369,"column":4},"end":{"line":369,"column":49}},"136":{"start":{"line":372,"column":2},"end":{"line":372,"column":65}},"137":{"start":{"line":374,"column":2},"end":{"line":374,"column":66}},"138":{"start":{"line":375,"column":2},"end":{"line":375,"column":16}},"139":{"start":{"line":395,"column":0},"end":{"line":421,"column":2}},"140":{"start":{"line":396,"column":2},"end":{"line":396,"column":32}},"141":{"start":{"line":397,"column":2},"end":{"line":399,"column":3}},"142":{"start":{"line":398,"column":4},"end":{"line":398,"column":29}},"143":{"start":{"line":401,"column":2},"end":{"line":401,"column":17}},"144":{"start":{"line":402,"column":2},"end":{"line":404,"column":3}},"145":{"start":{"line":403,"column":4},"end":{"line":403,"column":22}},"146":{"start":{"line":405,"column":2},"end":{"line":405,"column":13}},"147":{"start":{"line":407,"column":2},"end":{"line":407,"column":15}},"148":{"start":{"line":408,"column":2},"end":{"line":418,"column":3}},"149":{"start":{"line":409,"column":4},"end":{"line":409,"column":28}},"150":{"start":{"line":410,"column":4},"end":{"line":410,"column":16}},"151":{"start":{"line":412,"column":4},"end":{"line":414,"column":5}},"152":{"start":{"line":413,"column":6},"end":{"line":413,"column":15}},"153":{"start":{"line":415,"column":4},"end":{"line":415,"column":18}},"154":{"start":{"line":417,"column":4},"end":{"line":417,"column":10}},"155":{"start":{"line":420,"column":2},"end":{"line":420,"column":29}},"156":{"start":{"line":436,"column":0},"end":{"line":454,"column":2}},"157":{"start":{"line":437,"column":2},"end":{"line":437,"column":32}},"158":{"start":{"line":439,"column":2},"end":{"line":439,"column":40}},"159":{"start":{"line":440,"column":2},"end":{"line":442,"column":3}},"160":{"start":{"line":441,"column":4},"end":{"line":441,"column":23}},"161":{"start":{"line":444,"column":2},"end":{"line":451,"column":3}},"162":{"start":{"line":445,"column":4},"end":{"line":445,"column":14}},"163":{"start":{"line":446,"column":4},"end":{"line":450,"column":46}},"164":{"start":{"line":447,"column":6},"end":{"line":447,"column":46}},"165":{"start":{"line":448,"column":6},"end":{"line":448,"column":13}},"166":{"start":{"line":449,"column":6},"end":{"line":449,"column":25}},"167":{"start":{"line":453,"column":2},"end":{"line":453,"column":11}},"168":{"start":{"line":466,"column":0},"end":{"line":470,"column":2}},"169":{"start":{"line":467,"column":2},"end":{"line":467,"column":46}},"170":{"start":{"line":468,"column":2},"end":{"line":468,"column":66}},"171":{"start":{"line":469,"column":2},"end":{"line":469,"column":45}},"172":{"start":{"line":472,"column":0},"end":{"line":477,"column":2}},"173":{"start":{"line":473,"column":2},"end":{"line":473,"column":47}},"174":{"start":{"line":474,"column":2},"end":{"line":474,"column":75}},"175":{"start":{"line":475,"column":2},"end":{"line":475,"column":26}},"176":{"start":{"line":476,"column":2},"end":{"line":476,"column":13}},"177":{"start":{"line":518,"column":0},"end":{"line":523,"column":2}},"178":{"start":{"line":525,"column":0},"end":{"line":559,"column":2}},"179":{"start":{"line":526,"column":2},"end":{"line":526,"column":35}},"180":{"start":{"line":528,"column":2},"end":{"line":536,"column":3}},"181":{"start":{"line":529,"column":4},"end":{"line":529,"column":45}},"182":{"start":{"line":530,"column":9},"end":{"line":536,"column":3}},"183":{"start":{"line":531,"column":4},"end":{"line":531,"column":45}},"184":{"start":{"line":532,"column":9},"end":{"line":536,"column":3}},"185":{"start":{"line":533,"column":4},"end":{"line":533,"column":56}},"186":{"start":{"line":535,"column":4},"end":{"line":535,"column":57}},"187":{"start":{"line":538,"column":2},"end":{"line":554,"column":3}},"188":{"start":{"line":539,"column":4},"end":{"line":539,"column":74}},"189":{"start":{"line":542,"column":4},"end":{"line":547,"column":5}},"190":{"start":{"line":543,"column":6},"end":{"line":543,"column":79}},"191":{"start":{"line":545,"column":6},"end":{"line":545,"column":65}},"192":{"start":{"line":546,"column":6},"end":{"line":546,"column":51}},"193":{"start":{"line":549,"column":4},"end":{"line":551,"column":5}},"194":{"start":{"line":550,"column":6},"end":{"line":550,"column":56}},"195":{"start":{"line":553,"column":4},"end":{"line":553,"column":50}},"196":{"start":{"line":556,"column":2},"end":{"line":556,"column":45}},"197":{"start":{"line":558,"column":2},"end":{"line":558,"column":51}},"198":{"start":{"line":561,"column":0},"end":{"line":599,"column":2}},"199":{"start":{"line":562,"column":2},"end":{"line":562,"column":34}},"200":{"start":{"line":564,"column":2},"end":{"line":564,"column":40}},"201":{"start":{"line":565,"column":2},"end":{"line":575,"column":3}},"202":{"start":{"line":566,"column":4},"end":{"line":566,"column":45}},"203":{"start":{"line":567,"column":9},"end":{"line":575,"column":3}},"204":{"start":{"line":568,"column":4},"end":{"line":572,"column":5}},"205":{"start":{"line":569,"column":6},"end":{"line":569,"column":47}},"206":{"start":{"line":571,"column":6},"end":{"line":571,"column":58}},"207":{"start":{"line":574,"column":4},"end":{"line":574,"column":57}},"208":{"start":{"line":577,"column":2},"end":{"line":596,"column":3}},"209":{"start":{"line":578,"column":4},"end":{"line":578,"column":85}},"210":{"start":{"line":579,"column":4},"end":{"line":579,"column":22}},"211":{"start":{"line":582,"column":4},"end":{"line":582,"column":74}},"212":{"start":{"line":583,"column":4},"end":{"line":585,"column":5}},"213":{"start":{"line":584,"column":6},"end":{"line":584,"column":48}},"214":{"start":{"line":587,"column":4},"end":{"line":593,"column":5}},"215":{"start":{"line":588,"column":6},"end":{"line":588,"column":53}},"216":{"start":{"line":589,"column":11},"end":{"line":593,"column":5}},"217":{"start":{"line":590,"column":6},"end":{"line":590,"column":30}},"218":{"start":{"line":592,"column":6},"end":{"line":592,"column":24}},"219":{"start":{"line":595,"column":4},"end":{"line":595,"column":47}},"220":{"start":{"line":598,"column":2},"end":{"line":598,"column":16}},"221":{"start":{"line":623,"column":0},"end":{"line":623,"column":34}},"222":{"start":{"line":626,"column":0},"end":{"line":628,"column":2}},"223":{"start":{"line":627,"column":2},"end":{"line":627,"column":45}},"224":{"start":{"line":630,"column":0},"end":{"line":668,"column":2}},"225":{"start":{"line":632,"column":2},"end":{"line":665,"column":3}},"226":{"start":{"line":634,"column":4},"end":{"line":634,"column":46}},"227":{"start":{"line":637,"column":4},"end":{"line":637,"column":52}},"228":{"start":{"line":642,"column":4},"end":{"line":659,"column":5}},"229":{"start":{"line":643,"column":6},"end":{"line":643,"column":43}},"230":{"start":{"line":644,"column":6},"end":{"line":649,"column":7}},"231":{"start":{"line":645,"column":8},"end":{"line":645,"column":42}},"232":{"start":{"line":647,"column":8},"end":{"line":647,"column":43}},"233":{"start":{"line":648,"column":8},"end":{"line":648,"column":36}},"234":{"start":{"line":651,"column":6},"end":{"line":658,"column":9}},"235":{"start":{"line":664,"column":4},"end":{"line":664,"column":21}},"236":{"start":{"line":667,"column":2},"end":{"line":667,"column":9}},"237":{"start":{"line":676,"column":0},"end":{"line":682,"column":2}},"238":{"start":{"line":677,"column":2},"end":{"line":677,"column":45}},"239":{"start":{"line":678,"column":2},"end":{"line":678,"column":27}},"240":{"start":{"line":679,"column":2},"end":{"line":679,"column":25}},"241":{"start":{"line":680,"column":2},"end":{"line":680,"column":27}},"242":{"start":{"line":681,"column":2},"end":{"line":681,"column":27}},"243":{"start":{"line":685,"column":0},"end":{"line":737,"column":2}},"244":{"start":{"line":688,"column":2},"end":{"line":709,"column":3}},"245":{"start":{"line":689,"column":4},"end":{"line":693,"column":5}},"246":{"start":{"line":690,"column":6},"end":{"line":690,"column":71}},"247":{"start":{"line":691,"column":6},"end":{"line":691,"column":43}},"248":{"start":{"line":692,"column":6},"end":{"line":692,"column":13}},"249":{"start":{"line":694,"column":4},"end":{"line":694,"column":29}},"250":{"start":{"line":699,"column":7},"end":{"line":709,"column":3}},"251":{"start":{"line":700,"column":4},"end":{"line":700,"column":28}},"252":{"start":{"line":701,"column":4},"end":{"line":701,"column":28}},"253":{"start":{"line":702,"column":4},"end":{"line":702,"column":32}},"254":{"start":{"line":703,"column":4},"end":{"line":703,"column":27}},"255":{"start":{"line":708,"column":4},"end":{"line":708,"column":21}},"256":{"start":{"line":714,"column":2},"end":{"line":734,"column":3}},"257":{"start":{"line":715,"column":4},"end":{"line":717,"column":8}},"258":{"start":{"line":716,"column":6},"end":{"line":716,"column":24}},"259":{"start":{"line":718,"column":4},"end":{"line":724,"column":5}},"260":{"start":{"line":719,"column":6},"end":{"line":719,"column":44}},"261":{"start":{"line":721,"column":6},"end":{"line":721,"column":68}},"262":{"start":{"line":722,"column":6},"end":{"line":722,"column":46}},"263":{"start":{"line":723,"column":6},"end":{"line":723,"column":13}},"264":{"start":{"line":725,"column":4},"end":{"line":732,"column":7}},"265":{"start":{"line":733,"column":4},"end":{"line":733,"column":29}},"266":{"start":{"line":736,"column":2},"end":{"line":736,"column":9}},"267":{"start":{"line":742,"column":0},"end":{"line":781,"column":2}},"268":{"start":{"line":783,"column":0},"end":{"line":819,"column":2}},"269":{"start":{"line":825,"column":0},"end":{"line":837,"column":1}},"270":{"start":{"line":826,"column":2},"end":{"line":826,"column":15}},"271":{"start":{"line":827,"column":2},"end":{"line":829,"column":3}},"272":{"start":{"line":828,"column":4},"end":{"line":828,"column":30}},"273":{"start":{"line":831,"column":2},"end":{"line":831,"column":38}},"274":{"start":{"line":832,"column":2},"end":{"line":834,"column":3}},"275":{"start":{"line":833,"column":4},"end":{"line":833,"column":42}},"276":{"start":{"line":836,"column":2},"end":{"line":836,"column":22}},"277":{"start":{"line":840,"column":0},"end":{"line":849,"column":1}},"278":{"start":{"line":841,"column":2},"end":{"line":841,"column":18}},"279":{"start":{"line":842,"column":2},"end":{"line":842,"column":17}},"280":{"start":{"line":843,"column":2},"end":{"line":847,"column":34}},"281":{"start":{"line":844,"column":4},"end":{"line":844,"column":59}},"282":{"start":{"line":845,"column":4},"end":{"line":845,"column":58}},"283":{"start":{"line":846,"column":4},"end":{"line":846,"column":24}},"284":{"start":{"line":848,"column":2},"end":{"line":848,"column":16}},"285":{"start":{"line":852,"column":0},"end":{"line":858,"column":1}},"286":{"start":{"line":853,"column":2},"end":{"line":853,"column":17}},"287":{"start":{"line":854,"column":2},"end":{"line":856,"column":3}},"288":{"start":{"line":855,"column":4},"end":{"line":855,"column":29}},"289":{"start":{"line":857,"column":2},"end":{"line":857,"column":15}}},"branchMap":{"1":{"line":41,"type":"binary-expr","locations":[{"start":{"line":41,"column":16},"end":{"line":41,"column":21}},{"start":{"line":41,"column":25},"end":{"line":41,"column":51}}]},"2":{"line":49,"type":"binary-expr","locations":[{"start":{"line":49,"column":10},"end":{"line":49,"column":59}},{"start":{"line":49,"column":65},"end":{"line":49,"column":86}}]},"3":{"line":116,"type":"if","locations":[{"start":{"line":116,"column":2},"end":{"line":116,"column":2}},{"start":{"line":116,"column":2},"end":{"line":116,"column":2}}]},"4":{"line":121,"type":"if","locations":[{"start":{"line":121,"column":4},"end":{"line":121,"column":4}},{"start":{"line":121,"column":4},"end":{"line":121,"column":4}}]},"5":{"line":134,"type":"if","locations":[{"start":{"line":134,"column":4},"end":{"line":134,"column":4}},{"start":{"line":134,"column":4},"end":{"line":134,"column":4}}]},"6":{"line":140,"type":"if","locations":[{"start":{"line":140,"column":4},"end":{"line":140,"column":4}},{"start":{"line":140,"column":4},"end":{"line":140,"column":4}}]},"7":{"line":141,"type":"if","locations":[{"start":{"line":141,"column":6},"end":{"line":141,"column":6}},{"start":{"line":141,"column":6},"end":{"line":141,"column":6}}]},"8":{"line":168,"type":"if","locations":[{"start":{"line":168,"column":2},"end":{"line":168,"column":2}},{"start":{"line":168,"column":2},"end":{"line":168,"column":2}}]},"9":{"line":170,"type":"if","locations":[{"start":{"line":170,"column":4},"end":{"line":170,"column":4}},{"start":{"line":170,"column":4},"end":{"line":170,"column":4}}]},"10":{"line":183,"type":"if","locations":[{"start":{"line":183,"column":2},"end":{"line":183,"column":2}},{"start":{"line":183,"column":2},"end":{"line":183,"column":2}}]},"11":{"line":185,"type":"if","locations":[{"start":{"line":185,"column":4},"end":{"line":185,"column":4}},{"start":{"line":185,"column":4},"end":{"line":185,"column":4}}]},"12":{"line":207,"type":"if","locations":[{"start":{"line":207,"column":4},"end":{"line":207,"column":4}},{"start":{"line":207,"column":4},"end":{"line":207,"column":4}}]},"13":{"line":231,"type":"if","locations":[{"start":{"line":231,"column":4},"end":{"line":231,"column":4}},{"start":{"line":231,"column":4},"end":{"line":231,"column":4}}]},"14":{"line":252,"type":"cond-expr","locations":[{"start":{"line":252,"column":44},"end":{"line":252,"column":82}},{"start":{"line":253,"column":44},"end":{"line":253,"column":83}}]},"15":{"line":289,"type":"if","locations":[{"start":{"line":289,"column":4},"end":{"line":289,"column":4}},{"start":{"line":289,"column":4},"end":{"line":289,"column":4}}]},"16":{"line":290,"type":"if","locations":[{"start":{"line":290,"column":6},"end":{"line":290,"column":6}},{"start":{"line":290,"column":6},"end":{"line":290,"column":6}}]},"17":{"line":313,"type":"cond-expr","locations":[{"start":{"line":313,"column":44},"end":{"line":313,"column":82}},{"start":{"line":314,"column":44},"end":{"line":314,"column":83}}]},"18":{"line":334,"type":"if","locations":[{"start":{"line":334,"column":4},"end":{"line":334,"column":4}},{"start":{"line":334,"column":4},"end":{"line":334,"column":4}}]},"19":{"line":350,"type":"if","locations":[{"start":{"line":350,"column":4},"end":{"line":350,"column":4}},{"start":{"line":350,"column":4},"end":{"line":350,"column":4}}]},"20":{"line":359,"type":"if","locations":[{"start":{"line":359,"column":4},"end":{"line":359,"column":4}},{"start":{"line":359,"column":4},"end":{"line":359,"column":4}}]},"21":{"line":397,"type":"if","locations":[{"start":{"line":397,"column":2},"end":{"line":397,"column":2}},{"start":{"line":397,"column":2},"end":{"line":397,"column":2}}]},"22":{"line":402,"type":"if","locations":[{"start":{"line":402,"column":2},"end":{"line":402,"column":2}},{"start":{"line":402,"column":2},"end":{"line":402,"column":2}}]},"23":{"line":412,"type":"if","locations":[{"start":{"line":412,"column":4},"end":{"line":412,"column":4}},{"start":{"line":412,"column":4},"end":{"line":412,"column":4}}]},"24":{"line":440,"type":"if","locations":[{"start":{"line":440,"column":2},"end":{"line":440,"column":2}},{"start":{"line":440,"column":2},"end":{"line":440,"column":2}}]},"25":{"line":444,"type":"if","locations":[{"start":{"line":444,"column":2},"end":{"line":444,"column":2}},{"start":{"line":444,"column":2},"end":{"line":444,"column":2}}]},"26":{"line":528,"type":"if","locations":[{"start":{"line":528,"column":2},"end":{"line":528,"column":2}},{"start":{"line":528,"column":2},"end":{"line":528,"column":2}}]},"27":{"line":530,"type":"if","locations":[{"start":{"line":530,"column":9},"end":{"line":530,"column":9}},{"start":{"line":530,"column":9},"end":{"line":530,"column":9}}]},"28":{"line":532,"type":"if","locations":[{"start":{"line":532,"column":9},"end":{"line":532,"column":9}},{"start":{"line":532,"column":9},"end":{"line":532,"column":9}}]},"29":{"line":538,"type":"if","locations":[{"start":{"line":538,"column":2},"end":{"line":538,"column":2}},{"start":{"line":538,"column":2},"end":{"line":538,"column":2}}]},"30":{"line":542,"type":"if","locations":[{"start":{"line":542,"column":4},"end":{"line":542,"column":4}},{"start":{"line":542,"column":4},"end":{"line":542,"column":4}}]},"31":{"line":549,"type":"if","locations":[{"start":{"line":549,"column":4},"end":{"line":549,"column":4}},{"start":{"line":549,"column":4},"end":{"line":549,"column":4}}]},"32":{"line":565,"type":"if","locations":[{"start":{"line":565,"column":2},"end":{"line":565,"column":2}},{"start":{"line":565,"column":2},"end":{"line":565,"column":2}}]},"33":{"line":567,"type":"if","locations":[{"start":{"line":567,"column":9},"end":{"line":567,"column":9}},{"start":{"line":567,"column":9},"end":{"line":567,"column":9}}]},"34":{"line":568,"type":"if","locations":[{"start":{"line":568,"column":4},"end":{"line":568,"column":4}},{"start":{"line":568,"column":4},"end":{"line":568,"column":4}}]},"35":{"line":577,"type":"if","locations":[{"start":{"line":577,"column":2},"end":{"line":577,"column":2}},{"start":{"line":577,"column":2},"end":{"line":577,"column":2}}]},"36":{"line":583,"type":"if","locations":[{"start":{"line":583,"column":4},"end":{"line":583,"column":4}},{"start":{"line":583,"column":4},"end":{"line":583,"column":4}}]},"37":{"line":587,"type":"if","locations":[{"start":{"line":587,"column":4},"end":{"line":587,"column":4}},{"start":{"line":587,"column":4},"end":{"line":587,"column":4}}]},"38":{"line":589,"type":"if","locations":[{"start":{"line":589,"column":11},"end":{"line":589,"column":11}},{"start":{"line":589,"column":11},"end":{"line":589,"column":11}}]},"39":{"line":632,"type":"if","locations":[{"start":{"line":632,"column":2},"end":{"line":632,"column":2}},{"start":{"line":632,"column":2},"end":{"line":632,"column":2}}]},"40":{"line":632,"type":"binary-expr","locations":[{"start":{"line":632,"column":6},"end":{"line":632,"column":30}},{"start":{"line":632,"column":34},"end":{"line":632,"column":63}}]},"41":{"line":644,"type":"if","locations":[{"start":{"line":644,"column":6},"end":{"line":644,"column":6}},{"start":{"line":644,"column":6},"end":{"line":644,"column":6}}]},"42":{"line":688,"type":"if","locations":[{"start":{"line":688,"column":2},"end":{"line":688,"column":2}},{"start":{"line":688,"column":2},"end":{"line":688,"column":2}}]},"43":{"line":689,"type":"if","locations":[{"start":{"line":689,"column":4},"end":{"line":689,"column":4}},{"start":{"line":689,"column":4},"end":{"line":689,"column":4}}]},"44":{"line":689,"type":"binary-expr","locations":[{"start":{"line":689,"column":9},"end":{"line":689,"column":34}},{"start":{"line":689,"column":40},"end":{"line":689,"column":69}}]},"45":{"line":699,"type":"if","locations":[{"start":{"line":699,"column":7},"end":{"line":699,"column":7}},{"start":{"line":699,"column":7},"end":{"line":699,"column":7}}]},"46":{"line":699,"type":"binary-expr","locations":[{"start":{"line":699,"column":12},"end":{"line":699,"column":36}},{"start":{"line":699,"column":42},"end":{"line":699,"column":71}}]},"47":{"line":714,"type":"if","locations":[{"start":{"line":714,"column":2},"end":{"line":714,"column":2}},{"start":{"line":714,"column":2},"end":{"line":714,"column":2}}]},"48":{"line":714,"type":"binary-expr","locations":[{"start":{"line":714,"column":6},"end":{"line":714,"column":22}},{"start":{"line":714,"column":27},"end":{"line":714,"column":50}},{"start":{"line":714,"column":54},"end":{"line":714,"column":82}}]}}},"/data/upstream/node-http2/lib/connection.js":{"path":"/data/upstream/node-http2/lib/connection.js","s":{"1":1,"2":1,"3":1,"4":1,"5":25,"6":25,"7":25,"8":25,"9":25,"10":25,"11":1,"12":1,"13":1,"14":25,"15":25,"16":25,"17":25,"18":25,"19":25,"20":25,"21":25,"22":1,"23":197,"24":1,"25":25,"26":25,"27":25,"28":0,"29":0,"30":1,"31":18,"32":18,"33":1,"34":43,"35":15,"36":15,"37":15,"38":1,"39":22,"40":11,"41":11,"42":11,"43":11,"44":0,"45":0,"46":0,"47":22,"48":22,"49":22,"50":22,"51":22,"52":1,"53":22,"54":22,"55":22,"56":22,"57":22,"58":1,"59":43,"60":43,"61":43,"62":78,"63":43,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":11,"71":11,"72":11,"73":11,"74":11,"75":11,"76":1,"77":8,"78":8,"79":8,"80":8,"81":1,"82":189,"83":189,"84":189,"85":197,"86":197,"87":197,"88":197,"89":27,"90":0,"91":0,"92":27,"93":8,"94":27,"95":27,"96":3,"97":3,"98":27,"99":27,"100":27,"101":0,"102":27,"103":27,"104":27,"105":0,"106":27,"107":0,"108":189,"109":1,"110":52,"111":52,"112":52,"113":8,"114":52,"115":3,"116":52,"117":52,"118":52,"119":1,"120":1,"121":25,"122":25,"123":25,"124":20,"125":20,"126":0,"127":0,"128":25,"129":1,"130":20,"131":38,"132":1,"133":25,"134":1,"135":25,"136":25,"137":25,"138":1,"139":2,"140":2,"141":2,"142":32,"143":2,"144":1,"145":2,"146":2,"147":2,"148":2,"149":2,"150":1,"151":5,"152":3,"153":3,"154":2,"155":2,"156":2,"157":1,"158":2,"159":2,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":25,"169":25,"170":22,"171":25,"172":25,"173":25,"174":1,"175":1,"176":25,"177":1,"178":1,"179":24,"180":24,"181":24,"182":30,"183":1,"184":8,"185":6,"186":6,"187":2,"188":1,"189":1},"b":{"1":[1,0],"2":[25,0],"3":[25,5,1,0],"4":[15,28],"5":[11,11],"6":[11,0],"7":[11,11],"8":[121,92],"9":[0,27],"10":[8,19],"11":[3,24],"12":[27,0],"13":[0,27],"14":[0,27],"15":[8,44],"16":[3,49],"17":[25,2],"18":[20,0],"19":[20,20],"20":[3,2],"21":[2,1],"22":[1,1],"23":[1,24],"24":[25,2],"25":[6,2],"26":[1,1]},"f":{"1":0,"2":25,"3":25,"4":197,"5":25,"6":18,"7":43,"8":22,"9":22,"10":43,"11":1,"12":11,"13":8,"14":189,"15":0,"16":52,"17":25,"18":20,"19":20,"20":25,"21":25,"22":2,"23":2,"24":5,"25":1,"26":1,"27":25,"28":22,"29":24,"30":25,"31":30,"32":8},"fnMap":{"1":{"name":"noop","line":1,"loc":{"start":{"line":1,"column":45},"end":{"line":1,"column":76}}},"2":{"name":"Connection","line":36,"loc":{"start":{"line":36,"column":0},"end":{"line":36,"column":50}}},"3":{"name":"_initializeStreamManagement","line":96,"loc":{"start":{"line":96,"column":51},"end":{"line":96,"column":103}}},"4":{"name":"_getIdOf","line":117,"loc":{"start":{"line":117,"column":32},"end":{"line":117,"column":58}}},"5":{"name":"_writeControlFrame","line":123,"loc":{"start":{"line":123,"column":42},"end":{"line":123,"column":77}}},"6":{"name":"_updateStreamLimit","line":135,"loc":{"start":{"line":135,"column":42},"end":{"line":135,"column":86}}},"7":{"name":"_changeStreamCount","line":140,"loc":{"start":{"line":140,"column":42},"end":{"line":140,"column":78}}},"8":{"name":"_enableReceiving","line":156,"loc":{"start":{"line":156,"column":40},"end":{"line":156,"column":78}}},"9":{"name":"_enableSending","line":187,"loc":{"start":{"line":187,"column":38},"end":{"line":187,"column":70}}},"10":{"name":"_insert","line":196,"loc":{"start":{"line":196,"column":31},"end":{"line":196,"column":56}}},"11":{"name":"_reprioritize","line":207,"loc":{"start":{"line":207,"column":37},"end":{"line":207,"column":68}}},"12":{"name":"_createIncomingStream","line":216,"loc":{"start":{"line":216,"column":45},"end":{"line":216,"column":80}}},"13":{"name":"createStream","line":228,"loc":{"start":{"line":228,"column":36},"end":{"line":228,"column":60}}},"14":{"name":"_send","line":243,"loc":{"start":{"line":243,"column":29},"end":{"line":243,"column":46}}},"15":{"name":"(anonymous_15)","line":270,"loc":{"start":{"line":270,"column":41},"end":{"line":270,"column":66}}},"16":{"name":"_receive","line":291,"loc":{"start":{"line":291,"column":32},"end":{"line":291,"column":63}}},"17":{"name":"_initializeSettingsManagement","line":323,"loc":{"start":{"line":323,"column":53},"end":{"line":323,"column":102}}},"18":{"name":"(anonymous_18)","line":329,"loc":{"start":{"line":329,"column":25},"end":{"line":329,"column":41}}},"19":{"name":"_receiveSettings","line":343,"loc":{"start":{"line":343,"column":40},"end":{"line":343,"column":73}}},"20":{"name":"set","line":350,"loc":{"start":{"line":350,"column":27},"end":{"line":350,"column":50}}},"21":{"name":"_initializeLifecycleManagement","line":368,"loc":{"start":{"line":368,"column":54},"end":{"line":368,"column":96}}},"22":{"name":"_generatePingId","line":375,"loc":{"start":{"line":375,"column":39},"end":{"line":375,"column":66}}},"23":{"name":"ping","line":386,"loc":{"start":{"line":386,"column":28},"end":{"line":386,"column":52}}},"24":{"name":"_receivePing","line":403,"loc":{"start":{"line":403,"column":36},"end":{"line":403,"column":65}}},"25":{"name":"close","line":428,"loc":{"start":{"line":428,"column":29},"end":{"line":428,"column":51}}},"26":{"name":"_receiveGoaway","line":439,"loc":{"start":{"line":439,"column":38},"end":{"line":439,"column":69}}},"27":{"name":"_initializeFlowControl","line":447,"loc":{"start":{"line":447,"column":46},"end":{"line":447,"column":80}}},"28":{"name":"(anonymous_28)","line":450,"loc":{"start":{"line":450,"column":24},"end":{"line":450,"column":41}}},"29":{"name":"noop","line":455,"loc":{"start":{"line":455,"column":49},"end":{"line":455,"column":65}}},"30":{"name":"_setInitialStreamWindowSize","line":468,"loc":{"start":{"line":468,"column":51},"end":{"line":468,"column":94}}},"31":{"name":"(anonymous_31)","line":475,"loc":{"start":{"line":475,"column":28},"end":{"line":475,"column":45}}},"32":{"name":"_setStreamFlowControl","line":483,"loc":{"start":{"line":483,"column":45},"end":{"line":483,"column":85}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":79}},"2":{"start":{"line":10,"column":0},"end":{"line":10,"column":34}},"3":{"start":{"line":12,"column":0},"end":{"line":12,"column":32}},"4":{"start":{"line":36,"column":0},"end":{"line":56,"column":1}},"5":{"start":{"line":38,"column":2},"end":{"line":38,"column":21}},"6":{"start":{"line":41,"column":2},"end":{"line":41,"column":53}},"7":{"start":{"line":44,"column":2},"end":{"line":44,"column":50}},"8":{"start":{"line":47,"column":2},"end":{"line":47,"column":47}},"9":{"start":{"line":50,"column":2},"end":{"line":50,"column":40}},"10":{"start":{"line":53,"column":2},"end":{"line":53,"column":32}},"11":{"start":{"line":57,"column":0},"end":{"line":57,"column":93}},"12":{"start":{"line":93,"column":0},"end":{"line":93,"column":41}},"13":{"start":{"line":96,"column":0},"end":{"line":115,"column":2}},"14":{"start":{"line":100,"column":2},"end":{"line":100,"column":23}},"15":{"start":{"line":101,"column":2},"end":{"line":101,"column":24}},"16":{"start":{"line":104,"column":2},"end":{"line":104,"column":37}},"17":{"start":{"line":105,"column":2},"end":{"line":105,"column":31}},"18":{"start":{"line":108,"column":2},"end":{"line":108,"column":83}},"19":{"start":{"line":112,"column":2},"end":{"line":112,"column":24}},"20":{"start":{"line":113,"column":2},"end":{"line":113,"column":31}},"21":{"start":{"line":114,"column":2},"end":{"line":114,"column":70}},"22":{"start":{"line":117,"column":0},"end":{"line":119,"column":2}},"23":{"start":{"line":118,"column":2},"end":{"line":118,"column":41}},"24":{"start":{"line":123,"column":0},"end":{"line":132,"column":2}},"25":{"start":{"line":124,"column":2},"end":{"line":131,"column":3}},"26":{"start":{"line":126,"column":4},"end":{"line":126,"column":74}},"27":{"start":{"line":127,"column":4},"end":{"line":127,"column":33}},"28":{"start":{"line":129,"column":4},"end":{"line":129,"column":72}},"29":{"start":{"line":130,"column":4},"end":{"line":130,"column":41}},"30":{"start":{"line":135,"column":0},"end":{"line":138,"column":2}},"31":{"start":{"line":136,"column":2},"end":{"line":136,"column":37}},"32":{"start":{"line":137,"column":2},"end":{"line":137,"column":15}},"33":{"start":{"line":140,"column":0},"end":{"line":146,"column":2}},"34":{"start":{"line":141,"column":2},"end":{"line":145,"column":3}},"35":{"start":{"line":142,"column":4},"end":{"line":142,"column":99}},"36":{"start":{"line":143,"column":4},"end":{"line":143,"column":32}},"37":{"start":{"line":144,"column":4},"end":{"line":144,"column":17}},"38":{"start":{"line":156,"column":0},"end":{"line":184,"column":2}},"39":{"start":{"line":158,"column":2},"end":{"line":174,"column":3}},"40":{"start":{"line":159,"column":4},"end":{"line":159,"column":28}},"41":{"start":{"line":160,"column":4},"end":{"line":160,"column":28}},"42":{"start":{"line":164,"column":7},"end":{"line":174,"column":3}},"43":{"start":{"line":165,"column":4},"end":{"line":165,"column":34}},"44":{"start":{"line":170,"column":4},"end":{"line":171,"column":51}},"45":{"start":{"line":172,"column":4},"end":{"line":172,"column":41}},"46":{"start":{"line":173,"column":4},"end":{"line":173,"column":21}},"47":{"start":{"line":176,"column":2},"end":{"line":176,"column":35}},"48":{"start":{"line":179,"column":2},"end":{"line":179,"column":84}},"49":{"start":{"line":180,"column":2},"end":{"line":180,"column":31}},"50":{"start":{"line":181,"column":2},"end":{"line":181,"column":38}},"51":{"start":{"line":183,"column":2},"end":{"line":183,"column":12}},"52":{"start":{"line":187,"column":0},"end":{"line":193,"column":2}},"53":{"start":{"line":188,"column":2},"end":{"line":188,"column":67}},"54":{"start":{"line":189,"column":2},"end":{"line":189,"column":23}},"55":{"start":{"line":190,"column":2},"end":{"line":190,"column":63}},"56":{"start":{"line":191,"column":2},"end":{"line":191,"column":58}},"57":{"start":{"line":192,"column":2},"end":{"line":192,"column":15}},"58":{"start":{"line":196,"column":0},"end":{"line":203,"column":2}},"59":{"start":{"line":197,"column":2},"end":{"line":197,"column":33}},"60":{"start":{"line":198,"column":2},"end":{"line":198,"column":16}},"61":{"start":{"line":199,"column":2},"end":{"line":201,"column":3}},"62":{"start":{"line":200,"column":4},"end":{"line":200,"column":15}},"63":{"start":{"line":202,"column":2},"end":{"line":202,"column":35}},"64":{"start":{"line":207,"column":0},"end":{"line":212,"column":2}},"65":{"start":{"line":208,"column":2},"end":{"line":208,"column":47}},"66":{"start":{"line":209,"column":2},"end":{"line":209,"column":23}},"67":{"start":{"line":210,"column":2},"end":{"line":210,"column":36}},"68":{"start":{"line":211,"column":2},"end":{"line":211,"column":23}},"69":{"start":{"line":216,"column":0},"end":{"line":225,"column":2}},"70":{"start":{"line":217,"column":2},"end":{"line":217,"column":61}},"71":{"start":{"line":219,"column":2},"end":{"line":219,"column":37}},"72":{"start":{"line":220,"column":2},"end":{"line":220,"column":36}},"73":{"start":{"line":221,"column":2},"end":{"line":221,"column":30}},"74":{"start":{"line":222,"column":2},"end":{"line":222,"column":34}},"75":{"start":{"line":224,"column":2},"end":{"line":224,"column":16}},"76":{"start":{"line":228,"column":0},"end":{"line":236,"column":2}},"77":{"start":{"line":229,"column":2},"end":{"line":229,"column":51}},"78":{"start":{"line":232,"column":2},"end":{"line":232,"column":37}},"79":{"start":{"line":233,"column":2},"end":{"line":233,"column":30}},"80":{"start":{"line":235,"column":2},"end":{"line":235,"column":16}},"81":{"start":{"line":243,"column":0},"end":{"line":287,"column":2}},"82":{"start":{"line":244,"column":2},"end":{"line":244,"column":62}},"83":{"start":{"line":247,"column":0},"end":{"line":284,"column":3}},"84":{"start":{"line":248,"column":2},"end":{"line":284,"column":3}},"85":{"start":{"line":249,"column":4},"end":{"line":249,"column":37}},"86":{"start":{"line":250,"column":4},"end":{"line":250,"column":35}},"87":{"start":{"line":251,"column":4},"end":{"line":251,"column":14}},"88":{"start":{"line":252,"column":4},"end":{"line":283,"column":5}},"89":{"start":{"line":253,"column":6},"end":{"line":256,"column":7}},"90":{"start":{"line":254,"column":8},"end":{"line":254,"column":39}},"91":{"start":{"line":255,"column":8},"end":{"line":255,"column":29}},"92":{"start":{"line":258,"column":6},"end":{"line":260,"column":7}},"93":{"start":{"line":259,"column":8},"end":{"line":259,"column":43}},"94":{"start":{"line":262,"column":6},"end":{"line":262,"column":24}},"95":{"start":{"line":263,"column":6},"end":{"line":266,"column":7}},"96":{"start":{"line":264,"column":8},"end":{"line":264,"column":76}},"97":{"start":{"line":265,"column":8},"end":{"line":265,"column":77}},"98":{"start":{"line":268,"column":6},"end":{"line":268,"column":87}},"99":{"start":{"line":269,"column":6},"end":{"line":269,"column":27}},"100":{"start":{"line":270,"column":6},"end":{"line":272,"column":9}},"101":{"start":{"line":271,"column":8},"end":{"line":271,"column":60}},"102":{"start":{"line":274,"column":6},"end":{"line":276,"column":7}},"103":{"start":{"line":275,"column":8},"end":{"line":275,"column":52}},"104":{"start":{"line":278,"column":6},"end":{"line":282,"column":7}},"105":{"start":{"line":279,"column":8},"end":{"line":279,"column":29}},"106":{"start":{"line":280,"column":13},"end":{"line":282,"column":7}},"107":{"start":{"line":281,"column":8},"end":{"line":281,"column":26}},"108":{"start":{"line":286,"column":2},"end":{"line":286,"column":90}},"109":{"start":{"line":291,"column":0},"end":{"line":313,"column":2}},"110":{"start":{"line":292,"column":2},"end":{"line":292,"column":65}},"111":{"start":{"line":295,"column":2},"end":{"line":295,"column":45}},"112":{"start":{"line":298,"column":2},"end":{"line":300,"column":3}},"113":{"start":{"line":299,"column":4},"end":{"line":299,"column":54}},"114":{"start":{"line":303,"column":2},"end":{"line":305,"column":3}},"115":{"start":{"line":304,"column":4},"end":{"line":304,"column":78}},"116":{"start":{"line":307,"column":2},"end":{"line":307,"column":58}},"117":{"start":{"line":310,"column":2},"end":{"line":310,"column":31}},"118":{"start":{"line":312,"column":2},"end":{"line":312,"column":9}},"119":{"start":{"line":318,"column":0},"end":{"line":320,"column":2}},"120":{"start":{"line":323,"column":0},"end":{"line":340,"column":2}},"121":{"start":{"line":325,"column":2},"end":{"line":325,"column":88}},"122":{"start":{"line":326,"column":2},"end":{"line":326,"column":40}},"123":{"start":{"line":329,"column":2},"end":{"line":336,"column":5}},"124":{"start":{"line":330,"column":4},"end":{"line":335,"column":5}},"125":{"start":{"line":331,"column":6},"end":{"line":331,"column":94}},"126":{"start":{"line":333,"column":6},"end":{"line":333,"column":99}},"127":{"start":{"line":334,"column":6},"end":{"line":334,"column":25}},"128":{"start":{"line":339,"column":2},"end":{"line":339,"column":45}},"129":{"start":{"line":343,"column":0},"end":{"line":347,"column":2}},"130":{"start":{"line":344,"column":2},"end":{"line":346,"column":3}},"131":{"start":{"line":345,"column":4},"end":{"line":345,"column":42}},"132":{"start":{"line":350,"column":0},"end":{"line":356,"column":2}},"133":{"start":{"line":351,"column":2},"end":{"line":355,"column":5}},"134":{"start":{"line":368,"column":0},"end":{"line":372,"column":2}},"135":{"start":{"line":369,"column":2},"end":{"line":369,"column":19}},"136":{"start":{"line":370,"column":2},"end":{"line":370,"column":37}},"137":{"start":{"line":371,"column":2},"end":{"line":371,"column":41}},"138":{"start":{"line":375,"column":0},"end":{"line":383,"column":2}},"139":{"start":{"line":376,"column":2},"end":{"line":381,"column":29}},"140":{"start":{"line":377,"column":4},"end":{"line":377,"column":16}},"141":{"start":{"line":378,"column":4},"end":{"line":380,"column":5}},"142":{"start":{"line":379,"column":6},"end":{"line":379,"column":54}},"143":{"start":{"line":382,"column":2},"end":{"line":382,"column":12}},"144":{"start":{"line":386,"column":0},"end":{"line":400,"column":2}},"145":{"start":{"line":387,"column":2},"end":{"line":387,"column":34}},"146":{"start":{"line":388,"column":2},"end":{"line":388,"column":35}},"147":{"start":{"line":389,"column":2},"end":{"line":389,"column":29}},"148":{"start":{"line":391,"column":2},"end":{"line":391,"column":51}},"149":{"start":{"line":392,"column":2},"end":{"line":399,"column":5}},"150":{"start":{"line":403,"column":0},"end":{"line":425,"column":2}},"151":{"start":{"line":404,"column":2},"end":{"line":424,"column":3}},"152":{"start":{"line":405,"column":4},"end":{"line":405,"column":40}},"153":{"start":{"line":406,"column":4},"end":{"line":412,"column":5}},"154":{"start":{"line":407,"column":6},"end":{"line":407,"column":76}},"155":{"start":{"line":408,"column":6},"end":{"line":408,"column":24}},"156":{"start":{"line":409,"column":6},"end":{"line":409,"column":29}},"157":{"start":{"line":411,"column":6},"end":{"line":411,"column":71}},"158":{"start":{"line":415,"column":4},"end":{"line":415,"column":61}},"159":{"start":{"line":416,"column":4},"end":{"line":423,"column":7}},"160":{"start":{"line":428,"column":0},"end":{"line":437,"column":2}},"161":{"start":{"line":429,"column":2},"end":{"line":429,"column":61}},"162":{"start":{"line":430,"column":2},"end":{"line":435,"column":5}},"163":{"start":{"line":436,"column":2},"end":{"line":436,"column":18}},"164":{"start":{"line":439,"column":0},"end":{"line":442,"column":2}},"165":{"start":{"line":440,"column":2},"end":{"line":440,"column":76}},"166":{"start":{"line":441,"column":2},"end":{"line":441,"column":18}},"167":{"start":{"line":447,"column":0},"end":{"line":459,"column":2}},"168":{"start":{"line":449,"column":2},"end":{"line":449,"column":61}},"169":{"start":{"line":450,"column":2},"end":{"line":452,"column":5}},"170":{"start":{"line":451,"column":4},"end":{"line":451,"column":68}},"171":{"start":{"line":453,"column":2},"end":{"line":453,"column":76}},"172":{"start":{"line":454,"column":2},"end":{"line":454,"column":71}},"173":{"start":{"line":455,"column":2},"end":{"line":455,"column":68}},"174":{"start":{"line":462,"column":0},"end":{"line":462,"column":39}},"175":{"start":{"line":468,"column":0},"end":{"line":479,"column":2}},"176":{"start":{"line":469,"column":2},"end":{"line":478,"column":3}},"177":{"start":{"line":470,"column":4},"end":{"line":470,"column":112}},"178":{"start":{"line":471,"column":4},"end":{"line":471,"column":45}},"179":{"start":{"line":473,"column":4},"end":{"line":473,"column":76}},"180":{"start":{"line":474,"column":4},"end":{"line":474,"column":41}},"181":{"start":{"line":475,"column":4},"end":{"line":477,"column":7}},"182":{"start":{"line":476,"column":6},"end":{"line":476,"column":45}},"183":{"start":{"line":483,"column":0},"end":{"line":491,"column":2}},"184":{"start":{"line":484,"column":2},"end":{"line":490,"column":3}},"185":{"start":{"line":485,"column":4},"end":{"line":485,"column":35}},"186":{"start":{"line":486,"column":4},"end":{"line":486,"column":47}},"187":{"start":{"line":487,"column":9},"end":{"line":490,"column":3}},"188":{"start":{"line":488,"column":4},"end":{"line":488,"column":81}},"189":{"start":{"line":489,"column":4},"end":{"line":489,"column":45}}},"branchMap":{"1":{"line":1,"type":"cond-expr","locations":[{"start":{"line":1,"column":40},"end":{"line":1,"column":57}},{"start":{"line":1,"column":45},"end":{"line":1,"column":78}}]},"2":{"line":124,"type":"if","locations":[{"start":{"line":124,"column":2},"end":{"line":124,"column":2}},{"start":{"line":124,"column":2},"end":{"line":124,"column":2}}]},"3":{"line":124,"type":"binary-expr","locations":[{"start":{"line":124,"column":7},"end":{"line":124,"column":32}},{"start":{"line":124,"column":38},"end":{"line":124,"column":59}},{"start":{"line":125,"column":7},"end":{"line":125,"column":30}},{"start":{"line":125,"column":36},"end":{"line":125,"column":66}}]},"4":{"line":141,"type":"if","locations":[{"start":{"line":141,"column":2},"end":{"line":141,"column":2}},{"start":{"line":141,"column":2},"end":{"line":141,"column":2}}]},"5":{"line":158,"type":"if","locations":[{"start":{"line":158,"column":2},"end":{"line":158,"column":2}},{"start":{"line":158,"column":2},"end":{"line":158,"column":2}}]},"6":{"line":164,"type":"if","locations":[{"start":{"line":164,"column":7},"end":{"line":164,"column":7}},{"start":{"line":164,"column":7},"end":{"line":164,"column":7}}]},"7":{"line":164,"type":"binary-expr","locations":[{"start":{"line":164,"column":12},"end":{"line":164,"column":41}},{"start":{"line":164,"column":47},"end":{"line":164,"column":82}}]},"8":{"line":199,"type":"binary-expr","locations":[{"start":{"line":199,"column":10},"end":{"line":199,"column":32}},{"start":{"line":199,"column":38},"end":{"line":199,"column":82}}]},"9":{"line":253,"type":"if","locations":[{"start":{"line":253,"column":6},"end":{"line":253,"column":6}},{"start":{"line":253,"column":6},"end":{"line":253,"column":6}}]},"10":{"line":258,"type":"if","locations":[{"start":{"line":258,"column":6},"end":{"line":258,"column":6}},{"start":{"line":258,"column":6},"end":{"line":258,"column":6}}]},"11":{"line":263,"type":"if","locations":[{"start":{"line":263,"column":6},"end":{"line":263,"column":6}},{"start":{"line":263,"column":6},"end":{"line":263,"column":6}}]},"12":{"line":274,"type":"if","locations":[{"start":{"line":274,"column":6},"end":{"line":274,"column":6}},{"start":{"line":274,"column":6},"end":{"line":274,"column":6}}]},"13":{"line":278,"type":"if","locations":[{"start":{"line":278,"column":6},"end":{"line":278,"column":6}},{"start":{"line":278,"column":6},"end":{"line":278,"column":6}}]},"14":{"line":280,"type":"if","locations":[{"start":{"line":280,"column":13},"end":{"line":280,"column":13}},{"start":{"line":280,"column":13},"end":{"line":280,"column":13}}]},"15":{"line":298,"type":"if","locations":[{"start":{"line":298,"column":2},"end":{"line":298,"column":2}},{"start":{"line":298,"column":2},"end":{"line":298,"column":2}}]},"16":{"line":303,"type":"if","locations":[{"start":{"line":303,"column":2},"end":{"line":303,"column":2}},{"start":{"line":303,"column":2},"end":{"line":303,"column":2}}]},"17":{"line":326,"type":"binary-expr","locations":[{"start":{"line":326,"column":11},"end":{"line":326,"column":19}},{"start":{"line":326,"column":23},"end":{"line":326,"column":38}}]},"18":{"line":330,"type":"if","locations":[{"start":{"line":330,"column":4},"end":{"line":330,"column":4}},{"start":{"line":330,"column":4},"end":{"line":330,"column":4}}]},"19":{"line":330,"type":"binary-expr","locations":[{"start":{"line":330,"column":9},"end":{"line":330,"column":27}},{"start":{"line":330,"column":33},"end":{"line":330,"column":58}}]},"20":{"line":404,"type":"if","locations":[{"start":{"line":404,"column":2},"end":{"line":404,"column":2}},{"start":{"line":404,"column":2},"end":{"line":404,"column":2}}]},"21":{"line":406,"type":"if","locations":[{"start":{"line":406,"column":4},"end":{"line":406,"column":4}},{"start":{"line":406,"column":4},"end":{"line":406,"column":4}}]},"22":{"line":434,"type":"binary-expr","locations":[{"start":{"line":434,"column":11},"end":{"line":434,"column":16}},{"start":{"line":434,"column":20},"end":{"line":434,"column":30}}]},"23":{"line":469,"type":"if","locations":[{"start":{"line":469,"column":2},"end":{"line":469,"column":2}},{"start":{"line":469,"column":2},"end":{"line":469,"column":2}}]},"24":{"line":469,"type":"binary-expr","locations":[{"start":{"line":469,"column":7},"end":{"line":469,"column":49}},{"start":{"line":469,"column":55},"end":{"line":469,"column":72}}]},"25":{"line":484,"type":"if","locations":[{"start":{"line":484,"column":2},"end":{"line":484,"column":2}},{"start":{"line":484,"column":2},"end":{"line":484,"column":2}}]},"26":{"line":487,"type":"if","locations":[{"start":{"line":487,"column":9},"end":{"line":487,"column":9}},{"start":{"line":487,"column":9},"end":{"line":487,"column":9}}]}}},"/data/upstream/node-http2/lib/flow.js":{"path":"/data/upstream/node-http2/lib/flow.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":68,"7":68,"8":68,"9":68,"10":68,"11":68,"12":68,"13":1,"14":1,"15":0,"16":1,"17":105,"18":105,"19":19,"20":105,"21":0,"22":0,"23":0,"24":0,"25":0,"26":105,"27":105,"28":3,"29":1,"30":0,"31":0,"32":0,"33":0,"34":1,"35":0,"36":0,"37":1,"38":0,"39":1,"40":524,"41":524,"42":0,"43":0,"44":524,"45":1,"46":34,"47":34,"48":34,"49":0,"50":34,"51":1,"52":1,"53":111,"54":111,"55":111,"56":111,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":111,"65":111,"66":111,"67":111,"68":19,"69":19,"70":19,"71":111,"72":111,"73":111,"74":0,"75":111,"76":1,"77":84,"78":2,"79":82,"80":82,"81":82,"82":84,"83":84,"84":0,"85":0,"86":1,"87":12,"88":12,"89":1,"90":1,"91":37,"92":3,"93":3,"94":34,"95":34,"96":34,"97":0,"98":0,"99":34,"100":1,"101":3,"102":1,"103":28,"104":28,"105":1,"106":0},"b":{"1":[1,0],"2":[19,86],"3":[0,105],"4":[105,31,17],"5":[0,0],"6":[3,102],"7":[105,3,0],"8":[0,0],"9":[0,0,0],"10":[524,0],"11":[34,34],"12":[111,0],"13":[111,0],"14":[111,109,26,26],"15":[0,0],"16":[111,0],"17":[19,92],"18":[111,109,26],"19":[0,111],"20":[2,82],"21":[82,71],"22":[84,0],"23":[12,12],"24":[3,34],"25":[37,4],"26":[0,34],"27":[34,26],"28":[0,3]},"f":{"1":0,"2":68,"3":0,"4":105,"5":0,"6":0,"7":0,"8":0,"9":524,"10":34,"11":111,"12":84,"13":12,"14":37,"15":3,"16":28,"17":0},"fnMap":{"1":{"name":"noop","line":1,"loc":{"start":{"line":1,"column":45},"end":{"line":1,"column":76}}},"2":{"name":"Flow","line":72,"loc":{"start":{"line":72,"column":0},"end":{"line":72,"column":29}}},"3":{"name":"_receive","line":89,"loc":{"start":{"line":89,"column":26},"end":{"line":89,"column":61}}},"4":{"name":"_write","line":97,"loc":{"start":{"line":97,"column":24},"end":{"line":97,"column":67}}},"5":{"name":"(anonymous_5)","line":105,"loc":{"start":{"line":105,"column":25},"end":{"line":105,"column":36}}},"6":{"name":"_restoreWindow","line":126,"loc":{"start":{"line":126,"column":32},"end":{"line":126,"column":58}}},"7":{"name":"disableRemoteFlowControl","line":140,"loc":{"start":{"line":140,"column":42},"end":{"line":140,"column":78}}},"8":{"name":"_send","line":170,"loc":{"start":{"line":170,"column":23},"end":{"line":170,"column":40}}},"9":{"name":"_read","line":178,"loc":{"start":{"line":178,"column":23},"end":{"line":178,"column":40}}},"10":{"name":"_onWindowIncrease","line":191,"loc":{"start":{"line":191,"column":35},"end":{"line":191,"column":64}}},"11":{"name":"_push","line":212,"loc":{"start":{"line":212,"column":23},"end":{"line":212,"column":64}}},"12":{"name":"push","line":261,"loc":{"start":{"line":261,"column":22},"end":{"line":261,"column":43}}},"13":{"name":"getLastQueuedFrame","line":280,"loc":{"start":{"line":280,"column":36},"end":{"line":280,"column":66}}},"14":{"name":"_increaseWindow","line":298,"loc":{"start":{"line":298,"column":33},"end":{"line":298,"column":64}}},"15":{"name":"_updateWindow","line":322,"loc":{"start":{"line":322,"column":31},"end":{"line":322,"column":61}}},"16":{"name":"setInitialWindow","line":330,"loc":{"start":{"line":330,"column":34},"end":{"line":330,"column":75}}},"17":{"name":"disableLocalFlowControl","line":336,"loc":{"start":{"line":336,"column":41},"end":{"line":336,"column":76}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":79}},"2":{"start":{"line":10,"column":0},"end":{"line":10,"column":39}},"3":{"start":{"line":12,"column":0},"end":{"line":12,"column":20}},"4":{"start":{"line":69,"column":0},"end":{"line":69,"column":32}},"5":{"start":{"line":72,"column":0},"end":{"line":82,"column":1}},"6":{"start":{"line":73,"column":2},"end":{"line":73,"column":42}},"7":{"start":{"line":75,"column":2},"end":{"line":75,"column":59}},"8":{"start":{"line":76,"column":2},"end":{"line":76,"column":38}},"9":{"start":{"line":77,"column":2},"end":{"line":77,"column":19}},"10":{"start":{"line":79,"column":2},"end":{"line":79,"column":22}},"11":{"start":{"line":80,"column":2},"end":{"line":80,"column":21}},"12":{"start":{"line":81,"column":2},"end":{"line":81,"column":41}},"13":{"start":{"line":83,"column":0},"end":{"line":83,"column":83}},"14":{"start":{"line":89,"column":0},"end":{"line":91,"column":2}},"15":{"start":{"line":90,"column":2},"end":{"line":90,"column":99}},"16":{"start":{"line":97,"column":0},"end":{"line":122,"column":2}},"17":{"start":{"line":98,"column":2},"end":{"line":98,"column":32}},"18":{"start":{"line":100,"column":2},"end":{"line":102,"column":3}},"19":{"start":{"line":101,"column":4},"end":{"line":101,"column":23}},"20":{"start":{"line":104,"column":2},"end":{"line":116,"column":3}},"21":{"start":{"line":105,"column":4},"end":{"line":111,"column":18}},"22":{"start":{"line":106,"column":6},"end":{"line":106,"column":42}},"23":{"start":{"line":107,"column":6},"end":{"line":109,"column":7}},"24":{"start":{"line":108,"column":8},"end":{"line":108,"column":80}},"25":{"start":{"line":110,"column":6},"end":{"line":110,"column":17}},"26":{"start":{"line":115,"column":4},"end":{"line":115,"column":35}},"27":{"start":{"line":118,"column":2},"end":{"line":121,"column":3}},"28":{"start":{"line":120,"column":4},"end":{"line":120,"column":30}},"29":{"start":{"line":126,"column":0},"end":{"line":136,"column":2}},"30":{"start":{"line":127,"column":2},"end":{"line":127,"column":34}},"31":{"start":{"line":128,"column":2},"end":{"line":135,"column":3}},"32":{"start":{"line":129,"column":4},"end":{"line":133,"column":7}},"33":{"start":{"line":134,"column":4},"end":{"line":134,"column":23}},"34":{"start":{"line":140,"column":0},"end":{"line":149,"column":2}},"35":{"start":{"line":141,"column":2},"end":{"line":141,"column":41}},"36":{"start":{"line":142,"column":2},"end":{"line":148,"column":5}},"37":{"start":{"line":170,"column":0},"end":{"line":172,"column":2}},"38":{"start":{"line":171,"column":2},"end":{"line":171,"column":81}},"39":{"start":{"line":178,"column":0},"end":{"line":186,"column":2}},"40":{"start":{"line":179,"column":2},"end":{"line":184,"column":3}},"41":{"start":{"line":180,"column":4},"end":{"line":180,"column":17}},"42":{"start":{"line":182,"column":4},"end":{"line":182,"column":31}},"43":{"start":{"line":183,"column":4},"end":{"line":183,"column":43}},"44":{"start":{"line":185,"column":2},"end":{"line":185,"column":38}},"45":{"start":{"line":191,"column":0},"end":{"line":200,"column":2}},"46":{"start":{"line":192,"column":2},"end":{"line":192,"column":31}},"47":{"start":{"line":194,"column":2},"end":{"line":194,"column":63}},"48":{"start":{"line":195,"column":2},"end":{"line":197,"column":3}},"49":{"start":{"line":196,"column":4},"end":{"line":196,"column":53}},"50":{"start":{"line":199,"column":2},"end":{"line":199,"column":15}},"51":{"start":{"line":210,"column":0},"end":{"line":210,"column":28}},"52":{"start":{"line":212,"column":0},"end":{"line":258,"column":2}},"53":{"start":{"line":213,"column":2},"end":{"line":251,"column":36}},"54":{"start":{"line":214,"column":4},"end":{"line":214,"column":55}},"55":{"start":{"line":215,"column":4},"end":{"line":236,"column":5}},"56":{"start":{"line":217,"column":6},"end":{"line":217,"column":26}},"57":{"start":{"line":220,"column":9},"end":{"line":236,"column":5}},"58":{"start":{"line":221,"column":6},"end":{"line":221,"column":24}},"59":{"start":{"line":225,"column":6},"end":{"line":225,"column":63}},"60":{"start":{"line":226,"column":6},"end":{"line":230,"column":8}},"61":{"start":{"line":232,"column":6},"end":{"line":233,"column":73}},"62":{"start":{"line":234,"column":6},"end":{"line":234,"column":47}},"63":{"start":{"line":235,"column":6},"end":{"line":235,"column":24}},"64":{"start":{"line":238,"column":4},"end":{"line":238,"column":26}},"65":{"start":{"line":239,"column":4},"end":{"line":248,"column":5}},"66":{"start":{"line":240,"column":6},"end":{"line":240,"column":85}},"67":{"start":{"line":241,"column":6},"end":{"line":246,"column":7}},"68":{"start":{"line":242,"column":8},"end":{"line":243,"column":65}},"69":{"start":{"line":244,"column":8},"end":{"line":244,"column":48}},"70":{"start":{"line":245,"column":8},"end":{"line":245,"column":34}},"71":{"start":{"line":247,"column":6},"end":{"line":247,"column":65}},"72":{"start":{"line":250,"column":4},"end":{"line":250,"column":22}},"73":{"start":{"line":253,"column":2},"end":{"line":255,"column":3}},"74":{"start":{"line":254,"column":4},"end":{"line":254,"column":33}},"75":{"start":{"line":257,"column":2},"end":{"line":257,"column":20}},"76":{"start":{"line":261,"column":0},"end":{"line":276,"column":2}},"77":{"start":{"line":262,"column":2},"end":{"line":268,"column":3}},"78":{"start":{"line":263,"column":4},"end":{"line":263,"column":57}},"79":{"start":{"line":265,"column":4},"end":{"line":265,"column":36}},"80":{"start":{"line":266,"column":4},"end":{"line":266,"column":67}},"81":{"start":{"line":267,"column":4},"end":{"line":267,"column":32}},"82":{"start":{"line":270,"column":2},"end":{"line":275,"column":3}},"83":{"start":{"line":271,"column":4},"end":{"line":271,"column":65}},"84":{"start":{"line":273,"column":4},"end":{"line":273,"column":28}},"85":{"start":{"line":274,"column":4},"end":{"line":274,"column":16}},"86":{"start":{"line":280,"column":0},"end":{"line":283,"column":2}},"87":{"start":{"line":281,"column":2},"end":{"line":281,"column":49}},"88":{"start":{"line":282,"column":2},"end":{"line":282,"column":88}},"89":{"start":{"line":296,"column":0},"end":{"line":296,"column":44}},"90":{"start":{"line":298,"column":0},"end":{"line":312,"column":2}},"91":{"start":{"line":299,"column":2},"end":{"line":311,"column":3}},"92":{"start":{"line":300,"column":4},"end":{"line":300,"column":97}},"93":{"start":{"line":301,"column":4},"end":{"line":301,"column":45}},"94":{"start":{"line":303,"column":4},"end":{"line":303,"column":96}},"95":{"start":{"line":304,"column":4},"end":{"line":304,"column":25}},"96":{"start":{"line":305,"column":4},"end":{"line":310,"column":5}},"97":{"start":{"line":306,"column":6},"end":{"line":306,"column":61}},"98":{"start":{"line":307,"column":6},"end":{"line":307,"column":47}},"99":{"start":{"line":309,"column":6},"end":{"line":309,"column":31}},"100":{"start":{"line":322,"column":0},"end":{"line":324,"column":2}},"101":{"start":{"line":323,"column":2},"end":{"line":323,"column":84}},"102":{"start":{"line":330,"column":0},"end":{"line":333,"column":2}},"103":{"start":{"line":331,"column":2},"end":{"line":331,"column":60}},"104":{"start":{"line":332,"column":2},"end":{"line":332,"column":38}},"105":{"start":{"line":336,"column":0},"end":{"line":338,"column":2}},"106":{"start":{"line":337,"column":2},"end":{"line":337,"column":33}}},"branchMap":{"1":{"line":1,"type":"cond-expr","locations":[{"start":{"line":1,"column":40},"end":{"line":1,"column":57}},{"start":{"line":1,"column":45},"end":{"line":1,"column":78}}]},"2":{"line":100,"type":"if","locations":[{"start":{"line":100,"column":2},"end":{"line":100,"column":2}},{"start":{"line":100,"column":2},"end":{"line":100,"column":2}}]},"3":{"line":104,"type":"if","locations":[{"start":{"line":104,"column":2},"end":{"line":104,"column":2}},{"start":{"line":104,"column":2},"end":{"line":104,"column":2}}]},"4":{"line":104,"type":"binary-expr","locations":[{"start":{"line":104,"column":7},"end":{"line":104,"column":28}},{"start":{"line":104,"column":34},"end":{"line":104,"column":55}},{"start":{"line":104,"column":60},"end":{"line":104,"column":92}}]},"5":{"line":107,"type":"if","locations":[{"start":{"line":107,"column":6},"end":{"line":107,"column":6}},{"start":{"line":107,"column":6},"end":{"line":107,"column":6}}]},"6":{"line":118,"type":"if","locations":[{"start":{"line":118,"column":2},"end":{"line":118,"column":2}},{"start":{"line":118,"column":2},"end":{"line":118,"column":2}}]},"7":{"line":118,"type":"binary-expr","locations":[{"start":{"line":118,"column":7},"end":{"line":118,"column":37}},{"start":{"line":119,"column":8},"end":{"line":119,"column":41}},{"start":{"line":119,"column":47},"end":{"line":119,"column":83}}]},"8":{"line":128,"type":"if","locations":[{"start":{"line":128,"column":2},"end":{"line":128,"column":2}},{"start":{"line":128,"column":2},"end":{"line":128,"column":2}}]},"9":{"line":128,"type":"binary-expr","locations":[{"start":{"line":128,"column":6},"end":{"line":128,"column":18}},{"start":{"line":128,"column":22},"end":{"line":128,"column":54}},{"start":{"line":128,"column":59},"end":{"line":128,"column":77}}]},"10":{"line":179,"type":"if","locations":[{"start":{"line":179,"column":2},"end":{"line":179,"column":2}},{"start":{"line":179,"column":2},"end":{"line":179,"column":2}}]},"11":{"line":195,"type":"binary-expr","locations":[{"start":{"line":195,"column":9},"end":{"line":195,"column":19}},{"start":{"line":195,"column":24},"end":{"line":195,"column":51}}]},"12":{"line":251,"type":"binary-expr","locations":[{"start":{"line":251,"column":11},"end":{"line":251,"column":20}},{"start":{"line":251,"column":24},"end":{"line":251,"column":34}}]},"13":{"line":215,"type":"if","locations":[{"start":{"line":215,"column":4},"end":{"line":215,"column":4}},{"start":{"line":215,"column":4},"end":{"line":215,"column":4}}]},"14":{"line":215,"type":"binary-expr","locations":[{"start":{"line":215,"column":9},"end":{"line":215,"column":23}},{"start":{"line":215,"column":29},"end":{"line":215,"column":50}},{"start":{"line":216,"column":10},"end":{"line":216,"column":43}},{"start":{"line":216,"column":49},"end":{"line":216,"column":86}}]},"15":{"line":220,"type":"if","locations":[{"start":{"line":220,"column":9},"end":{"line":220,"column":9}},{"start":{"line":220,"column":9},"end":{"line":220,"column":9}}]},"16":{"line":239,"type":"if","locations":[{"start":{"line":239,"column":4},"end":{"line":239,"column":4}},{"start":{"line":239,"column":4},"end":{"line":239,"column":4}}]},"17":{"line":241,"type":"if","locations":[{"start":{"line":241,"column":6},"end":{"line":241,"column":6}},{"start":{"line":241,"column":6},"end":{"line":241,"column":6}}]},"18":{"line":241,"type":"binary-expr","locations":[{"start":{"line":241,"column":10},"end":{"line":241,"column":21}},{"start":{"line":241,"column":26},"end":{"line":241,"column":53}},{"start":{"line":241,"column":59},"end":{"line":241,"column":84}}]},"19":{"line":253,"type":"if","locations":[{"start":{"line":253,"column":2},"end":{"line":253,"column":2}},{"start":{"line":253,"column":2},"end":{"line":253,"column":2}}]},"20":{"line":262,"type":"if","locations":[{"start":{"line":262,"column":2},"end":{"line":262,"column":2}},{"start":{"line":262,"column":2},"end":{"line":262,"column":2}}]},"21":{"line":265,"type":"binary-expr","locations":[{"start":{"line":265,"column":18},"end":{"line":265,"column":29}},{"start":{"line":265,"column":33},"end":{"line":265,"column":35}}]},"22":{"line":270,"type":"if","locations":[{"start":{"line":270,"column":2},"end":{"line":270,"column":2}},{"start":{"line":270,"column":2},"end":{"line":270,"column":2}}]},"23":{"line":282,"type":"binary-expr","locations":[{"start":{"line":282,"column":9},"end":{"line":282,"column":44}},{"start":{"line":282,"column":48},"end":{"line":282,"column":87}}]},"24":{"line":299,"type":"if","locations":[{"start":{"line":299,"column":2},"end":{"line":299,"column":2}},{"start":{"line":299,"column":2},"end":{"line":299,"column":2}}]},"25":{"line":299,"type":"binary-expr","locations":[{"start":{"line":299,"column":7},"end":{"line":299,"column":32}},{"start":{"line":299,"column":38},"end":{"line":299,"column":55}}]},"26":{"line":305,"type":"if","locations":[{"start":{"line":305,"column":4},"end":{"line":305,"column":4}},{"start":{"line":305,"column":4},"end":{"line":305,"column":4}}]},"27":{"line":305,"type":"binary-expr","locations":[{"start":{"line":305,"column":9},"end":{"line":305,"column":34}},{"start":{"line":305,"column":40},"end":{"line":305,"column":72}}]},"28":{"line":323,"type":"cond-expr","locations":[{"start":{"line":323,"column":54},"end":{"line":323,"column":62}},{"start":{"line":323,"column":65},"end":{"line":323,"column":82}}]}}},"/data/upstream/node-http2/lib/stream.js":{"path":"/data/upstream/node-http2/lib/stream.js","s":{"1":1,"2":1,"3":1,"4":1,"5":43,"6":43,"7":43,"8":43,"9":43,"10":1,"11":1,"12":1,"13":1,"14":43,"15":43,"16":43,"17":8,"18":43,"19":20,"20":0,"21":20,"22":43,"23":2,"24":1,"25":4,"26":4,"27":4,"28":4,"29":1,"30":18,"31":1,"32":2,"33":2,"34":0,"35":0,"36":0,"37":0,"38":0,"39":2,"40":2,"41":2,"42":1,"43":15,"44":1,"45":1,"46":43,"47":43,"48":43,"49":43,"50":43,"51":43,"52":43,"53":43,"54":1,"55":53,"56":53,"57":53,"58":20,"59":20,"60":0,"61":0,"62":33,"63":53,"64":12,"65":53,"66":53,"67":1,"68":13,"69":0,"70":0,"71":0,"72":1,"73":8,"74":8,"75":8,"76":0,"77":1,"78":335,"79":0,"80":0,"81":0,"82":1,"83":1,"84":12,"85":12,"86":12,"87":5,"88":5,"89":5,"90":5,"91":7,"92":1,"93":43,"94":43,"95":43,"96":43,"97":43,"98":1,"99":56,"100":56,"101":56,"102":56,"103":1,"104":100,"105":1,"106":110,"107":110,"108":110,"109":110,"110":110,"111":40,"112":40,"113":38,"114":38,"115":2,"116":2,"117":15,"118":15,"119":0,"120":0,"121":12,"122":12,"123":0,"124":0,"125":0,"126":0,"127":3,"128":3,"129":110,"130":110,"131":24,"132":20,"133":20,"134":1,"135":20,"136":4,"137":24,"138":6,"139":2,"140":4,"141":0,"142":4,"143":4,"144":6,"145":6,"146":0,"147":6,"148":2,"149":4,"150":4,"151":6,"152":23,"153":9,"154":14,"155":0,"156":23,"157":21,"158":9,"159":12,"160":0,"161":21,"162":15,"163":5,"164":10,"165":3,"166":15,"167":15,"168":0,"169":15,"170":110,"171":12,"172":110,"173":8,"174":8,"175":8,"176":110,"177":50,"178":50,"179":29,"180":21,"181":60,"182":28,"183":110,"184":15,"185":15,"186":0,"187":0,"188":15,"189":15,"190":15,"191":15,"192":1,"193":1,"194":1,"195":0,"196":0,"197":0,"198":0},"b":{"1":[1,0],"2":[0,20],"3":[2,0],"4":[2,2,0],"5":[0,2],"6":[0,0],"7":[0,0,0],"8":[20,33],"9":[0,20],"10":[12,41],"11":[53,0],"12":[0,13],"13":[8,0],"14":[0,335],"15":[5,7],"16":[12,5,1],"17":[5,0],"18":[56,0],"19":[100,66,58],"20":[40,38,2,15,0,12,0,0,3],"21":[24,6,6,23,21,15,15],"22":[20,4],"23":[1,19],"24":[0,1],"25":[2,4],"26":[6,2],"27":[0,4],"28":[0,4],"29":[4,4],"30":[0,6],"31":[2,4],"32":[6,6],"33":[0,4],"34":[4,0],"35":[9,14],"36":[7,2],"37":[0,14],"38":[9,12],"39":[21,21,21],"40":[12,0],"41":[12,0,0,0],"42":[5,10],"43":[15,15,12],"44":[7,3],"45":[10,3,3,3],"46":[15,0],"47":[15,15,0,0,0,0,0],"48":[12,98],"49":[110,53,53],"50":[8,102],"51":[110,12],"52":[4,4],"53":[50,60],"54":[29,21],"55":[28,32],"56":[15,95],"57":[0,15],"58":[0,0]},"f":{"1":0,"2":43,"3":43,"4":8,"5":20,"6":2,"7":4,"8":18,"9":2,"10":15,"11":43,"12":53,"13":13,"14":8,"15":335,"16":12,"17":43,"18":56,"19":100,"20":110,"21":0},"fnMap":{"1":{"name":"noop","line":1,"loc":{"start":{"line":1,"column":45},"end":{"line":1,"column":76}}},"2":{"name":"Stream","line":47,"loc":{"start":{"line":47,"column":0},"end":{"line":47,"column":21}}},"3":{"name":"_initializeManagement","line":73,"loc":{"start":{"line":73,"column":41},"end":{"line":73,"column":74}}},"4":{"name":"(anonymous_4)","line":76,"loc":{"start":{"line":76,"column":26},"end":{"line":76,"column":42}}},"5":{"name":"(anonymous_5)","line":79,"loc":{"start":{"line":79,"column":21},"end":{"line":79,"column":37}}},"6":{"name":"(anonymous_6)","line":85,"loc":{"start":{"line":85,"column":22},"end":{"line":85,"column":38}}},"7":{"name":"promise","line":90,"loc":{"start":{"line":90,"column":27},"end":{"line":90,"column":53}}},"8":{"name":"headers","line":101,"loc":{"start":{"line":101,"column":27},"end":{"line":101,"column":53}}},"9":{"name":"priority","line":108,"loc":{"start":{"line":108,"column":28},"end":{"line":108,"column":62}}},"10":{"name":"reset","line":130,"loc":{"start":{"line":130,"column":25},"end":{"line":130,"column":47}}},"11":{"name":"_initializeDataFlow","line":172,"loc":{"start":{"line":172,"column":39},"end":{"line":172,"column":70}}},"12":{"name":"_receive","line":185,"loc":{"start":{"line":185,"column":28},"end":{"line":185,"column":60}}},"13":{"name":"_read","line":217,"loc":{"start":{"line":217,"column":25},"end":{"line":217,"column":42}}},"14":{"name":"_write","line":226,"loc":{"start":{"line":226,"column":26},"end":{"line":226,"column":67}}},"15":{"name":"_send","line":244,"loc":{"start":{"line":244,"column":25},"end":{"line":244,"column":42}}},"16":{"name":"_finishing","line":261,"loc":{"start":{"line":261,"column":30},"end":{"line":261,"column":52}}},"17":{"name":"_initializeState","line":304,"loc":{"start":{"line":304,"column":36},"end":{"line":304,"column":64}}},"18":{"name":"transition","line":314,"loc":{"start":{"line":314,"column":29},"end":{"line":314,"column":56}}},"19":{"name":"activeState","line":324,"loc":{"start":{"line":324,"column":0},"end":{"line":324,"column":28}}},"20":{"name":"transition","line":331,"loc":{"start":{"line":331,"column":31},"end":{"line":331,"column":67}}},"21":{"name":"(anonymous_21)","line":553,"loc":{"start":{"line":553,"column":24},"end":{"line":553,"column":41}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":79}},"2":{"start":{"line":12,"column":0},"end":{"line":12,"column":38}},"3":{"start":{"line":14,"column":0},"end":{"line":14,"column":24}},"4":{"start":{"line":47,"column":0},"end":{"line":61,"column":1}},"5":{"start":{"line":48,"column":2},"end":{"line":48,"column":20}},"6":{"start":{"line":51,"column":2},"end":{"line":51,"column":58}},"7":{"start":{"line":54,"column":2},"end":{"line":54,"column":31}},"8":{"start":{"line":57,"column":2},"end":{"line":57,"column":29}},"9":{"start":{"line":60,"column":2},"end":{"line":60,"column":26}},"10":{"start":{"line":63,"column":0},"end":{"line":63,"column":87}},"11":{"start":{"line":69,"column":0},"end":{"line":69,"column":39}},"12":{"start":{"line":70,"column":0},"end":{"line":70,"column":39}},"13":{"start":{"line":73,"column":0},"end":{"line":88,"column":2}},"14":{"start":{"line":74,"column":2},"end":{"line":74,"column":36}},"15":{"start":{"line":75,"column":2},"end":{"line":75,"column":33}},"16":{"start":{"line":76,"column":2},"end":{"line":78,"column":5}},"17":{"start":{"line":77,"column":4},"end":{"line":77,"column":63}},"18":{"start":{"line":79,"column":2},"end":{"line":84,"column":5}},"19":{"start":{"line":80,"column":4},"end":{"line":82,"column":5}},"20":{"start":{"line":81,"column":6},"end":{"line":81,"column":42}},"21":{"start":{"line":83,"column":4},"end":{"line":83,"column":40}},"22":{"start":{"line":85,"column":2},"end":{"line":87,"column":5}},"23":{"start":{"line":86,"column":4},"end":{"line":86,"column":40}},"24":{"start":{"line":90,"column":0},"end":{"line":99,"column":2}},"25":{"start":{"line":91,"column":2},"end":{"line":91,"column":37}},"26":{"start":{"line":92,"column":2},"end":{"line":92,"column":64}},"27":{"start":{"line":93,"column":2},"end":{"line":97,"column":5}},"28":{"start":{"line":98,"column":2},"end":{"line":98,"column":16}},"29":{"start":{"line":101,"column":0},"end":{"line":106,"column":2}},"30":{"start":{"line":102,"column":2},"end":{"line":105,"column":5}},"31":{"start":{"line":108,"column":0},"end":{"line":128,"column":2}},"32":{"start":{"line":109,"column":2},"end":{"line":127,"column":3}},"33":{"start":{"line":110,"column":4},"end":{"line":122,"column":5}},"34":{"start":{"line":111,"column":6},"end":{"line":111,"column":38}},"35":{"start":{"line":113,"column":6},"end":{"line":113,"column":57}},"36":{"start":{"line":114,"column":6},"end":{"line":121,"column":7}},"37":{"start":{"line":115,"column":8},"end":{"line":115,"column":38}},"38":{"start":{"line":117,"column":8},"end":{"line":120,"column":11}},"39":{"start":{"line":124,"column":4},"end":{"line":124,"column":65}},"40":{"start":{"line":125,"column":4},"end":{"line":125,"column":30}},"41":{"start":{"line":126,"column":4},"end":{"line":126,"column":36}},"42":{"start":{"line":130,"column":0},"end":{"line":135,"column":2}},"43":{"start":{"line":131,"column":2},"end":{"line":134,"column":5}},"44":{"start":{"line":170,"column":0},"end":{"line":170,"column":34}},"45":{"start":{"line":172,"column":0},"end":{"line":182,"column":2}},"46":{"start":{"line":173,"column":2},"end":{"line":173,"column":29}},"47":{"start":{"line":174,"column":2},"end":{"line":174,"column":33}},"48":{"start":{"line":175,"column":2},"end":{"line":175,"column":46}},"49":{"start":{"line":176,"column":2},"end":{"line":176,"column":52}},"50":{"start":{"line":177,"column":2},"end":{"line":177,"column":63}},"51":{"start":{"line":178,"column":2},"end":{"line":178,"column":67}},"52":{"start":{"line":179,"column":2},"end":{"line":179,"column":59}},"53":{"start":{"line":181,"column":2},"end":{"line":181,"column":37}},"54":{"start":{"line":185,"column":0},"end":{"line":213,"column":2}},"55":{"start":{"line":186,"column":2},"end":{"line":186,"column":55}},"56":{"start":{"line":188,"column":2},"end":{"line":188,"column":23}},"57":{"start":{"line":192,"column":2},"end":{"line":203,"column":3}},"58":{"start":{"line":193,"column":4},"end":{"line":193,"column":43}},"59":{"start":{"line":194,"column":4},"end":{"line":197,"column":5}},"60":{"start":{"line":195,"column":6},"end":{"line":195,"column":32}},"61":{"start":{"line":196,"column":6},"end":{"line":196,"column":24}},"62":{"start":{"line":202,"column":4},"end":{"line":202,"column":33}},"63":{"start":{"line":206,"column":2},"end":{"line":208,"column":3}},"64":{"start":{"line":207,"column":4},"end":{"line":207,"column":20}},"65":{"start":{"line":210,"column":2},"end":{"line":212,"column":3}},"66":{"start":{"line":211,"column":4},"end":{"line":211,"column":12}},"67":{"start":{"line":217,"column":0},"end":{"line":223,"column":2}},"68":{"start":{"line":218,"column":2},"end":{"line":222,"column":3}},"69":{"start":{"line":219,"column":4},"end":{"line":219,"column":40}},"70":{"start":{"line":220,"column":4},"end":{"line":220,"column":29}},"71":{"start":{"line":221,"column":4},"end":{"line":221,"column":18}},"72":{"start":{"line":226,"column":0},"end":{"line":239,"column":2}},"73":{"start":{"line":228,"column":2},"end":{"line":231,"column":5}},"74":{"start":{"line":234,"column":2},"end":{"line":238,"column":3}},"75":{"start":{"line":235,"column":4},"end":{"line":235,"column":12}},"76":{"start":{"line":237,"column":4},"end":{"line":237,"column":27}},"77":{"start":{"line":244,"column":0},"end":{"line":250,"column":2}},"78":{"start":{"line":245,"column":2},"end":{"line":249,"column":3}},"79":{"start":{"line":246,"column":4},"end":{"line":246,"column":34}},"80":{"start":{"line":247,"column":4},"end":{"line":247,"column":26}},"81":{"start":{"line":248,"column":4},"end":{"line":248,"column":15}},"82":{"start":{"line":256,"column":0},"end":{"line":260,"column":2}},"83":{"start":{"line":261,"column":0},"end":{"line":272,"column":2}},"84":{"start":{"line":262,"column":2},"end":{"line":262,"column":25}},"85":{"start":{"line":263,"column":2},"end":{"line":263,"column":53}},"86":{"start":{"line":264,"column":2},"end":{"line":271,"column":3}},"87":{"start":{"line":265,"column":4},"end":{"line":265,"column":86}},"88":{"start":{"line":266,"column":4},"end":{"line":266,"column":44}},"89":{"start":{"line":267,"column":4},"end":{"line":267,"column":38}},"90":{"start":{"line":268,"column":4},"end":{"line":268,"column":37}},"91":{"start":{"line":270,"column":4},"end":{"line":270,"column":33}},"92":{"start":{"line":304,"column":0},"end":{"line":310,"column":2}},"93":{"start":{"line":305,"column":2},"end":{"line":305,"column":22}},"94":{"start":{"line":306,"column":2},"end":{"line":306,"column":30}},"95":{"start":{"line":307,"column":2},"end":{"line":307,"column":29}},"96":{"start":{"line":308,"column":2},"end":{"line":308,"column":56}},"97":{"start":{"line":309,"column":2},"end":{"line":309,"column":59}},"98":{"start":{"line":314,"column":0},"end":{"line":320,"column":2}},"99":{"start":{"line":315,"column":2},"end":{"line":319,"column":3}},"100":{"start":{"line":316,"column":4},"end":{"line":316,"column":73}},"101":{"start":{"line":317,"column":4},"end":{"line":317,"column":23}},"102":{"start":{"line":318,"column":4},"end":{"line":318,"column":30}},"103":{"start":{"line":324,"column":0},"end":{"line":326,"column":1}},"104":{"start":{"line":325,"column":2},"end":{"line":325,"column":101}},"105":{"start":{"line":331,"column":0},"end":{"line":545,"column":2}},"106":{"start":{"line":332,"column":2},"end":{"line":332,"column":27}},"107":{"start":{"line":333,"column":2},"end":{"line":333,"column":24}},"108":{"start":{"line":335,"column":2},"end":{"line":335,"column":92}},"109":{"start":{"line":336,"column":2},"end":{"line":336,"column":80}},"110":{"start":{"line":337,"column":2},"end":{"line":347,"column":3}},"111":{"start":{"line":338,"column":26},"end":{"line":338,"column":47}},"112":{"start":{"line":338,"column":48},"end":{"line":338,"column":54}},"113":{"start":{"line":339,"column":26},"end":{"line":339,"column":47}},"114":{"start":{"line":339,"column":48},"end":{"line":339,"column":54}},"115":{"start":{"line":340,"column":26},"end":{"line":340,"column":47}},"116":{"start":{"line":340,"column":48},"end":{"line":340,"column":54}},"117":{"start":{"line":341,"column":26},"end":{"line":341,"column":47}},"118":{"start":{"line":341,"column":48},"end":{"line":341,"column":54}},"119":{"start":{"line":342,"column":26},"end":{"line":342,"column":47}},"120":{"start":{"line":342,"column":48},"end":{"line":342,"column":54}},"121":{"start":{"line":343,"column":26},"end":{"line":343,"column":47}},"122":{"start":{"line":343,"column":48},"end":{"line":343,"column":54}},"123":{"start":{"line":344,"column":26},"end":{"line":344,"column":47}},"124":{"start":{"line":344,"column":48},"end":{"line":344,"column":54}},"125":{"start":{"line":345,"column":26},"end":{"line":345,"column":47}},"126":{"start":{"line":345,"column":48},"end":{"line":345,"column":54}},"127":{"start":{"line":346,"column":26},"end":{"line":346,"column":47}},"128":{"start":{"line":346,"column":48},"end":{"line":346,"column":54}},"129":{"start":{"line":349,"column":2},"end":{"line":349,"column":33}},"130":{"start":{"line":351,"column":2},"end":{"line":492,"column":3}},"131":{"start":{"line":358,"column":6},"end":{"line":366,"column":7}},"132":{"start":{"line":359,"column":8},"end":{"line":359,"column":31}},"133":{"start":{"line":360,"column":8},"end":{"line":362,"column":9}},"134":{"start":{"line":361,"column":10},"end":{"line":361,"column":79}},"135":{"start":{"line":363,"column":8},"end":{"line":363,"column":34}},"136":{"start":{"line":365,"column":8},"end":{"line":365,"column":33}},"137":{"start":{"line":367,"column":6},"end":{"line":367,"column":12}},"138":{"start":{"line":379,"column":6},"end":{"line":387,"column":7}},"139":{"start":{"line":380,"column":8},"end":{"line":380,"column":45}},"140":{"start":{"line":381,"column":13},"end":{"line":387,"column":7}},"141":{"start":{"line":382,"column":8},"end":{"line":382,"column":33}},"142":{"start":{"line":383,"column":13},"end":{"line":387,"column":7}},"143":{"start":{"line":386,"column":8},"end":{"line":386,"column":33}},"144":{"start":{"line":388,"column":6},"end":{"line":388,"column":12}},"145":{"start":{"line":398,"column":6},"end":{"line":406,"column":7}},"146":{"start":{"line":399,"column":8},"end":{"line":399,"column":33}},"147":{"start":{"line":400,"column":13},"end":{"line":406,"column":7}},"148":{"start":{"line":401,"column":8},"end":{"line":401,"column":44}},"149":{"start":{"line":402,"column":13},"end":{"line":406,"column":7}},"150":{"start":{"line":405,"column":8},"end":{"line":405,"column":33}},"151":{"start":{"line":407,"column":6},"end":{"line":407,"column":12}},"152":{"start":{"line":419,"column":6},"end":{"line":425,"column":7}},"153":{"start":{"line":420,"column":8},"end":{"line":420,"column":77}},"154":{"start":{"line":421,"column":13},"end":{"line":425,"column":7}},"155":{"start":{"line":422,"column":8},"end":{"line":422,"column":33}},"156":{"start":{"line":426,"column":6},"end":{"line":426,"column":12}},"157":{"start":{"line":435,"column":6},"end":{"line":441,"column":7}},"158":{"start":{"line":436,"column":8},"end":{"line":436,"column":33}},"159":{"start":{"line":437,"column":13},"end":{"line":441,"column":7}},"160":{"start":{"line":440,"column":8},"end":{"line":440,"column":33}},"161":{"start":{"line":442,"column":6},"end":{"line":442,"column":12}},"162":{"start":{"line":455,"column":6},"end":{"line":461,"column":7}},"163":{"start":{"line":456,"column":8},"end":{"line":456,"column":33}},"164":{"start":{"line":457,"column":13},"end":{"line":461,"column":7}},"165":{"start":{"line":460,"column":8},"end":{"line":460,"column":33}},"166":{"start":{"line":462,"column":6},"end":{"line":462,"column":12}},"167":{"start":{"line":485,"column":6},"end":{"line":490,"column":7}},"168":{"start":{"line":489,"column":8},"end":{"line":489,"column":32}},"169":{"start":{"line":491,"column":6},"end":{"line":491,"column":12}},"170":{"start":{"line":497,"column":2},"end":{"line":499,"column":3}},"171":{"start":{"line":498,"column":4},"end":{"line":498,"column":30}},"172":{"start":{"line":507,"column":2},"end":{"line":512,"column":3}},"173":{"start":{"line":508,"column":4},"end":{"line":509,"column":86}},"174":{"start":{"line":510,"column":4},"end":{"line":510,"column":84}},"175":{"start":{"line":511,"column":4},"end":{"line":511,"column":47}},"176":{"start":{"line":515,"column":2},"end":{"line":524,"column":3}},"177":{"start":{"line":516,"column":4},"end":{"line":516,"column":72}},"178":{"start":{"line":517,"column":4},"end":{"line":521,"column":5}},"179":{"start":{"line":518,"column":6},"end":{"line":518,"column":34}},"180":{"start":{"line":520,"column":6},"end":{"line":520,"column":33}},"181":{"start":{"line":522,"column":9},"end":{"line":524,"column":3}},"182":{"start":{"line":523,"column":4},"end":{"line":523,"column":27}},"183":{"start":{"line":527,"column":2},"end":{"line":544,"column":3}},"184":{"start":{"line":528,"column":4},"end":{"line":528,"column":65}},"185":{"start":{"line":531,"column":4},"end":{"line":543,"column":5}},"186":{"start":{"line":532,"column":6},"end":{"line":532,"column":68}},"187":{"start":{"line":533,"column":6},"end":{"line":533,"column":97}},"188":{"start":{"line":539,"column":6},"end":{"line":539,"column":69}},"189":{"start":{"line":540,"column":6},"end":{"line":540,"column":28}},"190":{"start":{"line":541,"column":6},"end":{"line":541,"column":24}},"191":{"start":{"line":542,"column":6},"end":{"line":542,"column":32}},"192":{"start":{"line":550,"column":0},"end":{"line":550,"column":25}},"193":{"start":{"line":552,"column":0},"end":{"line":552,"column":15}},"194":{"start":{"line":553,"column":0},"end":{"line":559,"column":2}},"195":{"start":{"line":554,"column":2},"end":{"line":557,"column":3}},"196":{"start":{"line":555,"column":4},"end":{"line":555,"column":23}},"197":{"start":{"line":556,"column":4},"end":{"line":556,"column":16}},"198":{"start":{"line":558,"column":2},"end":{"line":558,"column":19}}},"branchMap":{"1":{"line":1,"type":"cond-expr","locations":[{"start":{"line":1,"column":40},"end":{"line":1,"column":57}},{"start":{"line":1,"column":45},"end":{"line":1,"column":78}}]},"2":{"line":80,"type":"if","locations":[{"start":{"line":80,"column":4},"end":{"line":80,"column":4}},{"start":{"line":80,"column":4},"end":{"line":80,"column":4}}]},"3":{"line":109,"type":"if","locations":[{"start":{"line":109,"column":2},"end":{"line":109,"column":2}},{"start":{"line":109,"column":2},"end":{"line":109,"column":2}}]},"4":{"line":109,"type":"binary-expr","locations":[{"start":{"line":109,"column":7},"end":{"line":109,"column":11}},{"start":{"line":109,"column":15},"end":{"line":109,"column":38}},{"start":{"line":109,"column":43},"end":{"line":109,"column":48}}]},"5":{"line":110,"type":"if","locations":[{"start":{"line":110,"column":4},"end":{"line":110,"column":4}},{"start":{"line":110,"column":4},"end":{"line":110,"column":4}}]},"6":{"line":114,"type":"if","locations":[{"start":{"line":114,"column":6},"end":{"line":114,"column":6}},{"start":{"line":114,"column":6},"end":{"line":114,"column":6}}]},"7":{"line":114,"type":"binary-expr","locations":[{"start":{"line":114,"column":10},"end":{"line":114,"column":19}},{"start":{"line":114,"column":25},"end":{"line":114,"column":53}},{"start":{"line":114,"column":59},"end":{"line":114,"column":88}}]},"8":{"line":192,"type":"if","locations":[{"start":{"line":192,"column":2},"end":{"line":192,"column":2}},{"start":{"line":192,"column":2},"end":{"line":192,"column":2}}]},"9":{"line":194,"type":"if","locations":[{"start":{"line":194,"column":4},"end":{"line":194,"column":4}},{"start":{"line":194,"column":4},"end":{"line":194,"column":4}}]},"10":{"line":206,"type":"if","locations":[{"start":{"line":206,"column":2},"end":{"line":206,"column":2}},{"start":{"line":206,"column":2},"end":{"line":206,"column":2}}]},"11":{"line":210,"type":"if","locations":[{"start":{"line":210,"column":2},"end":{"line":210,"column":2}},{"start":{"line":210,"column":2},"end":{"line":210,"column":2}}]},"12":{"line":218,"type":"if","locations":[{"start":{"line":218,"column":2},"end":{"line":218,"column":2}},{"start":{"line":218,"column":2},"end":{"line":218,"column":2}}]},"13":{"line":234,"type":"if","locations":[{"start":{"line":234,"column":2},"end":{"line":234,"column":2}},{"start":{"line":234,"column":2},"end":{"line":234,"column":2}}]},"14":{"line":245,"type":"if","locations":[{"start":{"line":245,"column":2},"end":{"line":245,"column":2}},{"start":{"line":245,"column":2},"end":{"line":245,"column":2}}]},"15":{"line":264,"type":"if","locations":[{"start":{"line":264,"column":2},"end":{"line":264,"column":2}},{"start":{"line":264,"column":2},"end":{"line":264,"column":2}}]},"16":{"line":264,"type":"binary-expr","locations":[{"start":{"line":264,"column":6},"end":{"line":264,"column":15}},{"start":{"line":264,"column":21},"end":{"line":264,"column":46}},{"start":{"line":264,"column":52},"end":{"line":264,"column":80}}]},"17":{"line":266,"type":"binary-expr","locations":[{"start":{"line":266,"column":22},"end":{"line":266,"column":37}},{"start":{"line":266,"column":41},"end":{"line":266,"column":43}}]},"18":{"line":315,"type":"if","locations":[{"start":{"line":315,"column":2},"end":{"line":315,"column":2}},{"start":{"line":315,"column":2},"end":{"line":315,"column":2}}]},"19":{"line":325,"type":"binary-expr","locations":[{"start":{"line":325,"column":11},"end":{"line":325,"column":40}},{"start":{"line":325,"column":46},"end":{"line":325,"column":76}},{"start":{"line":325,"column":82},"end":{"line":325,"column":98}}]},"20":{"line":337,"type":"switch","locations":[{"start":{"line":338,"column":4},"end":{"line":338,"column":54}},{"start":{"line":339,"column":4},"end":{"line":339,"column":54}},{"start":{"line":340,"column":4},"end":{"line":340,"column":54}},{"start":{"line":341,"column":4},"end":{"line":341,"column":54}},{"start":{"line":342,"column":4},"end":{"line":342,"column":54}},{"start":{"line":343,"column":4},"end":{"line":343,"column":54}},{"start":{"line":344,"column":4},"end":{"line":344,"column":54}},{"start":{"line":345,"column":4},"end":{"line":345,"column":54}},{"start":{"line":346,"column":4},"end":{"line":346,"column":54}}]},"21":{"line":351,"type":"switch","locations":[{"start":{"line":357,"column":4},"end":{"line":367,"column":12}},{"start":{"line":378,"column":4},"end":{"line":388,"column":12}},{"start":{"line":397,"column":4},"end":{"line":407,"column":12}},{"start":{"line":418,"column":4},"end":{"line":426,"column":12}},{"start":{"line":434,"column":4},"end":{"line":442,"column":12}},{"start":{"line":454,"column":4},"end":{"line":462,"column":12}},{"start":{"line":484,"column":4},"end":{"line":491,"column":12}}]},"22":{"line":358,"type":"if","locations":[{"start":{"line":358,"column":6},"end":{"line":358,"column":6}},{"start":{"line":358,"column":6},"end":{"line":358,"column":6}}]},"23":{"line":360,"type":"if","locations":[{"start":{"line":360,"column":8},"end":{"line":360,"column":8}},{"start":{"line":360,"column":8},"end":{"line":360,"column":8}}]},"24":{"line":361,"type":"cond-expr","locations":[{"start":{"line":361,"column":35},"end":{"line":361,"column":54}},{"start":{"line":361,"column":57},"end":{"line":361,"column":77}}]},"25":{"line":379,"type":"if","locations":[{"start":{"line":379,"column":6},"end":{"line":379,"column":6}},{"start":{"line":379,"column":6},"end":{"line":379,"column":6}}]},"26":{"line":379,"type":"binary-expr","locations":[{"start":{"line":379,"column":10},"end":{"line":379,"column":17}},{"start":{"line":379,"column":21},"end":{"line":379,"column":28}}]},"27":{"line":381,"type":"if","locations":[{"start":{"line":381,"column":13},"end":{"line":381,"column":13}},{"start":{"line":381,"column":13},"end":{"line":381,"column":13}}]},"28":{"line":383,"type":"if","locations":[{"start":{"line":383,"column":13},"end":{"line":383,"column":13}},{"start":{"line":383,"column":13},"end":{"line":383,"column":13}}]},"29":{"line":383,"type":"binary-expr","locations":[{"start":{"line":383,"column":17},"end":{"line":383,"column":26}},{"start":{"line":383,"column":30},"end":{"line":383,"column":38}}]},"30":{"line":398,"type":"if","locations":[{"start":{"line":398,"column":6},"end":{"line":398,"column":6}},{"start":{"line":398,"column":6},"end":{"line":398,"column":6}}]},"31":{"line":400,"type":"if","locations":[{"start":{"line":400,"column":13},"end":{"line":400,"column":13}},{"start":{"line":400,"column":13},"end":{"line":400,"column":13}}]},"32":{"line":400,"type":"binary-expr","locations":[{"start":{"line":400,"column":17},"end":{"line":400,"column":26}},{"start":{"line":400,"column":30},"end":{"line":400,"column":37}}]},"33":{"line":402,"type":"if","locations":[{"start":{"line":402,"column":13},"end":{"line":402,"column":13}},{"start":{"line":402,"column":13},"end":{"line":402,"column":13}}]},"34":{"line":402,"type":"binary-expr","locations":[{"start":{"line":402,"column":17},"end":{"line":402,"column":24}},{"start":{"line":402,"column":28},"end":{"line":402,"column":36}}]},"35":{"line":419,"type":"if","locations":[{"start":{"line":419,"column":6},"end":{"line":419,"column":6}},{"start":{"line":419,"column":6},"end":{"line":419,"column":6}}]},"36":{"line":420,"type":"cond-expr","locations":[{"start":{"line":420,"column":33},"end":{"line":420,"column":52}},{"start":{"line":420,"column":55},"end":{"line":420,"column":75}}]},"37":{"line":421,"type":"if","locations":[{"start":{"line":421,"column":13},"end":{"line":421,"column":13}},{"start":{"line":421,"column":13},"end":{"line":421,"column":13}}]},"38":{"line":435,"type":"if","locations":[{"start":{"line":435,"column":6},"end":{"line":435,"column":6}},{"start":{"line":435,"column":6},"end":{"line":435,"column":6}}]},"39":{"line":435,"type":"binary-expr","locations":[{"start":{"line":435,"column":10},"end":{"line":435,"column":20}},{"start":{"line":435,"column":25},"end":{"line":435,"column":34}},{"start":{"line":435,"column":38},"end":{"line":435,"column":60}}]},"40":{"line":437,"type":"if","locations":[{"start":{"line":437,"column":13},"end":{"line":437,"column":13}},{"start":{"line":437,"column":13},"end":{"line":437,"column":13}}]},"41":{"line":437,"type":"binary-expr","locations":[{"start":{"line":437,"column":17},"end":{"line":437,"column":26}},{"start":{"line":437,"column":31},"end":{"line":437,"column":38}},{"start":{"line":437,"column":43},"end":{"line":437,"column":51}},{"start":{"line":437,"column":55},"end":{"line":437,"column":68}}]},"42":{"line":455,"type":"if","locations":[{"start":{"line":455,"column":6},"end":{"line":455,"column":6}},{"start":{"line":455,"column":6},"end":{"line":455,"column":6}}]},"43":{"line":455,"type":"binary-expr","locations":[{"start":{"line":455,"column":10},"end":{"line":455,"column":20}},{"start":{"line":455,"column":25},"end":{"line":455,"column":32}},{"start":{"line":455,"column":36},"end":{"line":455,"column":58}}]},"44":{"line":457,"type":"if","locations":[{"start":{"line":457,"column":13},"end":{"line":457,"column":13}},{"start":{"line":457,"column":13},"end":{"line":457,"column":13}}]},"45":{"line":457,"type":"binary-expr","locations":[{"start":{"line":457,"column":17},"end":{"line":457,"column":24}},{"start":{"line":457,"column":29},"end":{"line":457,"column":38}},{"start":{"line":457,"column":43},"end":{"line":457,"column":56}},{"start":{"line":457,"column":60},"end":{"line":457,"column":68}}]},"46":{"line":485,"type":"if","locations":[{"start":{"line":485,"column":6},"end":{"line":485,"column":6}},{"start":{"line":485,"column":6},"end":{"line":485,"column":6}}]},"47":{"line":485,"type":"binary-expr","locations":[{"start":{"line":485,"column":11},"end":{"line":485,"column":18}},{"start":{"line":485,"column":22},"end":{"line":485,"column":32}},{"start":{"line":485,"column":38},"end":{"line":485,"column":47}},{"start":{"line":485,"column":51},"end":{"line":485,"column":70}},{"start":{"line":486,"column":11},"end":{"line":486,"column":20}},{"start":{"line":486,"column":25},"end":{"line":486,"column":38}},{"start":{"line":486,"column":42},"end":{"line":486,"column":50}}]},"48":{"line":497,"type":"if","locations":[{"start":{"line":497,"column":2},"end":{"line":497,"column":2}},{"start":{"line":497,"column":2},"end":{"line":497,"column":2}}]},"49":{"line":497,"type":"binary-expr","locations":[{"start":{"line":497,"column":6},"end":{"line":497,"column":15}},{"start":{"line":497,"column":20},"end":{"line":497,"column":30}},{"start":{"line":497,"column":34},"end":{"line":497,"column":56}}]},"50":{"line":507,"type":"if","locations":[{"start":{"line":507,"column":2},"end":{"line":507,"column":2}},{"start":{"line":507,"column":2},"end":{"line":507,"column":2}}]},"51":{"line":507,"type":"binary-expr","locations":[{"start":{"line":507,"column":6},"end":{"line":507,"column":18}},{"start":{"line":507,"column":22},"end":{"line":507,"column":28}}]},"52":{"line":510,"type":"cond-expr","locations":[{"start":{"line":510,"column":46},"end":{"line":510,"column":62}},{"start":{"line":510,"column":65},"end":{"line":510,"column":82}}]},"53":{"line":515,"type":"if","locations":[{"start":{"line":515,"column":2},"end":{"line":515,"column":2}},{"start":{"line":515,"column":2},"end":{"line":515,"column":2}}]},"54":{"line":517,"type":"if","locations":[{"start":{"line":517,"column":4},"end":{"line":517,"column":4}},{"start":{"line":517,"column":4},"end":{"line":517,"column":4}}]},"55":{"line":522,"type":"if","locations":[{"start":{"line":522,"column":9},"end":{"line":522,"column":9}},{"start":{"line":522,"column":9},"end":{"line":522,"column":9}}]},"56":{"line":527,"type":"if","locations":[{"start":{"line":527,"column":2},"end":{"line":527,"column":2}},{"start":{"line":527,"column":2},"end":{"line":527,"column":2}}]},"57":{"line":531,"type":"if","locations":[{"start":{"line":531,"column":4},"end":{"line":531,"column":4}},{"start":{"line":531,"column":4},"end":{"line":531,"column":4}}]},"58":{"line":554,"type":"if","locations":[{"start":{"line":554,"column":2},"end":{"line":554,"column":2}},{"start":{"line":554,"column":2},"end":{"line":554,"column":2}}]}}},"/data/upstream/node-http2/lib/endpoint.js":{"path":"/data/upstream/node-http2/lib/endpoint.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":4,"10":4,"11":4,"12":2,"13":2,"14":2,"15":0,"16":4,"17":4,"18":4,"19":1,"20":1,"21":1,"22":2,"23":2,"24":1,"25":2,"26":2,"27":2,"28":2,"29":48,"30":0,"31":0,"32":0,"33":48,"34":2,"35":2,"36":2,"37":2,"38":2,"39":1,"40":4,"41":4,"42":2,"43":2,"44":2,"45":2,"46":2,"47":2,"48":4,"49":4,"50":4,"51":4,"52":4,"53":4,"54":4,"55":4,"56":1,"57":31,"58":31,"59":18,"60":1,"61":10,"62":1,"63":4,"64":1,"65":1,"66":1,"67":4,"68":4,"69":4,"70":4,"71":4,"72":1,"73":0,"74":0,"75":1,"76":0,"77":1,"78":1,"79":1,"80":0,"81":0,"82":0,"83":0},"b":{"1":[2,2],"2":[2,0],"3":[50,48],"4":[0,48],"5":[2,0],"6":[2,2],"7":[49,49],"8":[0,0]},"f":{"1":4,"2":2,"3":2,"4":2,"5":4,"6":31,"7":10,"8":4,"9":1,"10":4,"11":0,"12":0,"13":0},"fnMap":{"1":{"name":"Endpoint","line":14,"loc":{"start":{"line":14,"column":0},"end":{"line":14,"column":39}}},"2":{"name":"_writePrelude","line":49,"loc":{"start":{"line":49,"column":35},"end":{"line":49,"column":60}}},"3":{"name":"_readPrelude","line":55,"loc":{"start":{"line":55,"column":34},"end":{"line":55,"column":58}}},"4":{"name":"_temporalWrite","line":60,"loc":{"start":{"line":60,"column":16},"end":{"line":60,"column":63}}},"5":{"name":"_initializeDataFlow","line":118,"loc":{"start":{"line":118,"column":41},"end":{"line":118,"column":86}}},"6":{"name":"_read","line":142,"loc":{"start":{"line":142,"column":27},"end":{"line":142,"column":44}}},"7":{"name":"_write","line":149,"loc":{"start":{"line":149,"column":28},"end":{"line":149,"column":67}}},"8":{"name":"_initializeManagement","line":156,"loc":{"start":{"line":156,"column":43},"end":{"line":156,"column":76}}},"9":{"name":"createStream","line":160,"loc":{"start":{"line":160,"column":34},"end":{"line":160,"column":58}}},"10":{"name":"_initializeErrorHandling","line":167,"loc":{"start":{"line":167,"column":46},"end":{"line":167,"column":82}}},"11":{"name":"_error","line":175,"loc":{"start":{"line":175,"column":28},"end":{"line":175,"column":62}}},"12":{"name":"close","line":180,"loc":{"start":{"line":180,"column":27},"end":{"line":180,"column":49}}},"13":{"name":"(anonymous_13)","line":190,"loc":{"start":{"line":190,"column":24},"end":{"line":190,"column":43}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":50}},"2":{"start":{"line":2,"column":0},"end":{"line":2,"column":52}},"3":{"start":{"line":3,"column":0},"end":{"line":3,"column":54}},"4":{"start":{"line":4,"column":0},"end":{"line":4,"column":56}},"5":{"start":{"line":5,"column":0},"end":{"line":5,"column":54}},"6":{"start":{"line":6,"column":0},"end":{"line":6,"column":44}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":28}},"8":{"start":{"line":14,"column":0},"end":{"line":40,"column":1}},"9":{"start":{"line":15,"column":2},"end":{"line":15,"column":20}},"10":{"start":{"line":18,"column":2},"end":{"line":18,"column":60}},"11":{"start":{"line":22,"column":2},"end":{"line":28,"column":3}},"12":{"start":{"line":23,"column":4},"end":{"line":23,"column":25}},"13":{"start":{"line":24,"column":9},"end":{"line":28,"column":3}},"14":{"start":{"line":25,"column":4},"end":{"line":25,"column":24}},"15":{"start":{"line":27,"column":4},"end":{"line":27,"column":45}},"16":{"start":{"line":33,"column":2},"end":{"line":33,"column":43}},"17":{"start":{"line":36,"column":2},"end":{"line":36,"column":31}},"18":{"start":{"line":39,"column":2},"end":{"line":39,"column":34}},"19":{"start":{"line":41,"column":0},"end":{"line":41,"column":91}},"20":{"start":{"line":46,"column":0},"end":{"line":46,"column":68}},"21":{"start":{"line":49,"column":0},"end":{"line":52,"column":2}},"22":{"start":{"line":50,"column":2},"end":{"line":50,"column":67}},"23":{"start":{"line":51,"column":2},"end":{"line":51,"column":28}},"24":{"start":{"line":55,"column":0},"end":{"line":83,"column":2}},"25":{"start":{"line":57,"column":2},"end":{"line":57,"column":17}},"26":{"start":{"line":60,"column":2},"end":{"line":82,"column":4}},"27":{"start":{"line":63,"column":4},"end":{"line":63,"column":24}},"28":{"start":{"line":64,"column":4},"end":{"line":72,"column":5}},"29":{"start":{"line":65,"column":6},"end":{"line":70,"column":7}},"30":{"start":{"line":66,"column":8},"end":{"line":67,"column":76}},"31":{"start":{"line":68,"column":8},"end":{"line":68,"column":85}},"32":{"start":{"line":69,"column":8},"end":{"line":69,"column":15}},"33":{"start":{"line":71,"column":6},"end":{"line":71,"column":18}},"34":{"start":{"line":76,"column":4},"end":{"line":81,"column":5}},"35":{"start":{"line":77,"column":6},"end":{"line":77,"column":85}},"36":{"start":{"line":78,"column":6},"end":{"line":78,"column":25}},"37":{"start":{"line":79,"column":6},"end":{"line":79,"column":43}},"38":{"start":{"line":80,"column":6},"end":{"line":80,"column":41}},"39":{"start":{"line":118,"column":0},"end":{"line":140,"column":2}},"40":{"start":{"line":119,"column":2},"end":{"line":119,"column":54}},"41":{"start":{"line":120,"column":2},"end":{"line":128,"column":3}},"42":{"start":{"line":121,"column":4},"end":{"line":121,"column":22}},"43":{"start":{"line":122,"column":4},"end":{"line":122,"column":31}},"44":{"start":{"line":123,"column":4},"end":{"line":123,"column":34}},"45":{"start":{"line":125,"column":4},"end":{"line":125,"column":22}},"46":{"start":{"line":126,"column":4},"end":{"line":126,"column":32}},"47":{"start":{"line":127,"column":4},"end":{"line":127,"column":33}},"48":{"start":{"line":130,"column":2},"end":{"line":130,"column":49}},"49":{"start":{"line":131,"column":2},"end":{"line":131,"column":51}},"50":{"start":{"line":132,"column":2},"end":{"line":132,"column":65}},"51":{"start":{"line":133,"column":2},"end":{"line":133,"column":69}},"52":{"start":{"line":134,"column":2},"end":{"line":134,"column":74}},"53":{"start":{"line":136,"column":2},"end":{"line":136,"column":65}},"54":{"start":{"line":137,"column":2},"end":{"line":137,"column":69}},"55":{"start":{"line":139,"column":2},"end":{"line":139,"column":57}},"56":{"start":{"line":142,"column":0},"end":{"line":147,"column":2}},"57":{"start":{"line":143,"column":2},"end":{"line":143,"column":31}},"58":{"start":{"line":144,"column":2},"end":{"line":146,"column":3}},"59":{"start":{"line":145,"column":4},"end":{"line":145,"column":34}},"60":{"start":{"line":149,"column":0},"end":{"line":151,"column":2}},"61":{"start":{"line":150,"column":2},"end":{"line":150,"column":50}},"62":{"start":{"line":156,"column":0},"end":{"line":158,"column":2}},"63":{"start":{"line":157,"column":2},"end":{"line":157,"column":64}},"64":{"start":{"line":160,"column":0},"end":{"line":162,"column":2}},"65":{"start":{"line":161,"column":2},"end":{"line":161,"column":41}},"66":{"start":{"line":167,"column":0},"end":{"line":173,"column":2}},"67":{"start":{"line":168,"column":2},"end":{"line":168,"column":69}},"68":{"start":{"line":169,"column":2},"end":{"line":169,"column":73}},"69":{"start":{"line":170,"column":2},"end":{"line":170,"column":69}},"70":{"start":{"line":171,"column":2},"end":{"line":171,"column":73}},"71":{"start":{"line":172,"column":2},"end":{"line":172,"column":69}},"72":{"start":{"line":175,"column":0},"end":{"line":178,"column":2}},"73":{"start":{"line":176,"column":2},"end":{"line":176,"column":95}},"74":{"start":{"line":177,"column":2},"end":{"line":177,"column":20}},"75":{"start":{"line":180,"column":0},"end":{"line":182,"column":2}},"76":{"start":{"line":181,"column":2},"end":{"line":181,"column":32}},"77":{"start":{"line":187,"column":0},"end":{"line":187,"column":25}},"78":{"start":{"line":189,"column":0},"end":{"line":189,"column":15}},"79":{"start":{"line":190,"column":0},"end":{"line":196,"column":2}},"80":{"start":{"line":191,"column":2},"end":{"line":194,"column":3}},"81":{"start":{"line":192,"column":4},"end":{"line":192,"column":25}},"82":{"start":{"line":193,"column":4},"end":{"line":193,"column":16}},"83":{"start":{"line":195,"column":2},"end":{"line":195,"column":21}}},"branchMap":{"1":{"line":22,"type":"if","locations":[{"start":{"line":22,"column":2},"end":{"line":22,"column":2}},{"start":{"line":22,"column":2},"end":{"line":22,"column":2}}]},"2":{"line":24,"type":"if","locations":[{"start":{"line":24,"column":9},"end":{"line":24,"column":9}},{"start":{"line":24,"column":9},"end":{"line":24,"column":9}}]},"3":{"line":64,"type":"binary-expr","locations":[{"start":{"line":64,"column":10},"end":{"line":64,"column":40}},{"start":{"line":64,"column":44},"end":{"line":64,"column":76}}]},"4":{"line":65,"type":"if","locations":[{"start":{"line":65,"column":6},"end":{"line":65,"column":6}},{"start":{"line":65,"column":6},"end":{"line":65,"column":6}}]},"5":{"line":76,"type":"if","locations":[{"start":{"line":76,"column":4},"end":{"line":76,"column":4}},{"start":{"line":76,"column":4},"end":{"line":76,"column":4}}]},"6":{"line":120,"type":"if","locations":[{"start":{"line":120,"column":2},"end":{"line":120,"column":2}},{"start":{"line":120,"column":2},"end":{"line":120,"column":2}}]},"7":{"line":144,"type":"binary-expr","locations":[{"start":{"line":144,"column":9},"end":{"line":144,"column":19}},{"start":{"line":144,"column":24},"end":{"line":144,"column":55}}]},"8":{"line":191,"type":"if","locations":[{"start":{"line":191,"column":2},"end":{"line":191,"column":2}},{"start":{"line":191,"column":2},"end":{"line":191,"column":2}}]}}},"/data/upstream/node-http2/lib/framer.js":{"path":"/data/upstream/node-http2/lib/framer.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":5,"8":5,"9":1,"10":1,"11":19,"12":19,"13":19,"14":19,"15":19,"16":19,"17":40,"18":0,"19":40,"20":19,"21":1,"22":5,"23":5,"24":5,"25":1,"26":1,"27":43,"28":43,"29":43,"30":43,"31":24,"32":1,"33":30,"34":30,"35":0,"36":30,"37":50,"38":50,"39":50,"40":50,"41":50,"42":19,"43":19,"44":50,"45":19,"46":19,"47":19,"48":0,"49":0,"50":19,"51":19,"52":0,"53":19,"54":30,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":29,"63":29,"64":29,"65":31,"66":29,"67":29,"68":29,"69":29,"70":29,"71":29,"72":30,"73":30,"74":30,"75":6,"76":29,"77":29,"78":29,"79":29,"80":1,"81":29,"82":29,"83":29,"84":29,"85":29,"86":29,"87":40,"88":29,"89":1,"90":1,"91":1,"92":1,"93":5,"94":1,"95":5,"96":1,"97":1,"98":1,"99":1,"100":6,"101":2,"102":2,"103":2,"104":2,"105":6,"106":1,"107":6,"108":2,"109":2,"110":4,"111":1,"112":1,"113":1,"114":1,"115":2,"116":2,"117":2,"118":1,"119":2,"120":1,"121":1,"122":1,"123":1,"124":2,"125":2,"126":2,"127":2,"128":2,"129":1,"130":2,"131":1,"132":1,"133":1,"134":1,"135":6,"136":6,"137":18,"138":12,"139":12,"140":12,"141":6,"142":6,"143":6,"144":12,"145":12,"146":6,"147":1,"148":6,"149":6,"150":0,"151":6,"152":12,"153":12,"154":12,"155":12,"156":0,"157":12,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1,"166":2,"167":2,"168":2,"169":2,"170":2,"171":1,"172":2,"173":2,"174":1,"175":1,"176":1,"177":1,"178":2,"179":2,"180":1,"181":2,"182":0,"183":2,"184":1,"185":1,"186":1,"187":1,"188":2,"189":2,"190":2,"191":2,"192":2,"193":2,"194":2,"195":1,"196":2,"197":2,"198":1,"199":1,"200":1,"201":1,"202":2,"203":2,"204":2,"205":2,"206":1,"207":2,"208":1,"209":1,"210":1,"211":1,"212":0,"213":0,"214":0,"215":0,"216":0,"217":0,"218":0,"219":0,"220":0,"221":0,"222":0,"223":0,"224":0,"225":0,"226":0,"227":0,"228":0,"229":0,"230":0,"231":0,"232":1,"233":0},"b":{"1":[1,0],"2":[0,40],"3":[24,19],"4":[0,30],"5":[19,31],"6":[50,36],"7":[19,31],"8":[50,19],"9":[19,0],"10":[0,19],"11":[6,24],"12":[29,4],"13":[2,4],"14":[2,2],"15":[2,4],"16":[2,2],"17":[12,6],"18":[4,8],"19":[0,6],"20":[0,12],"21":[12,12],"22":[4,8],"23":[2,2],"24":[2,2],"25":[0,2],"26":[2,2],"27":[2,2],"28":[2,2],"29":[0,0],"30":[0,0],"31":[0,0],"32":[0,0],"33":[0,0],"34":[0,0],"35":[0,0]},"f":{"1":0,"2":5,"3":19,"4":5,"5":43,"6":30,"7":29,"8":29,"9":5,"10":5,"11":6,"12":6,"13":2,"14":2,"15":2,"16":2,"17":6,"18":18,"19":6,"20":2,"21":2,"22":2,"23":2,"24":2,"25":2,"26":2,"27":2,"28":0,"29":0,"30":0,"31":0},"fnMap":{"1":{"name":"noop","line":5,"loc":{"start":{"line":5,"column":60},"end":{"line":5,"column":76}}},"2":{"name":"Serializer","line":25,"loc":{"start":{"line":25,"column":0},"end":{"line":25,"column":25}}},"3":{"name":"_transform","line":34,"loc":{"start":{"line":34,"column":34},"end":{"line":34,"column":77}}},"4":{"name":"Deserializer","line":64,"loc":{"start":{"line":64,"column":0},"end":{"line":64,"column":27}}},"5":{"name":"(anonymous_5)","line":76,"loc":{"start":{"line":76,"column":31},"end":{"line":76,"column":46}}},"6":{"name":"_transform","line":87,"loc":{"start":{"line":87,"column":36},"end":{"line":87,"column":79}}},"7":{"name":"writeCommonHeader","line":193,"loc":{"start":{"line":193,"column":26},"end":{"line":193,"column":69}}},"8":{"name":"readCommonHeader","line":222,"loc":{"start":{"line":222,"column":28},"end":{"line":222,"column":69}}},"9":{"name":"writeData","line":267,"loc":{"start":{"line":267,"column":18},"end":{"line":267,"column":53}}},"10":{"name":"readData","line":271,"loc":{"start":{"line":271,"column":20},"end":{"line":271,"column":53}}},"11":{"name":"writeHeadersPriority","line":310,"loc":{"start":{"line":310,"column":21},"end":{"line":310,"column":67}}},"12":{"name":"readHeadersPriority","line":320,"loc":{"start":{"line":320,"column":23},"end":{"line":320,"column":67}}},"13":{"name":"writePriority","line":350,"loc":{"start":{"line":350,"column":22},"end":{"line":350,"column":61}}},"14":{"name":"readPriority","line":356,"loc":{"start":{"line":356,"column":24},"end":{"line":356,"column":61}}},"15":{"name":"writeRstStream","line":382,"loc":{"start":{"line":382,"column":24},"end":{"line":382,"column":64}}},"16":{"name":"readRstStream","line":390,"loc":{"start":{"line":390,"column":26},"end":{"line":390,"column":64}}},"17":{"name":"writeSettings","line":426,"loc":{"start":{"line":426,"column":22},"end":{"line":426,"column":61}}},"18":{"name":"(anonymous_18)","line":428,"loc":{"start":{"line":428,"column":26},"end":{"line":428,"column":48}}},"19":{"name":"readSettings","line":446,"loc":{"start":{"line":446,"column":24},"end":{"line":446,"column":61}}},"20":{"name":"writePushPromise","line":510,"loc":{"start":{"line":510,"column":26},"end":{"line":510,"column":68}}},"21":{"name":"readPushPromise","line":518,"loc":{"start":{"line":518,"column":28},"end":{"line":518,"column":68}}},"22":{"name":"writePing","line":542,"loc":{"start":{"line":542,"column":18},"end":{"line":542,"column":53}}},"23":{"name":"readPing","line":547,"loc":{"start":{"line":547,"column":20},"end":{"line":547,"column":53}}},"24":{"name":"writeGoaway","line":582,"loc":{"start":{"line":582,"column":20},"end":{"line":582,"column":57}}},"25":{"name":"readGoaway","line":595,"loc":{"start":{"line":595,"column":22},"end":{"line":595,"column":57}}},"26":{"name":"writeWindowUpdate","line":622,"loc":{"start":{"line":622,"column":27},"end":{"line":622,"column":70}}},"27":{"name":"readWindowUpdate","line":629,"loc":{"start":{"line":629,"column":29},"end":{"line":629,"column":70}}},"28":{"name":"(anonymous_28)","line":659,"loc":{"start":{"line":659,"column":28},"end":{"line":659,"column":44}}},"29":{"name":"(anonymous_29)","line":672,"loc":{"start":{"line":672,"column":71},"end":{"line":672,"column":86}}},"30":{"name":"(anonymous_30)","line":692,"loc":{"start":{"line":692,"column":57},"end":{"line":692,"column":72}}},"31":{"name":"(anonymous_31)","line":700,"loc":{"start":{"line":700,"column":27},"end":{"line":700,"column":42}}}},"statementMap":{"1":{"start":{"line":5,"column":0},"end":{"line":5,"column":79}},"2":{"start":{"line":7,"column":0},"end":{"line":7,"column":44}},"3":{"start":{"line":9,"column":0},"end":{"line":9,"column":32}},"4":{"start":{"line":10,"column":0},"end":{"line":10,"column":36}},"5":{"start":{"line":12,"column":0},"end":{"line":12,"column":50}},"6":{"start":{"line":25,"column":0},"end":{"line":28,"column":1}},"7":{"start":{"line":26,"column":2},"end":{"line":26,"column":53}},"8":{"start":{"line":27,"column":2},"end":{"line":27,"column":45}},"9":{"start":{"line":29,"column":0},"end":{"line":29,"column":98}},"10":{"start":{"line":34,"column":0},"end":{"line":51,"column":2}},"11":{"start":{"line":35,"column":2},"end":{"line":35,"column":54}},"12":{"start":{"line":37,"column":2},"end":{"line":37,"column":72}},"13":{"start":{"line":39,"column":2},"end":{"line":39,"column":19}},"14":{"start":{"line":40,"column":2},"end":{"line":40,"column":41}},"15":{"start":{"line":41,"column":2},"end":{"line":41,"column":42}},"16":{"start":{"line":43,"column":2},"end":{"line":48,"column":3}},"17":{"start":{"line":44,"column":4},"end":{"line":46,"column":5}},"18":{"start":{"line":45,"column":6},"end":{"line":45,"column":61}},"19":{"start":{"line":47,"column":4},"end":{"line":47,"column":26}},"20":{"start":{"line":50,"column":2},"end":{"line":50,"column":9}},"21":{"start":{"line":64,"column":0},"end":{"line":68,"column":1}},"22":{"start":{"line":65,"column":2},"end":{"line":65,"column":55}},"23":{"start":{"line":66,"column":2},"end":{"line":66,"column":45}},"24":{"start":{"line":67,"column":2},"end":{"line":67,"column":33}},"25":{"start":{"line":69,"column":0},"end":{"line":69,"column":102}},"26":{"start":{"line":76,"column":0},"end":{"line":83,"column":2}},"27":{"start":{"line":77,"column":2},"end":{"line":77,"column":19}},"28":{"start":{"line":78,"column":2},"end":{"line":78,"column":34}},"29":{"start":{"line":79,"column":2},"end":{"line":79,"column":51}},"30":{"start":{"line":80,"column":2},"end":{"line":82,"column":3}},"31":{"start":{"line":81,"column":4},"end":{"line":81,"column":21}},"32":{"start":{"line":87,"column":0},"end":{"line":135,"column":2}},"33":{"start":{"line":88,"column":2},"end":{"line":88,"column":17}},"34":{"start":{"line":90,"column":2},"end":{"line":92,"column":3}},"35":{"start":{"line":91,"column":4},"end":{"line":91,"column":54}},"36":{"start":{"line":94,"column":2},"end":{"line":132,"column":3}},"37":{"start":{"line":97,"column":4},"end":{"line":97,"column":85}},"38":{"start":{"line":98,"column":4},"end":{"line":98,"column":68}},"39":{"start":{"line":99,"column":4},"end":{"line":99,"column":27}},"40":{"start":{"line":100,"column":4},"end":{"line":100,"column":21}},"41":{"start":{"line":107,"column":4},"end":{"line":110,"column":5}},"42":{"start":{"line":108,"column":6},"end":{"line":108,"column":59}},"43":{"start":{"line":109,"column":6},"end":{"line":109,"column":37}},"44":{"start":{"line":117,"column":4},"end":{"line":131,"column":5}},"45":{"start":{"line":118,"column":6},"end":{"line":129,"column":7}},"46":{"start":{"line":119,"column":8},"end":{"line":119,"column":78}},"47":{"start":{"line":120,"column":8},"end":{"line":126,"column":9}},"48":{"start":{"line":121,"column":10},"end":{"line":121,"column":58}},"49":{"start":{"line":122,"column":10},"end":{"line":122,"column":47}},"50":{"start":{"line":124,"column":10},"end":{"line":124,"column":68}},"51":{"start":{"line":125,"column":10},"end":{"line":125,"column":33}},"52":{"start":{"line":128,"column":8},"end":{"line":128,"column":78}},"53":{"start":{"line":130,"column":6},"end":{"line":130,"column":37}},"54":{"start":{"line":134,"column":2},"end":{"line":134,"column":9}},"55":{"start":{"line":182,"column":0},"end":{"line":182,"column":27}},"56":{"start":{"line":183,"column":0},"end":{"line":183,"column":29}},"57":{"start":{"line":185,"column":0},"end":{"line":185,"column":20}},"58":{"start":{"line":187,"column":0},"end":{"line":187,"column":20}},"59":{"start":{"line":189,"column":0},"end":{"line":189,"column":62}},"60":{"start":{"line":191,"column":0},"end":{"line":191,"column":32}},"61":{"start":{"line":193,"column":0},"end":{"line":220,"column":2}},"62":{"start":{"line":194,"column":2},"end":{"line":194,"column":52}},"63":{"start":{"line":196,"column":2},"end":{"line":196,"column":15}},"64":{"start":{"line":197,"column":2},"end":{"line":199,"column":3}},"65":{"start":{"line":198,"column":4},"end":{"line":198,"column":30}},"66":{"start":{"line":200,"column":2},"end":{"line":200,"column":73}},"67":{"start":{"line":201,"column":2},"end":{"line":201,"column":38}},"68":{"start":{"line":203,"column":2},"end":{"line":203,"column":46}},"69":{"start":{"line":204,"column":2},"end":{"line":204,"column":37}},"70":{"start":{"line":206,"column":2},"end":{"line":206,"column":19}},"71":{"start":{"line":207,"column":2},"end":{"line":213,"column":3}},"72":{"start":{"line":208,"column":4},"end":{"line":208,"column":56}},"73":{"start":{"line":209,"column":4},"end":{"line":209,"column":87}},"74":{"start":{"line":210,"column":4},"end":{"line":212,"column":5}},"75":{"start":{"line":211,"column":6},"end":{"line":211,"column":34}},"76":{"start":{"line":214,"column":2},"end":{"line":214,"column":39}},"77":{"start":{"line":216,"column":2},"end":{"line":216,"column":76}},"78":{"start":{"line":217,"column":2},"end":{"line":217,"column":51}},"79":{"start":{"line":219,"column":2},"end":{"line":219,"column":32}},"80":{"start":{"line":222,"column":0},"end":{"line":235,"column":2}},"81":{"start":{"line":223,"column":2},"end":{"line":223,"column":40}},"82":{"start":{"line":225,"column":2},"end":{"line":225,"column":47}},"83":{"start":{"line":227,"column":2},"end":{"line":227,"column":19}},"84":{"start":{"line":228,"column":2},"end":{"line":228,"column":37}},"85":{"start":{"line":229,"column":2},"end":{"line":229,"column":44}},"86":{"start":{"line":230,"column":2},"end":{"line":232,"column":3}},"87":{"start":{"line":231,"column":4},"end":{"line":231,"column":64}},"88":{"start":{"line":234,"column":2},"end":{"line":234,"column":53}},"89":{"start":{"line":261,"column":0},"end":{"line":261,"column":25}},"90":{"start":{"line":263,"column":0},"end":{"line":263,"column":45}},"91":{"start":{"line":265,"column":0},"end":{"line":265,"column":39}},"92":{"start":{"line":267,"column":0},"end":{"line":269,"column":2}},"93":{"start":{"line":268,"column":2},"end":{"line":268,"column":27}},"94":{"start":{"line":271,"column":0},"end":{"line":273,"column":2}},"95":{"start":{"line":272,"column":2},"end":{"line":272,"column":22}},"96":{"start":{"line":294,"column":0},"end":{"line":294,"column":28}},"97":{"start":{"line":296,"column":0},"end":{"line":296,"column":75}},"98":{"start":{"line":298,"column":0},"end":{"line":298,"column":65}},"99":{"start":{"line":310,"column":0},"end":{"line":318,"column":2}},"100":{"start":{"line":311,"column":2},"end":{"line":316,"column":3}},"101":{"start":{"line":312,"column":4},"end":{"line":312,"column":31}},"102":{"start":{"line":313,"column":4},"end":{"line":313,"column":68}},"103":{"start":{"line":314,"column":4},"end":{"line":314,"column":44}},"104":{"start":{"line":315,"column":4},"end":{"line":315,"column":25}},"105":{"start":{"line":317,"column":2},"end":{"line":317,"column":27}},"106":{"start":{"line":320,"column":0},"end":{"line":327,"column":2}},"107":{"start":{"line":321,"column":2},"end":{"line":326,"column":3}},"108":{"start":{"line":322,"column":4},"end":{"line":322,"column":57}},"109":{"start":{"line":323,"column":4},"end":{"line":323,"column":33}},"110":{"start":{"line":325,"column":4},"end":{"line":325,"column":24}},"111":{"start":{"line":336,"column":0},"end":{"line":336,"column":29}},"112":{"start":{"line":338,"column":0},"end":{"line":338,"column":25}},"113":{"start":{"line":340,"column":0},"end":{"line":340,"column":47}},"114":{"start":{"line":350,"column":0},"end":{"line":354,"column":2}},"115":{"start":{"line":351,"column":2},"end":{"line":351,"column":29}},"116":{"start":{"line":352,"column":2},"end":{"line":352,"column":42}},"117":{"start":{"line":353,"column":2},"end":{"line":353,"column":23}},"118":{"start":{"line":356,"column":0},"end":{"line":358,"column":2}},"119":{"start":{"line":357,"column":2},"end":{"line":357,"column":42}},"120":{"start":{"line":367,"column":0},"end":{"line":367,"column":31}},"121":{"start":{"line":369,"column":0},"end":{"line":369,"column":27}},"122":{"start":{"line":371,"column":0},"end":{"line":371,"column":46}},"123":{"start":{"line":382,"column":0},"end":{"line":388,"column":2}},"124":{"start":{"line":383,"column":2},"end":{"line":383,"column":29}},"125":{"start":{"line":384,"column":2},"end":{"line":384,"column":45}},"126":{"start":{"line":385,"column":2},"end":{"line":385,"column":46}},"127":{"start":{"line":386,"column":2},"end":{"line":386,"column":32}},"128":{"start":{"line":387,"column":2},"end":{"line":387,"column":23}},"129":{"start":{"line":390,"column":0},"end":{"line":392,"column":2}},"130":{"start":{"line":391,"column":2},"end":{"line":391,"column":51}},"131":{"start":{"line":402,"column":0},"end":{"line":402,"column":29}},"132":{"start":{"line":404,"column":0},"end":{"line":404,"column":25}},"133":{"start":{"line":406,"column":0},"end":{"line":406,"column":47}},"134":{"start":{"line":426,"column":0},"end":{"line":444,"column":2}},"135":{"start":{"line":427,"column":2},"end":{"line":427,"column":64}},"136":{"start":{"line":428,"column":2},"end":{"line":434,"column":5}},"137":{"start":{"line":429,"column":4},"end":{"line":433,"column":5}},"138":{"start":{"line":430,"column":6},"end":{"line":430,"column":65}},"139":{"start":{"line":431,"column":6},"end":{"line":431,"column":47}},"140":{"start":{"line":432,"column":6},"end":{"line":432,"column":78}},"141":{"start":{"line":435,"column":2},"end":{"line":435,"column":84}},"142":{"start":{"line":437,"column":2},"end":{"line":437,"column":47}},"143":{"start":{"line":438,"column":2},"end":{"line":441,"column":3}},"144":{"start":{"line":439,"column":4},"end":{"line":439,"column":57}},"145":{"start":{"line":440,"column":4},"end":{"line":440,"column":53}},"146":{"start":{"line":443,"column":2},"end":{"line":443,"column":23}},"147":{"start":{"line":446,"column":0},"end":{"line":461,"column":2}},"148":{"start":{"line":447,"column":2},"end":{"line":447,"column":22}},"149":{"start":{"line":449,"column":2},"end":{"line":451,"column":3}},"150":{"start":{"line":450,"column":4},"end":{"line":450,"column":36}},"151":{"start":{"line":452,"column":2},"end":{"line":460,"column":3}},"152":{"start":{"line":453,"column":4},"end":{"line":453,"column":49}},"153":{"start":{"line":454,"column":4},"end":{"line":454,"column":38}},"154":{"start":{"line":455,"column":4},"end":{"line":455,"column":45}},"155":{"start":{"line":456,"column":4},"end":{"line":458,"column":5}},"156":{"start":{"line":457,"column":6},"end":{"line":457,"column":15}},"157":{"start":{"line":459,"column":4},"end":{"line":459,"column":79}},"158":{"start":{"line":464,"column":0},"end":{"line":464,"column":25}},"159":{"start":{"line":468,"column":0},"end":{"line":468,"column":78}},"160":{"start":{"line":472,"column":0},"end":{"line":472,"column":75}},"161":{"start":{"line":478,"column":0},"end":{"line":478,"column":76}},"162":{"start":{"line":492,"column":0},"end":{"line":492,"column":33}},"163":{"start":{"line":494,"column":0},"end":{"line":494,"column":47}},"164":{"start":{"line":496,"column":0},"end":{"line":496,"column":77}},"165":{"start":{"line":510,"column":0},"end":{"line":516,"column":2}},"166":{"start":{"line":511,"column":2},"end":{"line":511,"column":29}},"167":{"start":{"line":512,"column":2},"end":{"line":512,"column":80}},"168":{"start":{"line":513,"column":2},"end":{"line":513,"column":49}},"169":{"start":{"line":514,"column":2},"end":{"line":514,"column":23}},"170":{"start":{"line":515,"column":2},"end":{"line":515,"column":27}},"171":{"start":{"line":518,"column":0},"end":{"line":521,"column":2}},"172":{"start":{"line":519,"column":2},"end":{"line":519,"column":62}},"173":{"start":{"line":520,"column":2},"end":{"line":520,"column":31}},"174":{"start":{"line":534,"column":0},"end":{"line":534,"column":25}},"175":{"start":{"line":536,"column":0},"end":{"line":536,"column":27}},"176":{"start":{"line":538,"column":0},"end":{"line":538,"column":39}},"177":{"start":{"line":542,"column":0},"end":{"line":545,"column":2}},"178":{"start":{"line":543,"column":2},"end":{"line":543,"column":101}},"179":{"start":{"line":544,"column":2},"end":{"line":544,"column":27}},"180":{"start":{"line":547,"column":0},"end":{"line":552,"column":2}},"181":{"start":{"line":548,"column":2},"end":{"line":550,"column":3}},"182":{"start":{"line":549,"column":4},"end":{"line":549,"column":37}},"183":{"start":{"line":551,"column":2},"end":{"line":551,"column":22}},"184":{"start":{"line":561,"column":0},"end":{"line":561,"column":27}},"185":{"start":{"line":563,"column":0},"end":{"line":563,"column":23}},"186":{"start":{"line":565,"column":0},"end":{"line":565,"column":57}},"187":{"start":{"line":582,"column":0},"end":{"line":593,"column":2}},"188":{"start":{"line":583,"column":2},"end":{"line":583,"column":29}},"189":{"start":{"line":585,"column":2},"end":{"line":585,"column":72}},"190":{"start":{"line":586,"column":2},"end":{"line":586,"column":45}},"191":{"start":{"line":588,"column":2},"end":{"line":588,"column":45}},"192":{"start":{"line":589,"column":2},"end":{"line":589,"column":46}},"193":{"start":{"line":590,"column":2},"end":{"line":590,"column":32}},"194":{"start":{"line":592,"column":2},"end":{"line":592,"column":23}},"195":{"start":{"line":595,"column":0},"end":{"line":598,"column":2}},"196":{"start":{"line":596,"column":2},"end":{"line":596,"column":58}},"197":{"start":{"line":597,"column":2},"end":{"line":597,"column":51}},"198":{"start":{"line":611,"column":0},"end":{"line":611,"column":34}},"199":{"start":{"line":613,"column":0},"end":{"line":613,"column":48}},"200":{"start":{"line":615,"column":0},"end":{"line":615,"column":55}},"201":{"start":{"line":622,"column":0},"end":{"line":627,"column":2}},"202":{"start":{"line":623,"column":2},"end":{"line":623,"column":29}},"203":{"start":{"line":624,"column":2},"end":{"line":624,"column":72}},"204":{"start":{"line":625,"column":2},"end":{"line":625,"column":45}},"205":{"start":{"line":626,"column":2},"end":{"line":626,"column":23}},"206":{"start":{"line":629,"column":0},"end":{"line":631,"column":2}},"207":{"start":{"line":630,"column":2},"end":{"line":630,"column":58}},"208":{"start":{"line":636,"column":0},"end":{"line":647,"column":2}},"209":{"start":{"line":654,"column":0},"end":{"line":654,"column":25}},"210":{"start":{"line":658,"column":0},"end":{"line":658,"column":21}},"211":{"start":{"line":659,"column":0},"end":{"line":697,"column":2}},"212":{"start":{"line":660,"column":2},"end":{"line":662,"column":3}},"213":{"start":{"line":661,"column":4},"end":{"line":661,"column":16}},"214":{"start":{"line":664,"column":2},"end":{"line":666,"column":3}},"215":{"start":{"line":665,"column":4},"end":{"line":665,"column":20}},"216":{"start":{"line":668,"column":2},"end":{"line":668,"column":26}},"217":{"start":{"line":669,"column":2},"end":{"line":669,"column":20}},"218":{"start":{"line":671,"column":2},"end":{"line":671,"column":34}},"219":{"start":{"line":672,"column":2},"end":{"line":674,"column":5}},"220":{"start":{"line":673,"column":4},"end":{"line":673,"column":33}},"221":{"start":{"line":676,"column":2},"end":{"line":686,"column":3}},"222":{"start":{"line":677,"column":4},"end":{"line":681,"column":5}},"223":{"start":{"line":678,"column":6},"end":{"line":678,"column":70}},"224":{"start":{"line":680,"column":6},"end":{"line":680,"column":49}},"225":{"start":{"line":683,"column":4},"end":{"line":685,"column":5}},"226":{"start":{"line":684,"column":6},"end":{"line":684,"column":42}},"227":{"start":{"line":688,"column":2},"end":{"line":690,"column":3}},"228":{"start":{"line":689,"column":4},"end":{"line":689,"column":68}},"229":{"start":{"line":692,"column":2},"end":{"line":694,"column":5}},"230":{"start":{"line":693,"column":4},"end":{"line":693,"column":38}},"231":{"start":{"line":696,"column":2},"end":{"line":696,"column":18}},"232":{"start":{"line":700,"column":0},"end":{"line":702,"column":2}},"233":{"start":{"line":701,"column":2},"end":{"line":701,"column":30}}},"branchMap":{"1":{"line":5,"type":"cond-expr","locations":[{"start":{"line":5,"column":40},"end":{"line":5,"column":57}},{"start":{"line":5,"column":60},"end":{"line":5,"column":78}}]},"2":{"line":44,"type":"if","locations":[{"start":{"line":44,"column":4},"end":{"line":44,"column":4}},{"start":{"line":44,"column":4},"end":{"line":44,"column":4}}]},"3":{"line":80,"type":"if","locations":[{"start":{"line":80,"column":2},"end":{"line":80,"column":2}},{"start":{"line":80,"column":2},"end":{"line":80,"column":2}}]},"4":{"line":90,"type":"if","locations":[{"start":{"line":90,"column":2},"end":{"line":90,"column":2}},{"start":{"line":90,"column":2},"end":{"line":90,"column":2}}]},"5":{"line":107,"type":"if","locations":[{"start":{"line":107,"column":4},"end":{"line":107,"column":4}},{"start":{"line":107,"column":4},"end":{"line":107,"column":4}}]},"6":{"line":107,"type":"binary-expr","locations":[{"start":{"line":107,"column":9},"end":{"line":107,"column":45}},{"start":{"line":107,"column":50},"end":{"line":107,"column":72}}]},"7":{"line":117,"type":"if","locations":[{"start":{"line":117,"column":4},"end":{"line":117,"column":4}},{"start":{"line":117,"column":4},"end":{"line":117,"column":4}}]},"8":{"line":117,"type":"binary-expr","locations":[{"start":{"line":117,"column":9},"end":{"line":117,"column":45}},{"start":{"line":117,"column":50},"end":{"line":117,"column":73}}]},"9":{"line":118,"type":"if","locations":[{"start":{"line":118,"column":6},"end":{"line":118,"column":6}},{"start":{"line":118,"column":6},"end":{"line":118,"column":6}}]},"10":{"line":120,"type":"if","locations":[{"start":{"line":120,"column":8},"end":{"line":120,"column":8}},{"start":{"line":120,"column":8},"end":{"line":120,"column":8}}]},"11":{"line":210,"type":"if","locations":[{"start":{"line":210,"column":4},"end":{"line":210,"column":4}},{"start":{"line":210,"column":4},"end":{"line":210,"column":4}}]},"12":{"line":217,"type":"binary-expr","locations":[{"start":{"line":217,"column":29},"end":{"line":217,"column":41}},{"start":{"line":217,"column":45},"end":{"line":217,"column":46}}]},"13":{"line":311,"type":"if","locations":[{"start":{"line":311,"column":2},"end":{"line":311,"column":2}},{"start":{"line":311,"column":2},"end":{"line":311,"column":2}}]},"14":{"line":313,"type":"binary-expr","locations":[{"start":{"line":313,"column":12},"end":{"line":313,"column":31}},{"start":{"line":313,"column":37},"end":{"line":313,"column":65}}]},"15":{"line":321,"type":"if","locations":[{"start":{"line":321,"column":2},"end":{"line":321,"column":2}},{"start":{"line":321,"column":2},"end":{"line":321,"column":2}}]},"16":{"line":385,"type":"binary-expr","locations":[{"start":{"line":385,"column":10},"end":{"line":385,"column":19}},{"start":{"line":385,"column":25},"end":{"line":385,"column":43}}]},"17":{"line":429,"type":"if","locations":[{"start":{"line":429,"column":4},"end":{"line":429,"column":4}},{"start":{"line":429,"column":4},"end":{"line":429,"column":4}}]},"18":{"line":432,"type":"cond-expr","locations":[{"start":{"line":432,"column":52},"end":{"line":432,"column":66}},{"start":{"line":432,"column":69},"end":{"line":432,"column":74}}]},"19":{"line":449,"type":"if","locations":[{"start":{"line":449,"column":2},"end":{"line":449,"column":2}},{"start":{"line":449,"column":2},"end":{"line":449,"column":2}}]},"20":{"line":456,"type":"if","locations":[{"start":{"line":456,"column":4},"end":{"line":456,"column":4}},{"start":{"line":456,"column":4},"end":{"line":456,"column":4}}]},"21":{"line":456,"type":"binary-expr","locations":[{"start":{"line":456,"column":8},"end":{"line":456,"column":16}},{"start":{"line":456,"column":21},"end":{"line":456,"column":51}}]},"22":{"line":459,"type":"cond-expr","locations":[{"start":{"line":459,"column":50},"end":{"line":459,"column":70}},{"start":{"line":459,"column":73},"end":{"line":459,"column":78}}]},"23":{"line":512,"type":"binary-expr","locations":[{"start":{"line":512,"column":10},"end":{"line":512,"column":36}},{"start":{"line":512,"column":42},"end":{"line":512,"column":77}}]},"24":{"line":543,"type":"binary-expr","locations":[{"start":{"line":543,"column":10},"end":{"line":543,"column":25}},{"start":{"line":543,"column":31},"end":{"line":543,"column":54}}]},"25":{"line":548,"type":"if","locations":[{"start":{"line":548,"column":2},"end":{"line":548,"column":2}},{"start":{"line":548,"column":2},"end":{"line":548,"column":2}}]},"26":{"line":585,"type":"binary-expr","locations":[{"start":{"line":585,"column":10},"end":{"line":585,"column":32}},{"start":{"line":585,"column":38},"end":{"line":585,"column":69}}]},"27":{"line":589,"type":"binary-expr","locations":[{"start":{"line":589,"column":10},"end":{"line":589,"column":19}},{"start":{"line":589,"column":25},"end":{"line":589,"column":43}}]},"28":{"line":624,"type":"binary-expr","locations":[{"start":{"line":624,"column":10},"end":{"line":624,"column":32}},{"start":{"line":624,"column":38},"end":{"line":624,"column":69}}]},"29":{"line":660,"type":"if","locations":[{"start":{"line":660,"column":2},"end":{"line":660,"column":2}},{"start":{"line":660,"column":2},"end":{"line":660,"column":2}}]},"30":{"line":664,"type":"if","locations":[{"start":{"line":664,"column":2},"end":{"line":664,"column":2}},{"start":{"line":664,"column":2},"end":{"line":664,"column":2}}]},"31":{"line":676,"type":"if","locations":[{"start":{"line":676,"column":2},"end":{"line":676,"column":2}},{"start":{"line":676,"column":2},"end":{"line":676,"column":2}}]},"32":{"line":677,"type":"if","locations":[{"start":{"line":677,"column":4},"end":{"line":677,"column":4}},{"start":{"line":677,"column":4},"end":{"line":677,"column":4}}]},"33":{"line":683,"type":"if","locations":[{"start":{"line":683,"column":4},"end":{"line":683,"column":4}},{"start":{"line":683,"column":4},"end":{"line":683,"column":4}}]},"34":{"line":688,"type":"if","locations":[{"start":{"line":688,"column":2},"end":{"line":688,"column":2}},{"start":{"line":688,"column":2},"end":{"line":688,"column":2}}]},"35":{"line":692,"type":"binary-expr","locations":[{"start":{"line":692,"column":31},"end":{"line":692,"column":42}},{"start":{"line":692,"column":46},"end":{"line":692,"column":48}}]}}},"/data/upstream/node-http2/lib/http.js":{"path":"/data/upstream/node-http2/lib/http.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":10,"18":1,"19":1,"20":1,"21":6,"22":1,"23":2,"24":2,"25":2,"26":2,"27":2,"28":2,"29":2,"30":2,"31":1,"32":1,"33":1,"34":2,"35":2,"36":2,"37":2,"38":1,"39":1,"40":1,"41":1,"42":0,"43":1,"44":3,"45":2,"46":1,"47":1,"48":0,"49":0,"50":0,"51":1,"52":0,"53":0,"54":0,"55":1,"56":0,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":0,"80":1,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":0,"102":0,"103":0,"104":0,"105":1,"106":1,"107":1,"108":1,"109":0,"110":0,"111":1,"112":0,"113":0,"114":1,"115":0,"116":0,"117":0,"118":0,"119":0,"120":1,"121":1,"122":0,"123":1,"124":1,"125":1,"126":0,"127":0,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":7,"139":7,"140":0,"141":0,"142":0,"143":1,"144":1,"145":1,"146":4,"147":4,"148":4,"149":0,"150":0,"151":0,"152":4,"153":0,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":0,"168":1,"169":1,"170":1,"171":0,"172":1,"173":1,"174":1,"175":1,"176":1,"177":1,"178":1,"179":2,"180":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"189":1,"190":0,"191":0,"192":0,"193":0,"194":0,"195":0,"196":0,"197":0,"198":0,"199":0,"200":1,"201":1,"202":0,"203":1,"204":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":0,"211":1,"212":1,"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"221":1,"222":1,"223":1,"224":1,"225":1,"226":1,"227":1,"228":1,"229":1,"230":1,"231":1,"232":0,"233":0,"234":1,"235":1,"236":1,"237":1,"238":1,"239":0,"240":0,"241":1,"242":1,"243":1,"244":1,"245":1,"246":1,"247":0,"248":1,"249":1,"250":1,"251":1,"252":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":0,"262":1,"263":1,"264":1,"265":1,"266":0,"267":1,"268":1,"269":1,"270":1,"271":1,"272":1,"273":1,"274":1,"275":1,"276":1,"277":1,"278":1,"279":1,"280":1,"281":1,"282":0,"283":0,"284":1,"285":1,"286":1,"287":1,"288":1,"289":1,"290":1,"291":1,"292":1,"293":1,"294":1,"295":1,"296":0,"297":1,"298":1,"299":0,"300":1,"301":1,"302":1,"303":1,"304":1,"305":1,"306":1,"307":1,"308":1,"309":1,"310":1,"311":0,"312":0,"313":0,"314":1,"315":0,"316":0,"317":0,"318":1,"319":3,"320":0,"321":3,"322":1,"323":0,"324":0,"325":0,"326":0,"327":1,"328":0,"329":0,"330":0,"331":0,"332":1,"333":0,"334":0,"335":0,"336":0,"337":1,"338":0,"339":0,"340":0,"341":0,"342":0,"343":1,"344":0,"345":0,"346":0,"347":0,"348":0,"349":1,"350":1,"351":1,"352":1,"353":1,"354":1,"355":1,"356":0,"357":0,"358":0,"359":1,"360":1,"361":1,"362":1,"363":1,"364":0,"365":0,"366":0,"367":0,"368":0,"369":0,"370":0,"371":0,"372":0,"373":0,"374":1,"375":1,"376":0,"377":1,"378":0,"379":1},"b":{"1":[1,0],"2":[2,1],"3":[0,0],"4":[0,0],"5":[1,0],"6":[1,0],"7":[1,0],"8":[1,1,0],"9":[1,0],"10":[0,0],"11":[0,1],"12":[0,0],"13":[0,0],"14":[0,0],"15":[0,1],"16":[1,1],"17":[0,1],"18":[1,0],"19":[0,7],"20":[4,0],"21":[0,4],"22":[4,4],"23":[0,1],"24":[1,1],"25":[1,0],"26":[1,1],"27":[1,1],"28":[0,0],"29":[0,0],"30":[0,0],"31":[0,0],"32":[0,0,0],"33":[0,0,0],"34":[0,1],"35":[1,0],"36":[0,0],"37":[1,1],"38":[1,1],"39":[1,1],"40":[1,0],"41":[1,1],"42":[1,0],"43":[1,0,0],"44":[1,0],"45":[1,0],"46":[0,1],"47":[1,0],"48":[0,1],"49":[0,1],"50":[1,0],"51":[1,0],"52":[1,0],"53":[0,1],"54":[1,1],"55":[0,0],"56":[0,3],"57":[3,0],"58":[0,0],"59":[0,0],"60":[0,0],"61":[0,0],"62":[0,0],"63":[0,0],"64":[0,0],"65":[0,0],"66":[0,0],"67":[0,1],"68":[1,1]},"f":{"1":79,"2":10,"3":6,"4":2,"5":0,"6":2,"7":1,"8":3,"9":0,"10":0,"11":0,"12":0,"13":1,"14":1,"15":1,"16":1,"17":0,"18":1,"19":0,"20":0,"21":0,"22":0,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":2,"30":1,"31":1,"32":1,"33":0,"34":1,"35":0,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":0,"45":0,"46":1,"47":1,"48":0,"49":0,"50":3,"51":0,"52":0,"53":0,"54":0,"55":0,"56":1,"57":1,"58":0,"59":0,"60":0,"61":0},"fnMap":{"1":{"name":"noop","line":133,"loc":{"start":{"line":133,"column":0},"end":{"line":133,"column":16}}},"2":{"name":"(anonymous_2)","line":142,"loc":{"start":{"line":142,"column":9},"end":{"line":142,"column":20}}},"3":{"name":"(anonymous_3)","line":148,"loc":{"start":{"line":148,"column":16},"end":{"line":148,"column":33}}},"4":{"name":"IncomingMessage","line":155,"loc":{"start":{"line":155,"column":0},"end":{"line":155,"column":33}}},"5":{"name":"noop","line":174,"loc":{"start":{"line":174,"column":39},"end":{"line":174,"column":55}}},"6":{"name":"OutgoingMessage","line":179,"loc":{"start":{"line":179,"column":0},"end":{"line":179,"column":27}}},"7":{"name":"_write","line":190,"loc":{"start":{"line":190,"column":35},"end":{"line":190,"column":78}}},"8":{"name":"_finish","line":198,"loc":{"start":{"line":198,"column":36},"end":{"line":198,"column":55}}},"9":{"name":"setHeader","line":206,"loc":{"start":{"line":206,"column":38},"end":{"line":206,"column":70}}},"10":{"name":"removeHeader","line":214,"loc":{"start":{"line":214,"column":41},"end":{"line":214,"column":69}}},"11":{"name":"getHeader","line":222,"loc":{"start":{"line":222,"column":38},"end":{"line":222,"column":63}}},"12":{"name":"noop","line":226,"loc":{"start":{"line":226,"column":39},"end":{"line":226,"column":55}}},"13":{"name":"Server","line":240,"loc":{"start":{"line":240,"column":0},"end":{"line":240,"column":25}}},"14":{"name":"(anonymous_14)","line":257,"loc":{"start":{"line":257,"column":40},"end":{"line":257,"column":57}}},"15":{"name":"_start","line":285,"loc":{"start":{"line":285,"column":26},"end":{"line":285,"column":50}}},"16":{"name":"_onStream","line":294,"loc":{"start":{"line":294,"column":24},"end":{"line":294,"column":51}}},"17":{"name":"_fallback","line":306,"loc":{"start":{"line":306,"column":29},"end":{"line":306,"column":56}}},"18":{"name":"listen","line":320,"loc":{"start":{"line":320,"column":26},"end":{"line":320,"column":58}}},"19":{"name":"close","line":326,"loc":{"start":{"line":326,"column":25},"end":{"line":326,"column":50}}},"20":{"name":"setTimeout","line":331,"loc":{"start":{"line":331,"column":39},"end":{"line":331,"column":78}}},"21":{"name":"getTimeout","line":338,"loc":{"start":{"line":338,"column":7},"end":{"line":338,"column":29}}},"22":{"name":"setTimeout","line":345,"loc":{"start":{"line":345,"column":7},"end":{"line":345,"column":36}}},"23":{"name":"on","line":356,"loc":{"start":{"line":356,"column":22},"end":{"line":356,"column":51}}},"24":{"name":"createServer","line":364,"loc":{"start":{"line":364,"column":0},"end":{"line":364,"column":48}}},"25":{"name":"IncomingRequest","line":382,"loc":{"start":{"line":382,"column":0},"end":{"line":382,"column":33}}},"26":{"name":"_onHeaders","line":391,"loc":{"start":{"line":391,"column":39},"end":{"line":391,"column":68}}},"27":{"name":"OutgoingResponse","line":458,"loc":{"start":{"line":458,"column":0},"end":{"line":458,"column":34}}},"28":{"name":"writeHead","line":471,"loc":{"start":{"line":471,"column":39},"end":{"line":471,"column":93}}},"29":{"name":"_implicitHeaders","line":497,"loc":{"start":{"line":497,"column":46},"end":{"line":497,"column":74}}},"30":{"name":"write","line":503,"loc":{"start":{"line":503,"column":35},"end":{"line":503,"column":52}}},"31":{"name":"end","line":508,"loc":{"start":{"line":508,"column":33},"end":{"line":508,"column":48}}},"32":{"name":"_onRequestHeaders","line":513,"loc":{"start":{"line":513,"column":47},"end":{"line":513,"column":83}}},"33":{"name":"push","line":517,"loc":{"start":{"line":517,"column":34},"end":{"line":517,"column":57}}},"34":{"name":"on","line":548,"loc":{"start":{"line":548,"column":32},"end":{"line":548,"column":61}}},"35":{"name":"request","line":564,"loc":{"start":{"line":564,"column":18},"end":{"line":564,"column":54}}},"36":{"name":"get","line":567,"loc":{"start":{"line":567,"column":14},"end":{"line":567,"column":46}}},"37":{"name":"Agent","line":574,"loc":{"start":{"line":574,"column":0},"end":{"line":574,"column":24}}},"38":{"name":"request","line":596,"loc":{"start":{"line":596,"column":26},"end":{"line":596,"column":62}}},"39":{"name":"(anonymous_39)","line":633,"loc":{"start":{"line":633,"column":30},"end":{"line":633,"column":47}}},"40":{"name":"negotiated","line":642,"loc":{"start":{"line":642,"column":4},"end":{"line":642,"column":26}}},"41":{"name":"(anonymous_41)","line":660,"loc":{"start":{"line":660,"column":19},"end":{"line":660,"column":38}}},"42":{"name":"get","line":673,"loc":{"start":{"line":673,"column":22},"end":{"line":673,"column":54}}},"43":{"name":"unbundleSocket","line":679,"loc":{"start":{"line":679,"column":0},"end":{"line":679,"column":32}}},"44":{"name":"getMaxSockets","line":691,"loc":{"start":{"line":691,"column":7},"end":{"line":691,"column":32}}},"45":{"name":"setMaxSockets","line":694,"loc":{"start":{"line":694,"column":7},"end":{"line":694,"column":37}}},"46":{"name":"OutgoingRequest","line":704,"loc":{"start":{"line":704,"column":0},"end":{"line":704,"column":27}}},"47":{"name":"_start","line":714,"loc":{"start":{"line":714,"column":35},"end":{"line":714,"column":68}}},"48":{"name":"_fallback","line":746,"loc":{"start":{"line":746,"column":38},"end":{"line":746,"column":66}}},"49":{"name":"setPriority","line":753,"loc":{"start":{"line":753,"column":40},"end":{"line":753,"column":71}}},"50":{"name":"on","line":763,"loc":{"start":{"line":763,"column":31},"end":{"line":763,"column":60}}},"51":{"name":"setNoDelay","line":772,"loc":{"start":{"line":772,"column":39},"end":{"line":772,"column":68}}},"52":{"name":"setSocketKeepAlive","line":780,"loc":{"start":{"line":780,"column":47},"end":{"line":780,"column":97}}},"53":{"name":"setTimeout","line":788,"loc":{"start":{"line":788,"column":39},"end":{"line":788,"column":78}}},"54":{"name":"abort","line":797,"loc":{"start":{"line":797,"column":34},"end":{"line":797,"column":51}}},"55":{"name":"_onPromise","line":808,"loc":{"start":{"line":808,"column":39},"end":{"line":808,"column":76}}},"56":{"name":"IncomingResponse","line":823,"loc":{"start":{"line":823,"column":0},"end":{"line":823,"column":34}}},"57":{"name":"_onHeaders","line":829,"loc":{"start":{"line":829,"column":40},"end":{"line":829,"column":69}}},"58":{"name":"IncomingPromise","line":858,"loc":{"start":{"line":858,"column":0},"end":{"line":858,"column":57}}},"59":{"name":"noop","line":860,"loc":{"start":{"line":860,"column":17},"end":{"line":860,"column":33}}},"60":{"name":"cancel","line":877,"loc":{"start":{"line":877,"column":35},"end":{"line":877,"column":53}}},"61":{"name":"setPriority","line":881,"loc":{"start":{"line":881,"column":40},"end":{"line":881,"column":71}}}},"statementMap":{"1":{"start":{"line":110,"column":0},"end":{"line":110,"column":25}},"2":{"start":{"line":111,"column":0},"end":{"line":111,"column":25}},"3":{"start":{"line":112,"column":0},"end":{"line":112,"column":27}},"4":{"start":{"line":113,"column":0},"end":{"line":113,"column":50}},"5":{"start":{"line":114,"column":0},"end":{"line":114,"column":48}},"6":{"start":{"line":115,"column":0},"end":{"line":115,"column":42}},"7":{"start":{"line":116,"column":0},"end":{"line":116,"column":42}},"8":{"start":{"line":117,"column":0},"end":{"line":117,"column":46}},"9":{"start":{"line":118,"column":0},"end":{"line":118,"column":27}},"10":{"start":{"line":119,"column":0},"end":{"line":119,"column":29}},"11":{"start":{"line":121,"column":0},"end":{"line":121,"column":41}},"12":{"start":{"line":122,"column":0},"end":{"line":122,"column":42}},"13":{"start":{"line":123,"column":0},"end":{"line":123,"column":42}},"14":{"start":{"line":127,"column":0},"end":{"line":127,"column":45}},"15":{"start":{"line":133,"column":0},"end":{"line":133,"column":18}},"16":{"start":{"line":134,"column":0},"end":{"line":143,"column":2}},"17":{"start":{"line":142,"column":22},"end":{"line":142,"column":34}},"18":{"start":{"line":146,"column":0},"end":{"line":146,"column":25}},"19":{"start":{"line":147,"column":0},"end":{"line":147,"column":95}},"20":{"start":{"line":148,"column":0},"end":{"line":150,"column":3}},"21":{"start":{"line":149,"column":2},"end":{"line":149,"column":65}},"22":{"start":{"line":155,"column":0},"end":{"line":171,"column":1}},"23":{"start":{"line":157,"column":2},"end":{"line":157,"column":25}},"24":{"start":{"line":158,"column":2},"end":{"line":158,"column":20}},"25":{"start":{"line":159,"column":2},"end":{"line":159,"column":37}},"26":{"start":{"line":161,"column":2},"end":{"line":161,"column":55}},"27":{"start":{"line":165,"column":2},"end":{"line":165,"column":27}},"28":{"start":{"line":166,"column":2},"end":{"line":166,"column":28}},"29":{"start":{"line":167,"column":2},"end":{"line":167,"column":28}},"30":{"start":{"line":170,"column":2},"end":{"line":170,"column":53}},"31":{"start":{"line":172,"column":0},"end":{"line":172,"column":110}},"32":{"start":{"line":174,"column":0},"end":{"line":174,"column":58}},"33":{"start":{"line":179,"column":0},"end":{"line":187,"column":1}},"34":{"start":{"line":181,"column":2},"end":{"line":181,"column":22}},"35":{"start":{"line":183,"column":2},"end":{"line":183,"column":21}},"36":{"start":{"line":184,"column":2},"end":{"line":184,"column":27}},"37":{"start":{"line":186,"column":2},"end":{"line":186,"column":45}},"38":{"start":{"line":188,"column":0},"end":{"line":188,"column":107}},"39":{"start":{"line":190,"column":0},"end":{"line":196,"column":2}},"40":{"start":{"line":191,"column":2},"end":{"line":195,"column":3}},"41":{"start":{"line":192,"column":4},"end":{"line":192,"column":49}},"42":{"start":{"line":194,"column":4},"end":{"line":194,"column":75}},"43":{"start":{"line":198,"column":0},"end":{"line":204,"column":2}},"44":{"start":{"line":199,"column":2},"end":{"line":203,"column":3}},"45":{"start":{"line":200,"column":4},"end":{"line":200,"column":22}},"46":{"start":{"line":202,"column":4},"end":{"line":202,"column":49}},"47":{"start":{"line":206,"column":0},"end":{"line":212,"column":2}},"48":{"start":{"line":207,"column":2},"end":{"line":211,"column":3}},"49":{"start":{"line":208,"column":4},"end":{"line":208,"column":63}},"50":{"start":{"line":210,"column":4},"end":{"line":210,"column":46}},"51":{"start":{"line":214,"column":0},"end":{"line":220,"column":2}},"52":{"start":{"line":215,"column":2},"end":{"line":219,"column":3}},"53":{"start":{"line":216,"column":4},"end":{"line":216,"column":66}},"54":{"start":{"line":218,"column":4},"end":{"line":218,"column":45}},"55":{"start":{"line":222,"column":0},"end":{"line":224,"column":2}},"56":{"start":{"line":223,"column":2},"end":{"line":223,"column":43}},"57":{"start":{"line":226,"column":0},"end":{"line":226,"column":58}},"58":{"start":{"line":231,"column":0},"end":{"line":231,"column":36}},"59":{"start":{"line":232,"column":0},"end":{"line":232,"column":24}},"60":{"start":{"line":233,"column":0},"end":{"line":233,"column":42}},"61":{"start":{"line":234,"column":0},"end":{"line":234,"column":44}},"62":{"start":{"line":235,"column":0},"end":{"line":235,"column":42}},"63":{"start":{"line":240,"column":0},"end":{"line":281,"column":1}},"64":{"start":{"line":241,"column":2},"end":{"line":241,"column":26}},"65":{"start":{"line":243,"column":2},"end":{"line":243,"column":74}},"66":{"start":{"line":244,"column":2},"end":{"line":244,"column":36}},"67":{"start":{"line":246,"column":2},"end":{"line":246,"column":37}},"68":{"start":{"line":247,"column":2},"end":{"line":247,"column":43}},"69":{"start":{"line":250,"column":2},"end":{"line":278,"column":3}},"70":{"start":{"line":251,"column":4},"end":{"line":251,"column":58}},"71":{"start":{"line":252,"column":4},"end":{"line":252,"column":23}},"72":{"start":{"line":253,"column":4},"end":{"line":253,"column":72}},"73":{"start":{"line":254,"column":4},"end":{"line":254,"column":47}},"74":{"start":{"line":255,"column":4},"end":{"line":255,"column":79}},"75":{"start":{"line":256,"column":4},"end":{"line":256,"column":56}},"76":{"start":{"line":257,"column":4},"end":{"line":263,"column":7}},"77":{"start":{"line":258,"column":6},"end":{"line":262,"column":7}},"78":{"start":{"line":259,"column":8},"end":{"line":259,"column":22}},"79":{"start":{"line":261,"column":8},"end":{"line":261,"column":25}},"80":{"start":{"line":264,"column":4},"end":{"line":264,"column":64}},"81":{"start":{"line":268,"column":7},"end":{"line":278,"column":3}},"82":{"start":{"line":269,"column":4},"end":{"line":269,"column":60}},"83":{"start":{"line":270,"column":4},"end":{"line":270,"column":25}},"84":{"start":{"line":271,"column":4},"end":{"line":271,"column":43}},"85":{"start":{"line":276,"column":4},"end":{"line":276,"column":81}},"86":{"start":{"line":277,"column":4},"end":{"line":277,"column":95}},"87":{"start":{"line":280,"column":2},"end":{"line":280,"column":58}},"88":{"start":{"line":282,"column":0},"end":{"line":282,"column":93}},"89":{"start":{"line":285,"column":0},"end":{"line":304,"column":2}},"90":{"start":{"line":286,"column":2},"end":{"line":286,"column":67}},"91":{"start":{"line":288,"column":2},"end":{"line":289,"column":50}},"92":{"start":{"line":291,"column":2},"end":{"line":291,"column":39}},"93":{"start":{"line":293,"column":2},"end":{"line":293,"column":18}},"94":{"start":{"line":294,"column":2},"end":{"line":299,"column":5}},"95":{"start":{"line":295,"column":4},"end":{"line":295,"column":48}},"96":{"start":{"line":296,"column":4},"end":{"line":296,"column":46}},"97":{"start":{"line":298,"column":4},"end":{"line":298,"column":78}},"98":{"start":{"line":301,"column":2},"end":{"line":301,"column":60}},"99":{"start":{"line":303,"column":2},"end":{"line":303,"column":44}},"100":{"start":{"line":306,"column":0},"end":{"line":315,"column":2}},"101":{"start":{"line":307,"column":2},"end":{"line":308,"column":49}},"102":{"start":{"line":310,"column":2},"end":{"line":312,"column":3}},"103":{"start":{"line":311,"column":4},"end":{"line":311,"column":64}},"104":{"start":{"line":314,"column":2},"end":{"line":314,"column":34}},"105":{"start":{"line":320,"column":0},"end":{"line":324,"column":2}},"106":{"start":{"line":321,"column":2},"end":{"line":322,"column":55}},"107":{"start":{"line":323,"column":2},"end":{"line":323,"column":53}},"108":{"start":{"line":326,"column":0},"end":{"line":329,"column":2}},"109":{"start":{"line":327,"column":2},"end":{"line":327,"column":35}},"110":{"start":{"line":328,"column":2},"end":{"line":328,"column":31}},"111":{"start":{"line":331,"column":0},"end":{"line":335,"column":2}},"112":{"start":{"line":332,"column":2},"end":{"line":334,"column":3}},"113":{"start":{"line":333,"column":4},"end":{"line":333,"column":47}},"114":{"start":{"line":337,"column":0},"end":{"line":350,"column":3}},"115":{"start":{"line":339,"column":4},"end":{"line":343,"column":5}},"116":{"start":{"line":340,"column":6},"end":{"line":340,"column":34}},"117":{"start":{"line":342,"column":6},"end":{"line":342,"column":23}},"118":{"start":{"line":346,"column":4},"end":{"line":348,"column":5}},"119":{"start":{"line":347,"column":6},"end":{"line":347,"column":37}},"120":{"start":{"line":356,"column":0},"end":{"line":362,"column":2}},"121":{"start":{"line":357,"column":2},"end":{"line":361,"column":3}},"122":{"start":{"line":358,"column":4},"end":{"line":358,"column":48}},"123":{"start":{"line":360,"column":4},"end":{"line":360,"column":58}},"124":{"start":{"line":364,"column":0},"end":{"line":377,"column":1}},"125":{"start":{"line":365,"column":2},"end":{"line":368,"column":3}},"126":{"start":{"line":366,"column":4},"end":{"line":366,"column":30}},"127":{"start":{"line":367,"column":4},"end":{"line":367,"column":24}},"128":{"start":{"line":370,"column":2},"end":{"line":370,"column":35}},"129":{"start":{"line":372,"column":2},"end":{"line":374,"column":3}},"130":{"start":{"line":373,"column":4},"end":{"line":373,"column":42}},"131":{"start":{"line":376,"column":2},"end":{"line":376,"column":16}},"132":{"start":{"line":382,"column":0},"end":{"line":384,"column":1}},"133":{"start":{"line":383,"column":2},"end":{"line":383,"column":37}},"134":{"start":{"line":385,"column":0},"end":{"line":385,"column":114}},"135":{"start":{"line":391,"column":0},"end":{"line":453,"column":2}},"136":{"start":{"line":395,"column":2},"end":{"line":403,"column":4}},"137":{"start":{"line":404,"column":2},"end":{"line":411,"column":3}},"138":{"start":{"line":405,"column":4},"end":{"line":405,"column":35}},"139":{"start":{"line":406,"column":4},"end":{"line":410,"column":5}},"140":{"start":{"line":407,"column":6},"end":{"line":407,"column":84}},"141":{"start":{"line":408,"column":6},"end":{"line":408,"column":50}},"142":{"start":{"line":409,"column":6},"end":{"line":409,"column":13}},"143":{"start":{"line":414,"column":2},"end":{"line":414,"column":20}},"144":{"start":{"line":426,"column":2},"end":{"line":431,"column":4}},"145":{"start":{"line":432,"column":2},"end":{"line":444,"column":3}},"146":{"start":{"line":433,"column":4},"end":{"line":443,"column":5}},"147":{"start":{"line":434,"column":6},"end":{"line":434,"column":32}},"148":{"start":{"line":435,"column":6},"end":{"line":439,"column":7}},"149":{"start":{"line":436,"column":8},"end":{"line":436,"column":77}},"150":{"start":{"line":437,"column":8},"end":{"line":437,"column":52}},"151":{"start":{"line":438,"column":8},"end":{"line":438,"column":15}},"152":{"start":{"line":440,"column":6},"end":{"line":440,"column":34}},"153":{"start":{"line":442,"column":6},"end":{"line":442,"column":41}},"154":{"start":{"line":447,"column":2},"end":{"line":447,"column":32}},"155":{"start":{"line":450,"column":2},"end":{"line":451,"column":80}},"156":{"start":{"line":452,"column":2},"end":{"line":452,"column":21}},"157":{"start":{"line":458,"column":0},"end":{"line":468,"column":1}},"158":{"start":{"line":459,"column":2},"end":{"line":459,"column":29}},"159":{"start":{"line":461,"column":2},"end":{"line":461,"column":55}},"160":{"start":{"line":463,"column":2},"end":{"line":463,"column":23}},"161":{"start":{"line":464,"column":2},"end":{"line":464,"column":30}},"162":{"start":{"line":465,"column":2},"end":{"line":465,"column":23}},"163":{"start":{"line":467,"column":2},"end":{"line":467,"column":65}},"164":{"start":{"line":469,"column":0},"end":{"line":469,"column":116}},"165":{"start":{"line":471,"column":0},"end":{"line":495,"column":2}},"166":{"start":{"line":472,"column":2},"end":{"line":476,"column":3}},"167":{"start":{"line":473,"column":4},"end":{"line":473,"column":93}},"168":{"start":{"line":475,"column":4},"end":{"line":475,"column":27}},"169":{"start":{"line":478,"column":2},"end":{"line":478,"column":26}},"170":{"start":{"line":480,"column":2},"end":{"line":482,"column":3}},"171":{"start":{"line":481,"column":4},"end":{"line":481,"column":54}},"172":{"start":{"line":484,"column":2},"end":{"line":486,"column":3}},"173":{"start":{"line":485,"column":4},"end":{"line":485,"column":52}},"174":{"start":{"line":488,"column":2},"end":{"line":488,"column":92}},"175":{"start":{"line":490,"column":2},"end":{"line":490,"column":58}},"176":{"start":{"line":492,"column":2},"end":{"line":492,"column":37}},"177":{"start":{"line":494,"column":2},"end":{"line":494,"column":26}},"178":{"start":{"line":497,"column":0},"end":{"line":501,"column":2}},"179":{"start":{"line":498,"column":2},"end":{"line":500,"column":3}},"180":{"start":{"line":499,"column":4},"end":{"line":499,"column":36}},"181":{"start":{"line":503,"column":0},"end":{"line":506,"column":2}},"182":{"start":{"line":504,"column":2},"end":{"line":504,"column":26}},"183":{"start":{"line":505,"column":2},"end":{"line":505,"column":64}},"184":{"start":{"line":508,"column":0},"end":{"line":511,"column":2}},"185":{"start":{"line":509,"column":2},"end":{"line":509,"column":26}},"186":{"start":{"line":510,"column":2},"end":{"line":510,"column":62}},"187":{"start":{"line":513,"column":0},"end":{"line":515,"column":2}},"188":{"start":{"line":514,"column":2},"end":{"line":514,"column":33}},"189":{"start":{"line":517,"column":0},"end":{"line":544,"column":2}},"190":{"start":{"line":518,"column":2},"end":{"line":521,"column":3}},"191":{"start":{"line":519,"column":4},"end":{"line":520,"column":40}},"192":{"start":{"line":523,"column":2},"end":{"line":525,"column":3}},"193":{"start":{"line":524,"column":4},"end":{"line":524,"column":33}},"194":{"start":{"line":527,"column":2},"end":{"line":529,"column":3}},"195":{"start":{"line":528,"column":4},"end":{"line":528,"column":51}},"196":{"start":{"line":531,"column":2},"end":{"line":536,"column":22}},"197":{"start":{"line":538,"column":2},"end":{"line":539,"column":96}},"198":{"start":{"line":541,"column":2},"end":{"line":541,"column":48}},"199":{"start":{"line":543,"column":2},"end":{"line":543,"column":42}},"200":{"start":{"line":548,"column":0},"end":{"line":554,"column":2}},"201":{"start":{"line":549,"column":2},"end":{"line":553,"column":3}},"202":{"start":{"line":550,"column":4},"end":{"line":550,"column":48}},"203":{"start":{"line":552,"column":4},"end":{"line":552,"column":61}},"204":{"start":{"line":559,"column":0},"end":{"line":559,"column":40}},"205":{"start":{"line":560,"column":0},"end":{"line":560,"column":42}},"206":{"start":{"line":561,"column":0},"end":{"line":561,"column":44}},"207":{"start":{"line":562,"column":0},"end":{"line":562,"column":22}},"208":{"start":{"line":563,"column":0},"end":{"line":563,"column":32}},"209":{"start":{"line":564,"column":0},"end":{"line":566,"column":2}},"210":{"start":{"line":565,"column":2},"end":{"line":565,"column":75}},"211":{"start":{"line":567,"column":0},"end":{"line":569,"column":2}},"212":{"start":{"line":568,"column":2},"end":{"line":568,"column":71}},"213":{"start":{"line":574,"column":0},"end":{"line":593,"column":1}},"214":{"start":{"line":575,"column":2},"end":{"line":575,"column":26}},"215":{"start":{"line":577,"column":2},"end":{"line":577,"column":26}},"216":{"start":{"line":579,"column":2},"end":{"line":579,"column":36}},"217":{"start":{"line":580,"column":2},"end":{"line":580,"column":74}},"218":{"start":{"line":581,"column":2},"end":{"line":581,"column":22}},"219":{"start":{"line":587,"column":2},"end":{"line":589,"column":5}},"220":{"start":{"line":591,"column":2},"end":{"line":591,"column":42}},"221":{"start":{"line":592,"column":2},"end":{"line":592,"column":44}},"222":{"start":{"line":594,"column":0},"end":{"line":594,"column":91}},"223":{"start":{"line":596,"column":0},"end":{"line":671,"column":2}},"224":{"start":{"line":597,"column":2},"end":{"line":599,"column":3}},"225":{"start":{"line":598,"column":4},"end":{"line":598,"column":33}},"226":{"start":{"line":601,"column":2},"end":{"line":601,"column":59}},"227":{"start":{"line":602,"column":2},"end":{"line":602,"column":50}},"228":{"start":{"line":603,"column":2},"end":{"line":603,"column":65}},"229":{"start":{"line":604,"column":2},"end":{"line":604,"column":37}},"230":{"start":{"line":605,"column":2},"end":{"line":605,"column":37}},"231":{"start":{"line":607,"column":2},"end":{"line":610,"column":3}},"232":{"start":{"line":608,"column":4},"end":{"line":608,"column":85}},"233":{"start":{"line":609,"column":4},"end":{"line":609,"column":70}},"234":{"start":{"line":612,"column":2},"end":{"line":612,"column":47}},"235":{"start":{"line":614,"column":2},"end":{"line":616,"column":3}},"236":{"start":{"line":615,"column":4},"end":{"line":615,"column":37}},"237":{"start":{"line":618,"column":2},"end":{"line":618,"column":51}},"238":{"start":{"line":621,"column":2},"end":{"line":668,"column":3}},"239":{"start":{"line":622,"column":4},"end":{"line":622,"column":39}},"240":{"start":{"line":623,"column":4},"end":{"line":623,"column":53}},"241":{"start":{"line":628,"column":4},"end":{"line":628,"column":24}},"242":{"start":{"line":629,"column":4},"end":{"line":629,"column":72}},"243":{"start":{"line":630,"column":4},"end":{"line":630,"column":37}},"244":{"start":{"line":631,"column":4},"end":{"line":631,"column":46}},"245":{"start":{"line":633,"column":4},"end":{"line":639,"column":7}},"246":{"start":{"line":634,"column":6},"end":{"line":638,"column":7}},"247":{"start":{"line":635,"column":8},"end":{"line":635,"column":21}},"248":{"start":{"line":637,"column":8},"end":{"line":637,"column":47}},"249":{"start":{"line":641,"column":4},"end":{"line":641,"column":20}},"250":{"start":{"line":642,"column":4},"end":{"line":658,"column":5}},"251":{"start":{"line":643,"column":6},"end":{"line":657,"column":7}},"252":{"start":{"line":644,"column":8},"end":{"line":656,"column":9}},"253":{"start":{"line":645,"column":10},"end":{"line":645,"column":50}},"254":{"start":{"line":646,"column":10},"end":{"line":646,"column":46}},"255":{"start":{"line":647,"column":10},"end":{"line":647,"column":75}},"256":{"start":{"line":648,"column":10},"end":{"line":649,"column":59}},"257":{"start":{"line":650,"column":10},"end":{"line":650,"column":48}},"258":{"start":{"line":651,"column":10},"end":{"line":651,"column":56}},"259":{"start":{"line":652,"column":10},"end":{"line":652,"column":41}},"260":{"start":{"line":653,"column":10},"end":{"line":653,"column":35}},"261":{"start":{"line":655,"column":10},"end":{"line":655,"column":36}},"262":{"start":{"line":660,"column":4},"end":{"line":667,"column":7}},"263":{"start":{"line":661,"column":6},"end":{"line":661,"column":21}},"264":{"start":{"line":662,"column":6},"end":{"line":666,"column":7}},"265":{"start":{"line":663,"column":8},"end":{"line":663,"column":57}},"266":{"start":{"line":665,"column":8},"end":{"line":665,"column":40}},"267":{"start":{"line":670,"column":2},"end":{"line":670,"column":17}},"268":{"start":{"line":673,"column":0},"end":{"line":677,"column":2}},"269":{"start":{"line":674,"column":2},"end":{"line":674,"column":48}},"270":{"start":{"line":675,"column":2},"end":{"line":675,"column":16}},"271":{"start":{"line":676,"column":2},"end":{"line":676,"column":17}},"272":{"start":{"line":679,"column":0},"end":{"line":688,"column":1}},"273":{"start":{"line":680,"column":2},"end":{"line":680,"column":36}},"274":{"start":{"line":681,"column":2},"end":{"line":681,"column":35}},"275":{"start":{"line":682,"column":2},"end":{"line":682,"column":40}},"276":{"start":{"line":683,"column":2},"end":{"line":683,"column":37}},"277":{"start":{"line":684,"column":2},"end":{"line":684,"column":37}},"278":{"start":{"line":685,"column":2},"end":{"line":685,"column":18}},"279":{"start":{"line":686,"column":2},"end":{"line":686,"column":23}},"280":{"start":{"line":687,"column":2},"end":{"line":687,"column":22}},"281":{"start":{"line":690,"column":0},"end":{"line":697,"column":3}},"282":{"start":{"line":692,"column":4},"end":{"line":692,"column":39}},"283":{"start":{"line":695,"column":4},"end":{"line":695,"column":40}},"284":{"start":{"line":699,"column":0},"end":{"line":699,"column":34}},"285":{"start":{"line":704,"column":0},"end":{"line":711,"column":1}},"286":{"start":{"line":705,"column":2},"end":{"line":705,"column":29}},"287":{"start":{"line":707,"column":2},"end":{"line":707,"column":24}},"288":{"start":{"line":709,"column":2},"end":{"line":709,"column":26}},"289":{"start":{"line":710,"column":2},"end":{"line":710,"column":26}},"290":{"start":{"line":712,"column":0},"end":{"line":712,"column":114}},"291":{"start":{"line":714,"column":0},"end":{"line":744,"column":2}},"292":{"start":{"line":715,"column":2},"end":{"line":715,"column":23}},"293":{"start":{"line":717,"column":2},"end":{"line":717,"column":55}},"294":{"start":{"line":719,"column":2},"end":{"line":719,"column":19}},"295":{"start":{"line":720,"column":2},"end":{"line":722,"column":3}},"296":{"start":{"line":721,"column":4},"end":{"line":721,"column":40}},"297":{"start":{"line":723,"column":2},"end":{"line":723,"column":22}},"298":{"start":{"line":725,"column":2},"end":{"line":727,"column":3}},"299":{"start":{"line":726,"column":4},"end":{"line":726,"column":83}},"300":{"start":{"line":729,"column":2},"end":{"line":729,"column":53}},"301":{"start":{"line":730,"column":2},"end":{"line":730,"column":38}},"302":{"start":{"line":731,"column":2},"end":{"line":731,"column":34}},"303":{"start":{"line":732,"column":2},"end":{"line":732,"column":34}},"304":{"start":{"line":734,"column":2},"end":{"line":735,"column":98}},"305":{"start":{"line":736,"column":2},"end":{"line":736,"column":31}},"306":{"start":{"line":738,"column":2},"end":{"line":738,"column":35}},"307":{"start":{"line":740,"column":2},"end":{"line":740,"column":51}},"308":{"start":{"line":741,"column":2},"end":{"line":741,"column":69}},"309":{"start":{"line":743,"column":2},"end":{"line":743,"column":56}},"310":{"start":{"line":746,"column":0},"end":{"line":751,"column":2}},"311":{"start":{"line":747,"column":2},"end":{"line":747,"column":39}},"312":{"start":{"line":748,"column":2},"end":{"line":748,"column":35}},"313":{"start":{"line":750,"column":2},"end":{"line":750,"column":21}},"314":{"start":{"line":753,"column":0},"end":{"line":759,"column":2}},"315":{"start":{"line":754,"column":2},"end":{"line":758,"column":3}},"316":{"start":{"line":755,"column":4},"end":{"line":755,"column":35}},"317":{"start":{"line":757,"column":4},"end":{"line":757,"column":63}},"318":{"start":{"line":763,"column":0},"end":{"line":769,"column":2}},"319":{"start":{"line":764,"column":2},"end":{"line":768,"column":3}},"320":{"start":{"line":765,"column":4},"end":{"line":765,"column":48}},"321":{"start":{"line":767,"column":4},"end":{"line":767,"column":61}},"322":{"start":{"line":772,"column":0},"end":{"line":778,"column":2}},"323":{"start":{"line":773,"column":2},"end":{"line":777,"column":3}},"324":{"start":{"line":774,"column":4},"end":{"line":774,"column":37}},"325":{"start":{"line":775,"column":9},"end":{"line":777,"column":3}},"326":{"start":{"line":776,"column":4},"end":{"line":776,"column":59}},"327":{"start":{"line":780,"column":0},"end":{"line":786,"column":2}},"328":{"start":{"line":781,"column":2},"end":{"line":785,"column":3}},"329":{"start":{"line":782,"column":4},"end":{"line":782,"column":58}},"330":{"start":{"line":783,"column":9},"end":{"line":785,"column":3}},"331":{"start":{"line":784,"column":4},"end":{"line":784,"column":80}},"332":{"start":{"line":788,"column":0},"end":{"line":794,"column":2}},"333":{"start":{"line":789,"column":2},"end":{"line":793,"column":3}},"334":{"start":{"line":790,"column":4},"end":{"line":790,"column":47}},"335":{"start":{"line":791,"column":9},"end":{"line":793,"column":3}},"336":{"start":{"line":792,"column":4},"end":{"line":792,"column":69}},"337":{"start":{"line":797,"column":0},"end":{"line":805,"column":2}},"338":{"start":{"line":798,"column":2},"end":{"line":804,"column":3}},"339":{"start":{"line":799,"column":4},"end":{"line":799,"column":25}},"340":{"start":{"line":800,"column":9},"end":{"line":804,"column":3}},"341":{"start":{"line":801,"column":4},"end":{"line":801,"column":32}},"342":{"start":{"line":803,"column":4},"end":{"line":803,"column":45}},"343":{"start":{"line":808,"column":0},"end":{"line":818,"column":2}},"344":{"start":{"line":809,"column":2},"end":{"line":809,"column":71}},"345":{"start":{"line":811,"column":2},"end":{"line":811,"column":53}},"346":{"start":{"line":813,"column":2},"end":{"line":817,"column":3}},"347":{"start":{"line":814,"column":4},"end":{"line":814,"column":31}},"348":{"start":{"line":816,"column":4},"end":{"line":816,"column":21}},"349":{"start":{"line":823,"column":0},"end":{"line":825,"column":1}},"350":{"start":{"line":824,"column":2},"end":{"line":824,"column":37}},"351":{"start":{"line":826,"column":0},"end":{"line":826,"column":116}},"352":{"start":{"line":829,"column":0},"end":{"line":853,"column":2}},"353":{"start":{"line":833,"column":2},"end":{"line":833,"column":25}},"354":{"start":{"line":841,"column":2},"end":{"line":841,"column":38}},"355":{"start":{"line":842,"column":2},"end":{"line":846,"column":3}},"356":{"start":{"line":843,"column":4},"end":{"line":843,"column":83}},"357":{"start":{"line":844,"column":4},"end":{"line":844,"column":48}},"358":{"start":{"line":845,"column":4},"end":{"line":845,"column":11}},"359":{"start":{"line":847,"column":2},"end":{"line":847,"column":31}},"360":{"start":{"line":848,"column":2},"end":{"line":848,"column":28}},"361":{"start":{"line":851,"column":2},"end":{"line":851,"column":79}},"362":{"start":{"line":852,"column":2},"end":{"line":852,"column":21}},"363":{"start":{"line":858,"column":0},"end":{"line":874,"column":1}},"364":{"start":{"line":859,"column":2},"end":{"line":859,"column":30}},"365":{"start":{"line":860,"column":2},"end":{"line":860,"column":36}},"366":{"start":{"line":861,"column":2},"end":{"line":861,"column":20}},"367":{"start":{"line":862,"column":2},"end":{"line":862,"column":36}},"368":{"start":{"line":864,"column":2},"end":{"line":864,"column":37}},"369":{"start":{"line":866,"column":2},"end":{"line":866,"column":34}},"370":{"start":{"line":868,"column":2},"end":{"line":868,"column":40}},"371":{"start":{"line":870,"column":2},"end":{"line":870,"column":60}},"372":{"start":{"line":871,"column":2},"end":{"line":871,"column":69}},"373":{"start":{"line":873,"column":2},"end":{"line":873,"column":56}},"374":{"start":{"line":875,"column":0},"end":{"line":875,"column":114}},"375":{"start":{"line":877,"column":0},"end":{"line":879,"column":2}},"376":{"start":{"line":878,"column":2},"end":{"line":878,"column":39}},"377":{"start":{"line":881,"column":0},"end":{"line":883,"column":2}},"378":{"start":{"line":882,"column":2},"end":{"line":882,"column":42}},"379":{"start":{"line":885,"column":0},"end":{"line":885,"column":76}}},"branchMap":{"1":{"line":191,"type":"if","locations":[{"start":{"line":191,"column":2},"end":{"line":191,"column":2}},{"start":{"line":191,"column":2},"end":{"line":191,"column":2}}]},"2":{"line":199,"type":"if","locations":[{"start":{"line":199,"column":2},"end":{"line":199,"column":2}},{"start":{"line":199,"column":2},"end":{"line":199,"column":2}}]},"3":{"line":207,"type":"if","locations":[{"start":{"line":207,"column":2},"end":{"line":207,"column":2}},{"start":{"line":207,"column":2},"end":{"line":207,"column":2}}]},"4":{"line":215,"type":"if","locations":[{"start":{"line":215,"column":2},"end":{"line":215,"column":2}},{"start":{"line":215,"column":2},"end":{"line":215,"column":2}}]},"5":{"line":241,"type":"binary-expr","locations":[{"start":{"line":241,"column":12},"end":{"line":241,"column":19}},{"start":{"line":241,"column":23},"end":{"line":241,"column":25}}]},"6":{"line":243,"type":"binary-expr","locations":[{"start":{"line":243,"column":15},"end":{"line":243,"column":26}},{"start":{"line":243,"column":30},"end":{"line":243,"column":43}}]},"7":{"line":250,"type":"if","locations":[{"start":{"line":250,"column":2},"end":{"line":250,"column":2}},{"start":{"line":250,"column":2},"end":{"line":250,"column":2}}]},"8":{"line":250,"type":"binary-expr","locations":[{"start":{"line":250,"column":7},"end":{"line":250,"column":18}},{"start":{"line":250,"column":22},"end":{"line":250,"column":34}},{"start":{"line":250,"column":39},"end":{"line":250,"column":50}}]},"9":{"line":258,"type":"if","locations":[{"start":{"line":258,"column":6},"end":{"line":258,"column":6}},{"start":{"line":258,"column":6},"end":{"line":258,"column":6}}]},"10":{"line":268,"type":"if","locations":[{"start":{"line":268,"column":7},"end":{"line":268,"column":7}},{"start":{"line":268,"column":7},"end":{"line":268,"column":7}}]},"11":{"line":321,"type":"cond-expr","locations":[{"start":{"line":321,"column":58},"end":{"line":321,"column":79}},{"start":{"line":321,"column":83},"end":{"line":321,"column":87}}]},"12":{"line":332,"type":"if","locations":[{"start":{"line":332,"column":2},"end":{"line":332,"column":2}},{"start":{"line":332,"column":2},"end":{"line":332,"column":2}}]},"13":{"line":339,"type":"if","locations":[{"start":{"line":339,"column":4},"end":{"line":339,"column":4}},{"start":{"line":339,"column":4},"end":{"line":339,"column":4}}]},"14":{"line":346,"type":"if","locations":[{"start":{"line":346,"column":4},"end":{"line":346,"column":4}},{"start":{"line":346,"column":4},"end":{"line":346,"column":4}}]},"15":{"line":357,"type":"if","locations":[{"start":{"line":357,"column":2},"end":{"line":357,"column":2}},{"start":{"line":357,"column":2},"end":{"line":357,"column":2}}]},"16":{"line":357,"type":"binary-expr","locations":[{"start":{"line":357,"column":7},"end":{"line":357,"column":26}},{"start":{"line":357,"column":32},"end":{"line":357,"column":51}}]},"17":{"line":365,"type":"if","locations":[{"start":{"line":365,"column":2},"end":{"line":365,"column":2}},{"start":{"line":365,"column":2},"end":{"line":365,"column":2}}]},"18":{"line":372,"type":"if","locations":[{"start":{"line":372,"column":2},"end":{"line":372,"column":2}},{"start":{"line":372,"column":2},"end":{"line":372,"column":2}}]},"19":{"line":406,"type":"if","locations":[{"start":{"line":406,"column":4},"end":{"line":406,"column":4}},{"start":{"line":406,"column":4},"end":{"line":406,"column":4}}]},"20":{"line":433,"type":"if","locations":[{"start":{"line":433,"column":4},"end":{"line":433,"column":4}},{"start":{"line":433,"column":4},"end":{"line":433,"column":4}}]},"21":{"line":435,"type":"if","locations":[{"start":{"line":435,"column":6},"end":{"line":435,"column":6}},{"start":{"line":435,"column":6},"end":{"line":435,"column":6}}]},"22":{"line":435,"type":"binary-expr","locations":[{"start":{"line":435,"column":11},"end":{"line":435,"column":36}},{"start":{"line":435,"column":42},"end":{"line":435,"column":60}}]},"23":{"line":472,"type":"if","locations":[{"start":{"line":472,"column":2},"end":{"line":472,"column":2}},{"start":{"line":472,"column":2},"end":{"line":472,"column":2}}]},"24":{"line":478,"type":"binary-expr","locations":[{"start":{"line":478,"column":12},"end":{"line":478,"column":19}},{"start":{"line":478,"column":23},"end":{"line":478,"column":25}}]},"25":{"line":484,"type":"if","locations":[{"start":{"line":484,"column":2},"end":{"line":484,"column":2}},{"start":{"line":484,"column":2},"end":{"line":484,"column":2}}]},"26":{"line":484,"type":"binary-expr","locations":[{"start":{"line":484,"column":6},"end":{"line":484,"column":19}},{"start":{"line":484,"column":23},"end":{"line":484,"column":49}}]},"27":{"line":498,"type":"if","locations":[{"start":{"line":498,"column":2},"end":{"line":498,"column":2}},{"start":{"line":498,"column":2},"end":{"line":498,"column":2}}]},"28":{"line":518,"type":"if","locations":[{"start":{"line":518,"column":2},"end":{"line":518,"column":2}},{"start":{"line":518,"column":2},"end":{"line":518,"column":2}}]},"29":{"line":523,"type":"if","locations":[{"start":{"line":523,"column":2},"end":{"line":523,"column":2}},{"start":{"line":523,"column":2},"end":{"line":523,"column":2}}]},"30":{"line":527,"type":"if","locations":[{"start":{"line":527,"column":2},"end":{"line":527,"column":2}},{"start":{"line":527,"column":2},"end":{"line":527,"column":2}}]},"31":{"line":532,"type":"binary-expr","locations":[{"start":{"line":532,"column":16},"end":{"line":532,"column":30}},{"start":{"line":532,"column":34},"end":{"line":532,"column":39}}]},"32":{"line":533,"type":"binary-expr","locations":[{"start":{"line":533,"column":16},"end":{"line":533,"column":32}},{"start":{"line":533,"column":36},"end":{"line":533,"column":65}},{"start":{"line":533,"column":70},"end":{"line":533,"column":101}}]},"33":{"line":534,"type":"binary-expr","locations":[{"start":{"line":534,"column":13},"end":{"line":534,"column":29}},{"start":{"line":534,"column":33},"end":{"line":534,"column":45}},{"start":{"line":534,"column":49},"end":{"line":534,"column":78}}]},"34":{"line":549,"type":"if","locations":[{"start":{"line":549,"column":2},"end":{"line":549,"column":2}},{"start":{"line":549,"column":2},"end":{"line":549,"column":2}}]},"35":{"line":549,"type":"binary-expr","locations":[{"start":{"line":549,"column":6},"end":{"line":549,"column":18}},{"start":{"line":549,"column":23},"end":{"line":549,"column":42}}]},"36":{"line":565,"type":"binary-expr","locations":[{"start":{"line":565,"column":10},"end":{"line":565,"column":23}},{"start":{"line":565,"column":27},"end":{"line":565,"column":46}}]},"37":{"line":568,"type":"binary-expr","locations":[{"start":{"line":568,"column":10},"end":{"line":568,"column":23}},{"start":{"line":568,"column":27},"end":{"line":568,"column":46}}]},"38":{"line":577,"type":"binary-expr","locations":[{"start":{"line":577,"column":12},"end":{"line":577,"column":19}},{"start":{"line":577,"column":23},"end":{"line":577,"column":25}}]},"39":{"line":580,"type":"binary-expr","locations":[{"start":{"line":580,"column":15},"end":{"line":580,"column":26}},{"start":{"line":580,"column":30},"end":{"line":580,"column":43}}]},"40":{"line":597,"type":"if","locations":[{"start":{"line":597,"column":2},"end":{"line":597,"column":2}},{"start":{"line":597,"column":2},"end":{"line":597,"column":2}}]},"41":{"line":601,"type":"binary-expr","locations":[{"start":{"line":601,"column":20},"end":{"line":601,"column":34}},{"start":{"line":601,"column":38},"end":{"line":601,"column":43}}]},"42":{"line":602,"type":"binary-expr","locations":[{"start":{"line":602,"column":21},"end":{"line":602,"column":37}},{"start":{"line":602,"column":41},"end":{"line":602,"column":49}}]},"43":{"line":603,"type":"binary-expr","locations":[{"start":{"line":603,"column":17},"end":{"line":603,"column":33}},{"start":{"line":603,"column":37},"end":{"line":603,"column":49}},{"start":{"line":603,"column":53},"end":{"line":603,"column":64}}]},"44":{"line":604,"type":"binary-expr","locations":[{"start":{"line":604,"column":17},"end":{"line":604,"column":29}},{"start":{"line":604,"column":33},"end":{"line":604,"column":36}}]},"45":{"line":605,"type":"binary-expr","locations":[{"start":{"line":605,"column":17},"end":{"line":605,"column":29}},{"start":{"line":605,"column":33},"end":{"line":605,"column":36}}]},"46":{"line":607,"type":"if","locations":[{"start":{"line":607,"column":2},"end":{"line":607,"column":2}},{"start":{"line":607,"column":2},"end":{"line":607,"column":2}}]},"47":{"line":614,"type":"if","locations":[{"start":{"line":614,"column":2},"end":{"line":614,"column":2}},{"start":{"line":614,"column":2},"end":{"line":614,"column":2}}]},"48":{"line":621,"type":"if","locations":[{"start":{"line":621,"column":2},"end":{"line":621,"column":2}},{"start":{"line":621,"column":2},"end":{"line":621,"column":2}}]},"49":{"line":634,"type":"if","locations":[{"start":{"line":634,"column":6},"end":{"line":634,"column":6}},{"start":{"line":634,"column":6},"end":{"line":634,"column":6}}]},"50":{"line":643,"type":"if","locations":[{"start":{"line":643,"column":6},"end":{"line":643,"column":6}},{"start":{"line":643,"column":6},"end":{"line":643,"column":6}}]},"51":{"line":644,"type":"if","locations":[{"start":{"line":644,"column":8},"end":{"line":644,"column":8}},{"start":{"line":644,"column":8},"end":{"line":644,"column":8}}]},"52":{"line":662,"type":"if","locations":[{"start":{"line":662,"column":6},"end":{"line":662,"column":6}},{"start":{"line":662,"column":6},"end":{"line":662,"column":6}}]},"53":{"line":725,"type":"if","locations":[{"start":{"line":725,"column":2},"end":{"line":725,"column":2}},{"start":{"line":725,"column":2},"end":{"line":725,"column":2}}]},"54":{"line":735,"type":"binary-expr","locations":[{"start":{"line":735,"column":53},"end":{"line":735,"column":68}},{"start":{"line":735,"column":72},"end":{"line":735,"column":74}}]},"55":{"line":754,"type":"if","locations":[{"start":{"line":754,"column":2},"end":{"line":754,"column":2}},{"start":{"line":754,"column":2},"end":{"line":754,"column":2}}]},"56":{"line":764,"type":"if","locations":[{"start":{"line":764,"column":2},"end":{"line":764,"column":2}},{"start":{"line":764,"column":2},"end":{"line":764,"column":2}}]},"57":{"line":764,"type":"binary-expr","locations":[{"start":{"line":764,"column":6},"end":{"line":764,"column":18}},{"start":{"line":764,"column":23},"end":{"line":764,"column":42}}]},"58":{"line":773,"type":"if","locations":[{"start":{"line":773,"column":2},"end":{"line":773,"column":2}},{"start":{"line":773,"column":2},"end":{"line":773,"column":2}}]},"59":{"line":775,"type":"if","locations":[{"start":{"line":775,"column":9},"end":{"line":775,"column":9}},{"start":{"line":775,"column":9},"end":{"line":775,"column":9}}]},"60":{"line":781,"type":"if","locations":[{"start":{"line":781,"column":2},"end":{"line":781,"column":2}},{"start":{"line":781,"column":2},"end":{"line":781,"column":2}}]},"61":{"line":783,"type":"if","locations":[{"start":{"line":783,"column":9},"end":{"line":783,"column":9}},{"start":{"line":783,"column":9},"end":{"line":783,"column":9}}]},"62":{"line":789,"type":"if","locations":[{"start":{"line":789,"column":2},"end":{"line":789,"column":2}},{"start":{"line":789,"column":2},"end":{"line":789,"column":2}}]},"63":{"line":791,"type":"if","locations":[{"start":{"line":791,"column":9},"end":{"line":791,"column":9}},{"start":{"line":791,"column":9},"end":{"line":791,"column":9}}]},"64":{"line":798,"type":"if","locations":[{"start":{"line":798,"column":2},"end":{"line":798,"column":2}},{"start":{"line":798,"column":2},"end":{"line":798,"column":2}}]},"65":{"line":800,"type":"if","locations":[{"start":{"line":800,"column":9},"end":{"line":800,"column":9}},{"start":{"line":800,"column":9},"end":{"line":800,"column":9}}]},"66":{"line":813,"type":"if","locations":[{"start":{"line":813,"column":2},"end":{"line":813,"column":2}},{"start":{"line":813,"column":2},"end":{"line":813,"column":2}}]},"67":{"line":842,"type":"if","locations":[{"start":{"line":842,"column":2},"end":{"line":842,"column":2}},{"start":{"line":842,"column":2},"end":{"line":842,"column":2}}]},"68":{"line":842,"type":"binary-expr","locations":[{"start":{"line":842,"column":7},"end":{"line":842,"column":37}},{"start":{"line":842,"column":43},"end":{"line":842,"column":66}}]}}}} \ No newline at end of file +{"/data/upstream/node-http2/lib/compressor.js":{"path":"/data/upstream/node-http2/lib/compressor.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":50,"8":50,"9":50,"10":50,"11":50,"12":1,"13":3424,"14":1,"15":88,"16":227,"17":1,"18":88,"19":88,"20":202,"21":146,"22":88,"23":146,"24":146,"25":1,"26":278,"27":278,"28":278,"29":87,"30":87,"31":173,"32":87,"33":29,"34":29,"35":58,"36":191,"37":94,"38":97,"39":191,"40":190,"41":100,"42":90,"43":190,"44":190,"45":191,"46":1,"47":81,"48":149,"49":1,"50":109,"51":109,"52":109,"53":19,"54":19,"55":15,"56":94,"57":94,"58":2413,"59":94,"60":62,"61":62,"62":46,"63":48,"64":1,"65":28,"66":28,"67":46,"68":28,"69":28,"70":28,"71":1,"72":190,"73":190,"74":190,"75":5011,"76":263,"77":5011,"78":190,"79":218,"80":218,"81":1,"82":26,"83":26,"84":26,"85":26,"86":1,"87":1,"88":45,"89":45,"90":45,"91":45,"92":141,"93":45,"94":45,"95":45,"96":157,"97":157,"98":157,"99":17,"100":8,"101":9,"102":140,"103":45,"104":45,"105":1,"106":24,"107":24,"108":24,"109":24,"110":1,"111":1,"112":43,"113":43,"114":43,"115":43,"116":135,"117":135,"118":8,"119":24,"120":127,"121":43,"122":43,"123":43,"124":70,"125":28,"126":28,"127":28,"128":43,"129":151,"130":109,"131":109,"132":109,"133":43,"134":43,"135":137,"136":43,"137":43,"138":43,"139":1,"140":345,"141":345,"142":143,"143":202,"144":202,"145":2,"146":202,"147":202,"148":202,"149":210,"150":210,"151":210,"152":8,"153":210,"154":210,"155":202,"156":1,"157":353,"158":353,"159":353,"160":151,"161":353,"162":207,"163":207,"164":217,"165":217,"166":217,"167":353,"168":1,"169":153,"170":153,"171":153,"172":1,"173":155,"174":155,"175":155,"176":155,"177":1,"178":1,"179":145,"180":145,"181":45,"182":100,"183":1,"184":99,"185":52,"186":47,"187":145,"188":45,"189":100,"190":51,"191":49,"192":49,"193":100,"194":47,"195":100,"196":145,"197":145,"198":1,"199":149,"200":149,"201":149,"202":46,"203":103,"204":58,"205":2,"206":56,"207":45,"208":149,"209":46,"210":46,"211":103,"212":103,"213":50,"214":103,"215":45,"216":58,"217":56,"218":2,"219":103,"220":149,"221":1,"222":1,"223":24,"224":1,"225":87,"226":33,"227":33,"228":33,"229":35,"230":35,"231":33,"232":2,"233":2,"234":35,"235":54,"236":87,"237":1,"238":26,"239":26,"240":26,"241":26,"242":26,"243":1,"244":84,"245":3,"246":1,"247":1,"248":1,"249":2,"250":81,"251":33,"252":33,"253":33,"254":33,"255":48,"256":83,"257":32,"258":34,"259":32,"260":32,"261":0,"262":0,"263":0,"264":32,"265":32,"266":83,"267":1,"268":1,"269":1,"270":75,"271":75,"272":501,"273":75,"274":75,"275":501,"276":75,"277":1,"278":33,"279":33,"280":33,"281":35,"282":35,"283":35,"284":33,"285":1,"286":35,"287":35,"288":0,"289":35},"b":{"1":[50,50],"2":[3424,214],"3":[87,191],"4":[29,58],"5":[94,97],"6":[190,1],"7":[100,90],"8":[19,90],"9":[15,4],"10":[62,32],"11":[46,16],"12":[28,18],"13":[263,4748],"14":[14,12],"15":[17,140],"16":[8,9],"17":[12,12],"18":[8,127],"19":[28,42],"20":[109,42],"21":[143,202],"22":[2,200],"23":[8,202],"24":[151,202],"25":[207,146],"26":[45,100],"27":[1,99],"28":[52,47],"29":[45,100],"30":[51,49],"31":[47,53],"32":[46,103],"33":[58,45],"34":[2,56],"35":[46,103],"36":[50,53],"37":[45,58],"38":[56,2],"39":[33,54],"40":[87,61],"41":[33,2],"42":[3,81],"43":[1,2],"44":[3,2],"45":[33,48],"46":[81,55],"47":[32,51],"48":[83,35,10]},"f":{"1":50,"2":3424,"3":88,"4":227,"5":88,"6":202,"7":146,"8":146,"9":278,"10":173,"11":81,"12":149,"13":109,"14":2413,"15":28,"16":190,"17":26,"18":45,"19":24,"20":43,"21":345,"22":353,"23":153,"24":155,"25":145,"26":149,"27":24,"28":87,"29":26,"30":84,"31":34,"32":75,"33":33,"34":35},"fnMap":{"1":{"name":"CompressionContext","line":38,"loc":{"start":{"line":38,"column":0},"end":{"line":38,"column":47}}},"2":{"name":"(anonymous_2)","line":48,"loc":{"start":{"line":48,"column":27},"end":{"line":48,"column":50}}},"3":{"name":"getWorkingSet","line":53,"loc":{"start":{"line":53,"column":45},"end":{"line":53,"column":70}}},"4":{"name":"(anonymous_4)","line":54,"loc":{"start":{"line":54,"column":27},"end":{"line":54,"column":43}}},"5":{"name":"reinitialize","line":60,"loc":{"start":{"line":60,"column":44},"end":{"line":60,"column":68}}},"6":{"name":"(anonymous_6)","line":66,"loc":{"start":{"line":66,"column":41},"end":{"line":66,"column":57}}},"7":{"name":"(anonymous_7)","line":68,"loc":{"start":{"line":68,"column":9},"end":{"line":68,"column":25}}},"8":{"name":"(anonymous_8)","line":76,"loc":{"start":{"line":76,"column":38},"end":{"line":76,"column":53}}},"9":{"name":"execute","line":105,"loc":{"start":{"line":105,"column":39},"end":{"line":105,"column":65}}},"10":{"name":"(anonymous_10)","line":118,"loc":{"start":{"line":118,"column":40},"end":{"line":118,"column":56}}},"11":{"name":"(anonymous_11)","line":156,"loc":{"start":{"line":156,"column":43},"end":{"line":156,"column":59}}},"12":{"name":"(anonymous_12)","line":157,"loc":{"start":{"line":157,"column":28},"end":{"line":157,"column":44}}},"13":{"name":"(anonymous_13)","line":164,"loc":{"start":{"line":164,"column":50},"end":{"line":164,"column":65}}},"14":{"name":"(anonymous_14)","line":180,"loc":{"start":{"line":180,"column":37},"end":{"line":180,"column":53}}},"15":{"name":"(anonymous_15)","line":203,"loc":{"start":{"line":203,"column":53},"end":{"line":203,"column":68}}},"16":{"name":"(anonymous_16)","line":227,"loc":{"start":{"line":227,"column":49},"end":{"line":227,"column":60}}},"17":{"name":"Decompressor","line":249,"loc":{"start":{"line":249,"column":0},"end":{"line":249,"column":33}}},"18":{"name":"decompress","line":264,"loc":{"start":{"line":264,"column":36},"end":{"line":264,"column":64}}},"19":{"name":"Compressor","line":310,"loc":{"start":{"line":310,"column":0},"end":{"line":310,"column":31}}},"20":{"name":"compress","line":325,"loc":{"start":{"line":325,"column":32},"end":{"line":325,"column":59}}},"21":{"name":"writeInteger","line":395,"loc":{"start":{"line":395,"column":21},"end":{"line":395,"column":49}}},"22":{"name":"readInteger","line":436,"loc":{"start":{"line":436,"column":23},"end":{"line":436,"column":55}}},"23":{"name":"writeString","line":466,"loc":{"start":{"line":466,"column":20},"end":{"line":466,"column":46}}},"24":{"name":"readString","line":472,"loc":{"start":{"line":472,"column":22},"end":{"line":472,"column":50}}},"25":{"name":"writeHeader","line":525,"loc":{"start":{"line":525,"column":20},"end":{"line":525,"column":49}}},"26":{"name":"readHeader","line":561,"loc":{"start":{"line":561,"column":22},"end":{"line":561,"column":50}}},"27":{"name":"_initializeStream","line":626,"loc":{"start":{"line":626,"column":41},"end":{"line":626,"column":70}}},"28":{"name":"_transform","line":630,"loc":{"start":{"line":630,"column":34},"end":{"line":630,"column":77}}},"29":{"name":"_initializeStream","line":676,"loc":{"start":{"line":676,"column":43},"end":{"line":676,"column":72}}},"30":{"name":"_transform","line":685,"loc":{"start":{"line":685,"column":36},"end":{"line":685,"column":79}}},"31":{"name":"(anonymous_31)","line":715,"loc":{"start":{"line":715,"column":41},"end":{"line":715,"column":57}}},"32":{"name":"concat","line":825,"loc":{"start":{"line":825,"column":0},"end":{"line":825,"column":25}}},"33":{"name":"cut","line":840,"loc":{"start":{"line":840,"column":0},"end":{"line":840,"column":27}}},"34":{"name":"shallowCopy","line":852,"loc":{"start":{"line":852,"column":0},"end":{"line":852,"column":29}}}},"statementMap":{"1":{"start":{"line":16,"column":0},"end":{"line":16,"column":44}},"2":{"start":{"line":18,"column":0},"end":{"line":18,"column":48}},"3":{"start":{"line":19,"column":0},"end":{"line":19,"column":36}},"4":{"start":{"line":20,"column":0},"end":{"line":20,"column":32}},"5":{"start":{"line":36,"column":0},"end":{"line":36,"column":38}},"6":{"start":{"line":38,"column":0},"end":{"line":44,"column":1}},"7":{"start":{"line":39,"column":2},"end":{"line":39,"column":18}},"8":{"start":{"line":40,"column":2},"end":{"line":40,"column":30}},"9":{"start":{"line":41,"column":2},"end":{"line":41,"column":52}},"10":{"start":{"line":42,"column":2},"end":{"line":42,"column":23}},"11":{"start":{"line":43,"column":2},"end":{"line":43,"column":21}},"12":{"start":{"line":48,"column":0},"end":{"line":50,"column":2}},"13":{"start":{"line":49,"column":2},"end":{"line":49,"column":88}},"14":{"start":{"line":53,"column":0},"end":{"line":57,"column":2}},"15":{"start":{"line":54,"column":2},"end":{"line":56,"column":5}},"16":{"start":{"line":55,"column":4},"end":{"line":55,"column":22}},"17":{"start":{"line":60,"column":0},"end":{"line":80,"column":2}},"18":{"start":{"line":61,"column":2},"end":{"line":61,"column":18}},"19":{"start":{"line":66,"column":2},"end":{"line":70,"column":5}},"20":{"start":{"line":67,"column":4},"end":{"line":67,"column":50}},"21":{"start":{"line":69,"column":4},"end":{"line":69,"column":22}},"22":{"start":{"line":76,"column":2},"end":{"line":79,"column":5}},"23":{"start":{"line":77,"column":4},"end":{"line":77,"column":42}},"24":{"start":{"line":78,"column":4},"end":{"line":78,"column":40}},"25":{"start":{"line":105,"column":0},"end":{"line":152,"column":2}},"26":{"start":{"line":106,"column":2},"end":{"line":107,"column":55}},"27":{"start":{"line":109,"column":2},"end":{"line":109,"column":18}},"28":{"start":{"line":116,"column":2},"end":{"line":151,"column":3}},"29":{"start":{"line":117,"column":4},"end":{"line":117,"column":26}},"30":{"start":{"line":118,"column":4},"end":{"line":120,"column":7}},"31":{"start":{"line":119,"column":6},"end":{"line":119,"column":35}},"32":{"start":{"line":121,"column":4},"end":{"line":126,"column":5}},"33":{"start":{"line":122,"column":6},"end":{"line":122,"column":32}},"34":{"start":{"line":123,"column":6},"end":{"line":123,"column":55}},"35":{"start":{"line":125,"column":6},"end":{"line":125,"column":31}},"36":{"start":{"line":134,"column":4},"end":{"line":138,"column":5}},"37":{"start":{"line":135,"column":6},"end":{"line":135,"column":59}},"38":{"start":{"line":137,"column":6},"end":{"line":137,"column":43}},"39":{"start":{"line":140,"column":4},"end":{"line":148,"column":5}},"40":{"start":{"line":141,"column":6},"end":{"line":145,"column":7}},"41":{"start":{"line":142,"column":8},"end":{"line":142,"column":31}},"42":{"start":{"line":144,"column":8},"end":{"line":144,"column":51}},"43":{"start":{"line":146,"column":6},"end":{"line":146,"column":31}},"44":{"start":{"line":147,"column":6},"end":{"line":147,"column":40}},"45":{"start":{"line":150,"column":4},"end":{"line":150,"column":53}},"46":{"start":{"line":156,"column":0},"end":{"line":160,"column":2}},"47":{"start":{"line":157,"column":2},"end":{"line":159,"column":5}},"48":{"start":{"line":158,"column":4},"end":{"line":158,"column":33}},"49":{"start":{"line":164,"column":0},"end":{"line":199,"column":2}},"50":{"start":{"line":165,"column":2},"end":{"line":165,"column":56}},"51":{"start":{"line":167,"column":2},"end":{"line":167,"column":44}},"52":{"start":{"line":168,"column":2},"end":{"line":177,"column":3}},"53":{"start":{"line":169,"column":4},"end":{"line":169,"column":54}},"54":{"start":{"line":170,"column":4},"end":{"line":176,"column":5}},"55":{"start":{"line":171,"column":6},"end":{"line":175,"column":8}},"56":{"start":{"line":179,"column":2},"end":{"line":179,"column":35}},"57":{"start":{"line":180,"column":2},"end":{"line":182,"column":5}},"58":{"start":{"line":181,"column":4},"end":{"line":181,"column":43}},"59":{"start":{"line":183,"column":2},"end":{"line":192,"column":3}},"60":{"start":{"line":184,"column":4},"end":{"line":184,"column":54}},"61":{"start":{"line":185,"column":4},"end":{"line":191,"column":5}},"62":{"start":{"line":186,"column":6},"end":{"line":190,"column":8}},"63":{"start":{"line":194,"column":2},"end":{"line":198,"column":4}},"64":{"start":{"line":203,"column":0},"end":{"line":218,"column":2}},"65":{"start":{"line":204,"column":2},"end":{"line":204,"column":12}},"66":{"start":{"line":206,"column":2},"end":{"line":211,"column":3}},"67":{"start":{"line":207,"column":4},"end":{"line":210,"column":5}},"68":{"start":{"line":208,"column":6},"end":{"line":208,"column":31}},"69":{"start":{"line":209,"column":6},"end":{"line":209,"column":12}},"70":{"start":{"line":213,"column":2},"end":{"line":217,"column":4}},"71":{"start":{"line":227,"column":0},"end":{"line":240,"column":2}},"72":{"start":{"line":228,"column":2},"end":{"line":228,"column":26}},"73":{"start":{"line":229,"column":2},"end":{"line":229,"column":15}},"74":{"start":{"line":230,"column":2},"end":{"line":235,"column":3}},"75":{"start":{"line":231,"column":4},"end":{"line":233,"column":5}},"76":{"start":{"line":232,"column":6},"end":{"line":232,"column":80}},"77":{"start":{"line":234,"column":4},"end":{"line":234,"column":26}},"78":{"start":{"line":236,"column":2},"end":{"line":239,"column":3}},"79":{"start":{"line":237,"column":4},"end":{"line":237,"column":32}},"80":{"start":{"line":238,"column":4},"end":{"line":238,"column":25}},"81":{"start":{"line":249,"column":0},"end":{"line":257,"column":1}},"82":{"start":{"line":250,"column":2},"end":{"line":250,"column":55}},"83":{"start":{"line":252,"column":2},"end":{"line":253,"column":84}},"84":{"start":{"line":254,"column":2},"end":{"line":254,"column":66}},"85":{"start":{"line":256,"column":2},"end":{"line":256,"column":27}},"86":{"start":{"line":258,"column":0},"end":{"line":258,"column":102}},"87":{"start":{"line":264,"column":0},"end":{"line":301,"column":2}},"88":{"start":{"line":265,"column":2},"end":{"line":265,"column":69}},"89":{"start":{"line":269,"column":2},"end":{"line":269,"column":31}},"90":{"start":{"line":274,"column":2},"end":{"line":274,"column":20}},"91":{"start":{"line":275,"column":2},"end":{"line":277,"column":3}},"92":{"start":{"line":276,"column":4},"end":{"line":276,"column":55}},"93":{"start":{"line":281,"column":2},"end":{"line":281,"column":44}},"94":{"start":{"line":285,"column":2},"end":{"line":285,"column":19}},"95":{"start":{"line":286,"column":2},"end":{"line":298,"column":3}},"96":{"start":{"line":287,"column":4},"end":{"line":287,"column":27}},"97":{"start":{"line":288,"column":4},"end":{"line":288,"column":28}},"98":{"start":{"line":289,"column":4},"end":{"line":297,"column":5}},"99":{"start":{"line":290,"column":6},"end":{"line":294,"column":7}},"100":{"start":{"line":291,"column":8},"end":{"line":291,"column":34}},"101":{"start":{"line":293,"column":8},"end":{"line":293,"column":47}},"102":{"start":{"line":296,"column":6},"end":{"line":296,"column":28}},"103":{"start":{"line":299,"column":2},"end":{"line":299,"column":72}},"104":{"start":{"line":300,"column":2},"end":{"line":300,"column":17}},"105":{"start":{"line":310,"column":0},"end":{"line":318,"column":1}},"106":{"start":{"line":311,"column":2},"end":{"line":311,"column":53}},"107":{"start":{"line":313,"column":2},"end":{"line":314,"column":84}},"108":{"start":{"line":315,"column":2},"end":{"line":315,"column":66}},"109":{"start":{"line":317,"column":2},"end":{"line":317,"column":27}},"110":{"start":{"line":319,"column":0},"end":{"line":319,"column":98}},"111":{"start":{"line":325,"column":0},"end":{"line":376,"column":2}},"112":{"start":{"line":326,"column":2},"end":{"line":326,"column":71}},"113":{"start":{"line":327,"column":2},"end":{"line":327,"column":8}},"114":{"start":{"line":331,"column":2},"end":{"line":331,"column":17}},"115":{"start":{"line":332,"column":2},"end":{"line":341,"column":3}},"116":{"start":{"line":333,"column":4},"end":{"line":333,"column":30}},"117":{"start":{"line":334,"column":4},"end":{"line":340,"column":5}},"118":{"start":{"line":335,"column":6},"end":{"line":337,"column":7}},"119":{"start":{"line":336,"column":8},"end":{"line":336,"column":53}},"120":{"start":{"line":339,"column":6},"end":{"line":339,"column":48}},"121":{"start":{"line":345,"column":2},"end":{"line":345,"column":31}},"122":{"start":{"line":346,"column":2},"end":{"line":346,"column":70}},"123":{"start":{"line":349,"column":2},"end":{"line":355,"column":3}},"124":{"start":{"line":350,"column":4},"end":{"line":354,"column":5}},"125":{"start":{"line":351,"column":6},"end":{"line":351,"column":64}},"126":{"start":{"line":352,"column":6},"end":{"line":352,"column":37}},"127":{"start":{"line":353,"column":6},"end":{"line":353,"column":29}},"128":{"start":{"line":358,"column":2},"end":{"line":364,"column":3}},"129":{"start":{"line":359,"column":4},"end":{"line":363,"column":5}},"130":{"start":{"line":360,"column":6},"end":{"line":360,"column":59}},"131":{"start":{"line":361,"column":6},"end":{"line":361,"column":37}},"132":{"start":{"line":362,"column":6},"end":{"line":362,"column":29}},"133":{"start":{"line":367,"column":2},"end":{"line":367,"column":19}},"134":{"start":{"line":368,"column":2},"end":{"line":370,"column":3}},"135":{"start":{"line":369,"column":4},"end":{"line":369,"column":49}},"136":{"start":{"line":372,"column":2},"end":{"line":372,"column":65}},"137":{"start":{"line":374,"column":2},"end":{"line":374,"column":66}},"138":{"start":{"line":375,"column":2},"end":{"line":375,"column":16}},"139":{"start":{"line":395,"column":0},"end":{"line":421,"column":2}},"140":{"start":{"line":396,"column":2},"end":{"line":396,"column":32}},"141":{"start":{"line":397,"column":2},"end":{"line":399,"column":3}},"142":{"start":{"line":398,"column":4},"end":{"line":398,"column":29}},"143":{"start":{"line":401,"column":2},"end":{"line":401,"column":17}},"144":{"start":{"line":402,"column":2},"end":{"line":404,"column":3}},"145":{"start":{"line":403,"column":4},"end":{"line":403,"column":22}},"146":{"start":{"line":405,"column":2},"end":{"line":405,"column":13}},"147":{"start":{"line":407,"column":2},"end":{"line":407,"column":15}},"148":{"start":{"line":408,"column":2},"end":{"line":418,"column":3}},"149":{"start":{"line":409,"column":4},"end":{"line":409,"column":28}},"150":{"start":{"line":410,"column":4},"end":{"line":410,"column":16}},"151":{"start":{"line":412,"column":4},"end":{"line":414,"column":5}},"152":{"start":{"line":413,"column":6},"end":{"line":413,"column":15}},"153":{"start":{"line":415,"column":4},"end":{"line":415,"column":18}},"154":{"start":{"line":417,"column":4},"end":{"line":417,"column":10}},"155":{"start":{"line":420,"column":2},"end":{"line":420,"column":29}},"156":{"start":{"line":436,"column":0},"end":{"line":454,"column":2}},"157":{"start":{"line":437,"column":2},"end":{"line":437,"column":32}},"158":{"start":{"line":439,"column":2},"end":{"line":439,"column":40}},"159":{"start":{"line":440,"column":2},"end":{"line":442,"column":3}},"160":{"start":{"line":441,"column":4},"end":{"line":441,"column":23}},"161":{"start":{"line":444,"column":2},"end":{"line":451,"column":3}},"162":{"start":{"line":445,"column":4},"end":{"line":445,"column":14}},"163":{"start":{"line":446,"column":4},"end":{"line":450,"column":46}},"164":{"start":{"line":447,"column":6},"end":{"line":447,"column":46}},"165":{"start":{"line":448,"column":6},"end":{"line":448,"column":13}},"166":{"start":{"line":449,"column":6},"end":{"line":449,"column":25}},"167":{"start":{"line":453,"column":2},"end":{"line":453,"column":11}},"168":{"start":{"line":466,"column":0},"end":{"line":470,"column":2}},"169":{"start":{"line":467,"column":2},"end":{"line":467,"column":46}},"170":{"start":{"line":468,"column":2},"end":{"line":468,"column":66}},"171":{"start":{"line":469,"column":2},"end":{"line":469,"column":45}},"172":{"start":{"line":472,"column":0},"end":{"line":477,"column":2}},"173":{"start":{"line":473,"column":2},"end":{"line":473,"column":47}},"174":{"start":{"line":474,"column":2},"end":{"line":474,"column":75}},"175":{"start":{"line":475,"column":2},"end":{"line":475,"column":26}},"176":{"start":{"line":476,"column":2},"end":{"line":476,"column":13}},"177":{"start":{"line":518,"column":0},"end":{"line":523,"column":2}},"178":{"start":{"line":525,"column":0},"end":{"line":559,"column":2}},"179":{"start":{"line":526,"column":2},"end":{"line":526,"column":35}},"180":{"start":{"line":528,"column":2},"end":{"line":536,"column":3}},"181":{"start":{"line":529,"column":4},"end":{"line":529,"column":45}},"182":{"start":{"line":530,"column":9},"end":{"line":536,"column":3}},"183":{"start":{"line":531,"column":4},"end":{"line":531,"column":45}},"184":{"start":{"line":532,"column":9},"end":{"line":536,"column":3}},"185":{"start":{"line":533,"column":4},"end":{"line":533,"column":56}},"186":{"start":{"line":535,"column":4},"end":{"line":535,"column":57}},"187":{"start":{"line":538,"column":2},"end":{"line":554,"column":3}},"188":{"start":{"line":539,"column":4},"end":{"line":539,"column":74}},"189":{"start":{"line":542,"column":4},"end":{"line":547,"column":5}},"190":{"start":{"line":543,"column":6},"end":{"line":543,"column":79}},"191":{"start":{"line":545,"column":6},"end":{"line":545,"column":65}},"192":{"start":{"line":546,"column":6},"end":{"line":546,"column":51}},"193":{"start":{"line":549,"column":4},"end":{"line":551,"column":5}},"194":{"start":{"line":550,"column":6},"end":{"line":550,"column":56}},"195":{"start":{"line":553,"column":4},"end":{"line":553,"column":50}},"196":{"start":{"line":556,"column":2},"end":{"line":556,"column":45}},"197":{"start":{"line":558,"column":2},"end":{"line":558,"column":51}},"198":{"start":{"line":561,"column":0},"end":{"line":599,"column":2}},"199":{"start":{"line":562,"column":2},"end":{"line":562,"column":34}},"200":{"start":{"line":564,"column":2},"end":{"line":564,"column":40}},"201":{"start":{"line":565,"column":2},"end":{"line":575,"column":3}},"202":{"start":{"line":566,"column":4},"end":{"line":566,"column":45}},"203":{"start":{"line":567,"column":9},"end":{"line":575,"column":3}},"204":{"start":{"line":568,"column":4},"end":{"line":572,"column":5}},"205":{"start":{"line":569,"column":6},"end":{"line":569,"column":47}},"206":{"start":{"line":571,"column":6},"end":{"line":571,"column":58}},"207":{"start":{"line":574,"column":4},"end":{"line":574,"column":57}},"208":{"start":{"line":577,"column":2},"end":{"line":596,"column":3}},"209":{"start":{"line":578,"column":4},"end":{"line":578,"column":85}},"210":{"start":{"line":579,"column":4},"end":{"line":579,"column":22}},"211":{"start":{"line":582,"column":4},"end":{"line":582,"column":74}},"212":{"start":{"line":583,"column":4},"end":{"line":585,"column":5}},"213":{"start":{"line":584,"column":6},"end":{"line":584,"column":48}},"214":{"start":{"line":587,"column":4},"end":{"line":593,"column":5}},"215":{"start":{"line":588,"column":6},"end":{"line":588,"column":53}},"216":{"start":{"line":589,"column":11},"end":{"line":593,"column":5}},"217":{"start":{"line":590,"column":6},"end":{"line":590,"column":30}},"218":{"start":{"line":592,"column":6},"end":{"line":592,"column":24}},"219":{"start":{"line":595,"column":4},"end":{"line":595,"column":47}},"220":{"start":{"line":598,"column":2},"end":{"line":598,"column":16}},"221":{"start":{"line":623,"column":0},"end":{"line":623,"column":34}},"222":{"start":{"line":626,"column":0},"end":{"line":628,"column":2}},"223":{"start":{"line":627,"column":2},"end":{"line":627,"column":45}},"224":{"start":{"line":630,"column":0},"end":{"line":668,"column":2}},"225":{"start":{"line":632,"column":2},"end":{"line":665,"column":3}},"226":{"start":{"line":634,"column":4},"end":{"line":634,"column":46}},"227":{"start":{"line":637,"column":4},"end":{"line":637,"column":52}},"228":{"start":{"line":642,"column":4},"end":{"line":659,"column":5}},"229":{"start":{"line":643,"column":6},"end":{"line":643,"column":43}},"230":{"start":{"line":644,"column":6},"end":{"line":649,"column":7}},"231":{"start":{"line":645,"column":8},"end":{"line":645,"column":42}},"232":{"start":{"line":647,"column":8},"end":{"line":647,"column":43}},"233":{"start":{"line":648,"column":8},"end":{"line":648,"column":36}},"234":{"start":{"line":651,"column":6},"end":{"line":658,"column":9}},"235":{"start":{"line":664,"column":4},"end":{"line":664,"column":21}},"236":{"start":{"line":667,"column":2},"end":{"line":667,"column":9}},"237":{"start":{"line":676,"column":0},"end":{"line":682,"column":2}},"238":{"start":{"line":677,"column":2},"end":{"line":677,"column":45}},"239":{"start":{"line":678,"column":2},"end":{"line":678,"column":27}},"240":{"start":{"line":679,"column":2},"end":{"line":679,"column":25}},"241":{"start":{"line":680,"column":2},"end":{"line":680,"column":27}},"242":{"start":{"line":681,"column":2},"end":{"line":681,"column":27}},"243":{"start":{"line":685,"column":0},"end":{"line":737,"column":2}},"244":{"start":{"line":688,"column":2},"end":{"line":709,"column":3}},"245":{"start":{"line":689,"column":4},"end":{"line":693,"column":5}},"246":{"start":{"line":690,"column":6},"end":{"line":690,"column":71}},"247":{"start":{"line":691,"column":6},"end":{"line":691,"column":43}},"248":{"start":{"line":692,"column":6},"end":{"line":692,"column":13}},"249":{"start":{"line":694,"column":4},"end":{"line":694,"column":29}},"250":{"start":{"line":699,"column":7},"end":{"line":709,"column":3}},"251":{"start":{"line":700,"column":4},"end":{"line":700,"column":28}},"252":{"start":{"line":701,"column":4},"end":{"line":701,"column":28}},"253":{"start":{"line":702,"column":4},"end":{"line":702,"column":32}},"254":{"start":{"line":703,"column":4},"end":{"line":703,"column":27}},"255":{"start":{"line":708,"column":4},"end":{"line":708,"column":21}},"256":{"start":{"line":714,"column":2},"end":{"line":734,"column":3}},"257":{"start":{"line":715,"column":4},"end":{"line":717,"column":8}},"258":{"start":{"line":716,"column":6},"end":{"line":716,"column":24}},"259":{"start":{"line":718,"column":4},"end":{"line":724,"column":5}},"260":{"start":{"line":719,"column":6},"end":{"line":719,"column":44}},"261":{"start":{"line":721,"column":6},"end":{"line":721,"column":68}},"262":{"start":{"line":722,"column":6},"end":{"line":722,"column":46}},"263":{"start":{"line":723,"column":6},"end":{"line":723,"column":13}},"264":{"start":{"line":725,"column":4},"end":{"line":732,"column":7}},"265":{"start":{"line":733,"column":4},"end":{"line":733,"column":29}},"266":{"start":{"line":736,"column":2},"end":{"line":736,"column":9}},"267":{"start":{"line":742,"column":0},"end":{"line":781,"column":2}},"268":{"start":{"line":783,"column":0},"end":{"line":819,"column":2}},"269":{"start":{"line":825,"column":0},"end":{"line":837,"column":1}},"270":{"start":{"line":826,"column":2},"end":{"line":826,"column":15}},"271":{"start":{"line":827,"column":2},"end":{"line":829,"column":3}},"272":{"start":{"line":828,"column":4},"end":{"line":828,"column":30}},"273":{"start":{"line":831,"column":2},"end":{"line":831,"column":38}},"274":{"start":{"line":832,"column":2},"end":{"line":834,"column":3}},"275":{"start":{"line":833,"column":4},"end":{"line":833,"column":42}},"276":{"start":{"line":836,"column":2},"end":{"line":836,"column":22}},"277":{"start":{"line":840,"column":0},"end":{"line":849,"column":1}},"278":{"start":{"line":841,"column":2},"end":{"line":841,"column":18}},"279":{"start":{"line":842,"column":2},"end":{"line":842,"column":17}},"280":{"start":{"line":843,"column":2},"end":{"line":847,"column":34}},"281":{"start":{"line":844,"column":4},"end":{"line":844,"column":59}},"282":{"start":{"line":845,"column":4},"end":{"line":845,"column":58}},"283":{"start":{"line":846,"column":4},"end":{"line":846,"column":24}},"284":{"start":{"line":848,"column":2},"end":{"line":848,"column":16}},"285":{"start":{"line":852,"column":0},"end":{"line":858,"column":1}},"286":{"start":{"line":853,"column":2},"end":{"line":853,"column":17}},"287":{"start":{"line":854,"column":2},"end":{"line":856,"column":3}},"288":{"start":{"line":855,"column":4},"end":{"line":855,"column":29}},"289":{"start":{"line":857,"column":2},"end":{"line":857,"column":15}}},"branchMap":{"1":{"line":41,"type":"binary-expr","locations":[{"start":{"line":41,"column":16},"end":{"line":41,"column":21}},{"start":{"line":41,"column":25},"end":{"line":41,"column":51}}]},"2":{"line":49,"type":"binary-expr","locations":[{"start":{"line":49,"column":10},"end":{"line":49,"column":59}},{"start":{"line":49,"column":65},"end":{"line":49,"column":86}}]},"3":{"line":116,"type":"if","locations":[{"start":{"line":116,"column":2},"end":{"line":116,"column":2}},{"start":{"line":116,"column":2},"end":{"line":116,"column":2}}]},"4":{"line":121,"type":"if","locations":[{"start":{"line":121,"column":4},"end":{"line":121,"column":4}},{"start":{"line":121,"column":4},"end":{"line":121,"column":4}}]},"5":{"line":134,"type":"if","locations":[{"start":{"line":134,"column":4},"end":{"line":134,"column":4}},{"start":{"line":134,"column":4},"end":{"line":134,"column":4}}]},"6":{"line":140,"type":"if","locations":[{"start":{"line":140,"column":4},"end":{"line":140,"column":4}},{"start":{"line":140,"column":4},"end":{"line":140,"column":4}}]},"7":{"line":141,"type":"if","locations":[{"start":{"line":141,"column":6},"end":{"line":141,"column":6}},{"start":{"line":141,"column":6},"end":{"line":141,"column":6}}]},"8":{"line":168,"type":"if","locations":[{"start":{"line":168,"column":2},"end":{"line":168,"column":2}},{"start":{"line":168,"column":2},"end":{"line":168,"column":2}}]},"9":{"line":170,"type":"if","locations":[{"start":{"line":170,"column":4},"end":{"line":170,"column":4}},{"start":{"line":170,"column":4},"end":{"line":170,"column":4}}]},"10":{"line":183,"type":"if","locations":[{"start":{"line":183,"column":2},"end":{"line":183,"column":2}},{"start":{"line":183,"column":2},"end":{"line":183,"column":2}}]},"11":{"line":185,"type":"if","locations":[{"start":{"line":185,"column":4},"end":{"line":185,"column":4}},{"start":{"line":185,"column":4},"end":{"line":185,"column":4}}]},"12":{"line":207,"type":"if","locations":[{"start":{"line":207,"column":4},"end":{"line":207,"column":4}},{"start":{"line":207,"column":4},"end":{"line":207,"column":4}}]},"13":{"line":231,"type":"if","locations":[{"start":{"line":231,"column":4},"end":{"line":231,"column":4}},{"start":{"line":231,"column":4},"end":{"line":231,"column":4}}]},"14":{"line":252,"type":"cond-expr","locations":[{"start":{"line":252,"column":44},"end":{"line":252,"column":82}},{"start":{"line":253,"column":44},"end":{"line":253,"column":83}}]},"15":{"line":289,"type":"if","locations":[{"start":{"line":289,"column":4},"end":{"line":289,"column":4}},{"start":{"line":289,"column":4},"end":{"line":289,"column":4}}]},"16":{"line":290,"type":"if","locations":[{"start":{"line":290,"column":6},"end":{"line":290,"column":6}},{"start":{"line":290,"column":6},"end":{"line":290,"column":6}}]},"17":{"line":313,"type":"cond-expr","locations":[{"start":{"line":313,"column":44},"end":{"line":313,"column":82}},{"start":{"line":314,"column":44},"end":{"line":314,"column":83}}]},"18":{"line":334,"type":"if","locations":[{"start":{"line":334,"column":4},"end":{"line":334,"column":4}},{"start":{"line":334,"column":4},"end":{"line":334,"column":4}}]},"19":{"line":350,"type":"if","locations":[{"start":{"line":350,"column":4},"end":{"line":350,"column":4}},{"start":{"line":350,"column":4},"end":{"line":350,"column":4}}]},"20":{"line":359,"type":"if","locations":[{"start":{"line":359,"column":4},"end":{"line":359,"column":4}},{"start":{"line":359,"column":4},"end":{"line":359,"column":4}}]},"21":{"line":397,"type":"if","locations":[{"start":{"line":397,"column":2},"end":{"line":397,"column":2}},{"start":{"line":397,"column":2},"end":{"line":397,"column":2}}]},"22":{"line":402,"type":"if","locations":[{"start":{"line":402,"column":2},"end":{"line":402,"column":2}},{"start":{"line":402,"column":2},"end":{"line":402,"column":2}}]},"23":{"line":412,"type":"if","locations":[{"start":{"line":412,"column":4},"end":{"line":412,"column":4}},{"start":{"line":412,"column":4},"end":{"line":412,"column":4}}]},"24":{"line":440,"type":"if","locations":[{"start":{"line":440,"column":2},"end":{"line":440,"column":2}},{"start":{"line":440,"column":2},"end":{"line":440,"column":2}}]},"25":{"line":444,"type":"if","locations":[{"start":{"line":444,"column":2},"end":{"line":444,"column":2}},{"start":{"line":444,"column":2},"end":{"line":444,"column":2}}]},"26":{"line":528,"type":"if","locations":[{"start":{"line":528,"column":2},"end":{"line":528,"column":2}},{"start":{"line":528,"column":2},"end":{"line":528,"column":2}}]},"27":{"line":530,"type":"if","locations":[{"start":{"line":530,"column":9},"end":{"line":530,"column":9}},{"start":{"line":530,"column":9},"end":{"line":530,"column":9}}]},"28":{"line":532,"type":"if","locations":[{"start":{"line":532,"column":9},"end":{"line":532,"column":9}},{"start":{"line":532,"column":9},"end":{"line":532,"column":9}}]},"29":{"line":538,"type":"if","locations":[{"start":{"line":538,"column":2},"end":{"line":538,"column":2}},{"start":{"line":538,"column":2},"end":{"line":538,"column":2}}]},"30":{"line":542,"type":"if","locations":[{"start":{"line":542,"column":4},"end":{"line":542,"column":4}},{"start":{"line":542,"column":4},"end":{"line":542,"column":4}}]},"31":{"line":549,"type":"if","locations":[{"start":{"line":549,"column":4},"end":{"line":549,"column":4}},{"start":{"line":549,"column":4},"end":{"line":549,"column":4}}]},"32":{"line":565,"type":"if","locations":[{"start":{"line":565,"column":2},"end":{"line":565,"column":2}},{"start":{"line":565,"column":2},"end":{"line":565,"column":2}}]},"33":{"line":567,"type":"if","locations":[{"start":{"line":567,"column":9},"end":{"line":567,"column":9}},{"start":{"line":567,"column":9},"end":{"line":567,"column":9}}]},"34":{"line":568,"type":"if","locations":[{"start":{"line":568,"column":4},"end":{"line":568,"column":4}},{"start":{"line":568,"column":4},"end":{"line":568,"column":4}}]},"35":{"line":577,"type":"if","locations":[{"start":{"line":577,"column":2},"end":{"line":577,"column":2}},{"start":{"line":577,"column":2},"end":{"line":577,"column":2}}]},"36":{"line":583,"type":"if","locations":[{"start":{"line":583,"column":4},"end":{"line":583,"column":4}},{"start":{"line":583,"column":4},"end":{"line":583,"column":4}}]},"37":{"line":587,"type":"if","locations":[{"start":{"line":587,"column":4},"end":{"line":587,"column":4}},{"start":{"line":587,"column":4},"end":{"line":587,"column":4}}]},"38":{"line":589,"type":"if","locations":[{"start":{"line":589,"column":11},"end":{"line":589,"column":11}},{"start":{"line":589,"column":11},"end":{"line":589,"column":11}}]},"39":{"line":632,"type":"if","locations":[{"start":{"line":632,"column":2},"end":{"line":632,"column":2}},{"start":{"line":632,"column":2},"end":{"line":632,"column":2}}]},"40":{"line":632,"type":"binary-expr","locations":[{"start":{"line":632,"column":6},"end":{"line":632,"column":30}},{"start":{"line":632,"column":34},"end":{"line":632,"column":63}}]},"41":{"line":644,"type":"if","locations":[{"start":{"line":644,"column":6},"end":{"line":644,"column":6}},{"start":{"line":644,"column":6},"end":{"line":644,"column":6}}]},"42":{"line":688,"type":"if","locations":[{"start":{"line":688,"column":2},"end":{"line":688,"column":2}},{"start":{"line":688,"column":2},"end":{"line":688,"column":2}}]},"43":{"line":689,"type":"if","locations":[{"start":{"line":689,"column":4},"end":{"line":689,"column":4}},{"start":{"line":689,"column":4},"end":{"line":689,"column":4}}]},"44":{"line":689,"type":"binary-expr","locations":[{"start":{"line":689,"column":9},"end":{"line":689,"column":34}},{"start":{"line":689,"column":40},"end":{"line":689,"column":69}}]},"45":{"line":699,"type":"if","locations":[{"start":{"line":699,"column":7},"end":{"line":699,"column":7}},{"start":{"line":699,"column":7},"end":{"line":699,"column":7}}]},"46":{"line":699,"type":"binary-expr","locations":[{"start":{"line":699,"column":12},"end":{"line":699,"column":36}},{"start":{"line":699,"column":42},"end":{"line":699,"column":71}}]},"47":{"line":714,"type":"if","locations":[{"start":{"line":714,"column":2},"end":{"line":714,"column":2}},{"start":{"line":714,"column":2},"end":{"line":714,"column":2}}]},"48":{"line":714,"type":"binary-expr","locations":[{"start":{"line":714,"column":6},"end":{"line":714,"column":22}},{"start":{"line":714,"column":27},"end":{"line":714,"column":50}},{"start":{"line":714,"column":54},"end":{"line":714,"column":82}}]}}},"/data/upstream/node-http2/lib/connection.js":{"path":"/data/upstream/node-http2/lib/connection.js","s":{"1":1,"2":1,"3":1,"4":1,"5":43,"6":43,"7":43,"8":43,"9":43,"10":43,"11":1,"12":1,"13":1,"14":43,"15":43,"16":43,"17":43,"18":43,"19":43,"20":43,"21":43,"22":1,"23":438,"24":1,"25":40,"26":40,"27":40,"28":0,"29":0,"30":1,"31":18,"32":18,"33":1,"34":116,"35":34,"36":34,"37":34,"38":1,"39":43,"40":22,"41":22,"42":21,"43":21,"44":0,"45":0,"46":0,"47":43,"48":43,"49":43,"50":43,"51":43,"52":1,"53":43,"54":43,"55":43,"56":43,"57":43,"58":1,"59":64,"60":64,"61":64,"62":94,"63":64,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":21,"71":21,"72":21,"73":21,"74":21,"75":21,"76":1,"77":17,"78":17,"79":17,"80":17,"81":1,"82":412,"83":412,"84":412,"85":438,"86":438,"87":438,"88":438,"89":75,"90":0,"91":0,"92":75,"93":17,"94":75,"95":75,"96":5,"97":5,"98":75,"99":75,"100":75,"101":0,"102":75,"103":75,"104":75,"105":0,"106":75,"107":0,"108":412,"109":1,"110":113,"111":113,"112":113,"113":16,"114":113,"115":5,"116":113,"117":113,"118":113,"119":1,"120":1,"121":43,"122":43,"123":43,"124":34,"125":34,"126":0,"127":0,"128":43,"129":1,"130":34,"131":52,"132":1,"133":43,"134":1,"135":43,"136":43,"137":43,"138":1,"139":2,"140":2,"141":2,"142":32,"143":2,"144":1,"145":2,"146":2,"147":2,"148":2,"149":2,"150":1,"151":5,"152":3,"153":3,"154":2,"155":2,"156":2,"157":1,"158":2,"159":2,"160":1,"161":3,"162":3,"163":3,"164":1,"165":2,"166":2,"167":1,"168":43,"169":43,"170":43,"171":43,"172":43,"173":43,"174":1,"175":1,"176":39,"177":1,"178":1,"179":38,"180":38,"181":38,"182":51,"183":1,"184":22,"185":20,"186":20,"187":2,"188":1,"189":1},"b":{"1":[1,0],"2":[40,0],"3":[40,6,2,0],"4":[34,82],"5":[22,21],"6":[21,0],"7":[21,21],"8":[158,107],"9":[0,75],"10":[17,58],"11":[5,70],"12":[75,0],"13":[0,75],"14":[0,75],"15":[16,97],"16":[5,108],"17":[43,18],"18":[34,0],"19":[34,34],"20":[3,2],"21":[2,1],"22":[3,2],"23":[1,38],"24":[39,2],"25":[20,2],"26":[1,1]},"f":{"1":0,"2":43,"3":43,"4":438,"5":40,"6":18,"7":116,"8":43,"9":43,"10":64,"11":1,"12":21,"13":17,"14":412,"15":0,"16":113,"17":43,"18":34,"19":34,"20":43,"21":43,"22":2,"23":2,"24":5,"25":3,"26":2,"27":43,"28":43,"29":38,"30":39,"31":51,"32":22},"fnMap":{"1":{"name":"noop","line":1,"loc":{"start":{"line":1,"column":45},"end":{"line":1,"column":76}}},"2":{"name":"Connection","line":36,"loc":{"start":{"line":36,"column":0},"end":{"line":36,"column":50}}},"3":{"name":"_initializeStreamManagement","line":96,"loc":{"start":{"line":96,"column":51},"end":{"line":96,"column":103}}},"4":{"name":"_getIdOf","line":117,"loc":{"start":{"line":117,"column":32},"end":{"line":117,"column":58}}},"5":{"name":"_writeControlFrame","line":123,"loc":{"start":{"line":123,"column":42},"end":{"line":123,"column":77}}},"6":{"name":"_updateStreamLimit","line":135,"loc":{"start":{"line":135,"column":42},"end":{"line":135,"column":86}}},"7":{"name":"_changeStreamCount","line":140,"loc":{"start":{"line":140,"column":42},"end":{"line":140,"column":78}}},"8":{"name":"_enableReceiving","line":156,"loc":{"start":{"line":156,"column":40},"end":{"line":156,"column":78}}},"9":{"name":"_enableSending","line":187,"loc":{"start":{"line":187,"column":38},"end":{"line":187,"column":70}}},"10":{"name":"_insert","line":196,"loc":{"start":{"line":196,"column":31},"end":{"line":196,"column":56}}},"11":{"name":"_reprioritize","line":207,"loc":{"start":{"line":207,"column":37},"end":{"line":207,"column":68}}},"12":{"name":"_createIncomingStream","line":216,"loc":{"start":{"line":216,"column":45},"end":{"line":216,"column":80}}},"13":{"name":"createStream","line":228,"loc":{"start":{"line":228,"column":36},"end":{"line":228,"column":60}}},"14":{"name":"_send","line":243,"loc":{"start":{"line":243,"column":29},"end":{"line":243,"column":46}}},"15":{"name":"(anonymous_15)","line":270,"loc":{"start":{"line":270,"column":41},"end":{"line":270,"column":66}}},"16":{"name":"_receive","line":291,"loc":{"start":{"line":291,"column":32},"end":{"line":291,"column":63}}},"17":{"name":"_initializeSettingsManagement","line":323,"loc":{"start":{"line":323,"column":53},"end":{"line":323,"column":102}}},"18":{"name":"(anonymous_18)","line":329,"loc":{"start":{"line":329,"column":25},"end":{"line":329,"column":41}}},"19":{"name":"_receiveSettings","line":343,"loc":{"start":{"line":343,"column":40},"end":{"line":343,"column":73}}},"20":{"name":"set","line":350,"loc":{"start":{"line":350,"column":27},"end":{"line":350,"column":50}}},"21":{"name":"_initializeLifecycleManagement","line":368,"loc":{"start":{"line":368,"column":54},"end":{"line":368,"column":96}}},"22":{"name":"_generatePingId","line":375,"loc":{"start":{"line":375,"column":39},"end":{"line":375,"column":66}}},"23":{"name":"ping","line":386,"loc":{"start":{"line":386,"column":28},"end":{"line":386,"column":52}}},"24":{"name":"_receivePing","line":403,"loc":{"start":{"line":403,"column":36},"end":{"line":403,"column":65}}},"25":{"name":"close","line":428,"loc":{"start":{"line":428,"column":29},"end":{"line":428,"column":51}}},"26":{"name":"_receiveGoaway","line":439,"loc":{"start":{"line":439,"column":38},"end":{"line":439,"column":69}}},"27":{"name":"_initializeFlowControl","line":447,"loc":{"start":{"line":447,"column":46},"end":{"line":447,"column":80}}},"28":{"name":"(anonymous_28)","line":450,"loc":{"start":{"line":450,"column":24},"end":{"line":450,"column":41}}},"29":{"name":"noop","line":455,"loc":{"start":{"line":455,"column":49},"end":{"line":455,"column":65}}},"30":{"name":"_setInitialStreamWindowSize","line":468,"loc":{"start":{"line":468,"column":51},"end":{"line":468,"column":94}}},"31":{"name":"(anonymous_31)","line":475,"loc":{"start":{"line":475,"column":28},"end":{"line":475,"column":45}}},"32":{"name":"_setStreamFlowControl","line":483,"loc":{"start":{"line":483,"column":45},"end":{"line":483,"column":85}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":79}},"2":{"start":{"line":10,"column":0},"end":{"line":10,"column":34}},"3":{"start":{"line":12,"column":0},"end":{"line":12,"column":32}},"4":{"start":{"line":36,"column":0},"end":{"line":56,"column":1}},"5":{"start":{"line":38,"column":2},"end":{"line":38,"column":21}},"6":{"start":{"line":41,"column":2},"end":{"line":41,"column":53}},"7":{"start":{"line":44,"column":2},"end":{"line":44,"column":50}},"8":{"start":{"line":47,"column":2},"end":{"line":47,"column":47}},"9":{"start":{"line":50,"column":2},"end":{"line":50,"column":40}},"10":{"start":{"line":53,"column":2},"end":{"line":53,"column":32}},"11":{"start":{"line":57,"column":0},"end":{"line":57,"column":93}},"12":{"start":{"line":93,"column":0},"end":{"line":93,"column":41}},"13":{"start":{"line":96,"column":0},"end":{"line":115,"column":2}},"14":{"start":{"line":100,"column":2},"end":{"line":100,"column":23}},"15":{"start":{"line":101,"column":2},"end":{"line":101,"column":24}},"16":{"start":{"line":104,"column":2},"end":{"line":104,"column":37}},"17":{"start":{"line":105,"column":2},"end":{"line":105,"column":31}},"18":{"start":{"line":108,"column":2},"end":{"line":108,"column":83}},"19":{"start":{"line":112,"column":2},"end":{"line":112,"column":24}},"20":{"start":{"line":113,"column":2},"end":{"line":113,"column":31}},"21":{"start":{"line":114,"column":2},"end":{"line":114,"column":70}},"22":{"start":{"line":117,"column":0},"end":{"line":119,"column":2}},"23":{"start":{"line":118,"column":2},"end":{"line":118,"column":41}},"24":{"start":{"line":123,"column":0},"end":{"line":132,"column":2}},"25":{"start":{"line":124,"column":2},"end":{"line":131,"column":3}},"26":{"start":{"line":126,"column":4},"end":{"line":126,"column":74}},"27":{"start":{"line":127,"column":4},"end":{"line":127,"column":33}},"28":{"start":{"line":129,"column":4},"end":{"line":129,"column":72}},"29":{"start":{"line":130,"column":4},"end":{"line":130,"column":41}},"30":{"start":{"line":135,"column":0},"end":{"line":138,"column":2}},"31":{"start":{"line":136,"column":2},"end":{"line":136,"column":37}},"32":{"start":{"line":137,"column":2},"end":{"line":137,"column":15}},"33":{"start":{"line":140,"column":0},"end":{"line":146,"column":2}},"34":{"start":{"line":141,"column":2},"end":{"line":145,"column":3}},"35":{"start":{"line":142,"column":4},"end":{"line":142,"column":99}},"36":{"start":{"line":143,"column":4},"end":{"line":143,"column":32}},"37":{"start":{"line":144,"column":4},"end":{"line":144,"column":17}},"38":{"start":{"line":156,"column":0},"end":{"line":184,"column":2}},"39":{"start":{"line":158,"column":2},"end":{"line":174,"column":3}},"40":{"start":{"line":159,"column":4},"end":{"line":159,"column":28}},"41":{"start":{"line":160,"column":4},"end":{"line":160,"column":28}},"42":{"start":{"line":164,"column":7},"end":{"line":174,"column":3}},"43":{"start":{"line":165,"column":4},"end":{"line":165,"column":34}},"44":{"start":{"line":170,"column":4},"end":{"line":171,"column":51}},"45":{"start":{"line":172,"column":4},"end":{"line":172,"column":41}},"46":{"start":{"line":173,"column":4},"end":{"line":173,"column":21}},"47":{"start":{"line":176,"column":2},"end":{"line":176,"column":35}},"48":{"start":{"line":179,"column":2},"end":{"line":179,"column":84}},"49":{"start":{"line":180,"column":2},"end":{"line":180,"column":31}},"50":{"start":{"line":181,"column":2},"end":{"line":181,"column":38}},"51":{"start":{"line":183,"column":2},"end":{"line":183,"column":12}},"52":{"start":{"line":187,"column":0},"end":{"line":193,"column":2}},"53":{"start":{"line":188,"column":2},"end":{"line":188,"column":67}},"54":{"start":{"line":189,"column":2},"end":{"line":189,"column":23}},"55":{"start":{"line":190,"column":2},"end":{"line":190,"column":63}},"56":{"start":{"line":191,"column":2},"end":{"line":191,"column":58}},"57":{"start":{"line":192,"column":2},"end":{"line":192,"column":15}},"58":{"start":{"line":196,"column":0},"end":{"line":203,"column":2}},"59":{"start":{"line":197,"column":2},"end":{"line":197,"column":33}},"60":{"start":{"line":198,"column":2},"end":{"line":198,"column":16}},"61":{"start":{"line":199,"column":2},"end":{"line":201,"column":3}},"62":{"start":{"line":200,"column":4},"end":{"line":200,"column":15}},"63":{"start":{"line":202,"column":2},"end":{"line":202,"column":35}},"64":{"start":{"line":207,"column":0},"end":{"line":212,"column":2}},"65":{"start":{"line":208,"column":2},"end":{"line":208,"column":47}},"66":{"start":{"line":209,"column":2},"end":{"line":209,"column":23}},"67":{"start":{"line":210,"column":2},"end":{"line":210,"column":36}},"68":{"start":{"line":211,"column":2},"end":{"line":211,"column":23}},"69":{"start":{"line":216,"column":0},"end":{"line":225,"column":2}},"70":{"start":{"line":217,"column":2},"end":{"line":217,"column":61}},"71":{"start":{"line":219,"column":2},"end":{"line":219,"column":37}},"72":{"start":{"line":220,"column":2},"end":{"line":220,"column":36}},"73":{"start":{"line":221,"column":2},"end":{"line":221,"column":30}},"74":{"start":{"line":222,"column":2},"end":{"line":222,"column":34}},"75":{"start":{"line":224,"column":2},"end":{"line":224,"column":16}},"76":{"start":{"line":228,"column":0},"end":{"line":236,"column":2}},"77":{"start":{"line":229,"column":2},"end":{"line":229,"column":51}},"78":{"start":{"line":232,"column":2},"end":{"line":232,"column":37}},"79":{"start":{"line":233,"column":2},"end":{"line":233,"column":30}},"80":{"start":{"line":235,"column":2},"end":{"line":235,"column":16}},"81":{"start":{"line":243,"column":0},"end":{"line":287,"column":2}},"82":{"start":{"line":244,"column":2},"end":{"line":244,"column":62}},"83":{"start":{"line":247,"column":0},"end":{"line":284,"column":3}},"84":{"start":{"line":248,"column":2},"end":{"line":284,"column":3}},"85":{"start":{"line":249,"column":4},"end":{"line":249,"column":37}},"86":{"start":{"line":250,"column":4},"end":{"line":250,"column":35}},"87":{"start":{"line":251,"column":4},"end":{"line":251,"column":14}},"88":{"start":{"line":252,"column":4},"end":{"line":283,"column":5}},"89":{"start":{"line":253,"column":6},"end":{"line":256,"column":7}},"90":{"start":{"line":254,"column":8},"end":{"line":254,"column":39}},"91":{"start":{"line":255,"column":8},"end":{"line":255,"column":29}},"92":{"start":{"line":258,"column":6},"end":{"line":260,"column":7}},"93":{"start":{"line":259,"column":8},"end":{"line":259,"column":43}},"94":{"start":{"line":262,"column":6},"end":{"line":262,"column":24}},"95":{"start":{"line":263,"column":6},"end":{"line":266,"column":7}},"96":{"start":{"line":264,"column":8},"end":{"line":264,"column":76}},"97":{"start":{"line":265,"column":8},"end":{"line":265,"column":77}},"98":{"start":{"line":268,"column":6},"end":{"line":268,"column":87}},"99":{"start":{"line":269,"column":6},"end":{"line":269,"column":27}},"100":{"start":{"line":270,"column":6},"end":{"line":272,"column":9}},"101":{"start":{"line":271,"column":8},"end":{"line":271,"column":60}},"102":{"start":{"line":274,"column":6},"end":{"line":276,"column":7}},"103":{"start":{"line":275,"column":8},"end":{"line":275,"column":52}},"104":{"start":{"line":278,"column":6},"end":{"line":282,"column":7}},"105":{"start":{"line":279,"column":8},"end":{"line":279,"column":29}},"106":{"start":{"line":280,"column":13},"end":{"line":282,"column":7}},"107":{"start":{"line":281,"column":8},"end":{"line":281,"column":26}},"108":{"start":{"line":286,"column":2},"end":{"line":286,"column":90}},"109":{"start":{"line":291,"column":0},"end":{"line":313,"column":2}},"110":{"start":{"line":292,"column":2},"end":{"line":292,"column":65}},"111":{"start":{"line":295,"column":2},"end":{"line":295,"column":45}},"112":{"start":{"line":298,"column":2},"end":{"line":300,"column":3}},"113":{"start":{"line":299,"column":4},"end":{"line":299,"column":54}},"114":{"start":{"line":303,"column":2},"end":{"line":305,"column":3}},"115":{"start":{"line":304,"column":4},"end":{"line":304,"column":78}},"116":{"start":{"line":307,"column":2},"end":{"line":307,"column":58}},"117":{"start":{"line":310,"column":2},"end":{"line":310,"column":31}},"118":{"start":{"line":312,"column":2},"end":{"line":312,"column":9}},"119":{"start":{"line":318,"column":0},"end":{"line":320,"column":2}},"120":{"start":{"line":323,"column":0},"end":{"line":340,"column":2}},"121":{"start":{"line":325,"column":2},"end":{"line":325,"column":88}},"122":{"start":{"line":326,"column":2},"end":{"line":326,"column":40}},"123":{"start":{"line":329,"column":2},"end":{"line":336,"column":5}},"124":{"start":{"line":330,"column":4},"end":{"line":335,"column":5}},"125":{"start":{"line":331,"column":6},"end":{"line":331,"column":94}},"126":{"start":{"line":333,"column":6},"end":{"line":333,"column":99}},"127":{"start":{"line":334,"column":6},"end":{"line":334,"column":25}},"128":{"start":{"line":339,"column":2},"end":{"line":339,"column":45}},"129":{"start":{"line":343,"column":0},"end":{"line":347,"column":2}},"130":{"start":{"line":344,"column":2},"end":{"line":346,"column":3}},"131":{"start":{"line":345,"column":4},"end":{"line":345,"column":42}},"132":{"start":{"line":350,"column":0},"end":{"line":356,"column":2}},"133":{"start":{"line":351,"column":2},"end":{"line":355,"column":5}},"134":{"start":{"line":368,"column":0},"end":{"line":372,"column":2}},"135":{"start":{"line":369,"column":2},"end":{"line":369,"column":19}},"136":{"start":{"line":370,"column":2},"end":{"line":370,"column":37}},"137":{"start":{"line":371,"column":2},"end":{"line":371,"column":41}},"138":{"start":{"line":375,"column":0},"end":{"line":383,"column":2}},"139":{"start":{"line":376,"column":2},"end":{"line":381,"column":29}},"140":{"start":{"line":377,"column":4},"end":{"line":377,"column":16}},"141":{"start":{"line":378,"column":4},"end":{"line":380,"column":5}},"142":{"start":{"line":379,"column":6},"end":{"line":379,"column":54}},"143":{"start":{"line":382,"column":2},"end":{"line":382,"column":12}},"144":{"start":{"line":386,"column":0},"end":{"line":400,"column":2}},"145":{"start":{"line":387,"column":2},"end":{"line":387,"column":34}},"146":{"start":{"line":388,"column":2},"end":{"line":388,"column":35}},"147":{"start":{"line":389,"column":2},"end":{"line":389,"column":29}},"148":{"start":{"line":391,"column":2},"end":{"line":391,"column":51}},"149":{"start":{"line":392,"column":2},"end":{"line":399,"column":5}},"150":{"start":{"line":403,"column":0},"end":{"line":425,"column":2}},"151":{"start":{"line":404,"column":2},"end":{"line":424,"column":3}},"152":{"start":{"line":405,"column":4},"end":{"line":405,"column":40}},"153":{"start":{"line":406,"column":4},"end":{"line":412,"column":5}},"154":{"start":{"line":407,"column":6},"end":{"line":407,"column":76}},"155":{"start":{"line":408,"column":6},"end":{"line":408,"column":24}},"156":{"start":{"line":409,"column":6},"end":{"line":409,"column":29}},"157":{"start":{"line":411,"column":6},"end":{"line":411,"column":71}},"158":{"start":{"line":415,"column":4},"end":{"line":415,"column":61}},"159":{"start":{"line":416,"column":4},"end":{"line":423,"column":7}},"160":{"start":{"line":428,"column":0},"end":{"line":437,"column":2}},"161":{"start":{"line":429,"column":2},"end":{"line":429,"column":61}},"162":{"start":{"line":430,"column":2},"end":{"line":435,"column":5}},"163":{"start":{"line":436,"column":2},"end":{"line":436,"column":18}},"164":{"start":{"line":439,"column":0},"end":{"line":442,"column":2}},"165":{"start":{"line":440,"column":2},"end":{"line":440,"column":76}},"166":{"start":{"line":441,"column":2},"end":{"line":441,"column":18}},"167":{"start":{"line":447,"column":0},"end":{"line":459,"column":2}},"168":{"start":{"line":449,"column":2},"end":{"line":449,"column":61}},"169":{"start":{"line":450,"column":2},"end":{"line":452,"column":5}},"170":{"start":{"line":451,"column":4},"end":{"line":451,"column":68}},"171":{"start":{"line":453,"column":2},"end":{"line":453,"column":76}},"172":{"start":{"line":454,"column":2},"end":{"line":454,"column":71}},"173":{"start":{"line":455,"column":2},"end":{"line":455,"column":68}},"174":{"start":{"line":462,"column":0},"end":{"line":462,"column":39}},"175":{"start":{"line":468,"column":0},"end":{"line":479,"column":2}},"176":{"start":{"line":469,"column":2},"end":{"line":478,"column":3}},"177":{"start":{"line":470,"column":4},"end":{"line":470,"column":112}},"178":{"start":{"line":471,"column":4},"end":{"line":471,"column":45}},"179":{"start":{"line":473,"column":4},"end":{"line":473,"column":76}},"180":{"start":{"line":474,"column":4},"end":{"line":474,"column":41}},"181":{"start":{"line":475,"column":4},"end":{"line":477,"column":7}},"182":{"start":{"line":476,"column":6},"end":{"line":476,"column":45}},"183":{"start":{"line":483,"column":0},"end":{"line":491,"column":2}},"184":{"start":{"line":484,"column":2},"end":{"line":490,"column":3}},"185":{"start":{"line":485,"column":4},"end":{"line":485,"column":35}},"186":{"start":{"line":486,"column":4},"end":{"line":486,"column":47}},"187":{"start":{"line":487,"column":9},"end":{"line":490,"column":3}},"188":{"start":{"line":488,"column":4},"end":{"line":488,"column":81}},"189":{"start":{"line":489,"column":4},"end":{"line":489,"column":45}}},"branchMap":{"1":{"line":1,"type":"cond-expr","locations":[{"start":{"line":1,"column":40},"end":{"line":1,"column":57}},{"start":{"line":1,"column":45},"end":{"line":1,"column":78}}]},"2":{"line":124,"type":"if","locations":[{"start":{"line":124,"column":2},"end":{"line":124,"column":2}},{"start":{"line":124,"column":2},"end":{"line":124,"column":2}}]},"3":{"line":124,"type":"binary-expr","locations":[{"start":{"line":124,"column":7},"end":{"line":124,"column":32}},{"start":{"line":124,"column":38},"end":{"line":124,"column":59}},{"start":{"line":125,"column":7},"end":{"line":125,"column":30}},{"start":{"line":125,"column":36},"end":{"line":125,"column":66}}]},"4":{"line":141,"type":"if","locations":[{"start":{"line":141,"column":2},"end":{"line":141,"column":2}},{"start":{"line":141,"column":2},"end":{"line":141,"column":2}}]},"5":{"line":158,"type":"if","locations":[{"start":{"line":158,"column":2},"end":{"line":158,"column":2}},{"start":{"line":158,"column":2},"end":{"line":158,"column":2}}]},"6":{"line":164,"type":"if","locations":[{"start":{"line":164,"column":7},"end":{"line":164,"column":7}},{"start":{"line":164,"column":7},"end":{"line":164,"column":7}}]},"7":{"line":164,"type":"binary-expr","locations":[{"start":{"line":164,"column":12},"end":{"line":164,"column":41}},{"start":{"line":164,"column":47},"end":{"line":164,"column":82}}]},"8":{"line":199,"type":"binary-expr","locations":[{"start":{"line":199,"column":10},"end":{"line":199,"column":32}},{"start":{"line":199,"column":38},"end":{"line":199,"column":82}}]},"9":{"line":253,"type":"if","locations":[{"start":{"line":253,"column":6},"end":{"line":253,"column":6}},{"start":{"line":253,"column":6},"end":{"line":253,"column":6}}]},"10":{"line":258,"type":"if","locations":[{"start":{"line":258,"column":6},"end":{"line":258,"column":6}},{"start":{"line":258,"column":6},"end":{"line":258,"column":6}}]},"11":{"line":263,"type":"if","locations":[{"start":{"line":263,"column":6},"end":{"line":263,"column":6}},{"start":{"line":263,"column":6},"end":{"line":263,"column":6}}]},"12":{"line":274,"type":"if","locations":[{"start":{"line":274,"column":6},"end":{"line":274,"column":6}},{"start":{"line":274,"column":6},"end":{"line":274,"column":6}}]},"13":{"line":278,"type":"if","locations":[{"start":{"line":278,"column":6},"end":{"line":278,"column":6}},{"start":{"line":278,"column":6},"end":{"line":278,"column":6}}]},"14":{"line":280,"type":"if","locations":[{"start":{"line":280,"column":13},"end":{"line":280,"column":13}},{"start":{"line":280,"column":13},"end":{"line":280,"column":13}}]},"15":{"line":298,"type":"if","locations":[{"start":{"line":298,"column":2},"end":{"line":298,"column":2}},{"start":{"line":298,"column":2},"end":{"line":298,"column":2}}]},"16":{"line":303,"type":"if","locations":[{"start":{"line":303,"column":2},"end":{"line":303,"column":2}},{"start":{"line":303,"column":2},"end":{"line":303,"column":2}}]},"17":{"line":326,"type":"binary-expr","locations":[{"start":{"line":326,"column":11},"end":{"line":326,"column":19}},{"start":{"line":326,"column":23},"end":{"line":326,"column":38}}]},"18":{"line":330,"type":"if","locations":[{"start":{"line":330,"column":4},"end":{"line":330,"column":4}},{"start":{"line":330,"column":4},"end":{"line":330,"column":4}}]},"19":{"line":330,"type":"binary-expr","locations":[{"start":{"line":330,"column":9},"end":{"line":330,"column":27}},{"start":{"line":330,"column":33},"end":{"line":330,"column":58}}]},"20":{"line":404,"type":"if","locations":[{"start":{"line":404,"column":2},"end":{"line":404,"column":2}},{"start":{"line":404,"column":2},"end":{"line":404,"column":2}}]},"21":{"line":406,"type":"if","locations":[{"start":{"line":406,"column":4},"end":{"line":406,"column":4}},{"start":{"line":406,"column":4},"end":{"line":406,"column":4}}]},"22":{"line":434,"type":"binary-expr","locations":[{"start":{"line":434,"column":11},"end":{"line":434,"column":16}},{"start":{"line":434,"column":20},"end":{"line":434,"column":30}}]},"23":{"line":469,"type":"if","locations":[{"start":{"line":469,"column":2},"end":{"line":469,"column":2}},{"start":{"line":469,"column":2},"end":{"line":469,"column":2}}]},"24":{"line":469,"type":"binary-expr","locations":[{"start":{"line":469,"column":7},"end":{"line":469,"column":49}},{"start":{"line":469,"column":55},"end":{"line":469,"column":72}}]},"25":{"line":484,"type":"if","locations":[{"start":{"line":484,"column":2},"end":{"line":484,"column":2}},{"start":{"line":484,"column":2},"end":{"line":484,"column":2}}]},"26":{"line":487,"type":"if","locations":[{"start":{"line":487,"column":9},"end":{"line":487,"column":9}},{"start":{"line":487,"column":9},"end":{"line":487,"column":9}}]}}},"/data/upstream/node-http2/lib/flow.js":{"path":"/data/upstream/node-http2/lib/flow.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":162,"7":162,"8":162,"9":162,"10":162,"11":162,"12":162,"13":1,"14":1,"15":1,"16":1,"17":308,"18":308,"19":59,"20":308,"21":100,"22":100,"23":100,"24":7,"25":100,"26":208,"27":308,"28":6,"29":1,"30":7,"31":7,"32":6,"33":6,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1244,"41":1143,"42":101,"43":7,"44":7,"45":7,"46":7,"47":8,"48":7,"49":1244,"50":1,"51":1,"52":264,"53":357,"54":357,"55":257,"56":100,"57":7,"58":93,"59":93,"60":93,"61":93,"62":93,"63":357,"64":357,"65":350,"66":350,"67":140,"68":140,"69":140,"70":350,"71":357,"72":264,"73":7,"74":264,"75":1,"76":182,"77":6,"78":176,"79":176,"80":176,"81":182,"82":181,"83":1,"84":1,"85":1,"86":34,"87":34,"88":1,"89":1,"90":90,"91":1,"92":1,"93":89,"94":89,"95":89,"96":1,"97":1,"98":88,"99":1,"100":6,"101":1,"102":56,"103":56,"104":1,"105":1},"b":{"1":[1,0],"2":[59,249],"3":[100,208],"4":[308,180,133],"5":[7,93],"6":[6,302],"7":[308,6,6],"8":[6,1],"9":[7,6,6],"10":[1143,101],"11":[7,94],"12":[15,14],"13":[7,7,1,1],"14":[357,100],"15":[257,100],"16":[357,351,190,163],"17":[7,93],"18":[350,7],"19":[140,210],"20":[350,344,183],"21":[7,257],"22":[6,176],"23":[176,135],"24":[181,1],"25":[34,34],"26":[1,89],"27":[90,2],"28":[1,88],"29":[89,43],"30":[1,5]},"f":{"1":0,"2":162,"3":1,"4":308,"5":100,"6":7,"7":1,"8":1,"9":1244,"10":264,"11":182,"12":34,"13":90,"14":6,"15":56,"16":1},"fnMap":{"1":{"name":"noop","line":1,"loc":{"start":{"line":1,"column":45},"end":{"line":1,"column":76}}},"2":{"name":"Flow","line":72,"loc":{"start":{"line":72,"column":0},"end":{"line":72,"column":29}}},"3":{"name":"_receive","line":89,"loc":{"start":{"line":89,"column":26},"end":{"line":89,"column":61}}},"4":{"name":"_write","line":97,"loc":{"start":{"line":97,"column":24},"end":{"line":97,"column":67}}},"5":{"name":"(anonymous_5)","line":105,"loc":{"start":{"line":105,"column":25},"end":{"line":105,"column":36}}},"6":{"name":"_restoreWindow","line":126,"loc":{"start":{"line":126,"column":32},"end":{"line":126,"column":58}}},"7":{"name":"disableRemoteFlowControl","line":140,"loc":{"start":{"line":140,"column":42},"end":{"line":140,"column":78}}},"8":{"name":"_send","line":170,"loc":{"start":{"line":170,"column":23},"end":{"line":170,"column":40}}},"9":{"name":"_read","line":177,"loc":{"start":{"line":177,"column":23},"end":{"line":177,"column":40}}},"10":{"name":"_push","line":211,"loc":{"start":{"line":211,"column":23},"end":{"line":211,"column":64}}},"11":{"name":"push","line":261,"loc":{"start":{"line":261,"column":22},"end":{"line":261,"column":43}}},"12":{"name":"getLastQueuedFrame","line":280,"loc":{"start":{"line":280,"column":36},"end":{"line":280,"column":66}}},"13":{"name":"_increaseWindow","line":298,"loc":{"start":{"line":298,"column":33},"end":{"line":298,"column":64}}},"14":{"name":"_updateWindow","line":322,"loc":{"start":{"line":322,"column":31},"end":{"line":322,"column":61}}},"15":{"name":"setInitialWindow","line":330,"loc":{"start":{"line":330,"column":34},"end":{"line":330,"column":75}}},"16":{"name":"disableLocalFlowControl","line":336,"loc":{"start":{"line":336,"column":41},"end":{"line":336,"column":76}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":79}},"2":{"start":{"line":10,"column":0},"end":{"line":10,"column":39}},"3":{"start":{"line":12,"column":0},"end":{"line":12,"column":20}},"4":{"start":{"line":69,"column":0},"end":{"line":69,"column":32}},"5":{"start":{"line":72,"column":0},"end":{"line":82,"column":1}},"6":{"start":{"line":73,"column":2},"end":{"line":73,"column":42}},"7":{"start":{"line":75,"column":2},"end":{"line":75,"column":59}},"8":{"start":{"line":76,"column":2},"end":{"line":76,"column":38}},"9":{"start":{"line":77,"column":2},"end":{"line":77,"column":19}},"10":{"start":{"line":79,"column":2},"end":{"line":79,"column":22}},"11":{"start":{"line":80,"column":2},"end":{"line":80,"column":21}},"12":{"start":{"line":81,"column":2},"end":{"line":81,"column":41}},"13":{"start":{"line":83,"column":0},"end":{"line":83,"column":83}},"14":{"start":{"line":89,"column":0},"end":{"line":91,"column":2}},"15":{"start":{"line":90,"column":2},"end":{"line":90,"column":99}},"16":{"start":{"line":97,"column":0},"end":{"line":122,"column":2}},"17":{"start":{"line":98,"column":2},"end":{"line":98,"column":32}},"18":{"start":{"line":100,"column":2},"end":{"line":102,"column":3}},"19":{"start":{"line":101,"column":4},"end":{"line":101,"column":23}},"20":{"start":{"line":104,"column":2},"end":{"line":116,"column":3}},"21":{"start":{"line":105,"column":4},"end":{"line":111,"column":18}},"22":{"start":{"line":106,"column":6},"end":{"line":106,"column":42}},"23":{"start":{"line":107,"column":6},"end":{"line":109,"column":7}},"24":{"start":{"line":108,"column":8},"end":{"line":108,"column":80}},"25":{"start":{"line":110,"column":6},"end":{"line":110,"column":17}},"26":{"start":{"line":115,"column":4},"end":{"line":115,"column":35}},"27":{"start":{"line":118,"column":2},"end":{"line":121,"column":3}},"28":{"start":{"line":120,"column":4},"end":{"line":120,"column":30}},"29":{"start":{"line":126,"column":0},"end":{"line":136,"column":2}},"30":{"start":{"line":127,"column":2},"end":{"line":127,"column":34}},"31":{"start":{"line":128,"column":2},"end":{"line":135,"column":3}},"32":{"start":{"line":129,"column":4},"end":{"line":133,"column":7}},"33":{"start":{"line":134,"column":4},"end":{"line":134,"column":23}},"34":{"start":{"line":140,"column":0},"end":{"line":149,"column":2}},"35":{"start":{"line":141,"column":2},"end":{"line":141,"column":41}},"36":{"start":{"line":142,"column":2},"end":{"line":148,"column":5}},"37":{"start":{"line":170,"column":0},"end":{"line":172,"column":2}},"38":{"start":{"line":171,"column":2},"end":{"line":171,"column":81}},"39":{"start":{"line":177,"column":0},"end":{"line":199,"column":2}},"40":{"start":{"line":179,"column":2},"end":{"line":196,"column":3}},"41":{"start":{"line":180,"column":4},"end":{"line":180,"column":17}},"42":{"start":{"line":185,"column":7},"end":{"line":196,"column":3}},"43":{"start":{"line":186,"column":4},"end":{"line":186,"column":14}},"44":{"start":{"line":187,"column":4},"end":{"line":187,"column":26}},"45":{"start":{"line":188,"column":4},"end":{"line":188,"column":65}},"46":{"start":{"line":189,"column":4},"end":{"line":191,"column":5}},"47":{"start":{"line":190,"column":6},"end":{"line":190,"column":55}},"48":{"start":{"line":193,"column":4},"end":{"line":195,"column":71}},"49":{"start":{"line":198,"column":2},"end":{"line":198,"column":38}},"50":{"start":{"line":209,"column":0},"end":{"line":209,"column":28}},"51":{"start":{"line":211,"column":0},"end":{"line":258,"column":2}},"52":{"start":{"line":212,"column":2},"end":{"line":251,"column":36}},"53":{"start":{"line":213,"column":4},"end":{"line":213,"column":55}},"54":{"start":{"line":214,"column":4},"end":{"line":236,"column":5}},"55":{"start":{"line":216,"column":6},"end":{"line":216,"column":26}},"56":{"start":{"line":219,"column":9},"end":{"line":236,"column":5}},"57":{"start":{"line":220,"column":6},"end":{"line":220,"column":24}},"58":{"start":{"line":224,"column":6},"end":{"line":224,"column":63}},"59":{"start":{"line":225,"column":6},"end":{"line":230,"column":8}},"60":{"start":{"line":232,"column":6},"end":{"line":233,"column":73}},"61":{"start":{"line":234,"column":6},"end":{"line":234,"column":47}},"62":{"start":{"line":235,"column":6},"end":{"line":235,"column":24}},"63":{"start":{"line":238,"column":4},"end":{"line":238,"column":26}},"64":{"start":{"line":239,"column":4},"end":{"line":248,"column":5}},"65":{"start":{"line":240,"column":6},"end":{"line":240,"column":85}},"66":{"start":{"line":241,"column":6},"end":{"line":246,"column":7}},"67":{"start":{"line":242,"column":8},"end":{"line":243,"column":65}},"68":{"start":{"line":244,"column":8},"end":{"line":244,"column":48}},"69":{"start":{"line":245,"column":8},"end":{"line":245,"column":34}},"70":{"start":{"line":247,"column":6},"end":{"line":247,"column":65}},"71":{"start":{"line":250,"column":4},"end":{"line":250,"column":22}},"72":{"start":{"line":253,"column":2},"end":{"line":255,"column":3}},"73":{"start":{"line":254,"column":4},"end":{"line":254,"column":33}},"74":{"start":{"line":257,"column":2},"end":{"line":257,"column":20}},"75":{"start":{"line":261,"column":0},"end":{"line":276,"column":2}},"76":{"start":{"line":262,"column":2},"end":{"line":268,"column":3}},"77":{"start":{"line":263,"column":4},"end":{"line":263,"column":57}},"78":{"start":{"line":265,"column":4},"end":{"line":265,"column":36}},"79":{"start":{"line":266,"column":4},"end":{"line":266,"column":67}},"80":{"start":{"line":267,"column":4},"end":{"line":267,"column":32}},"81":{"start":{"line":270,"column":2},"end":{"line":275,"column":3}},"82":{"start":{"line":271,"column":4},"end":{"line":271,"column":65}},"83":{"start":{"line":273,"column":4},"end":{"line":273,"column":28}},"84":{"start":{"line":274,"column":4},"end":{"line":274,"column":16}},"85":{"start":{"line":280,"column":0},"end":{"line":283,"column":2}},"86":{"start":{"line":281,"column":2},"end":{"line":281,"column":49}},"87":{"start":{"line":282,"column":2},"end":{"line":282,"column":88}},"88":{"start":{"line":296,"column":0},"end":{"line":296,"column":44}},"89":{"start":{"line":298,"column":0},"end":{"line":312,"column":2}},"90":{"start":{"line":299,"column":2},"end":{"line":311,"column":3}},"91":{"start":{"line":300,"column":4},"end":{"line":300,"column":97}},"92":{"start":{"line":301,"column":4},"end":{"line":301,"column":45}},"93":{"start":{"line":303,"column":4},"end":{"line":303,"column":96}},"94":{"start":{"line":304,"column":4},"end":{"line":304,"column":25}},"95":{"start":{"line":305,"column":4},"end":{"line":310,"column":5}},"96":{"start":{"line":306,"column":6},"end":{"line":306,"column":61}},"97":{"start":{"line":307,"column":6},"end":{"line":307,"column":47}},"98":{"start":{"line":309,"column":6},"end":{"line":309,"column":19}},"99":{"start":{"line":322,"column":0},"end":{"line":324,"column":2}},"100":{"start":{"line":323,"column":2},"end":{"line":323,"column":84}},"101":{"start":{"line":330,"column":0},"end":{"line":333,"column":2}},"102":{"start":{"line":331,"column":2},"end":{"line":331,"column":60}},"103":{"start":{"line":332,"column":2},"end":{"line":332,"column":38}},"104":{"start":{"line":336,"column":0},"end":{"line":338,"column":2}},"105":{"start":{"line":337,"column":2},"end":{"line":337,"column":33}}},"branchMap":{"1":{"line":1,"type":"cond-expr","locations":[{"start":{"line":1,"column":40},"end":{"line":1,"column":57}},{"start":{"line":1,"column":45},"end":{"line":1,"column":78}}]},"2":{"line":100,"type":"if","locations":[{"start":{"line":100,"column":2},"end":{"line":100,"column":2}},{"start":{"line":100,"column":2},"end":{"line":100,"column":2}}]},"3":{"line":104,"type":"if","locations":[{"start":{"line":104,"column":2},"end":{"line":104,"column":2}},{"start":{"line":104,"column":2},"end":{"line":104,"column":2}}]},"4":{"line":104,"type":"binary-expr","locations":[{"start":{"line":104,"column":7},"end":{"line":104,"column":28}},{"start":{"line":104,"column":34},"end":{"line":104,"column":55}},{"start":{"line":104,"column":60},"end":{"line":104,"column":92}}]},"5":{"line":107,"type":"if","locations":[{"start":{"line":107,"column":6},"end":{"line":107,"column":6}},{"start":{"line":107,"column":6},"end":{"line":107,"column":6}}]},"6":{"line":118,"type":"if","locations":[{"start":{"line":118,"column":2},"end":{"line":118,"column":2}},{"start":{"line":118,"column":2},"end":{"line":118,"column":2}}]},"7":{"line":118,"type":"binary-expr","locations":[{"start":{"line":118,"column":7},"end":{"line":118,"column":37}},{"start":{"line":119,"column":8},"end":{"line":119,"column":41}},{"start":{"line":119,"column":47},"end":{"line":119,"column":83}}]},"8":{"line":128,"type":"if","locations":[{"start":{"line":128,"column":2},"end":{"line":128,"column":2}},{"start":{"line":128,"column":2},"end":{"line":128,"column":2}}]},"9":{"line":128,"type":"binary-expr","locations":[{"start":{"line":128,"column":6},"end":{"line":128,"column":18}},{"start":{"line":128,"column":22},"end":{"line":128,"column":54}},{"start":{"line":128,"column":59},"end":{"line":128,"column":77}}]},"10":{"line":179,"type":"if","locations":[{"start":{"line":179,"column":2},"end":{"line":179,"column":2}},{"start":{"line":179,"column":2},"end":{"line":179,"column":2}}]},"11":{"line":185,"type":"if","locations":[{"start":{"line":185,"column":7},"end":{"line":185,"column":7}},{"start":{"line":185,"column":7},"end":{"line":185,"column":7}}]},"12":{"line":189,"type":"binary-expr","locations":[{"start":{"line":189,"column":11},"end":{"line":189,"column":21}},{"start":{"line":189,"column":26},"end":{"line":189,"column":53}}]},"13":{"line":193,"type":"binary-expr","locations":[{"start":{"line":193,"column":12},"end":{"line":193,"column":31}},{"start":{"line":194,"column":12},"end":{"line":194,"column":36}},{"start":{"line":195,"column":13},"end":{"line":195,"column":31}},{"start":{"line":195,"column":37},"end":{"line":195,"column":67}}]},"14":{"line":251,"type":"binary-expr","locations":[{"start":{"line":251,"column":11},"end":{"line":251,"column":20}},{"start":{"line":251,"column":24},"end":{"line":251,"column":34}}]},"15":{"line":214,"type":"if","locations":[{"start":{"line":214,"column":4},"end":{"line":214,"column":4}},{"start":{"line":214,"column":4},"end":{"line":214,"column":4}}]},"16":{"line":214,"type":"binary-expr","locations":[{"start":{"line":214,"column":9},"end":{"line":214,"column":23}},{"start":{"line":214,"column":29},"end":{"line":214,"column":50}},{"start":{"line":215,"column":10},"end":{"line":215,"column":43}},{"start":{"line":215,"column":49},"end":{"line":215,"column":86}}]},"17":{"line":219,"type":"if","locations":[{"start":{"line":219,"column":9},"end":{"line":219,"column":9}},{"start":{"line":219,"column":9},"end":{"line":219,"column":9}}]},"18":{"line":239,"type":"if","locations":[{"start":{"line":239,"column":4},"end":{"line":239,"column":4}},{"start":{"line":239,"column":4},"end":{"line":239,"column":4}}]},"19":{"line":241,"type":"if","locations":[{"start":{"line":241,"column":6},"end":{"line":241,"column":6}},{"start":{"line":241,"column":6},"end":{"line":241,"column":6}}]},"20":{"line":241,"type":"binary-expr","locations":[{"start":{"line":241,"column":10},"end":{"line":241,"column":21}},{"start":{"line":241,"column":26},"end":{"line":241,"column":53}},{"start":{"line":241,"column":59},"end":{"line":241,"column":84}}]},"21":{"line":253,"type":"if","locations":[{"start":{"line":253,"column":2},"end":{"line":253,"column":2}},{"start":{"line":253,"column":2},"end":{"line":253,"column":2}}]},"22":{"line":262,"type":"if","locations":[{"start":{"line":262,"column":2},"end":{"line":262,"column":2}},{"start":{"line":262,"column":2},"end":{"line":262,"column":2}}]},"23":{"line":265,"type":"binary-expr","locations":[{"start":{"line":265,"column":18},"end":{"line":265,"column":29}},{"start":{"line":265,"column":33},"end":{"line":265,"column":35}}]},"24":{"line":270,"type":"if","locations":[{"start":{"line":270,"column":2},"end":{"line":270,"column":2}},{"start":{"line":270,"column":2},"end":{"line":270,"column":2}}]},"25":{"line":282,"type":"binary-expr","locations":[{"start":{"line":282,"column":9},"end":{"line":282,"column":44}},{"start":{"line":282,"column":48},"end":{"line":282,"column":87}}]},"26":{"line":299,"type":"if","locations":[{"start":{"line":299,"column":2},"end":{"line":299,"column":2}},{"start":{"line":299,"column":2},"end":{"line":299,"column":2}}]},"27":{"line":299,"type":"binary-expr","locations":[{"start":{"line":299,"column":7},"end":{"line":299,"column":32}},{"start":{"line":299,"column":38},"end":{"line":299,"column":55}}]},"28":{"line":305,"type":"if","locations":[{"start":{"line":305,"column":4},"end":{"line":305,"column":4}},{"start":{"line":305,"column":4},"end":{"line":305,"column":4}}]},"29":{"line":305,"type":"binary-expr","locations":[{"start":{"line":305,"column":9},"end":{"line":305,"column":34}},{"start":{"line":305,"column":40},"end":{"line":305,"column":72}}]},"30":{"line":323,"type":"cond-expr","locations":[{"start":{"line":323,"column":54},"end":{"line":323,"column":62}},{"start":{"line":323,"column":65},"end":{"line":323,"column":82}}]}}},"/data/upstream/node-http2/lib/stream.js":{"path":"/data/upstream/node-http2/lib/stream.js","s":{"1":1,"2":1,"3":1,"4":1,"5":103,"6":103,"7":103,"8":103,"9":103,"10":1,"11":1,"12":1,"13":1,"14":103,"15":103,"16":103,"17":103,"18":6,"19":103,"20":39,"21":0,"22":39,"23":103,"24":0,"25":1,"26":6,"27":6,"28":6,"29":6,"30":1,"31":40,"32":1,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":1,"44":26,"45":19,"46":19,"47":1,"48":1,"49":103,"50":103,"51":103,"52":103,"53":103,"54":103,"55":103,"56":103,"57":1,"58":87,"59":87,"60":87,"61":42,"62":42,"63":0,"64":0,"65":45,"66":87,"67":33,"68":87,"69":87,"70":1,"71":35,"72":0,"73":0,"74":0,"75":1,"76":18,"77":18,"78":18,"79":0,"80":1,"81":690,"82":0,"83":0,"84":0,"85":1,"86":34,"87":34,"88":34,"89":10,"90":10,"91":10,"92":10,"93":24,"94":1,"95":103,"96":103,"97":103,"98":103,"99":103,"100":103,"101":1,"102":155,"103":155,"104":155,"105":155,"106":1,"107":220,"108":1,"109":268,"110":268,"111":268,"112":268,"113":268,"114":106,"115":106,"116":87,"117":87,"118":8,"119":8,"120":33,"121":33,"122":24,"123":24,"124":10,"125":10,"126":268,"127":268,"128":55,"129":40,"130":40,"131":3,"132":40,"133":15,"134":6,"135":9,"136":55,"137":18,"138":4,"139":14,"140":6,"141":8,"142":8,"143":18,"144":18,"145":6,"146":12,"147":4,"148":8,"149":8,"150":18,"151":61,"152":27,"153":34,"154":2,"155":61,"156":55,"157":23,"158":32,"159":3,"160":55,"161":36,"162":21,"163":15,"164":3,"165":36,"166":25,"167":14,"168":25,"169":268,"170":64,"171":64,"172":268,"173":13,"174":13,"175":13,"176":268,"177":110,"178":110,"179":57,"180":53,"181":158,"182":85,"183":268,"184":45,"185":45,"186":20,"187":20,"188":25,"189":25,"190":25,"191":1,"192":1,"193":1,"194":6,"195":2,"196":2,"197":6},"b":{"1":[1,0],"2":[0,39],"3":[0,0],"4":[0,0,0],"5":[0,0],"6":[0,0],"7":[0,0,0],"8":[19,7],"9":[42,45],"10":[0,42],"11":[33,54],"12":[87,0],"13":[0,35],"14":[18,0],"15":[0,690],"16":[10,24],"17":[34,10,4],"18":[10,0],"19":[220,133,117],"20":[106,87,8,33,24,10],"21":[55,18,18,61,55,36,25],"22":[40,15],"23":[3,37],"24":[0,3],"25":[6,9],"26":[15,10],"27":[4,14],"28":[18,13],"29":[6,8],"30":[0,8],"31":[8,4],"32":[6,12],"33":[4,8],"34":[12,8],"35":[0,8],"36":[8,4],"37":[27,34],"38":[18,9],"39":[2,32],"40":[23,32],"41":[55,53,50],"42":[29,3],"43":[32,3,3,3],"44":[21,15],"45":[36,31,28],"46":[12,3],"47":[15,3,3,3],"48":[11,14],"49":[25,7,23,18,12,6,5,4],"50":[64,204],"51":[268,89],"52":[13,255],"53":[268,24],"54":[6,7],"55":[110,158],"56":[57,53],"57":[85,73],"58":[45,223],"59":[20,25],"60":[2,4]},"f":{"1":0,"2":103,"3":103,"4":6,"5":39,"6":0,"7":6,"8":40,"9":0,"10":26,"11":103,"12":87,"13":35,"14":18,"15":690,"16":34,"17":103,"18":155,"19":220,"20":268,"21":6},"fnMap":{"1":{"name":"noop","line":1,"loc":{"start":{"line":1,"column":45},"end":{"line":1,"column":76}}},"2":{"name":"Stream","line":47,"loc":{"start":{"line":47,"column":0},"end":{"line":47,"column":21}}},"3":{"name":"_initializeManagement","line":73,"loc":{"start":{"line":73,"column":41},"end":{"line":73,"column":74}}},"4":{"name":"(anonymous_4)","line":77,"loc":{"start":{"line":77,"column":26},"end":{"line":77,"column":42}}},"5":{"name":"(anonymous_5)","line":80,"loc":{"start":{"line":80,"column":21},"end":{"line":80,"column":37}}},"6":{"name":"(anonymous_6)","line":86,"loc":{"start":{"line":86,"column":22},"end":{"line":86,"column":38}}},"7":{"name":"promise","line":91,"loc":{"start":{"line":91,"column":27},"end":{"line":91,"column":53}}},"8":{"name":"headers","line":102,"loc":{"start":{"line":102,"column":27},"end":{"line":102,"column":53}}},"9":{"name":"priority","line":109,"loc":{"start":{"line":109,"column":28},"end":{"line":109,"column":62}}},"10":{"name":"reset","line":133,"loc":{"start":{"line":133,"column":25},"end":{"line":133,"column":47}}},"11":{"name":"_initializeDataFlow","line":178,"loc":{"start":{"line":178,"column":39},"end":{"line":178,"column":70}}},"12":{"name":"_receive","line":191,"loc":{"start":{"line":191,"column":28},"end":{"line":191,"column":60}}},"13":{"name":"_read","line":223,"loc":{"start":{"line":223,"column":25},"end":{"line":223,"column":42}}},"14":{"name":"_write","line":232,"loc":{"start":{"line":232,"column":26},"end":{"line":232,"column":67}}},"15":{"name":"_send","line":250,"loc":{"start":{"line":250,"column":25},"end":{"line":250,"column":42}}},"16":{"name":"_finishing","line":262,"loc":{"start":{"line":262,"column":30},"end":{"line":262,"column":52}}},"17":{"name":"_initializeState","line":309,"loc":{"start":{"line":309,"column":36},"end":{"line":309,"column":64}}},"18":{"name":"transition","line":320,"loc":{"start":{"line":320,"column":29},"end":{"line":320,"column":56}}},"19":{"name":"activeState","line":329,"loc":{"start":{"line":329,"column":0},"end":{"line":329,"column":28}}},"20":{"name":"transition","line":336,"loc":{"start":{"line":336,"column":31},"end":{"line":336,"column":67}}},"21":{"name":"(anonymous_21)","line":564,"loc":{"start":{"line":564,"column":24},"end":{"line":564,"column":41}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":79}},"2":{"start":{"line":12,"column":0},"end":{"line":12,"column":38}},"3":{"start":{"line":14,"column":0},"end":{"line":14,"column":24}},"4":{"start":{"line":47,"column":0},"end":{"line":61,"column":1}},"5":{"start":{"line":48,"column":2},"end":{"line":48,"column":20}},"6":{"start":{"line":51,"column":2},"end":{"line":51,"column":58}},"7":{"start":{"line":54,"column":2},"end":{"line":54,"column":31}},"8":{"start":{"line":57,"column":2},"end":{"line":57,"column":29}},"9":{"start":{"line":60,"column":2},"end":{"line":60,"column":26}},"10":{"start":{"line":63,"column":0},"end":{"line":63,"column":87}},"11":{"start":{"line":69,"column":0},"end":{"line":69,"column":39}},"12":{"start":{"line":70,"column":0},"end":{"line":70,"column":39}},"13":{"start":{"line":73,"column":0},"end":{"line":89,"column":2}},"14":{"start":{"line":74,"column":2},"end":{"line":74,"column":26}},"15":{"start":{"line":75,"column":2},"end":{"line":75,"column":36}},"16":{"start":{"line":76,"column":2},"end":{"line":76,"column":33}},"17":{"start":{"line":77,"column":2},"end":{"line":79,"column":5}},"18":{"start":{"line":78,"column":4},"end":{"line":78,"column":63}},"19":{"start":{"line":80,"column":2},"end":{"line":85,"column":5}},"20":{"start":{"line":81,"column":4},"end":{"line":83,"column":5}},"21":{"start":{"line":82,"column":6},"end":{"line":82,"column":42}},"22":{"start":{"line":84,"column":4},"end":{"line":84,"column":40}},"23":{"start":{"line":86,"column":2},"end":{"line":88,"column":5}},"24":{"start":{"line":87,"column":4},"end":{"line":87,"column":40}},"25":{"start":{"line":91,"column":0},"end":{"line":100,"column":2}},"26":{"start":{"line":92,"column":2},"end":{"line":92,"column":37}},"27":{"start":{"line":93,"column":2},"end":{"line":93,"column":64}},"28":{"start":{"line":94,"column":2},"end":{"line":98,"column":5}},"29":{"start":{"line":99,"column":2},"end":{"line":99,"column":16}},"30":{"start":{"line":102,"column":0},"end":{"line":107,"column":2}},"31":{"start":{"line":103,"column":2},"end":{"line":106,"column":5}},"32":{"start":{"line":109,"column":0},"end":{"line":129,"column":2}},"33":{"start":{"line":110,"column":2},"end":{"line":128,"column":3}},"34":{"start":{"line":111,"column":4},"end":{"line":123,"column":5}},"35":{"start":{"line":112,"column":6},"end":{"line":112,"column":38}},"36":{"start":{"line":114,"column":6},"end":{"line":114,"column":57}},"37":{"start":{"line":115,"column":6},"end":{"line":122,"column":7}},"38":{"start":{"line":116,"column":8},"end":{"line":116,"column":38}},"39":{"start":{"line":118,"column":8},"end":{"line":121,"column":11}},"40":{"start":{"line":125,"column":4},"end":{"line":125,"column":65}},"41":{"start":{"line":126,"column":4},"end":{"line":126,"column":30}},"42":{"start":{"line":127,"column":4},"end":{"line":127,"column":36}},"43":{"start":{"line":133,"column":0},"end":{"line":141,"column":2}},"44":{"start":{"line":134,"column":2},"end":{"line":140,"column":3}},"45":{"start":{"line":135,"column":4},"end":{"line":135,"column":27}},"46":{"start":{"line":136,"column":4},"end":{"line":139,"column":7}},"47":{"start":{"line":176,"column":0},"end":{"line":176,"column":34}},"48":{"start":{"line":178,"column":0},"end":{"line":188,"column":2}},"49":{"start":{"line":179,"column":2},"end":{"line":179,"column":29}},"50":{"start":{"line":180,"column":2},"end":{"line":180,"column":33}},"51":{"start":{"line":181,"column":2},"end":{"line":181,"column":46}},"52":{"start":{"line":182,"column":2},"end":{"line":182,"column":52}},"53":{"start":{"line":183,"column":2},"end":{"line":183,"column":63}},"54":{"start":{"line":184,"column":2},"end":{"line":184,"column":67}},"55":{"start":{"line":185,"column":2},"end":{"line":185,"column":59}},"56":{"start":{"line":187,"column":2},"end":{"line":187,"column":37}},"57":{"start":{"line":191,"column":0},"end":{"line":219,"column":2}},"58":{"start":{"line":192,"column":2},"end":{"line":192,"column":55}},"59":{"start":{"line":194,"column":2},"end":{"line":194,"column":23}},"60":{"start":{"line":198,"column":2},"end":{"line":209,"column":3}},"61":{"start":{"line":199,"column":4},"end":{"line":199,"column":43}},"62":{"start":{"line":200,"column":4},"end":{"line":203,"column":5}},"63":{"start":{"line":201,"column":6},"end":{"line":201,"column":32}},"64":{"start":{"line":202,"column":6},"end":{"line":202,"column":24}},"65":{"start":{"line":208,"column":4},"end":{"line":208,"column":33}},"66":{"start":{"line":212,"column":2},"end":{"line":214,"column":3}},"67":{"start":{"line":213,"column":4},"end":{"line":213,"column":20}},"68":{"start":{"line":216,"column":2},"end":{"line":218,"column":3}},"69":{"start":{"line":217,"column":4},"end":{"line":217,"column":12}},"70":{"start":{"line":223,"column":0},"end":{"line":229,"column":2}},"71":{"start":{"line":224,"column":2},"end":{"line":228,"column":3}},"72":{"start":{"line":225,"column":4},"end":{"line":225,"column":40}},"73":{"start":{"line":226,"column":4},"end":{"line":226,"column":29}},"74":{"start":{"line":227,"column":4},"end":{"line":227,"column":18}},"75":{"start":{"line":232,"column":0},"end":{"line":245,"column":2}},"76":{"start":{"line":234,"column":2},"end":{"line":237,"column":5}},"77":{"start":{"line":240,"column":2},"end":{"line":244,"column":3}},"78":{"start":{"line":241,"column":4},"end":{"line":241,"column":12}},"79":{"start":{"line":243,"column":4},"end":{"line":243,"column":27}},"80":{"start":{"line":250,"column":0},"end":{"line":256,"column":2}},"81":{"start":{"line":251,"column":2},"end":{"line":255,"column":3}},"82":{"start":{"line":252,"column":4},"end":{"line":252,"column":34}},"83":{"start":{"line":253,"column":4},"end":{"line":253,"column":26}},"84":{"start":{"line":254,"column":4},"end":{"line":254,"column":15}},"85":{"start":{"line":262,"column":0},"end":{"line":277,"column":2}},"86":{"start":{"line":263,"column":2},"end":{"line":267,"column":4}},"87":{"start":{"line":268,"column":2},"end":{"line":268,"column":53}},"88":{"start":{"line":269,"column":2},"end":{"line":276,"column":3}},"89":{"start":{"line":270,"column":4},"end":{"line":270,"column":86}},"90":{"start":{"line":271,"column":4},"end":{"line":271,"column":44}},"91":{"start":{"line":272,"column":4},"end":{"line":272,"column":38}},"92":{"start":{"line":273,"column":4},"end":{"line":273,"column":37}},"93":{"start":{"line":275,"column":4},"end":{"line":275,"column":33}},"94":{"start":{"line":309,"column":0},"end":{"line":316,"column":2}},"95":{"start":{"line":310,"column":2},"end":{"line":310,"column":22}},"96":{"start":{"line":311,"column":2},"end":{"line":311,"column":30}},"97":{"start":{"line":312,"column":2},"end":{"line":312,"column":31}},"98":{"start":{"line":313,"column":2},"end":{"line":313,"column":34}},"99":{"start":{"line":314,"column":2},"end":{"line":314,"column":56}},"100":{"start":{"line":315,"column":2},"end":{"line":315,"column":59}},"101":{"start":{"line":320,"column":0},"end":{"line":325,"column":2}},"102":{"start":{"line":321,"column":2},"end":{"line":321,"column":31}},"103":{"start":{"line":322,"column":2},"end":{"line":322,"column":71}},"104":{"start":{"line":323,"column":2},"end":{"line":323,"column":21}},"105":{"start":{"line":324,"column":2},"end":{"line":324,"column":28}},"106":{"start":{"line":329,"column":0},"end":{"line":331,"column":1}},"107":{"start":{"line":330,"column":2},"end":{"line":330,"column":101}},"108":{"start":{"line":336,"column":0},"end":{"line":556,"column":2}},"109":{"start":{"line":337,"column":2},"end":{"line":337,"column":27}},"110":{"start":{"line":338,"column":2},"end":{"line":338,"column":24}},"111":{"start":{"line":340,"column":2},"end":{"line":340,"column":54}},"112":{"start":{"line":341,"column":2},"end":{"line":341,"column":70}},"113":{"start":{"line":342,"column":2},"end":{"line":349,"column":3}},"114":{"start":{"line":343,"column":26},"end":{"line":343,"column":47}},"115":{"start":{"line":343,"column":48},"end":{"line":343,"column":54}},"116":{"start":{"line":344,"column":26},"end":{"line":344,"column":47}},"117":{"start":{"line":344,"column":48},"end":{"line":344,"column":54}},"118":{"start":{"line":345,"column":26},"end":{"line":345,"column":47}},"119":{"start":{"line":345,"column":48},"end":{"line":345,"column":54}},"120":{"start":{"line":346,"column":26},"end":{"line":346,"column":47}},"121":{"start":{"line":346,"column":48},"end":{"line":346,"column":54}},"122":{"start":{"line":347,"column":26},"end":{"line":347,"column":47}},"123":{"start":{"line":347,"column":48},"end":{"line":347,"column":54}},"124":{"start":{"line":348,"column":26},"end":{"line":348,"column":47}},"125":{"start":{"line":348,"column":48},"end":{"line":348,"column":54}},"126":{"start":{"line":351,"column":2},"end":{"line":351,"column":33}},"127":{"start":{"line":353,"column":2},"end":{"line":497,"column":3}},"128":{"start":{"line":360,"column":6},"end":{"line":370,"column":7}},"129":{"start":{"line":361,"column":8},"end":{"line":361,"column":31}},"130":{"start":{"line":362,"column":8},"end":{"line":364,"column":9}},"131":{"start":{"line":363,"column":10},"end":{"line":363,"column":79}},"132":{"start":{"line":365,"column":8},"end":{"line":365,"column":34}},"133":{"start":{"line":366,"column":13},"end":{"line":370,"column":7}},"134":{"start":{"line":367,"column":8},"end":{"line":367,"column":33}},"135":{"start":{"line":369,"column":8},"end":{"line":369,"column":33}},"136":{"start":{"line":371,"column":6},"end":{"line":371,"column":12}},"137":{"start":{"line":383,"column":6},"end":{"line":391,"column":7}},"138":{"start":{"line":384,"column":8},"end":{"line":384,"column":45}},"139":{"start":{"line":385,"column":13},"end":{"line":391,"column":7}},"140":{"start":{"line":386,"column":8},"end":{"line":386,"column":33}},"141":{"start":{"line":387,"column":13},"end":{"line":391,"column":7}},"142":{"start":{"line":390,"column":8},"end":{"line":390,"column":33}},"143":{"start":{"line":392,"column":6},"end":{"line":392,"column":12}},"144":{"start":{"line":402,"column":6},"end":{"line":410,"column":7}},"145":{"start":{"line":403,"column":8},"end":{"line":403,"column":33}},"146":{"start":{"line":404,"column":13},"end":{"line":410,"column":7}},"147":{"start":{"line":405,"column":8},"end":{"line":405,"column":44}},"148":{"start":{"line":406,"column":13},"end":{"line":410,"column":7}},"149":{"start":{"line":409,"column":8},"end":{"line":409,"column":33}},"150":{"start":{"line":411,"column":6},"end":{"line":411,"column":12}},"151":{"start":{"line":423,"column":6},"end":{"line":429,"column":7}},"152":{"start":{"line":424,"column":8},"end":{"line":424,"column":77}},"153":{"start":{"line":425,"column":13},"end":{"line":429,"column":7}},"154":{"start":{"line":426,"column":8},"end":{"line":426,"column":33}},"155":{"start":{"line":430,"column":6},"end":{"line":430,"column":12}},"156":{"start":{"line":439,"column":6},"end":{"line":445,"column":7}},"157":{"start":{"line":440,"column":8},"end":{"line":440,"column":33}},"158":{"start":{"line":441,"column":13},"end":{"line":445,"column":7}},"159":{"start":{"line":444,"column":8},"end":{"line":444,"column":33}},"160":{"start":{"line":446,"column":6},"end":{"line":446,"column":12}},"161":{"start":{"line":459,"column":6},"end":{"line":465,"column":7}},"162":{"start":{"line":460,"column":8},"end":{"line":460,"column":33}},"163":{"start":{"line":461,"column":13},"end":{"line":465,"column":7}},"164":{"start":{"line":464,"column":8},"end":{"line":464,"column":33}},"165":{"start":{"line":466,"column":6},"end":{"line":466,"column":12}},"166":{"start":{"line":489,"column":6},"end":{"line":495,"column":7}},"167":{"start":{"line":494,"column":8},"end":{"line":494,"column":32}},"168":{"start":{"line":496,"column":6},"end":{"line":496,"column":12}},"169":{"start":{"line":502,"column":2},"end":{"line":505,"column":3}},"170":{"start":{"line":503,"column":4},"end":{"line":503,"column":31}},"171":{"start":{"line":504,"column":4},"end":{"line":504,"column":37}},"172":{"start":{"line":513,"column":2},"end":{"line":518,"column":3}},"173":{"start":{"line":514,"column":4},"end":{"line":515,"column":86}},"174":{"start":{"line":516,"column":4},"end":{"line":516,"column":84}},"175":{"start":{"line":517,"column":4},"end":{"line":517,"column":47}},"176":{"start":{"line":521,"column":2},"end":{"line":530,"column":3}},"177":{"start":{"line":522,"column":4},"end":{"line":522,"column":72}},"178":{"start":{"line":523,"column":4},"end":{"line":527,"column":5}},"179":{"start":{"line":524,"column":6},"end":{"line":524,"column":34}},"180":{"start":{"line":526,"column":6},"end":{"line":526,"column":33}},"181":{"start":{"line":528,"column":9},"end":{"line":530,"column":3}},"182":{"start":{"line":529,"column":4},"end":{"line":529,"column":27}},"183":{"start":{"line":533,"column":2},"end":{"line":555,"column":3}},"184":{"start":{"line":534,"column":4},"end":{"line":540,"column":6}},"185":{"start":{"line":543,"column":4},"end":{"line":554,"column":5}},"186":{"start":{"line":544,"column":6},"end":{"line":544,"column":68}},"187":{"start":{"line":545,"column":6},"end":{"line":545,"column":97}},"188":{"start":{"line":551,"column":6},"end":{"line":551,"column":69}},"189":{"start":{"line":552,"column":6},"end":{"line":552,"column":24}},"190":{"start":{"line":553,"column":6},"end":{"line":553,"column":32}},"191":{"start":{"line":561,"column":0},"end":{"line":561,"column":25}},"192":{"start":{"line":563,"column":0},"end":{"line":563,"column":15}},"193":{"start":{"line":564,"column":0},"end":{"line":570,"column":2}},"194":{"start":{"line":565,"column":2},"end":{"line":568,"column":3}},"195":{"start":{"line":566,"column":4},"end":{"line":566,"column":23}},"196":{"start":{"line":567,"column":4},"end":{"line":567,"column":16}},"197":{"start":{"line":569,"column":2},"end":{"line":569,"column":19}}},"branchMap":{"1":{"line":1,"type":"cond-expr","locations":[{"start":{"line":1,"column":40},"end":{"line":1,"column":57}},{"start":{"line":1,"column":45},"end":{"line":1,"column":78}}]},"2":{"line":81,"type":"if","locations":[{"start":{"line":81,"column":4},"end":{"line":81,"column":4}},{"start":{"line":81,"column":4},"end":{"line":81,"column":4}}]},"3":{"line":110,"type":"if","locations":[{"start":{"line":110,"column":2},"end":{"line":110,"column":2}},{"start":{"line":110,"column":2},"end":{"line":110,"column":2}}]},"4":{"line":110,"type":"binary-expr","locations":[{"start":{"line":110,"column":7},"end":{"line":110,"column":11}},{"start":{"line":110,"column":15},"end":{"line":110,"column":38}},{"start":{"line":110,"column":43},"end":{"line":110,"column":48}}]},"5":{"line":111,"type":"if","locations":[{"start":{"line":111,"column":4},"end":{"line":111,"column":4}},{"start":{"line":111,"column":4},"end":{"line":111,"column":4}}]},"6":{"line":115,"type":"if","locations":[{"start":{"line":115,"column":6},"end":{"line":115,"column":6}},{"start":{"line":115,"column":6},"end":{"line":115,"column":6}}]},"7":{"line":115,"type":"binary-expr","locations":[{"start":{"line":115,"column":10},"end":{"line":115,"column":19}},{"start":{"line":115,"column":25},"end":{"line":115,"column":53}},{"start":{"line":115,"column":59},"end":{"line":115,"column":88}}]},"8":{"line":134,"type":"if","locations":[{"start":{"line":134,"column":2},"end":{"line":134,"column":2}},{"start":{"line":134,"column":2},"end":{"line":134,"column":2}}]},"9":{"line":198,"type":"if","locations":[{"start":{"line":198,"column":2},"end":{"line":198,"column":2}},{"start":{"line":198,"column":2},"end":{"line":198,"column":2}}]},"10":{"line":200,"type":"if","locations":[{"start":{"line":200,"column":4},"end":{"line":200,"column":4}},{"start":{"line":200,"column":4},"end":{"line":200,"column":4}}]},"11":{"line":212,"type":"if","locations":[{"start":{"line":212,"column":2},"end":{"line":212,"column":2}},{"start":{"line":212,"column":2},"end":{"line":212,"column":2}}]},"12":{"line":216,"type":"if","locations":[{"start":{"line":216,"column":2},"end":{"line":216,"column":2}},{"start":{"line":216,"column":2},"end":{"line":216,"column":2}}]},"13":{"line":224,"type":"if","locations":[{"start":{"line":224,"column":2},"end":{"line":224,"column":2}},{"start":{"line":224,"column":2},"end":{"line":224,"column":2}}]},"14":{"line":240,"type":"if","locations":[{"start":{"line":240,"column":2},"end":{"line":240,"column":2}},{"start":{"line":240,"column":2},"end":{"line":240,"column":2}}]},"15":{"line":251,"type":"if","locations":[{"start":{"line":251,"column":2},"end":{"line":251,"column":2}},{"start":{"line":251,"column":2},"end":{"line":251,"column":2}}]},"16":{"line":269,"type":"if","locations":[{"start":{"line":269,"column":2},"end":{"line":269,"column":2}},{"start":{"line":269,"column":2},"end":{"line":269,"column":2}}]},"17":{"line":269,"type":"binary-expr","locations":[{"start":{"line":269,"column":6},"end":{"line":269,"column":15}},{"start":{"line":269,"column":21},"end":{"line":269,"column":46}},{"start":{"line":269,"column":52},"end":{"line":269,"column":80}}]},"18":{"line":271,"type":"binary-expr","locations":[{"start":{"line":271,"column":22},"end":{"line":271,"column":37}},{"start":{"line":271,"column":41},"end":{"line":271,"column":43}}]},"19":{"line":330,"type":"binary-expr","locations":[{"start":{"line":330,"column":11},"end":{"line":330,"column":40}},{"start":{"line":330,"column":46},"end":{"line":330,"column":76}},{"start":{"line":330,"column":82},"end":{"line":330,"column":98}}]},"20":{"line":342,"type":"switch","locations":[{"start":{"line":343,"column":4},"end":{"line":343,"column":54}},{"start":{"line":344,"column":4},"end":{"line":344,"column":54}},{"start":{"line":345,"column":4},"end":{"line":345,"column":54}},{"start":{"line":346,"column":4},"end":{"line":346,"column":54}},{"start":{"line":347,"column":4},"end":{"line":347,"column":54}},{"start":{"line":348,"column":4},"end":{"line":348,"column":54}}]},"21":{"line":353,"type":"switch","locations":[{"start":{"line":359,"column":4},"end":{"line":371,"column":12}},{"start":{"line":382,"column":4},"end":{"line":392,"column":12}},{"start":{"line":401,"column":4},"end":{"line":411,"column":12}},{"start":{"line":422,"column":4},"end":{"line":430,"column":12}},{"start":{"line":438,"column":4},"end":{"line":446,"column":12}},{"start":{"line":458,"column":4},"end":{"line":466,"column":12}},{"start":{"line":488,"column":4},"end":{"line":496,"column":12}}]},"22":{"line":360,"type":"if","locations":[{"start":{"line":360,"column":6},"end":{"line":360,"column":6}},{"start":{"line":360,"column":6},"end":{"line":360,"column":6}}]},"23":{"line":362,"type":"if","locations":[{"start":{"line":362,"column":8},"end":{"line":362,"column":8}},{"start":{"line":362,"column":8},"end":{"line":362,"column":8}}]},"24":{"line":363,"type":"cond-expr","locations":[{"start":{"line":363,"column":35},"end":{"line":363,"column":54}},{"start":{"line":363,"column":57},"end":{"line":363,"column":77}}]},"25":{"line":366,"type":"if","locations":[{"start":{"line":366,"column":13},"end":{"line":366,"column":13}},{"start":{"line":366,"column":13},"end":{"line":366,"column":13}}]},"26":{"line":366,"type":"binary-expr","locations":[{"start":{"line":366,"column":17},"end":{"line":366,"column":24}},{"start":{"line":366,"column":28},"end":{"line":366,"column":38}}]},"27":{"line":383,"type":"if","locations":[{"start":{"line":383,"column":6},"end":{"line":383,"column":6}},{"start":{"line":383,"column":6},"end":{"line":383,"column":6}}]},"28":{"line":383,"type":"binary-expr","locations":[{"start":{"line":383,"column":10},"end":{"line":383,"column":17}},{"start":{"line":383,"column":21},"end":{"line":383,"column":28}}]},"29":{"line":385,"type":"if","locations":[{"start":{"line":385,"column":13},"end":{"line":385,"column":13}},{"start":{"line":385,"column":13},"end":{"line":385,"column":13}}]},"30":{"line":387,"type":"if","locations":[{"start":{"line":387,"column":13},"end":{"line":387,"column":13}},{"start":{"line":387,"column":13},"end":{"line":387,"column":13}}]},"31":{"line":387,"type":"binary-expr","locations":[{"start":{"line":387,"column":17},"end":{"line":387,"column":26}},{"start":{"line":387,"column":30},"end":{"line":387,"column":38}}]},"32":{"line":402,"type":"if","locations":[{"start":{"line":402,"column":6},"end":{"line":402,"column":6}},{"start":{"line":402,"column":6},"end":{"line":402,"column":6}}]},"33":{"line":404,"type":"if","locations":[{"start":{"line":404,"column":13},"end":{"line":404,"column":13}},{"start":{"line":404,"column":13},"end":{"line":404,"column":13}}]},"34":{"line":404,"type":"binary-expr","locations":[{"start":{"line":404,"column":17},"end":{"line":404,"column":26}},{"start":{"line":404,"column":30},"end":{"line":404,"column":37}}]},"35":{"line":406,"type":"if","locations":[{"start":{"line":406,"column":13},"end":{"line":406,"column":13}},{"start":{"line":406,"column":13},"end":{"line":406,"column":13}}]},"36":{"line":406,"type":"binary-expr","locations":[{"start":{"line":406,"column":17},"end":{"line":406,"column":24}},{"start":{"line":406,"column":28},"end":{"line":406,"column":36}}]},"37":{"line":423,"type":"if","locations":[{"start":{"line":423,"column":6},"end":{"line":423,"column":6}},{"start":{"line":423,"column":6},"end":{"line":423,"column":6}}]},"38":{"line":424,"type":"cond-expr","locations":[{"start":{"line":424,"column":33},"end":{"line":424,"column":52}},{"start":{"line":424,"column":55},"end":{"line":424,"column":75}}]},"39":{"line":425,"type":"if","locations":[{"start":{"line":425,"column":13},"end":{"line":425,"column":13}},{"start":{"line":425,"column":13},"end":{"line":425,"column":13}}]},"40":{"line":439,"type":"if","locations":[{"start":{"line":439,"column":6},"end":{"line":439,"column":6}},{"start":{"line":439,"column":6},"end":{"line":439,"column":6}}]},"41":{"line":439,"type":"binary-expr","locations":[{"start":{"line":439,"column":10},"end":{"line":439,"column":20}},{"start":{"line":439,"column":25},"end":{"line":439,"column":34}},{"start":{"line":439,"column":38},"end":{"line":439,"column":60}}]},"42":{"line":441,"type":"if","locations":[{"start":{"line":441,"column":13},"end":{"line":441,"column":13}},{"start":{"line":441,"column":13},"end":{"line":441,"column":13}}]},"43":{"line":441,"type":"binary-expr","locations":[{"start":{"line":441,"column":17},"end":{"line":441,"column":26}},{"start":{"line":441,"column":31},"end":{"line":441,"column":38}},{"start":{"line":441,"column":43},"end":{"line":441,"column":51}},{"start":{"line":441,"column":55},"end":{"line":441,"column":68}}]},"44":{"line":459,"type":"if","locations":[{"start":{"line":459,"column":6},"end":{"line":459,"column":6}},{"start":{"line":459,"column":6},"end":{"line":459,"column":6}}]},"45":{"line":459,"type":"binary-expr","locations":[{"start":{"line":459,"column":10},"end":{"line":459,"column":20}},{"start":{"line":459,"column":25},"end":{"line":459,"column":32}},{"start":{"line":459,"column":36},"end":{"line":459,"column":58}}]},"46":{"line":461,"type":"if","locations":[{"start":{"line":461,"column":13},"end":{"line":461,"column":13}},{"start":{"line":461,"column":13},"end":{"line":461,"column":13}}]},"47":{"line":461,"type":"binary-expr","locations":[{"start":{"line":461,"column":17},"end":{"line":461,"column":24}},{"start":{"line":461,"column":29},"end":{"line":461,"column":38}},{"start":{"line":461,"column":43},"end":{"line":461,"column":56}},{"start":{"line":461,"column":60},"end":{"line":461,"column":68}}]},"48":{"line":489,"type":"if","locations":[{"start":{"line":489,"column":6},"end":{"line":489,"column":6}},{"start":{"line":489,"column":6},"end":{"line":489,"column":6}}]},"49":{"line":489,"type":"binary-expr","locations":[{"start":{"line":489,"column":11},"end":{"line":489,"column":18}},{"start":{"line":489,"column":22},"end":{"line":489,"column":32}},{"start":{"line":490,"column":11},"end":{"line":490,"column":20}},{"start":{"line":490,"column":24},"end":{"line":490,"column":40}},{"start":{"line":491,"column":12},"end":{"line":491,"column":31}},{"start":{"line":491,"column":35},"end":{"line":491,"column":48}},{"start":{"line":491,"column":52},"end":{"line":491,"column":60}},{"start":{"line":491,"column":64},"end":{"line":491,"column":74}}]},"50":{"line":502,"type":"if","locations":[{"start":{"line":502,"column":2},"end":{"line":502,"column":2}},{"start":{"line":502,"column":2},"end":{"line":502,"column":2}}]},"51":{"line":502,"type":"binary-expr","locations":[{"start":{"line":502,"column":7},"end":{"line":502,"column":30}},{"start":{"line":502,"column":36},"end":{"line":502,"column":62}}]},"52":{"line":513,"type":"if","locations":[{"start":{"line":513,"column":2},"end":{"line":513,"column":2}},{"start":{"line":513,"column":2},"end":{"line":513,"column":2}}]},"53":{"line":513,"type":"binary-expr","locations":[{"start":{"line":513,"column":6},"end":{"line":513,"column":18}},{"start":{"line":513,"column":22},"end":{"line":513,"column":28}}]},"54":{"line":516,"type":"cond-expr","locations":[{"start":{"line":516,"column":46},"end":{"line":516,"column":62}},{"start":{"line":516,"column":65},"end":{"line":516,"column":82}}]},"55":{"line":521,"type":"if","locations":[{"start":{"line":521,"column":2},"end":{"line":521,"column":2}},{"start":{"line":521,"column":2},"end":{"line":521,"column":2}}]},"56":{"line":523,"type":"if","locations":[{"start":{"line":523,"column":4},"end":{"line":523,"column":4}},{"start":{"line":523,"column":4},"end":{"line":523,"column":4}}]},"57":{"line":528,"type":"if","locations":[{"start":{"line":528,"column":9},"end":{"line":528,"column":9}},{"start":{"line":528,"column":9},"end":{"line":528,"column":9}}]},"58":{"line":533,"type":"if","locations":[{"start":{"line":533,"column":2},"end":{"line":533,"column":2}},{"start":{"line":533,"column":2},"end":{"line":533,"column":2}}]},"59":{"line":543,"type":"if","locations":[{"start":{"line":543,"column":4},"end":{"line":543,"column":4}},{"start":{"line":543,"column":4},"end":{"line":543,"column":4}}]},"60":{"line":565,"type":"if","locations":[{"start":{"line":565,"column":2},"end":{"line":565,"column":2}},{"start":{"line":565,"column":2},"end":{"line":565,"column":2}}]}}},"/data/upstream/node-http2/lib/endpoint.js":{"path":"/data/upstream/node-http2/lib/endpoint.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":22,"11":22,"12":22,"13":22,"14":11,"15":11,"16":22,"17":22,"18":22,"19":1,"20":1,"21":1,"22":11,"23":11,"24":1,"25":11,"26":11,"27":10,"28":10,"29":217,"30":1,"31":1,"32":1,"33":216,"34":9,"35":9,"36":9,"37":9,"38":9,"39":1,"40":22,"41":22,"42":11,"43":11,"44":11,"45":11,"46":11,"47":11,"48":22,"49":22,"50":22,"51":22,"52":22,"53":22,"54":22,"55":22,"56":1,"57":256,"58":256,"59":156,"60":1,"61":46,"62":1,"63":22,"64":1,"65":10,"66":1,"67":22,"68":22,"69":22,"70":22,"71":22,"72":1,"73":1,"74":1,"75":1,"76":2,"77":1,"78":1,"79":1,"80":6,"81":2,"82":2,"83":6},"b":{"1":[1,0],"2":[22,11],"3":[11,11],"4":[226,217],"5":[1,216],"6":[9,0],"7":[11,11],"8":[412,412],"9":[2,4]},"f":{"1":0,"2":22,"3":11,"4":11,"5":10,"6":22,"7":256,"8":46,"9":22,"10":10,"11":22,"12":1,"13":2,"14":6},"fnMap":{"1":{"name":"noop","line":1,"loc":{"start":{"line":1,"column":45},"end":{"line":1,"column":76}}},"2":{"name":"Endpoint","line":16,"loc":{"start":{"line":16,"column":0},"end":{"line":16,"column":39}}},"3":{"name":"_writePrelude","line":50,"loc":{"start":{"line":50,"column":35},"end":{"line":50,"column":60}}},"4":{"name":"_readPrelude","line":56,"loc":{"start":{"line":56,"column":34},"end":{"line":56,"column":58}}},"5":{"name":"_temporalWrite","line":61,"loc":{"start":{"line":61,"column":16},"end":{"line":61,"column":63}}},"6":{"name":"_initializeDataFlow","line":119,"loc":{"start":{"line":119,"column":41},"end":{"line":119,"column":86}}},"7":{"name":"_read","line":143,"loc":{"start":{"line":143,"column":27},"end":{"line":143,"column":44}}},"8":{"name":"_write","line":150,"loc":{"start":{"line":150,"column":28},"end":{"line":150,"column":67}}},"9":{"name":"_initializeManagement","line":157,"loc":{"start":{"line":157,"column":43},"end":{"line":157,"column":76}}},"10":{"name":"createStream","line":161,"loc":{"start":{"line":161,"column":34},"end":{"line":161,"column":58}}},"11":{"name":"_initializeErrorHandling","line":168,"loc":{"start":{"line":168,"column":46},"end":{"line":168,"column":82}}},"12":{"name":"_error","line":176,"loc":{"start":{"line":176,"column":28},"end":{"line":176,"column":62}}},"13":{"name":"close","line":181,"loc":{"start":{"line":181,"column":27},"end":{"line":181,"column":49}}},"14":{"name":"(anonymous_14)","line":191,"loc":{"start":{"line":191,"column":24},"end":{"line":191,"column":43}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":79}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":50}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":52}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":54}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":56}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":54}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":44}},"8":{"start":{"line":10,"column":0},"end":{"line":10,"column":28}},"9":{"start":{"line":16,"column":0},"end":{"line":41,"column":1}},"10":{"start":{"line":17,"column":2},"end":{"line":17,"column":20}},"11":{"start":{"line":20,"column":2},"end":{"line":20,"column":60}},"12":{"start":{"line":24,"column":2},"end":{"line":24,"column":51}},"13":{"start":{"line":25,"column":2},"end":{"line":29,"column":3}},"14":{"start":{"line":26,"column":4},"end":{"line":26,"column":25}},"15":{"start":{"line":28,"column":4},"end":{"line":28,"column":24}},"16":{"start":{"line":34,"column":2},"end":{"line":34,"column":43}},"17":{"start":{"line":37,"column":2},"end":{"line":37,"column":31}},"18":{"start":{"line":40,"column":2},"end":{"line":40,"column":34}},"19":{"start":{"line":42,"column":0},"end":{"line":42,"column":91}},"20":{"start":{"line":47,"column":0},"end":{"line":47,"column":68}},"21":{"start":{"line":50,"column":0},"end":{"line":53,"column":2}},"22":{"start":{"line":51,"column":2},"end":{"line":51,"column":67}},"23":{"start":{"line":52,"column":2},"end":{"line":52,"column":28}},"24":{"start":{"line":56,"column":0},"end":{"line":84,"column":2}},"25":{"start":{"line":58,"column":2},"end":{"line":58,"column":17}},"26":{"start":{"line":61,"column":2},"end":{"line":83,"column":4}},"27":{"start":{"line":64,"column":4},"end":{"line":64,"column":24}},"28":{"start":{"line":65,"column":4},"end":{"line":73,"column":5}},"29":{"start":{"line":66,"column":6},"end":{"line":71,"column":7}},"30":{"start":{"line":67,"column":8},"end":{"line":68,"column":76}},"31":{"start":{"line":69,"column":8},"end":{"line":69,"column":51}},"32":{"start":{"line":70,"column":8},"end":{"line":70,"column":15}},"33":{"start":{"line":72,"column":6},"end":{"line":72,"column":18}},"34":{"start":{"line":77,"column":4},"end":{"line":82,"column":5}},"35":{"start":{"line":78,"column":6},"end":{"line":78,"column":85}},"36":{"start":{"line":79,"column":6},"end":{"line":79,"column":25}},"37":{"start":{"line":80,"column":6},"end":{"line":80,"column":43}},"38":{"start":{"line":81,"column":6},"end":{"line":81,"column":41}},"39":{"start":{"line":119,"column":0},"end":{"line":141,"column":2}},"40":{"start":{"line":120,"column":2},"end":{"line":120,"column":54}},"41":{"start":{"line":121,"column":2},"end":{"line":129,"column":3}},"42":{"start":{"line":122,"column":4},"end":{"line":122,"column":22}},"43":{"start":{"line":123,"column":4},"end":{"line":123,"column":31}},"44":{"start":{"line":124,"column":4},"end":{"line":124,"column":34}},"45":{"start":{"line":126,"column":4},"end":{"line":126,"column":22}},"46":{"start":{"line":127,"column":4},"end":{"line":127,"column":32}},"47":{"start":{"line":128,"column":4},"end":{"line":128,"column":33}},"48":{"start":{"line":131,"column":2},"end":{"line":131,"column":49}},"49":{"start":{"line":132,"column":2},"end":{"line":132,"column":51}},"50":{"start":{"line":133,"column":2},"end":{"line":133,"column":65}},"51":{"start":{"line":134,"column":2},"end":{"line":134,"column":69}},"52":{"start":{"line":135,"column":2},"end":{"line":135,"column":74}},"53":{"start":{"line":137,"column":2},"end":{"line":137,"column":65}},"54":{"start":{"line":138,"column":2},"end":{"line":138,"column":69}},"55":{"start":{"line":140,"column":2},"end":{"line":140,"column":57}},"56":{"start":{"line":143,"column":0},"end":{"line":148,"column":2}},"57":{"start":{"line":144,"column":2},"end":{"line":144,"column":31}},"58":{"start":{"line":145,"column":2},"end":{"line":147,"column":3}},"59":{"start":{"line":146,"column":4},"end":{"line":146,"column":34}},"60":{"start":{"line":150,"column":0},"end":{"line":152,"column":2}},"61":{"start":{"line":151,"column":2},"end":{"line":151,"column":50}},"62":{"start":{"line":157,"column":0},"end":{"line":159,"column":2}},"63":{"start":{"line":158,"column":2},"end":{"line":158,"column":64}},"64":{"start":{"line":161,"column":0},"end":{"line":163,"column":2}},"65":{"start":{"line":162,"column":2},"end":{"line":162,"column":41}},"66":{"start":{"line":168,"column":0},"end":{"line":174,"column":2}},"67":{"start":{"line":169,"column":2},"end":{"line":169,"column":69}},"68":{"start":{"line":170,"column":2},"end":{"line":170,"column":73}},"69":{"start":{"line":171,"column":2},"end":{"line":171,"column":69}},"70":{"start":{"line":172,"column":2},"end":{"line":172,"column":73}},"71":{"start":{"line":173,"column":2},"end":{"line":173,"column":69}},"72":{"start":{"line":176,"column":0},"end":{"line":179,"column":2}},"73":{"start":{"line":177,"column":2},"end":{"line":177,"column":95}},"74":{"start":{"line":178,"column":2},"end":{"line":178,"column":20}},"75":{"start":{"line":181,"column":0},"end":{"line":183,"column":2}},"76":{"start":{"line":182,"column":2},"end":{"line":182,"column":32}},"77":{"start":{"line":188,"column":0},"end":{"line":188,"column":25}},"78":{"start":{"line":190,"column":0},"end":{"line":190,"column":15}},"79":{"start":{"line":191,"column":0},"end":{"line":197,"column":2}},"80":{"start":{"line":192,"column":2},"end":{"line":195,"column":3}},"81":{"start":{"line":193,"column":4},"end":{"line":193,"column":25}},"82":{"start":{"line":194,"column":4},"end":{"line":194,"column":16}},"83":{"start":{"line":196,"column":2},"end":{"line":196,"column":21}}},"branchMap":{"1":{"line":1,"type":"cond-expr","locations":[{"start":{"line":1,"column":40},"end":{"line":1,"column":57}},{"start":{"line":1,"column":45},"end":{"line":1,"column":78}}]},"2":{"line":24,"type":"binary-expr","locations":[{"start":{"line":24,"column":10},"end":{"line":24,"column":27}},{"start":{"line":24,"column":32},"end":{"line":24,"column":49}}]},"3":{"line":25,"type":"if","locations":[{"start":{"line":25,"column":2},"end":{"line":25,"column":2}},{"start":{"line":25,"column":2},"end":{"line":25,"column":2}}]},"4":{"line":65,"type":"binary-expr","locations":[{"start":{"line":65,"column":10},"end":{"line":65,"column":40}},{"start":{"line":65,"column":44},"end":{"line":65,"column":76}}]},"5":{"line":66,"type":"if","locations":[{"start":{"line":66,"column":6},"end":{"line":66,"column":6}},{"start":{"line":66,"column":6},"end":{"line":66,"column":6}}]},"6":{"line":77,"type":"if","locations":[{"start":{"line":77,"column":4},"end":{"line":77,"column":4}},{"start":{"line":77,"column":4},"end":{"line":77,"column":4}}]},"7":{"line":121,"type":"if","locations":[{"start":{"line":121,"column":2},"end":{"line":121,"column":2}},{"start":{"line":121,"column":2},"end":{"line":121,"column":2}}]},"8":{"line":145,"type":"binary-expr","locations":[{"start":{"line":145,"column":9},"end":{"line":145,"column":19}},{"start":{"line":145,"column":24},"end":{"line":145,"column":55}}]},"9":{"line":192,"type":"if","locations":[{"start":{"line":192,"column":2},"end":{"line":192,"column":2}},{"start":{"line":192,"column":2},"end":{"line":192,"column":2}}]}}},"/data/upstream/node-http2/lib/framer.js":{"path":"/data/upstream/node-http2/lib/framer.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":23,"8":23,"9":1,"10":1,"11":87,"12":87,"13":87,"14":87,"15":87,"16":87,"17":178,"18":0,"19":178,"20":87,"21":1,"22":23,"23":23,"24":23,"25":1,"26":1,"27":183,"28":183,"29":183,"30":183,"31":103,"32":1,"33":61,"34":61,"35":0,"36":61,"37":148,"38":148,"39":148,"40":148,"41":148,"42":80,"43":80,"44":148,"45":80,"46":80,"47":80,"48":0,"49":0,"50":80,"51":80,"52":0,"53":80,"54":61,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":97,"63":97,"64":97,"65":101,"66":97,"67":97,"68":97,"69":97,"70":97,"71":97,"72":70,"73":70,"74":70,"75":46,"76":97,"77":97,"78":97,"79":97,"80":1,"81":90,"82":90,"83":90,"84":90,"85":90,"86":90,"87":166,"88":90,"89":1,"90":1,"91":1,"92":1,"93":32,"94":1,"95":31,"96":1,"97":1,"98":1,"99":1,"100":25,"101":2,"102":2,"103":2,"104":2,"105":25,"106":1,"107":24,"108":2,"109":2,"110":22,"111":1,"112":1,"113":1,"114":1,"115":2,"116":2,"117":2,"118":1,"119":2,"120":1,"121":1,"122":1,"123":1,"124":2,"125":2,"126":2,"127":2,"128":2,"129":1,"130":2,"131":1,"132":1,"133":1,"134":1,"135":24,"136":24,"137":72,"138":32,"139":32,"140":32,"141":24,"142":24,"143":24,"144":32,"145":32,"146":24,"147":1,"148":20,"149":20,"150":0,"151":20,"152":26,"153":26,"154":26,"155":26,"156":0,"157":26,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1,"166":4,"167":4,"168":4,"169":4,"170":4,"171":1,"172":4,"173":4,"174":1,"175":1,"176":1,"177":1,"178":2,"179":2,"180":1,"181":2,"182":0,"183":2,"184":1,"185":1,"186":1,"187":1,"188":4,"189":4,"190":4,"191":4,"192":4,"193":4,"194":4,"195":1,"196":3,"197":3,"198":1,"199":1,"200":1,"201":1,"202":2,"203":2,"204":2,"205":2,"206":1,"207":2,"208":1,"209":1,"210":1,"211":1,"212":6,"213":0,"214":6,"215":4,"216":2,"217":2,"218":2,"219":2,"220":10,"221":2,"222":1,"223":0,"224":1,"225":1,"226":0,"227":2,"228":0,"229":2,"230":0,"231":2,"232":1,"233":0},"b":{"1":[1,0],"2":[0,178],"3":[103,80],"4":[0,61],"5":[80,68],"6":[148,136],"7":[80,68],"8":[148,80],"9":[80,0],"10":[0,80],"11":[46,24],"12":[97,24],"13":[2,23],"14":[2,2],"15":[2,22],"16":[2,2],"17":[32,40],"18":[20,12],"19":[0,20],"20":[0,26],"21":[26,26],"22":[18,8],"23":[4,4],"24":[2,2],"25":[0,2],"26":[4,4],"27":[4,4],"28":[2,2],"29":[0,6],"30":[4,2],"31":[1,1],"32":[0,1],"33":[0,1],"34":[0,2],"35":[2,2]},"f":{"1":0,"2":23,"3":87,"4":23,"5":183,"6":61,"7":97,"8":90,"9":32,"10":31,"11":25,"12":24,"13":2,"14":2,"15":2,"16":2,"17":24,"18":72,"19":20,"20":4,"21":4,"22":2,"23":2,"24":4,"25":3,"26":2,"27":2,"28":6,"29":10,"30":0,"31":0},"fnMap":{"1":{"name":"noop","line":5,"loc":{"start":{"line":5,"column":60},"end":{"line":5,"column":76}}},"2":{"name":"Serializer","line":25,"loc":{"start":{"line":25,"column":0},"end":{"line":25,"column":25}}},"3":{"name":"_transform","line":34,"loc":{"start":{"line":34,"column":34},"end":{"line":34,"column":77}}},"4":{"name":"Deserializer","line":64,"loc":{"start":{"line":64,"column":0},"end":{"line":64,"column":27}}},"5":{"name":"(anonymous_5)","line":76,"loc":{"start":{"line":76,"column":31},"end":{"line":76,"column":46}}},"6":{"name":"_transform","line":87,"loc":{"start":{"line":87,"column":36},"end":{"line":87,"column":79}}},"7":{"name":"writeCommonHeader","line":193,"loc":{"start":{"line":193,"column":26},"end":{"line":193,"column":69}}},"8":{"name":"readCommonHeader","line":222,"loc":{"start":{"line":222,"column":28},"end":{"line":222,"column":69}}},"9":{"name":"writeData","line":267,"loc":{"start":{"line":267,"column":18},"end":{"line":267,"column":53}}},"10":{"name":"readData","line":271,"loc":{"start":{"line":271,"column":20},"end":{"line":271,"column":53}}},"11":{"name":"writeHeadersPriority","line":310,"loc":{"start":{"line":310,"column":21},"end":{"line":310,"column":67}}},"12":{"name":"readHeadersPriority","line":320,"loc":{"start":{"line":320,"column":23},"end":{"line":320,"column":67}}},"13":{"name":"writePriority","line":350,"loc":{"start":{"line":350,"column":22},"end":{"line":350,"column":61}}},"14":{"name":"readPriority","line":356,"loc":{"start":{"line":356,"column":24},"end":{"line":356,"column":61}}},"15":{"name":"writeRstStream","line":382,"loc":{"start":{"line":382,"column":24},"end":{"line":382,"column":64}}},"16":{"name":"readRstStream","line":390,"loc":{"start":{"line":390,"column":26},"end":{"line":390,"column":64}}},"17":{"name":"writeSettings","line":426,"loc":{"start":{"line":426,"column":22},"end":{"line":426,"column":61}}},"18":{"name":"(anonymous_18)","line":428,"loc":{"start":{"line":428,"column":26},"end":{"line":428,"column":48}}},"19":{"name":"readSettings","line":446,"loc":{"start":{"line":446,"column":24},"end":{"line":446,"column":61}}},"20":{"name":"writePushPromise","line":510,"loc":{"start":{"line":510,"column":26},"end":{"line":510,"column":68}}},"21":{"name":"readPushPromise","line":518,"loc":{"start":{"line":518,"column":28},"end":{"line":518,"column":68}}},"22":{"name":"writePing","line":542,"loc":{"start":{"line":542,"column":18},"end":{"line":542,"column":53}}},"23":{"name":"readPing","line":547,"loc":{"start":{"line":547,"column":20},"end":{"line":547,"column":53}}},"24":{"name":"writeGoaway","line":582,"loc":{"start":{"line":582,"column":20},"end":{"line":582,"column":57}}},"25":{"name":"readGoaway","line":595,"loc":{"start":{"line":595,"column":22},"end":{"line":595,"column":57}}},"26":{"name":"writeWindowUpdate","line":622,"loc":{"start":{"line":622,"column":27},"end":{"line":622,"column":70}}},"27":{"name":"readWindowUpdate","line":629,"loc":{"start":{"line":629,"column":29},"end":{"line":629,"column":70}}},"28":{"name":"(anonymous_28)","line":659,"loc":{"start":{"line":659,"column":28},"end":{"line":659,"column":44}}},"29":{"name":"(anonymous_29)","line":672,"loc":{"start":{"line":672,"column":71},"end":{"line":672,"column":86}}},"30":{"name":"(anonymous_30)","line":692,"loc":{"start":{"line":692,"column":57},"end":{"line":692,"column":72}}},"31":{"name":"(anonymous_31)","line":700,"loc":{"start":{"line":700,"column":27},"end":{"line":700,"column":42}}}},"statementMap":{"1":{"start":{"line":5,"column":0},"end":{"line":5,"column":79}},"2":{"start":{"line":7,"column":0},"end":{"line":7,"column":44}},"3":{"start":{"line":9,"column":0},"end":{"line":9,"column":32}},"4":{"start":{"line":10,"column":0},"end":{"line":10,"column":36}},"5":{"start":{"line":12,"column":0},"end":{"line":12,"column":50}},"6":{"start":{"line":25,"column":0},"end":{"line":28,"column":1}},"7":{"start":{"line":26,"column":2},"end":{"line":26,"column":53}},"8":{"start":{"line":27,"column":2},"end":{"line":27,"column":45}},"9":{"start":{"line":29,"column":0},"end":{"line":29,"column":98}},"10":{"start":{"line":34,"column":0},"end":{"line":51,"column":2}},"11":{"start":{"line":35,"column":2},"end":{"line":35,"column":54}},"12":{"start":{"line":37,"column":2},"end":{"line":37,"column":72}},"13":{"start":{"line":39,"column":2},"end":{"line":39,"column":19}},"14":{"start":{"line":40,"column":2},"end":{"line":40,"column":41}},"15":{"start":{"line":41,"column":2},"end":{"line":41,"column":42}},"16":{"start":{"line":43,"column":2},"end":{"line":48,"column":3}},"17":{"start":{"line":44,"column":4},"end":{"line":46,"column":5}},"18":{"start":{"line":45,"column":6},"end":{"line":45,"column":61}},"19":{"start":{"line":47,"column":4},"end":{"line":47,"column":26}},"20":{"start":{"line":50,"column":2},"end":{"line":50,"column":9}},"21":{"start":{"line":64,"column":0},"end":{"line":68,"column":1}},"22":{"start":{"line":65,"column":2},"end":{"line":65,"column":55}},"23":{"start":{"line":66,"column":2},"end":{"line":66,"column":45}},"24":{"start":{"line":67,"column":2},"end":{"line":67,"column":33}},"25":{"start":{"line":69,"column":0},"end":{"line":69,"column":102}},"26":{"start":{"line":76,"column":0},"end":{"line":83,"column":2}},"27":{"start":{"line":77,"column":2},"end":{"line":77,"column":19}},"28":{"start":{"line":78,"column":2},"end":{"line":78,"column":34}},"29":{"start":{"line":79,"column":2},"end":{"line":79,"column":51}},"30":{"start":{"line":80,"column":2},"end":{"line":82,"column":3}},"31":{"start":{"line":81,"column":4},"end":{"line":81,"column":21}},"32":{"start":{"line":87,"column":0},"end":{"line":135,"column":2}},"33":{"start":{"line":88,"column":2},"end":{"line":88,"column":17}},"34":{"start":{"line":90,"column":2},"end":{"line":92,"column":3}},"35":{"start":{"line":91,"column":4},"end":{"line":91,"column":54}},"36":{"start":{"line":94,"column":2},"end":{"line":132,"column":3}},"37":{"start":{"line":97,"column":4},"end":{"line":97,"column":85}},"38":{"start":{"line":98,"column":4},"end":{"line":98,"column":68}},"39":{"start":{"line":99,"column":4},"end":{"line":99,"column":27}},"40":{"start":{"line":100,"column":4},"end":{"line":100,"column":21}},"41":{"start":{"line":107,"column":4},"end":{"line":110,"column":5}},"42":{"start":{"line":108,"column":6},"end":{"line":108,"column":59}},"43":{"start":{"line":109,"column":6},"end":{"line":109,"column":37}},"44":{"start":{"line":117,"column":4},"end":{"line":131,"column":5}},"45":{"start":{"line":118,"column":6},"end":{"line":129,"column":7}},"46":{"start":{"line":119,"column":8},"end":{"line":119,"column":78}},"47":{"start":{"line":120,"column":8},"end":{"line":126,"column":9}},"48":{"start":{"line":121,"column":10},"end":{"line":121,"column":58}},"49":{"start":{"line":122,"column":10},"end":{"line":122,"column":47}},"50":{"start":{"line":124,"column":10},"end":{"line":124,"column":68}},"51":{"start":{"line":125,"column":10},"end":{"line":125,"column":33}},"52":{"start":{"line":128,"column":8},"end":{"line":128,"column":78}},"53":{"start":{"line":130,"column":6},"end":{"line":130,"column":37}},"54":{"start":{"line":134,"column":2},"end":{"line":134,"column":9}},"55":{"start":{"line":182,"column":0},"end":{"line":182,"column":27}},"56":{"start":{"line":183,"column":0},"end":{"line":183,"column":29}},"57":{"start":{"line":185,"column":0},"end":{"line":185,"column":20}},"58":{"start":{"line":187,"column":0},"end":{"line":187,"column":20}},"59":{"start":{"line":189,"column":0},"end":{"line":189,"column":62}},"60":{"start":{"line":191,"column":0},"end":{"line":191,"column":32}},"61":{"start":{"line":193,"column":0},"end":{"line":220,"column":2}},"62":{"start":{"line":194,"column":2},"end":{"line":194,"column":52}},"63":{"start":{"line":196,"column":2},"end":{"line":196,"column":15}},"64":{"start":{"line":197,"column":2},"end":{"line":199,"column":3}},"65":{"start":{"line":198,"column":4},"end":{"line":198,"column":30}},"66":{"start":{"line":200,"column":2},"end":{"line":200,"column":73}},"67":{"start":{"line":201,"column":2},"end":{"line":201,"column":38}},"68":{"start":{"line":203,"column":2},"end":{"line":203,"column":46}},"69":{"start":{"line":204,"column":2},"end":{"line":204,"column":37}},"70":{"start":{"line":206,"column":2},"end":{"line":206,"column":19}},"71":{"start":{"line":207,"column":2},"end":{"line":213,"column":3}},"72":{"start":{"line":208,"column":4},"end":{"line":208,"column":56}},"73":{"start":{"line":209,"column":4},"end":{"line":209,"column":87}},"74":{"start":{"line":210,"column":4},"end":{"line":212,"column":5}},"75":{"start":{"line":211,"column":6},"end":{"line":211,"column":34}},"76":{"start":{"line":214,"column":2},"end":{"line":214,"column":39}},"77":{"start":{"line":216,"column":2},"end":{"line":216,"column":76}},"78":{"start":{"line":217,"column":2},"end":{"line":217,"column":51}},"79":{"start":{"line":219,"column":2},"end":{"line":219,"column":32}},"80":{"start":{"line":222,"column":0},"end":{"line":235,"column":2}},"81":{"start":{"line":223,"column":2},"end":{"line":223,"column":40}},"82":{"start":{"line":225,"column":2},"end":{"line":225,"column":47}},"83":{"start":{"line":227,"column":2},"end":{"line":227,"column":19}},"84":{"start":{"line":228,"column":2},"end":{"line":228,"column":37}},"85":{"start":{"line":229,"column":2},"end":{"line":229,"column":44}},"86":{"start":{"line":230,"column":2},"end":{"line":232,"column":3}},"87":{"start":{"line":231,"column":4},"end":{"line":231,"column":64}},"88":{"start":{"line":234,"column":2},"end":{"line":234,"column":53}},"89":{"start":{"line":261,"column":0},"end":{"line":261,"column":25}},"90":{"start":{"line":263,"column":0},"end":{"line":263,"column":45}},"91":{"start":{"line":265,"column":0},"end":{"line":265,"column":39}},"92":{"start":{"line":267,"column":0},"end":{"line":269,"column":2}},"93":{"start":{"line":268,"column":2},"end":{"line":268,"column":27}},"94":{"start":{"line":271,"column":0},"end":{"line":273,"column":2}},"95":{"start":{"line":272,"column":2},"end":{"line":272,"column":22}},"96":{"start":{"line":294,"column":0},"end":{"line":294,"column":28}},"97":{"start":{"line":296,"column":0},"end":{"line":296,"column":75}},"98":{"start":{"line":298,"column":0},"end":{"line":298,"column":65}},"99":{"start":{"line":310,"column":0},"end":{"line":318,"column":2}},"100":{"start":{"line":311,"column":2},"end":{"line":316,"column":3}},"101":{"start":{"line":312,"column":4},"end":{"line":312,"column":31}},"102":{"start":{"line":313,"column":4},"end":{"line":313,"column":68}},"103":{"start":{"line":314,"column":4},"end":{"line":314,"column":44}},"104":{"start":{"line":315,"column":4},"end":{"line":315,"column":25}},"105":{"start":{"line":317,"column":2},"end":{"line":317,"column":27}},"106":{"start":{"line":320,"column":0},"end":{"line":327,"column":2}},"107":{"start":{"line":321,"column":2},"end":{"line":326,"column":3}},"108":{"start":{"line":322,"column":4},"end":{"line":322,"column":57}},"109":{"start":{"line":323,"column":4},"end":{"line":323,"column":33}},"110":{"start":{"line":325,"column":4},"end":{"line":325,"column":24}},"111":{"start":{"line":336,"column":0},"end":{"line":336,"column":29}},"112":{"start":{"line":338,"column":0},"end":{"line":338,"column":25}},"113":{"start":{"line":340,"column":0},"end":{"line":340,"column":47}},"114":{"start":{"line":350,"column":0},"end":{"line":354,"column":2}},"115":{"start":{"line":351,"column":2},"end":{"line":351,"column":29}},"116":{"start":{"line":352,"column":2},"end":{"line":352,"column":42}},"117":{"start":{"line":353,"column":2},"end":{"line":353,"column":23}},"118":{"start":{"line":356,"column":0},"end":{"line":358,"column":2}},"119":{"start":{"line":357,"column":2},"end":{"line":357,"column":42}},"120":{"start":{"line":367,"column":0},"end":{"line":367,"column":31}},"121":{"start":{"line":369,"column":0},"end":{"line":369,"column":27}},"122":{"start":{"line":371,"column":0},"end":{"line":371,"column":46}},"123":{"start":{"line":382,"column":0},"end":{"line":388,"column":2}},"124":{"start":{"line":383,"column":2},"end":{"line":383,"column":29}},"125":{"start":{"line":384,"column":2},"end":{"line":384,"column":45}},"126":{"start":{"line":385,"column":2},"end":{"line":385,"column":46}},"127":{"start":{"line":386,"column":2},"end":{"line":386,"column":32}},"128":{"start":{"line":387,"column":2},"end":{"line":387,"column":23}},"129":{"start":{"line":390,"column":0},"end":{"line":392,"column":2}},"130":{"start":{"line":391,"column":2},"end":{"line":391,"column":51}},"131":{"start":{"line":402,"column":0},"end":{"line":402,"column":29}},"132":{"start":{"line":404,"column":0},"end":{"line":404,"column":25}},"133":{"start":{"line":406,"column":0},"end":{"line":406,"column":47}},"134":{"start":{"line":426,"column":0},"end":{"line":444,"column":2}},"135":{"start":{"line":427,"column":2},"end":{"line":427,"column":64}},"136":{"start":{"line":428,"column":2},"end":{"line":434,"column":5}},"137":{"start":{"line":429,"column":4},"end":{"line":433,"column":5}},"138":{"start":{"line":430,"column":6},"end":{"line":430,"column":65}},"139":{"start":{"line":431,"column":6},"end":{"line":431,"column":47}},"140":{"start":{"line":432,"column":6},"end":{"line":432,"column":78}},"141":{"start":{"line":435,"column":2},"end":{"line":435,"column":84}},"142":{"start":{"line":437,"column":2},"end":{"line":437,"column":47}},"143":{"start":{"line":438,"column":2},"end":{"line":441,"column":3}},"144":{"start":{"line":439,"column":4},"end":{"line":439,"column":57}},"145":{"start":{"line":440,"column":4},"end":{"line":440,"column":53}},"146":{"start":{"line":443,"column":2},"end":{"line":443,"column":23}},"147":{"start":{"line":446,"column":0},"end":{"line":461,"column":2}},"148":{"start":{"line":447,"column":2},"end":{"line":447,"column":22}},"149":{"start":{"line":449,"column":2},"end":{"line":451,"column":3}},"150":{"start":{"line":450,"column":4},"end":{"line":450,"column":36}},"151":{"start":{"line":452,"column":2},"end":{"line":460,"column":3}},"152":{"start":{"line":453,"column":4},"end":{"line":453,"column":49}},"153":{"start":{"line":454,"column":4},"end":{"line":454,"column":38}},"154":{"start":{"line":455,"column":4},"end":{"line":455,"column":45}},"155":{"start":{"line":456,"column":4},"end":{"line":458,"column":5}},"156":{"start":{"line":457,"column":6},"end":{"line":457,"column":15}},"157":{"start":{"line":459,"column":4},"end":{"line":459,"column":79}},"158":{"start":{"line":464,"column":0},"end":{"line":464,"column":25}},"159":{"start":{"line":468,"column":0},"end":{"line":468,"column":78}},"160":{"start":{"line":472,"column":0},"end":{"line":472,"column":75}},"161":{"start":{"line":478,"column":0},"end":{"line":478,"column":76}},"162":{"start":{"line":492,"column":0},"end":{"line":492,"column":33}},"163":{"start":{"line":494,"column":0},"end":{"line":494,"column":47}},"164":{"start":{"line":496,"column":0},"end":{"line":496,"column":77}},"165":{"start":{"line":510,"column":0},"end":{"line":516,"column":2}},"166":{"start":{"line":511,"column":2},"end":{"line":511,"column":29}},"167":{"start":{"line":512,"column":2},"end":{"line":512,"column":80}},"168":{"start":{"line":513,"column":2},"end":{"line":513,"column":49}},"169":{"start":{"line":514,"column":2},"end":{"line":514,"column":23}},"170":{"start":{"line":515,"column":2},"end":{"line":515,"column":27}},"171":{"start":{"line":518,"column":0},"end":{"line":521,"column":2}},"172":{"start":{"line":519,"column":2},"end":{"line":519,"column":62}},"173":{"start":{"line":520,"column":2},"end":{"line":520,"column":31}},"174":{"start":{"line":534,"column":0},"end":{"line":534,"column":25}},"175":{"start":{"line":536,"column":0},"end":{"line":536,"column":27}},"176":{"start":{"line":538,"column":0},"end":{"line":538,"column":39}},"177":{"start":{"line":542,"column":0},"end":{"line":545,"column":2}},"178":{"start":{"line":543,"column":2},"end":{"line":543,"column":101}},"179":{"start":{"line":544,"column":2},"end":{"line":544,"column":27}},"180":{"start":{"line":547,"column":0},"end":{"line":552,"column":2}},"181":{"start":{"line":548,"column":2},"end":{"line":550,"column":3}},"182":{"start":{"line":549,"column":4},"end":{"line":549,"column":37}},"183":{"start":{"line":551,"column":2},"end":{"line":551,"column":22}},"184":{"start":{"line":561,"column":0},"end":{"line":561,"column":27}},"185":{"start":{"line":563,"column":0},"end":{"line":563,"column":23}},"186":{"start":{"line":565,"column":0},"end":{"line":565,"column":57}},"187":{"start":{"line":582,"column":0},"end":{"line":593,"column":2}},"188":{"start":{"line":583,"column":2},"end":{"line":583,"column":29}},"189":{"start":{"line":585,"column":2},"end":{"line":585,"column":72}},"190":{"start":{"line":586,"column":2},"end":{"line":586,"column":45}},"191":{"start":{"line":588,"column":2},"end":{"line":588,"column":45}},"192":{"start":{"line":589,"column":2},"end":{"line":589,"column":46}},"193":{"start":{"line":590,"column":2},"end":{"line":590,"column":32}},"194":{"start":{"line":592,"column":2},"end":{"line":592,"column":23}},"195":{"start":{"line":595,"column":0},"end":{"line":598,"column":2}},"196":{"start":{"line":596,"column":2},"end":{"line":596,"column":58}},"197":{"start":{"line":597,"column":2},"end":{"line":597,"column":51}},"198":{"start":{"line":611,"column":0},"end":{"line":611,"column":34}},"199":{"start":{"line":613,"column":0},"end":{"line":613,"column":48}},"200":{"start":{"line":615,"column":0},"end":{"line":615,"column":55}},"201":{"start":{"line":622,"column":0},"end":{"line":627,"column":2}},"202":{"start":{"line":623,"column":2},"end":{"line":623,"column":29}},"203":{"start":{"line":624,"column":2},"end":{"line":624,"column":72}},"204":{"start":{"line":625,"column":2},"end":{"line":625,"column":45}},"205":{"start":{"line":626,"column":2},"end":{"line":626,"column":23}},"206":{"start":{"line":629,"column":0},"end":{"line":631,"column":2}},"207":{"start":{"line":630,"column":2},"end":{"line":630,"column":58}},"208":{"start":{"line":636,"column":0},"end":{"line":647,"column":2}},"209":{"start":{"line":654,"column":0},"end":{"line":654,"column":25}},"210":{"start":{"line":658,"column":0},"end":{"line":658,"column":21}},"211":{"start":{"line":659,"column":0},"end":{"line":697,"column":2}},"212":{"start":{"line":660,"column":2},"end":{"line":662,"column":3}},"213":{"start":{"line":661,"column":4},"end":{"line":661,"column":16}},"214":{"start":{"line":664,"column":2},"end":{"line":666,"column":3}},"215":{"start":{"line":665,"column":4},"end":{"line":665,"column":20}},"216":{"start":{"line":668,"column":2},"end":{"line":668,"column":26}},"217":{"start":{"line":669,"column":2},"end":{"line":669,"column":20}},"218":{"start":{"line":671,"column":2},"end":{"line":671,"column":34}},"219":{"start":{"line":672,"column":2},"end":{"line":674,"column":5}},"220":{"start":{"line":673,"column":4},"end":{"line":673,"column":33}},"221":{"start":{"line":676,"column":2},"end":{"line":686,"column":3}},"222":{"start":{"line":677,"column":4},"end":{"line":681,"column":5}},"223":{"start":{"line":678,"column":6},"end":{"line":678,"column":70}},"224":{"start":{"line":680,"column":6},"end":{"line":680,"column":49}},"225":{"start":{"line":683,"column":4},"end":{"line":685,"column":5}},"226":{"start":{"line":684,"column":6},"end":{"line":684,"column":42}},"227":{"start":{"line":688,"column":2},"end":{"line":690,"column":3}},"228":{"start":{"line":689,"column":4},"end":{"line":689,"column":68}},"229":{"start":{"line":692,"column":2},"end":{"line":694,"column":5}},"230":{"start":{"line":693,"column":4},"end":{"line":693,"column":38}},"231":{"start":{"line":696,"column":2},"end":{"line":696,"column":18}},"232":{"start":{"line":700,"column":0},"end":{"line":702,"column":2}},"233":{"start":{"line":701,"column":2},"end":{"line":701,"column":30}}},"branchMap":{"1":{"line":5,"type":"cond-expr","locations":[{"start":{"line":5,"column":40},"end":{"line":5,"column":57}},{"start":{"line":5,"column":60},"end":{"line":5,"column":78}}]},"2":{"line":44,"type":"if","locations":[{"start":{"line":44,"column":4},"end":{"line":44,"column":4}},{"start":{"line":44,"column":4},"end":{"line":44,"column":4}}]},"3":{"line":80,"type":"if","locations":[{"start":{"line":80,"column":2},"end":{"line":80,"column":2}},{"start":{"line":80,"column":2},"end":{"line":80,"column":2}}]},"4":{"line":90,"type":"if","locations":[{"start":{"line":90,"column":2},"end":{"line":90,"column":2}},{"start":{"line":90,"column":2},"end":{"line":90,"column":2}}]},"5":{"line":107,"type":"if","locations":[{"start":{"line":107,"column":4},"end":{"line":107,"column":4}},{"start":{"line":107,"column":4},"end":{"line":107,"column":4}}]},"6":{"line":107,"type":"binary-expr","locations":[{"start":{"line":107,"column":9},"end":{"line":107,"column":45}},{"start":{"line":107,"column":50},"end":{"line":107,"column":72}}]},"7":{"line":117,"type":"if","locations":[{"start":{"line":117,"column":4},"end":{"line":117,"column":4}},{"start":{"line":117,"column":4},"end":{"line":117,"column":4}}]},"8":{"line":117,"type":"binary-expr","locations":[{"start":{"line":117,"column":9},"end":{"line":117,"column":45}},{"start":{"line":117,"column":50},"end":{"line":117,"column":73}}]},"9":{"line":118,"type":"if","locations":[{"start":{"line":118,"column":6},"end":{"line":118,"column":6}},{"start":{"line":118,"column":6},"end":{"line":118,"column":6}}]},"10":{"line":120,"type":"if","locations":[{"start":{"line":120,"column":8},"end":{"line":120,"column":8}},{"start":{"line":120,"column":8},"end":{"line":120,"column":8}}]},"11":{"line":210,"type":"if","locations":[{"start":{"line":210,"column":4},"end":{"line":210,"column":4}},{"start":{"line":210,"column":4},"end":{"line":210,"column":4}}]},"12":{"line":217,"type":"binary-expr","locations":[{"start":{"line":217,"column":29},"end":{"line":217,"column":41}},{"start":{"line":217,"column":45},"end":{"line":217,"column":46}}]},"13":{"line":311,"type":"if","locations":[{"start":{"line":311,"column":2},"end":{"line":311,"column":2}},{"start":{"line":311,"column":2},"end":{"line":311,"column":2}}]},"14":{"line":313,"type":"binary-expr","locations":[{"start":{"line":313,"column":12},"end":{"line":313,"column":31}},{"start":{"line":313,"column":37},"end":{"line":313,"column":65}}]},"15":{"line":321,"type":"if","locations":[{"start":{"line":321,"column":2},"end":{"line":321,"column":2}},{"start":{"line":321,"column":2},"end":{"line":321,"column":2}}]},"16":{"line":385,"type":"binary-expr","locations":[{"start":{"line":385,"column":10},"end":{"line":385,"column":19}},{"start":{"line":385,"column":25},"end":{"line":385,"column":43}}]},"17":{"line":429,"type":"if","locations":[{"start":{"line":429,"column":4},"end":{"line":429,"column":4}},{"start":{"line":429,"column":4},"end":{"line":429,"column":4}}]},"18":{"line":432,"type":"cond-expr","locations":[{"start":{"line":432,"column":52},"end":{"line":432,"column":66}},{"start":{"line":432,"column":69},"end":{"line":432,"column":74}}]},"19":{"line":449,"type":"if","locations":[{"start":{"line":449,"column":2},"end":{"line":449,"column":2}},{"start":{"line":449,"column":2},"end":{"line":449,"column":2}}]},"20":{"line":456,"type":"if","locations":[{"start":{"line":456,"column":4},"end":{"line":456,"column":4}},{"start":{"line":456,"column":4},"end":{"line":456,"column":4}}]},"21":{"line":456,"type":"binary-expr","locations":[{"start":{"line":456,"column":8},"end":{"line":456,"column":16}},{"start":{"line":456,"column":21},"end":{"line":456,"column":51}}]},"22":{"line":459,"type":"cond-expr","locations":[{"start":{"line":459,"column":50},"end":{"line":459,"column":70}},{"start":{"line":459,"column":73},"end":{"line":459,"column":78}}]},"23":{"line":512,"type":"binary-expr","locations":[{"start":{"line":512,"column":10},"end":{"line":512,"column":36}},{"start":{"line":512,"column":42},"end":{"line":512,"column":77}}]},"24":{"line":543,"type":"binary-expr","locations":[{"start":{"line":543,"column":10},"end":{"line":543,"column":25}},{"start":{"line":543,"column":31},"end":{"line":543,"column":54}}]},"25":{"line":548,"type":"if","locations":[{"start":{"line":548,"column":2},"end":{"line":548,"column":2}},{"start":{"line":548,"column":2},"end":{"line":548,"column":2}}]},"26":{"line":585,"type":"binary-expr","locations":[{"start":{"line":585,"column":10},"end":{"line":585,"column":32}},{"start":{"line":585,"column":38},"end":{"line":585,"column":69}}]},"27":{"line":589,"type":"binary-expr","locations":[{"start":{"line":589,"column":10},"end":{"line":589,"column":19}},{"start":{"line":589,"column":25},"end":{"line":589,"column":43}}]},"28":{"line":624,"type":"binary-expr","locations":[{"start":{"line":624,"column":10},"end":{"line":624,"column":32}},{"start":{"line":624,"column":38},"end":{"line":624,"column":69}}]},"29":{"line":660,"type":"if","locations":[{"start":{"line":660,"column":2},"end":{"line":660,"column":2}},{"start":{"line":660,"column":2},"end":{"line":660,"column":2}}]},"30":{"line":664,"type":"if","locations":[{"start":{"line":664,"column":2},"end":{"line":664,"column":2}},{"start":{"line":664,"column":2},"end":{"line":664,"column":2}}]},"31":{"line":676,"type":"if","locations":[{"start":{"line":676,"column":2},"end":{"line":676,"column":2}},{"start":{"line":676,"column":2},"end":{"line":676,"column":2}}]},"32":{"line":677,"type":"if","locations":[{"start":{"line":677,"column":4},"end":{"line":677,"column":4}},{"start":{"line":677,"column":4},"end":{"line":677,"column":4}}]},"33":{"line":683,"type":"if","locations":[{"start":{"line":683,"column":4},"end":{"line":683,"column":4}},{"start":{"line":683,"column":4},"end":{"line":683,"column":4}}]},"34":{"line":688,"type":"if","locations":[{"start":{"line":688,"column":2},"end":{"line":688,"column":2}},{"start":{"line":688,"column":2},"end":{"line":688,"column":2}}]},"35":{"line":692,"type":"binary-expr","locations":[{"start":{"line":692,"column":31},"end":{"line":692,"column":42}},{"start":{"line":692,"column":46},"end":{"line":692,"column":48}}]}}},"/data/upstream/node-http2/lib/http.js":{"path":"/data/upstream/node-http2/lib/http.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":3,"18":1,"19":1,"20":1,"21":6,"22":1,"23":23,"24":23,"25":23,"26":23,"27":23,"28":23,"29":23,"30":23,"31":1,"32":1,"33":1,"34":25,"35":25,"36":25,"37":25,"38":1,"39":1,"40":12,"41":11,"42":1,"43":1,"44":28,"45":21,"46":7,"47":1,"48":2,"49":0,"50":2,"51":1,"52":1,"53":0,"54":1,"55":1,"56":3,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":12,"65":12,"66":12,"67":12,"68":12,"69":12,"70":9,"71":9,"72":9,"73":9,"74":9,"75":9,"76":9,"77":8,"78":8,"79":0,"80":9,"81":3,"82":1,"83":1,"84":1,"85":2,"86":2,"87":10,"88":1,"89":1,"90":9,"91":9,"92":9,"93":9,"94":9,"95":9,"96":9,"97":9,"98":9,"99":9,"100":1,"101":0,"102":0,"103":0,"104":0,"105":1,"106":8,"107":8,"108":1,"109":4,"110":4,"111":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":0,"118":1,"119":1,"120":1,"121":8,"122":0,"123":8,"124":1,"125":9,"126":1,"127":1,"128":9,"129":8,"130":8,"131":8,"132":1,"133":11,"134":1,"135":1,"136":11,"137":11,"138":77,"139":77,"140":0,"141":0,"142":0,"143":11,"144":11,"145":11,"146":45,"147":44,"148":44,"149":0,"150":0,"151":0,"152":44,"153":1,"154":11,"155":11,"156":11,"157":1,"158":11,"159":11,"160":11,"161":11,"162":11,"163":11,"164":1,"165":1,"166":11,"167":1,"168":10,"169":11,"170":11,"171":1,"172":11,"173":10,"174":11,"175":11,"176":11,"177":11,"178":1,"179":21,"180":10,"181":1,"182":10,"183":10,"184":1,"185":11,"186":11,"187":1,"188":9,"189":1,"190":2,"191":1,"192":2,"193":0,"194":2,"195":2,"196":2,"197":2,"198":1,"199":11,"200":0,"201":11,"202":1,"203":1,"204":1,"205":1,"206":1,"207":1,"208":3,"209":1,"210":7,"211":1,"212":4,"213":4,"214":4,"215":4,"216":4,"217":4,"218":4,"219":4,"220":1,"221":1,"222":11,"223":7,"224":11,"225":11,"226":11,"227":11,"228":11,"229":11,"230":1,"231":1,"232":10,"233":10,"234":7,"235":10,"236":10,"237":1,"238":1,"239":9,"240":1,"241":1,"242":1,"243":1,"244":8,"245":8,"246":8,"247":8,"248":8,"249":8,"250":0,"251":8,"252":8,"253":1,"254":8,"255":8,"256":8,"257":8,"258":8,"259":8,"260":8,"261":8,"262":1,"263":1,"264":0,"265":7,"266":7,"267":7,"268":7,"269":0,"270":8,"271":8,"272":8,"273":8,"274":0,"275":10,"276":1,"277":7,"278":7,"279":7,"280":1,"281":8,"282":8,"283":8,"284":8,"285":8,"286":8,"287":8,"288":8,"289":1,"290":1,"291":1,"292":1,"293":1,"294":14,"295":14,"296":14,"297":14,"298":1,"299":1,"300":10,"301":10,"302":10,"303":10,"304":1,"305":10,"306":10,"307":0,"308":10,"309":10,"310":10,"311":10,"312":10,"313":10,"314":10,"315":10,"316":10,"317":10,"318":1,"319":4,"320":4,"321":4,"322":1,"323":0,"324":0,"325":0,"326":1,"327":37,"328":0,"329":37,"330":1,"331":3,"332":1,"333":2,"334":1,"335":1,"336":3,"337":1,"338":2,"339":1,"340":1,"341":3,"342":1,"343":2,"344":1,"345":1,"346":3,"347":1,"348":2,"349":1,"350":1,"351":1,"352":2,"353":2,"354":2,"355":2,"356":0,"357":1,"358":12,"359":1,"360":1,"361":11,"362":11,"363":11,"364":0,"365":0,"366":0,"367":11,"368":11,"369":11,"370":11,"371":1,"372":2,"373":2,"374":2,"375":2,"376":2,"377":2,"378":2,"379":2,"380":2,"381":2,"382":1,"383":1,"384":0,"385":1,"386":0,"387":1},"b":{"1":[11,1],"2":[21,7],"3":[0,2],"4":[0,1],"5":[12,2],"6":[12,2],"7":[9,3],"8":[12,9,3],"9":[8,0],"10":[1,2],"11":[0,8],"12":[1,0],"13":[1,0],"14":[1,0],"15":[0,8],"16":[8,8],"17":[1,8],"18":[8,0],"19":[0,77],"20":[44,1],"21":[0,44],"22":[44,44],"23":[1,10],"24":[11,10],"25":[10,1],"26":[11,10],"27":[10,11],"28":[1,1],"29":[0,2],"30":[2,2],"31":[2,1,1],"32":[2,2,2],"33":[0,11],"34":[11,0],"35":[3,3],"36":[7,7],"37":[4,1],"38":[4,1],"39":[7,4],"40":[11,11],"41":[11,3],"42":[11,4,1],"43":[11,1],"44":[11,1],"45":[1,10],"46":[7,3],"47":[1,9],"48":[1,8],"49":[0,8],"50":[8,0],"51":[1,7],"52":[1,0],"53":[7,0],"54":[8,0],"55":[0,10],"56":[10,9],"57":[0,0],"58":[0,37],"59":[37,0],"60":[1,2],"61":[1,1],"62":[1,2],"63":[1,1],"64":[1,2],"65":[1,1],"66":[1,2],"67":[1,1],"68":[2,0],"69":[0,11],"70":[11,11]},"f":{"1":2,"2":3,"3":6,"4":23,"5":25,"6":12,"7":28,"8":2,"9":1,"10":3,"11":12,"12":8,"13":9,"14":9,"15":0,"16":8,"17":4,"18":1,"19":1,"20":1,"21":8,"22":9,"23":11,"24":11,"25":11,"26":11,"27":21,"28":10,"29":11,"30":9,"31":2,"32":11,"33":3,"34":7,"35":4,"36":11,"37":8,"38":8,"39":8,"40":7,"41":8,"42":1,"43":1,"44":14,"45":10,"46":4,"47":0,"48":37,"49":3,"50":3,"51":3,"52":3,"53":2,"54":12,"55":11,"56":2,"57":0,"58":0},"fnMap":{"1":{"name":"noop","line":152,"loc":{"start":{"line":152,"column":0},"end":{"line":152,"column":16}}},"2":{"name":"(anonymous_2)","line":161,"loc":{"start":{"line":161,"column":9},"end":{"line":161,"column":20}}},"3":{"name":"(anonymous_3)","line":167,"loc":{"start":{"line":167,"column":16},"end":{"line":167,"column":33}}},"4":{"name":"IncomingMessage","line":174,"loc":{"start":{"line":174,"column":0},"end":{"line":174,"column":33}}},"5":{"name":"OutgoingMessage","line":198,"loc":{"start":{"line":198,"column":0},"end":{"line":198,"column":27}}},"6":{"name":"_write","line":209,"loc":{"start":{"line":209,"column":35},"end":{"line":209,"column":78}}},"7":{"name":"_finish","line":217,"loc":{"start":{"line":217,"column":36},"end":{"line":217,"column":55}}},"8":{"name":"setHeader","line":225,"loc":{"start":{"line":225,"column":38},"end":{"line":225,"column":70}}},"9":{"name":"removeHeader","line":233,"loc":{"start":{"line":233,"column":41},"end":{"line":233,"column":69}}},"10":{"name":"getHeader","line":241,"loc":{"start":{"line":241,"column":38},"end":{"line":241,"column":63}}},"11":{"name":"Server","line":259,"loc":{"start":{"line":259,"column":0},"end":{"line":259,"column":25}}},"12":{"name":"(anonymous_12)","line":276,"loc":{"start":{"line":276,"column":40},"end":{"line":276,"column":57}}},"13":{"name":"_start","line":304,"loc":{"start":{"line":304,"column":26},"end":{"line":304,"column":50}}},"14":{"name":"_onStream","line":313,"loc":{"start":{"line":313,"column":24},"end":{"line":313,"column":51}}},"15":{"name":"_fallback","line":325,"loc":{"start":{"line":325,"column":29},"end":{"line":325,"column":56}}},"16":{"name":"listen","line":339,"loc":{"start":{"line":339,"column":26},"end":{"line":339,"column":58}}},"17":{"name":"close","line":345,"loc":{"start":{"line":345,"column":25},"end":{"line":345,"column":50}}},"18":{"name":"setTimeout","line":350,"loc":{"start":{"line":350,"column":30},"end":{"line":350,"column":69}}},"19":{"name":"getTimeout","line":357,"loc":{"start":{"line":357,"column":7},"end":{"line":357,"column":29}}},"20":{"name":"setTimeout","line":364,"loc":{"start":{"line":364,"column":7},"end":{"line":364,"column":36}}},"21":{"name":"on","line":375,"loc":{"start":{"line":375,"column":22},"end":{"line":375,"column":51}}},"22":{"name":"createServer","line":383,"loc":{"start":{"line":383,"column":0},"end":{"line":383,"column":48}}},"23":{"name":"IncomingRequest","line":401,"loc":{"start":{"line":401,"column":0},"end":{"line":401,"column":33}}},"24":{"name":"_onHeaders","line":410,"loc":{"start":{"line":410,"column":39},"end":{"line":410,"column":68}}},"25":{"name":"OutgoingResponse","line":477,"loc":{"start":{"line":477,"column":0},"end":{"line":477,"column":34}}},"26":{"name":"writeHead","line":490,"loc":{"start":{"line":490,"column":39},"end":{"line":490,"column":93}}},"27":{"name":"_implicitHeaders","line":516,"loc":{"start":{"line":516,"column":46},"end":{"line":516,"column":74}}},"28":{"name":"write","line":522,"loc":{"start":{"line":522,"column":35},"end":{"line":522,"column":52}}},"29":{"name":"end","line":527,"loc":{"start":{"line":527,"column":33},"end":{"line":527,"column":48}}},"30":{"name":"_onRequestHeaders","line":532,"loc":{"start":{"line":532,"column":47},"end":{"line":532,"column":83}}},"31":{"name":"push","line":536,"loc":{"start":{"line":536,"column":34},"end":{"line":536,"column":57}}},"32":{"name":"on","line":562,"loc":{"start":{"line":562,"column":32},"end":{"line":562,"column":61}}},"33":{"name":"request","line":578,"loc":{"start":{"line":578,"column":18},"end":{"line":578,"column":54}}},"34":{"name":"get","line":581,"loc":{"start":{"line":581,"column":14},"end":{"line":581,"column":46}}},"35":{"name":"Agent","line":588,"loc":{"start":{"line":588,"column":0},"end":{"line":588,"column":24}}},"36":{"name":"request","line":610,"loc":{"start":{"line":610,"column":26},"end":{"line":610,"column":62}}},"37":{"name":"(anonymous_37)","line":663,"loc":{"start":{"line":663,"column":30},"end":{"line":663,"column":47}}},"38":{"name":"negotiated","line":672,"loc":{"start":{"line":672,"column":4},"end":{"line":672,"column":26}}},"39":{"name":"(anonymous_39)","line":699,"loc":{"start":{"line":699,"column":19},"end":{"line":699,"column":38}}},"40":{"name":"get","line":712,"loc":{"start":{"line":712,"column":22},"end":{"line":712,"column":54}}},"41":{"name":"unbundleSocket","line":718,"loc":{"start":{"line":718,"column":0},"end":{"line":718,"column":32}}},"42":{"name":"getMaxSockets","line":730,"loc":{"start":{"line":730,"column":7},"end":{"line":730,"column":32}}},"43":{"name":"setMaxSockets","line":733,"loc":{"start":{"line":733,"column":7},"end":{"line":733,"column":37}}},"44":{"name":"OutgoingRequest","line":743,"loc":{"start":{"line":743,"column":0},"end":{"line":743,"column":27}}},"45":{"name":"_start","line":753,"loc":{"start":{"line":753,"column":35},"end":{"line":753,"column":68}}},"46":{"name":"_fallback","line":785,"loc":{"start":{"line":785,"column":38},"end":{"line":785,"column":66}}},"47":{"name":"setPriority","line":791,"loc":{"start":{"line":791,"column":40},"end":{"line":791,"column":71}}},"48":{"name":"on","line":801,"loc":{"start":{"line":801,"column":31},"end":{"line":801,"column":60}}},"49":{"name":"setNoDelay","line":810,"loc":{"start":{"line":810,"column":39},"end":{"line":810,"column":68}}},"50":{"name":"setSocketKeepAlive","line":818,"loc":{"start":{"line":818,"column":47},"end":{"line":818,"column":97}}},"51":{"name":"setTimeout","line":826,"loc":{"start":{"line":826,"column":39},"end":{"line":826,"column":78}}},"52":{"name":"abort","line":835,"loc":{"start":{"line":835,"column":34},"end":{"line":835,"column":51}}},"53":{"name":"_onPromise","line":846,"loc":{"start":{"line":846,"column":39},"end":{"line":846,"column":76}}},"54":{"name":"IncomingResponse","line":861,"loc":{"start":{"line":861,"column":0},"end":{"line":861,"column":34}}},"55":{"name":"_onHeaders","line":867,"loc":{"start":{"line":867,"column":40},"end":{"line":867,"column":69}}},"56":{"name":"IncomingPromise","line":896,"loc":{"start":{"line":896,"column":0},"end":{"line":896,"column":57}}},"57":{"name":"cancel","line":915,"loc":{"start":{"line":915,"column":35},"end":{"line":915,"column":53}}},"58":{"name":"setPriority","line":919,"loc":{"start":{"line":919,"column":40},"end":{"line":919,"column":71}}}},"statementMap":{"1":{"start":{"line":129,"column":0},"end":{"line":129,"column":25}},"2":{"start":{"line":130,"column":0},"end":{"line":130,"column":25}},"3":{"start":{"line":131,"column":0},"end":{"line":131,"column":27}},"4":{"start":{"line":132,"column":0},"end":{"line":132,"column":50}},"5":{"start":{"line":133,"column":0},"end":{"line":133,"column":48}},"6":{"start":{"line":134,"column":0},"end":{"line":134,"column":42}},"7":{"start":{"line":135,"column":0},"end":{"line":135,"column":42}},"8":{"start":{"line":136,"column":0},"end":{"line":136,"column":46}},"9":{"start":{"line":137,"column":0},"end":{"line":137,"column":27}},"10":{"start":{"line":138,"column":0},"end":{"line":138,"column":29}},"11":{"start":{"line":140,"column":0},"end":{"line":140,"column":41}},"12":{"start":{"line":141,"column":0},"end":{"line":141,"column":42}},"13":{"start":{"line":142,"column":0},"end":{"line":142,"column":42}},"14":{"start":{"line":146,"column":0},"end":{"line":146,"column":45}},"15":{"start":{"line":152,"column":0},"end":{"line":152,"column":18}},"16":{"start":{"line":153,"column":0},"end":{"line":162,"column":2}},"17":{"start":{"line":161,"column":22},"end":{"line":161,"column":34}},"18":{"start":{"line":165,"column":0},"end":{"line":165,"column":25}},"19":{"start":{"line":166,"column":0},"end":{"line":166,"column":95}},"20":{"start":{"line":167,"column":0},"end":{"line":169,"column":3}},"21":{"start":{"line":168,"column":2},"end":{"line":168,"column":65}},"22":{"start":{"line":174,"column":0},"end":{"line":190,"column":1}},"23":{"start":{"line":176,"column":2},"end":{"line":176,"column":25}},"24":{"start":{"line":177,"column":2},"end":{"line":177,"column":20}},"25":{"start":{"line":178,"column":2},"end":{"line":178,"column":37}},"26":{"start":{"line":180,"column":2},"end":{"line":180,"column":55}},"27":{"start":{"line":184,"column":2},"end":{"line":184,"column":27}},"28":{"start":{"line":185,"column":2},"end":{"line":185,"column":28}},"29":{"start":{"line":186,"column":2},"end":{"line":186,"column":28}},"30":{"start":{"line":189,"column":2},"end":{"line":189,"column":53}},"31":{"start":{"line":191,"column":0},"end":{"line":191,"column":110}},"32":{"start":{"line":193,"column":0},"end":{"line":193,"column":44}},"33":{"start":{"line":198,"column":0},"end":{"line":206,"column":1}},"34":{"start":{"line":200,"column":2},"end":{"line":200,"column":22}},"35":{"start":{"line":202,"column":2},"end":{"line":202,"column":21}},"36":{"start":{"line":203,"column":2},"end":{"line":203,"column":27}},"37":{"start":{"line":205,"column":2},"end":{"line":205,"column":45}},"38":{"start":{"line":207,"column":0},"end":{"line":207,"column":107}},"39":{"start":{"line":209,"column":0},"end":{"line":215,"column":2}},"40":{"start":{"line":210,"column":2},"end":{"line":214,"column":3}},"41":{"start":{"line":211,"column":4},"end":{"line":211,"column":49}},"42":{"start":{"line":213,"column":4},"end":{"line":213,"column":75}},"43":{"start":{"line":217,"column":0},"end":{"line":223,"column":2}},"44":{"start":{"line":218,"column":2},"end":{"line":222,"column":3}},"45":{"start":{"line":219,"column":4},"end":{"line":219,"column":22}},"46":{"start":{"line":221,"column":4},"end":{"line":221,"column":49}},"47":{"start":{"line":225,"column":0},"end":{"line":231,"column":2}},"48":{"start":{"line":226,"column":2},"end":{"line":230,"column":3}},"49":{"start":{"line":227,"column":4},"end":{"line":227,"column":63}},"50":{"start":{"line":229,"column":4},"end":{"line":229,"column":46}},"51":{"start":{"line":233,"column":0},"end":{"line":239,"column":2}},"52":{"start":{"line":234,"column":2},"end":{"line":238,"column":3}},"53":{"start":{"line":235,"column":4},"end":{"line":235,"column":66}},"54":{"start":{"line":237,"column":4},"end":{"line":237,"column":45}},"55":{"start":{"line":241,"column":0},"end":{"line":243,"column":2}},"56":{"start":{"line":242,"column":2},"end":{"line":242,"column":43}},"57":{"start":{"line":245,"column":0},"end":{"line":245,"column":44}},"58":{"start":{"line":250,"column":0},"end":{"line":250,"column":36}},"59":{"start":{"line":251,"column":0},"end":{"line":251,"column":24}},"60":{"start":{"line":252,"column":0},"end":{"line":252,"column":42}},"61":{"start":{"line":253,"column":0},"end":{"line":253,"column":44}},"62":{"start":{"line":254,"column":0},"end":{"line":254,"column":42}},"63":{"start":{"line":259,"column":0},"end":{"line":300,"column":1}},"64":{"start":{"line":260,"column":2},"end":{"line":260,"column":26}},"65":{"start":{"line":262,"column":2},"end":{"line":262,"column":74}},"66":{"start":{"line":263,"column":2},"end":{"line":263,"column":36}},"67":{"start":{"line":265,"column":2},"end":{"line":265,"column":37}},"68":{"start":{"line":266,"column":2},"end":{"line":266,"column":43}},"69":{"start":{"line":269,"column":2},"end":{"line":297,"column":3}},"70":{"start":{"line":270,"column":4},"end":{"line":270,"column":58}},"71":{"start":{"line":271,"column":4},"end":{"line":271,"column":23}},"72":{"start":{"line":272,"column":4},"end":{"line":272,"column":72}},"73":{"start":{"line":273,"column":4},"end":{"line":273,"column":47}},"74":{"start":{"line":274,"column":4},"end":{"line":274,"column":79}},"75":{"start":{"line":275,"column":4},"end":{"line":275,"column":56}},"76":{"start":{"line":276,"column":4},"end":{"line":282,"column":7}},"77":{"start":{"line":277,"column":6},"end":{"line":281,"column":7}},"78":{"start":{"line":278,"column":8},"end":{"line":278,"column":22}},"79":{"start":{"line":280,"column":8},"end":{"line":280,"column":25}},"80":{"start":{"line":283,"column":4},"end":{"line":283,"column":64}},"81":{"start":{"line":287,"column":7},"end":{"line":297,"column":3}},"82":{"start":{"line":288,"column":4},"end":{"line":288,"column":60}},"83":{"start":{"line":289,"column":4},"end":{"line":289,"column":25}},"84":{"start":{"line":290,"column":4},"end":{"line":290,"column":43}},"85":{"start":{"line":295,"column":4},"end":{"line":295,"column":81}},"86":{"start":{"line":296,"column":4},"end":{"line":296,"column":95}},"87":{"start":{"line":299,"column":2},"end":{"line":299,"column":58}},"88":{"start":{"line":301,"column":0},"end":{"line":301,"column":93}},"89":{"start":{"line":304,"column":0},"end":{"line":323,"column":2}},"90":{"start":{"line":305,"column":2},"end":{"line":305,"column":67}},"91":{"start":{"line":307,"column":2},"end":{"line":308,"column":50}},"92":{"start":{"line":310,"column":2},"end":{"line":310,"column":39}},"93":{"start":{"line":312,"column":2},"end":{"line":312,"column":18}},"94":{"start":{"line":313,"column":2},"end":{"line":318,"column":5}},"95":{"start":{"line":314,"column":4},"end":{"line":314,"column":48}},"96":{"start":{"line":315,"column":4},"end":{"line":315,"column":46}},"97":{"start":{"line":317,"column":4},"end":{"line":317,"column":78}},"98":{"start":{"line":320,"column":2},"end":{"line":320,"column":60}},"99":{"start":{"line":322,"column":2},"end":{"line":322,"column":44}},"100":{"start":{"line":325,"column":0},"end":{"line":334,"column":2}},"101":{"start":{"line":326,"column":2},"end":{"line":327,"column":49}},"102":{"start":{"line":329,"column":2},"end":{"line":331,"column":3}},"103":{"start":{"line":330,"column":4},"end":{"line":330,"column":64}},"104":{"start":{"line":333,"column":2},"end":{"line":333,"column":34}},"105":{"start":{"line":339,"column":0},"end":{"line":343,"column":2}},"106":{"start":{"line":340,"column":2},"end":{"line":341,"column":55}},"107":{"start":{"line":342,"column":2},"end":{"line":342,"column":53}},"108":{"start":{"line":345,"column":0},"end":{"line":348,"column":2}},"109":{"start":{"line":346,"column":2},"end":{"line":346,"column":35}},"110":{"start":{"line":347,"column":2},"end":{"line":347,"column":31}},"111":{"start":{"line":350,"column":0},"end":{"line":354,"column":2}},"112":{"start":{"line":351,"column":2},"end":{"line":353,"column":3}},"113":{"start":{"line":352,"column":4},"end":{"line":352,"column":47}},"114":{"start":{"line":356,"column":0},"end":{"line":369,"column":3}},"115":{"start":{"line":358,"column":4},"end":{"line":362,"column":5}},"116":{"start":{"line":359,"column":6},"end":{"line":359,"column":34}},"117":{"start":{"line":361,"column":6},"end":{"line":361,"column":23}},"118":{"start":{"line":365,"column":4},"end":{"line":367,"column":5}},"119":{"start":{"line":366,"column":6},"end":{"line":366,"column":37}},"120":{"start":{"line":375,"column":0},"end":{"line":381,"column":2}},"121":{"start":{"line":376,"column":2},"end":{"line":380,"column":3}},"122":{"start":{"line":377,"column":4},"end":{"line":377,"column":48}},"123":{"start":{"line":379,"column":4},"end":{"line":379,"column":58}},"124":{"start":{"line":383,"column":0},"end":{"line":396,"column":1}},"125":{"start":{"line":384,"column":2},"end":{"line":387,"column":3}},"126":{"start":{"line":385,"column":4},"end":{"line":385,"column":30}},"127":{"start":{"line":386,"column":4},"end":{"line":386,"column":24}},"128":{"start":{"line":389,"column":2},"end":{"line":389,"column":35}},"129":{"start":{"line":391,"column":2},"end":{"line":393,"column":3}},"130":{"start":{"line":392,"column":4},"end":{"line":392,"column":42}},"131":{"start":{"line":395,"column":2},"end":{"line":395,"column":16}},"132":{"start":{"line":401,"column":0},"end":{"line":403,"column":1}},"133":{"start":{"line":402,"column":2},"end":{"line":402,"column":37}},"134":{"start":{"line":404,"column":0},"end":{"line":404,"column":114}},"135":{"start":{"line":410,"column":0},"end":{"line":472,"column":2}},"136":{"start":{"line":414,"column":2},"end":{"line":422,"column":4}},"137":{"start":{"line":423,"column":2},"end":{"line":430,"column":3}},"138":{"start":{"line":424,"column":4},"end":{"line":424,"column":35}},"139":{"start":{"line":425,"column":4},"end":{"line":429,"column":5}},"140":{"start":{"line":426,"column":6},"end":{"line":426,"column":84}},"141":{"start":{"line":427,"column":6},"end":{"line":427,"column":50}},"142":{"start":{"line":428,"column":6},"end":{"line":428,"column":13}},"143":{"start":{"line":433,"column":2},"end":{"line":433,"column":20}},"144":{"start":{"line":445,"column":2},"end":{"line":450,"column":4}},"145":{"start":{"line":451,"column":2},"end":{"line":463,"column":3}},"146":{"start":{"line":452,"column":4},"end":{"line":462,"column":5}},"147":{"start":{"line":453,"column":6},"end":{"line":453,"column":32}},"148":{"start":{"line":454,"column":6},"end":{"line":458,"column":7}},"149":{"start":{"line":455,"column":8},"end":{"line":455,"column":77}},"150":{"start":{"line":456,"column":8},"end":{"line":456,"column":52}},"151":{"start":{"line":457,"column":8},"end":{"line":457,"column":15}},"152":{"start":{"line":459,"column":6},"end":{"line":459,"column":34}},"153":{"start":{"line":461,"column":6},"end":{"line":461,"column":41}},"154":{"start":{"line":466,"column":2},"end":{"line":466,"column":32}},"155":{"start":{"line":469,"column":2},"end":{"line":470,"column":80}},"156":{"start":{"line":471,"column":2},"end":{"line":471,"column":21}},"157":{"start":{"line":477,"column":0},"end":{"line":487,"column":1}},"158":{"start":{"line":478,"column":2},"end":{"line":478,"column":29}},"159":{"start":{"line":480,"column":2},"end":{"line":480,"column":55}},"160":{"start":{"line":482,"column":2},"end":{"line":482,"column":23}},"161":{"start":{"line":483,"column":2},"end":{"line":483,"column":24}},"162":{"start":{"line":484,"column":2},"end":{"line":484,"column":23}},"163":{"start":{"line":486,"column":2},"end":{"line":486,"column":65}},"164":{"start":{"line":488,"column":0},"end":{"line":488,"column":116}},"165":{"start":{"line":490,"column":0},"end":{"line":514,"column":2}},"166":{"start":{"line":491,"column":2},"end":{"line":495,"column":3}},"167":{"start":{"line":492,"column":4},"end":{"line":492,"column":93}},"168":{"start":{"line":494,"column":4},"end":{"line":494,"column":27}},"169":{"start":{"line":497,"column":2},"end":{"line":497,"column":26}},"170":{"start":{"line":499,"column":2},"end":{"line":501,"column":3}},"171":{"start":{"line":500,"column":4},"end":{"line":500,"column":54}},"172":{"start":{"line":503,"column":2},"end":{"line":505,"column":3}},"173":{"start":{"line":504,"column":4},"end":{"line":504,"column":52}},"174":{"start":{"line":507,"column":2},"end":{"line":507,"column":92}},"175":{"start":{"line":509,"column":2},"end":{"line":509,"column":58}},"176":{"start":{"line":511,"column":2},"end":{"line":511,"column":37}},"177":{"start":{"line":513,"column":2},"end":{"line":513,"column":26}},"178":{"start":{"line":516,"column":0},"end":{"line":520,"column":2}},"179":{"start":{"line":517,"column":2},"end":{"line":519,"column":3}},"180":{"start":{"line":518,"column":4},"end":{"line":518,"column":36}},"181":{"start":{"line":522,"column":0},"end":{"line":525,"column":2}},"182":{"start":{"line":523,"column":2},"end":{"line":523,"column":26}},"183":{"start":{"line":524,"column":2},"end":{"line":524,"column":64}},"184":{"start":{"line":527,"column":0},"end":{"line":530,"column":2}},"185":{"start":{"line":528,"column":2},"end":{"line":528,"column":26}},"186":{"start":{"line":529,"column":2},"end":{"line":529,"column":62}},"187":{"start":{"line":532,"column":0},"end":{"line":534,"column":2}},"188":{"start":{"line":533,"column":2},"end":{"line":533,"column":33}},"189":{"start":{"line":536,"column":0},"end":{"line":558,"column":2}},"190":{"start":{"line":537,"column":2},"end":{"line":539,"column":3}},"191":{"start":{"line":538,"column":4},"end":{"line":538,"column":33}},"192":{"start":{"line":541,"column":2},"end":{"line":543,"column":3}},"193":{"start":{"line":542,"column":4},"end":{"line":542,"column":51}},"194":{"start":{"line":545,"column":2},"end":{"line":550,"column":22}},"195":{"start":{"line":552,"column":2},"end":{"line":553,"column":96}},"196":{"start":{"line":555,"column":2},"end":{"line":555,"column":48}},"197":{"start":{"line":557,"column":2},"end":{"line":557,"column":42}},"198":{"start":{"line":562,"column":0},"end":{"line":568,"column":2}},"199":{"start":{"line":563,"column":2},"end":{"line":567,"column":3}},"200":{"start":{"line":564,"column":4},"end":{"line":564,"column":48}},"201":{"start":{"line":566,"column":4},"end":{"line":566,"column":61}},"202":{"start":{"line":573,"column":0},"end":{"line":573,"column":40}},"203":{"start":{"line":574,"column":0},"end":{"line":574,"column":42}},"204":{"start":{"line":575,"column":0},"end":{"line":575,"column":44}},"205":{"start":{"line":576,"column":0},"end":{"line":576,"column":22}},"206":{"start":{"line":577,"column":0},"end":{"line":577,"column":32}},"207":{"start":{"line":578,"column":0},"end":{"line":580,"column":2}},"208":{"start":{"line":579,"column":2},"end":{"line":579,"column":75}},"209":{"start":{"line":581,"column":0},"end":{"line":583,"column":2}},"210":{"start":{"line":582,"column":2},"end":{"line":582,"column":71}},"211":{"start":{"line":588,"column":0},"end":{"line":607,"column":1}},"212":{"start":{"line":589,"column":2},"end":{"line":589,"column":26}},"213":{"start":{"line":591,"column":2},"end":{"line":591,"column":26}},"214":{"start":{"line":593,"column":2},"end":{"line":593,"column":36}},"215":{"start":{"line":594,"column":2},"end":{"line":594,"column":74}},"216":{"start":{"line":595,"column":2},"end":{"line":595,"column":22}},"217":{"start":{"line":601,"column":2},"end":{"line":603,"column":5}},"218":{"start":{"line":605,"column":2},"end":{"line":605,"column":42}},"219":{"start":{"line":606,"column":2},"end":{"line":606,"column":44}},"220":{"start":{"line":608,"column":0},"end":{"line":608,"column":91}},"221":{"start":{"line":610,"column":0},"end":{"line":710,"column":2}},"222":{"start":{"line":611,"column":2},"end":{"line":613,"column":3}},"223":{"start":{"line":612,"column":4},"end":{"line":612,"column":33}},"224":{"start":{"line":615,"column":2},"end":{"line":615,"column":59}},"225":{"start":{"line":616,"column":2},"end":{"line":616,"column":50}},"226":{"start":{"line":617,"column":2},"end":{"line":617,"column":65}},"227":{"start":{"line":618,"column":2},"end":{"line":618,"column":37}},"228":{"start":{"line":619,"column":2},"end":{"line":619,"column":37}},"229":{"start":{"line":621,"column":2},"end":{"line":624,"column":3}},"230":{"start":{"line":622,"column":4},"end":{"line":622,"column":85}},"231":{"start":{"line":623,"column":4},"end":{"line":623,"column":70}},"232":{"start":{"line":626,"column":2},"end":{"line":626,"column":47}},"233":{"start":{"line":628,"column":2},"end":{"line":630,"column":3}},"234":{"start":{"line":629,"column":4},"end":{"line":629,"column":37}},"235":{"start":{"line":632,"column":2},"end":{"line":636,"column":14}},"236":{"start":{"line":639,"column":2},"end":{"line":707,"column":3}},"237":{"start":{"line":640,"column":4},"end":{"line":640,"column":39}},"238":{"start":{"line":641,"column":4},"end":{"line":641,"column":53}},"239":{"start":{"line":645,"column":7},"end":{"line":707,"column":3}},"240":{"start":{"line":646,"column":4},"end":{"line":646,"column":65}},"241":{"start":{"line":647,"column":4},"end":{"line":651,"column":7}},"242":{"start":{"line":652,"column":4},"end":{"line":652,"column":50}},"243":{"start":{"line":653,"column":4},"end":{"line":653,"column":53}},"244":{"start":{"line":658,"column":4},"end":{"line":658,"column":24}},"245":{"start":{"line":659,"column":4},"end":{"line":659,"column":72}},"246":{"start":{"line":660,"column":4},"end":{"line":660,"column":37}},"247":{"start":{"line":661,"column":4},"end":{"line":661,"column":46}},"248":{"start":{"line":663,"column":4},"end":{"line":669,"column":7}},"249":{"start":{"line":664,"column":6},"end":{"line":668,"column":7}},"250":{"start":{"line":665,"column":8},"end":{"line":665,"column":21}},"251":{"start":{"line":667,"column":8},"end":{"line":667,"column":47}},"252":{"start":{"line":671,"column":4},"end":{"line":671,"column":20}},"253":{"start":{"line":672,"column":4},"end":{"line":697,"column":5}},"254":{"start":{"line":673,"column":6},"end":{"line":673,"column":19}},"255":{"start":{"line":674,"column":6},"end":{"line":680,"column":7}},"256":{"start":{"line":675,"column":8},"end":{"line":675,"column":48}},"257":{"start":{"line":676,"column":8},"end":{"line":676,"column":44}},"258":{"start":{"line":677,"column":8},"end":{"line":677,"column":69}},"259":{"start":{"line":678,"column":8},"end":{"line":678,"column":46}},"260":{"start":{"line":679,"column":8},"end":{"line":679,"column":54}},"261":{"start":{"line":681,"column":6},"end":{"line":696,"column":7}},"262":{"start":{"line":682,"column":8},"end":{"line":686,"column":9}},"263":{"start":{"line":683,"column":10},"end":{"line":683,"column":27}},"264":{"start":{"line":685,"column":10},"end":{"line":685,"column":31}},"265":{"start":{"line":688,"column":8},"end":{"line":695,"column":9}},"266":{"start":{"line":689,"column":10},"end":{"line":690,"column":59}},"267":{"start":{"line":691,"column":10},"end":{"line":691,"column":41}},"268":{"start":{"line":692,"column":10},"end":{"line":692,"column":35}},"269":{"start":{"line":694,"column":10},"end":{"line":694,"column":36}},"270":{"start":{"line":699,"column":4},"end":{"line":706,"column":7}},"271":{"start":{"line":700,"column":6},"end":{"line":700,"column":21}},"272":{"start":{"line":701,"column":6},"end":{"line":705,"column":7}},"273":{"start":{"line":702,"column":8},"end":{"line":702,"column":57}},"274":{"start":{"line":704,"column":8},"end":{"line":704,"column":40}},"275":{"start":{"line":709,"column":2},"end":{"line":709,"column":17}},"276":{"start":{"line":712,"column":0},"end":{"line":716,"column":2}},"277":{"start":{"line":713,"column":2},"end":{"line":713,"column":48}},"278":{"start":{"line":714,"column":2},"end":{"line":714,"column":16}},"279":{"start":{"line":715,"column":2},"end":{"line":715,"column":17}},"280":{"start":{"line":718,"column":0},"end":{"line":727,"column":1}},"281":{"start":{"line":719,"column":2},"end":{"line":719,"column":36}},"282":{"start":{"line":720,"column":2},"end":{"line":720,"column":35}},"283":{"start":{"line":721,"column":2},"end":{"line":721,"column":40}},"284":{"start":{"line":722,"column":2},"end":{"line":722,"column":37}},"285":{"start":{"line":723,"column":2},"end":{"line":723,"column":37}},"286":{"start":{"line":724,"column":2},"end":{"line":724,"column":18}},"287":{"start":{"line":725,"column":2},"end":{"line":725,"column":23}},"288":{"start":{"line":726,"column":2},"end":{"line":726,"column":22}},"289":{"start":{"line":729,"column":0},"end":{"line":736,"column":3}},"290":{"start":{"line":731,"column":4},"end":{"line":731,"column":39}},"291":{"start":{"line":734,"column":4},"end":{"line":734,"column":40}},"292":{"start":{"line":738,"column":0},"end":{"line":738,"column":34}},"293":{"start":{"line":743,"column":0},"end":{"line":750,"column":1}},"294":{"start":{"line":744,"column":2},"end":{"line":744,"column":29}},"295":{"start":{"line":746,"column":2},"end":{"line":746,"column":24}},"296":{"start":{"line":748,"column":2},"end":{"line":748,"column":26}},"297":{"start":{"line":749,"column":2},"end":{"line":749,"column":26}},"298":{"start":{"line":751,"column":0},"end":{"line":751,"column":114}},"299":{"start":{"line":753,"column":0},"end":{"line":783,"column":2}},"300":{"start":{"line":754,"column":2},"end":{"line":754,"column":23}},"301":{"start":{"line":756,"column":2},"end":{"line":756,"column":55}},"302":{"start":{"line":758,"column":2},"end":{"line":758,"column":19}},"303":{"start":{"line":759,"column":2},"end":{"line":761,"column":3}},"304":{"start":{"line":760,"column":4},"end":{"line":760,"column":40}},"305":{"start":{"line":762,"column":2},"end":{"line":762,"column":22}},"306":{"start":{"line":764,"column":2},"end":{"line":766,"column":3}},"307":{"start":{"line":765,"column":4},"end":{"line":765,"column":83}},"308":{"start":{"line":768,"column":2},"end":{"line":768,"column":53}},"309":{"start":{"line":769,"column":2},"end":{"line":769,"column":38}},"310":{"start":{"line":770,"column":2},"end":{"line":770,"column":34}},"311":{"start":{"line":771,"column":2},"end":{"line":771,"column":34}},"312":{"start":{"line":773,"column":2},"end":{"line":774,"column":98}},"313":{"start":{"line":775,"column":2},"end":{"line":775,"column":31}},"314":{"start":{"line":777,"column":2},"end":{"line":777,"column":35}},"315":{"start":{"line":779,"column":2},"end":{"line":779,"column":51}},"316":{"start":{"line":780,"column":2},"end":{"line":780,"column":69}},"317":{"start":{"line":782,"column":2},"end":{"line":782,"column":56}},"318":{"start":{"line":785,"column":0},"end":{"line":789,"column":2}},"319":{"start":{"line":786,"column":2},"end":{"line":786,"column":59}},"320":{"start":{"line":787,"column":2},"end":{"line":787,"column":39}},"321":{"start":{"line":788,"column":2},"end":{"line":788,"column":35}},"322":{"start":{"line":791,"column":0},"end":{"line":797,"column":2}},"323":{"start":{"line":792,"column":2},"end":{"line":796,"column":3}},"324":{"start":{"line":793,"column":4},"end":{"line":793,"column":35}},"325":{"start":{"line":795,"column":4},"end":{"line":795,"column":63}},"326":{"start":{"line":801,"column":0},"end":{"line":807,"column":2}},"327":{"start":{"line":802,"column":2},"end":{"line":806,"column":3}},"328":{"start":{"line":803,"column":4},"end":{"line":803,"column":48}},"329":{"start":{"line":805,"column":4},"end":{"line":805,"column":61}},"330":{"start":{"line":810,"column":0},"end":{"line":816,"column":2}},"331":{"start":{"line":811,"column":2},"end":{"line":815,"column":3}},"332":{"start":{"line":812,"column":4},"end":{"line":812,"column":37}},"333":{"start":{"line":813,"column":9},"end":{"line":815,"column":3}},"334":{"start":{"line":814,"column":4},"end":{"line":814,"column":59}},"335":{"start":{"line":818,"column":0},"end":{"line":824,"column":2}},"336":{"start":{"line":819,"column":2},"end":{"line":823,"column":3}},"337":{"start":{"line":820,"column":4},"end":{"line":820,"column":58}},"338":{"start":{"line":821,"column":9},"end":{"line":823,"column":3}},"339":{"start":{"line":822,"column":4},"end":{"line":822,"column":80}},"340":{"start":{"line":826,"column":0},"end":{"line":832,"column":2}},"341":{"start":{"line":827,"column":2},"end":{"line":831,"column":3}},"342":{"start":{"line":828,"column":4},"end":{"line":828,"column":47}},"343":{"start":{"line":829,"column":9},"end":{"line":831,"column":3}},"344":{"start":{"line":830,"column":4},"end":{"line":830,"column":69}},"345":{"start":{"line":835,"column":0},"end":{"line":843,"column":2}},"346":{"start":{"line":836,"column":2},"end":{"line":842,"column":3}},"347":{"start":{"line":837,"column":4},"end":{"line":837,"column":25}},"348":{"start":{"line":838,"column":9},"end":{"line":842,"column":3}},"349":{"start":{"line":839,"column":4},"end":{"line":839,"column":32}},"350":{"start":{"line":841,"column":4},"end":{"line":841,"column":45}},"351":{"start":{"line":846,"column":0},"end":{"line":856,"column":2}},"352":{"start":{"line":847,"column":2},"end":{"line":847,"column":71}},"353":{"start":{"line":849,"column":2},"end":{"line":849,"column":53}},"354":{"start":{"line":851,"column":2},"end":{"line":855,"column":3}},"355":{"start":{"line":852,"column":4},"end":{"line":852,"column":31}},"356":{"start":{"line":854,"column":4},"end":{"line":854,"column":21}},"357":{"start":{"line":861,"column":0},"end":{"line":863,"column":1}},"358":{"start":{"line":862,"column":2},"end":{"line":862,"column":37}},"359":{"start":{"line":864,"column":0},"end":{"line":864,"column":116}},"360":{"start":{"line":867,"column":0},"end":{"line":891,"column":2}},"361":{"start":{"line":871,"column":2},"end":{"line":871,"column":25}},"362":{"start":{"line":879,"column":2},"end":{"line":879,"column":38}},"363":{"start":{"line":880,"column":2},"end":{"line":884,"column":3}},"364":{"start":{"line":881,"column":4},"end":{"line":881,"column":83}},"365":{"start":{"line":882,"column":4},"end":{"line":882,"column":48}},"366":{"start":{"line":883,"column":4},"end":{"line":883,"column":11}},"367":{"start":{"line":885,"column":2},"end":{"line":885,"column":31}},"368":{"start":{"line":886,"column":2},"end":{"line":886,"column":28}},"369":{"start":{"line":889,"column":2},"end":{"line":889,"column":79}},"370":{"start":{"line":890,"column":2},"end":{"line":890,"column":21}},"371":{"start":{"line":896,"column":0},"end":{"line":912,"column":1}},"372":{"start":{"line":897,"column":2},"end":{"line":897,"column":30}},"373":{"start":{"line":898,"column":2},"end":{"line":898,"column":22}},"374":{"start":{"line":899,"column":2},"end":{"line":899,"column":20}},"375":{"start":{"line":900,"column":2},"end":{"line":900,"column":36}},"376":{"start":{"line":902,"column":2},"end":{"line":902,"column":37}},"377":{"start":{"line":904,"column":2},"end":{"line":904,"column":34}},"378":{"start":{"line":906,"column":2},"end":{"line":906,"column":40}},"379":{"start":{"line":908,"column":2},"end":{"line":908,"column":60}},"380":{"start":{"line":909,"column":2},"end":{"line":909,"column":69}},"381":{"start":{"line":911,"column":2},"end":{"line":911,"column":56}},"382":{"start":{"line":913,"column":0},"end":{"line":913,"column":114}},"383":{"start":{"line":915,"column":0},"end":{"line":917,"column":2}},"384":{"start":{"line":916,"column":2},"end":{"line":916,"column":39}},"385":{"start":{"line":919,"column":0},"end":{"line":921,"column":2}},"386":{"start":{"line":920,"column":2},"end":{"line":920,"column":42}},"387":{"start":{"line":923,"column":0},"end":{"line":923,"column":76}}},"branchMap":{"1":{"line":210,"type":"if","locations":[{"start":{"line":210,"column":2},"end":{"line":210,"column":2}},{"start":{"line":210,"column":2},"end":{"line":210,"column":2}}]},"2":{"line":218,"type":"if","locations":[{"start":{"line":218,"column":2},"end":{"line":218,"column":2}},{"start":{"line":218,"column":2},"end":{"line":218,"column":2}}]},"3":{"line":226,"type":"if","locations":[{"start":{"line":226,"column":2},"end":{"line":226,"column":2}},{"start":{"line":226,"column":2},"end":{"line":226,"column":2}}]},"4":{"line":234,"type":"if","locations":[{"start":{"line":234,"column":2},"end":{"line":234,"column":2}},{"start":{"line":234,"column":2},"end":{"line":234,"column":2}}]},"5":{"line":260,"type":"binary-expr","locations":[{"start":{"line":260,"column":12},"end":{"line":260,"column":19}},{"start":{"line":260,"column":23},"end":{"line":260,"column":25}}]},"6":{"line":262,"type":"binary-expr","locations":[{"start":{"line":262,"column":15},"end":{"line":262,"column":26}},{"start":{"line":262,"column":30},"end":{"line":262,"column":43}}]},"7":{"line":269,"type":"if","locations":[{"start":{"line":269,"column":2},"end":{"line":269,"column":2}},{"start":{"line":269,"column":2},"end":{"line":269,"column":2}}]},"8":{"line":269,"type":"binary-expr","locations":[{"start":{"line":269,"column":7},"end":{"line":269,"column":18}},{"start":{"line":269,"column":22},"end":{"line":269,"column":34}},{"start":{"line":269,"column":39},"end":{"line":269,"column":50}}]},"9":{"line":277,"type":"if","locations":[{"start":{"line":277,"column":6},"end":{"line":277,"column":6}},{"start":{"line":277,"column":6},"end":{"line":277,"column":6}}]},"10":{"line":287,"type":"if","locations":[{"start":{"line":287,"column":7},"end":{"line":287,"column":7}},{"start":{"line":287,"column":7},"end":{"line":287,"column":7}}]},"11":{"line":340,"type":"cond-expr","locations":[{"start":{"line":340,"column":58},"end":{"line":340,"column":79}},{"start":{"line":340,"column":83},"end":{"line":340,"column":87}}]},"12":{"line":351,"type":"if","locations":[{"start":{"line":351,"column":2},"end":{"line":351,"column":2}},{"start":{"line":351,"column":2},"end":{"line":351,"column":2}}]},"13":{"line":358,"type":"if","locations":[{"start":{"line":358,"column":4},"end":{"line":358,"column":4}},{"start":{"line":358,"column":4},"end":{"line":358,"column":4}}]},"14":{"line":365,"type":"if","locations":[{"start":{"line":365,"column":4},"end":{"line":365,"column":4}},{"start":{"line":365,"column":4},"end":{"line":365,"column":4}}]},"15":{"line":376,"type":"if","locations":[{"start":{"line":376,"column":2},"end":{"line":376,"column":2}},{"start":{"line":376,"column":2},"end":{"line":376,"column":2}}]},"16":{"line":376,"type":"binary-expr","locations":[{"start":{"line":376,"column":7},"end":{"line":376,"column":26}},{"start":{"line":376,"column":32},"end":{"line":376,"column":51}}]},"17":{"line":384,"type":"if","locations":[{"start":{"line":384,"column":2},"end":{"line":384,"column":2}},{"start":{"line":384,"column":2},"end":{"line":384,"column":2}}]},"18":{"line":391,"type":"if","locations":[{"start":{"line":391,"column":2},"end":{"line":391,"column":2}},{"start":{"line":391,"column":2},"end":{"line":391,"column":2}}]},"19":{"line":425,"type":"if","locations":[{"start":{"line":425,"column":4},"end":{"line":425,"column":4}},{"start":{"line":425,"column":4},"end":{"line":425,"column":4}}]},"20":{"line":452,"type":"if","locations":[{"start":{"line":452,"column":4},"end":{"line":452,"column":4}},{"start":{"line":452,"column":4},"end":{"line":452,"column":4}}]},"21":{"line":454,"type":"if","locations":[{"start":{"line":454,"column":6},"end":{"line":454,"column":6}},{"start":{"line":454,"column":6},"end":{"line":454,"column":6}}]},"22":{"line":454,"type":"binary-expr","locations":[{"start":{"line":454,"column":11},"end":{"line":454,"column":36}},{"start":{"line":454,"column":42},"end":{"line":454,"column":60}}]},"23":{"line":491,"type":"if","locations":[{"start":{"line":491,"column":2},"end":{"line":491,"column":2}},{"start":{"line":491,"column":2},"end":{"line":491,"column":2}}]},"24":{"line":497,"type":"binary-expr","locations":[{"start":{"line":497,"column":12},"end":{"line":497,"column":19}},{"start":{"line":497,"column":23},"end":{"line":497,"column":25}}]},"25":{"line":503,"type":"if","locations":[{"start":{"line":503,"column":2},"end":{"line":503,"column":2}},{"start":{"line":503,"column":2},"end":{"line":503,"column":2}}]},"26":{"line":503,"type":"binary-expr","locations":[{"start":{"line":503,"column":6},"end":{"line":503,"column":19}},{"start":{"line":503,"column":23},"end":{"line":503,"column":49}}]},"27":{"line":517,"type":"if","locations":[{"start":{"line":517,"column":2},"end":{"line":517,"column":2}},{"start":{"line":517,"column":2},"end":{"line":517,"column":2}}]},"28":{"line":537,"type":"if","locations":[{"start":{"line":537,"column":2},"end":{"line":537,"column":2}},{"start":{"line":537,"column":2},"end":{"line":537,"column":2}}]},"29":{"line":541,"type":"if","locations":[{"start":{"line":541,"column":2},"end":{"line":541,"column":2}},{"start":{"line":541,"column":2},"end":{"line":541,"column":2}}]},"30":{"line":546,"type":"binary-expr","locations":[{"start":{"line":546,"column":16},"end":{"line":546,"column":30}},{"start":{"line":546,"column":34},"end":{"line":546,"column":39}}]},"31":{"line":547,"type":"binary-expr","locations":[{"start":{"line":547,"column":16},"end":{"line":547,"column":32}},{"start":{"line":547,"column":36},"end":{"line":547,"column":65}},{"start":{"line":547,"column":70},"end":{"line":547,"column":101}}]},"32":{"line":548,"type":"binary-expr","locations":[{"start":{"line":548,"column":13},"end":{"line":548,"column":29}},{"start":{"line":548,"column":33},"end":{"line":548,"column":45}},{"start":{"line":548,"column":49},"end":{"line":548,"column":78}}]},"33":{"line":563,"type":"if","locations":[{"start":{"line":563,"column":2},"end":{"line":563,"column":2}},{"start":{"line":563,"column":2},"end":{"line":563,"column":2}}]},"34":{"line":563,"type":"binary-expr","locations":[{"start":{"line":563,"column":6},"end":{"line":563,"column":18}},{"start":{"line":563,"column":23},"end":{"line":563,"column":42}}]},"35":{"line":579,"type":"binary-expr","locations":[{"start":{"line":579,"column":10},"end":{"line":579,"column":23}},{"start":{"line":579,"column":27},"end":{"line":579,"column":46}}]},"36":{"line":582,"type":"binary-expr","locations":[{"start":{"line":582,"column":10},"end":{"line":582,"column":23}},{"start":{"line":582,"column":27},"end":{"line":582,"column":46}}]},"37":{"line":591,"type":"binary-expr","locations":[{"start":{"line":591,"column":12},"end":{"line":591,"column":19}},{"start":{"line":591,"column":23},"end":{"line":591,"column":25}}]},"38":{"line":594,"type":"binary-expr","locations":[{"start":{"line":594,"column":15},"end":{"line":594,"column":26}},{"start":{"line":594,"column":30},"end":{"line":594,"column":43}}]},"39":{"line":611,"type":"if","locations":[{"start":{"line":611,"column":2},"end":{"line":611,"column":2}},{"start":{"line":611,"column":2},"end":{"line":611,"column":2}}]},"40":{"line":615,"type":"binary-expr","locations":[{"start":{"line":615,"column":20},"end":{"line":615,"column":34}},{"start":{"line":615,"column":38},"end":{"line":615,"column":43}}]},"41":{"line":616,"type":"binary-expr","locations":[{"start":{"line":616,"column":21},"end":{"line":616,"column":37}},{"start":{"line":616,"column":41},"end":{"line":616,"column":49}}]},"42":{"line":617,"type":"binary-expr","locations":[{"start":{"line":617,"column":17},"end":{"line":617,"column":33}},{"start":{"line":617,"column":37},"end":{"line":617,"column":49}},{"start":{"line":617,"column":53},"end":{"line":617,"column":64}}]},"43":{"line":618,"type":"binary-expr","locations":[{"start":{"line":618,"column":17},"end":{"line":618,"column":29}},{"start":{"line":618,"column":33},"end":{"line":618,"column":36}}]},"44":{"line":619,"type":"binary-expr","locations":[{"start":{"line":619,"column":17},"end":{"line":619,"column":29}},{"start":{"line":619,"column":33},"end":{"line":619,"column":36}}]},"45":{"line":621,"type":"if","locations":[{"start":{"line":621,"column":2},"end":{"line":621,"column":2}},{"start":{"line":621,"column":2},"end":{"line":621,"column":2}}]},"46":{"line":628,"type":"if","locations":[{"start":{"line":628,"column":2},"end":{"line":628,"column":2}},{"start":{"line":628,"column":2},"end":{"line":628,"column":2}}]},"47":{"line":639,"type":"if","locations":[{"start":{"line":639,"column":2},"end":{"line":639,"column":2}},{"start":{"line":639,"column":2},"end":{"line":639,"column":2}}]},"48":{"line":645,"type":"if","locations":[{"start":{"line":645,"column":7},"end":{"line":645,"column":7}},{"start":{"line":645,"column":7},"end":{"line":645,"column":7}}]},"49":{"line":664,"type":"if","locations":[{"start":{"line":664,"column":6},"end":{"line":664,"column":6}},{"start":{"line":664,"column":6},"end":{"line":664,"column":6}}]},"50":{"line":674,"type":"if","locations":[{"start":{"line":674,"column":6},"end":{"line":674,"column":6}},{"start":{"line":674,"column":6},"end":{"line":674,"column":6}}]},"51":{"line":681,"type":"if","locations":[{"start":{"line":681,"column":6},"end":{"line":681,"column":6}},{"start":{"line":681,"column":6},"end":{"line":681,"column":6}}]},"52":{"line":682,"type":"if","locations":[{"start":{"line":682,"column":8},"end":{"line":682,"column":8}},{"start":{"line":682,"column":8},"end":{"line":682,"column":8}}]},"53":{"line":688,"type":"if","locations":[{"start":{"line":688,"column":8},"end":{"line":688,"column":8}},{"start":{"line":688,"column":8},"end":{"line":688,"column":8}}]},"54":{"line":701,"type":"if","locations":[{"start":{"line":701,"column":6},"end":{"line":701,"column":6}},{"start":{"line":701,"column":6},"end":{"line":701,"column":6}}]},"55":{"line":764,"type":"if","locations":[{"start":{"line":764,"column":2},"end":{"line":764,"column":2}},{"start":{"line":764,"column":2},"end":{"line":764,"column":2}}]},"56":{"line":774,"type":"binary-expr","locations":[{"start":{"line":774,"column":53},"end":{"line":774,"column":68}},{"start":{"line":774,"column":72},"end":{"line":774,"column":74}}]},"57":{"line":792,"type":"if","locations":[{"start":{"line":792,"column":2},"end":{"line":792,"column":2}},{"start":{"line":792,"column":2},"end":{"line":792,"column":2}}]},"58":{"line":802,"type":"if","locations":[{"start":{"line":802,"column":2},"end":{"line":802,"column":2}},{"start":{"line":802,"column":2},"end":{"line":802,"column":2}}]},"59":{"line":802,"type":"binary-expr","locations":[{"start":{"line":802,"column":6},"end":{"line":802,"column":18}},{"start":{"line":802,"column":23},"end":{"line":802,"column":42}}]},"60":{"line":811,"type":"if","locations":[{"start":{"line":811,"column":2},"end":{"line":811,"column":2}},{"start":{"line":811,"column":2},"end":{"line":811,"column":2}}]},"61":{"line":813,"type":"if","locations":[{"start":{"line":813,"column":9},"end":{"line":813,"column":9}},{"start":{"line":813,"column":9},"end":{"line":813,"column":9}}]},"62":{"line":819,"type":"if","locations":[{"start":{"line":819,"column":2},"end":{"line":819,"column":2}},{"start":{"line":819,"column":2},"end":{"line":819,"column":2}}]},"63":{"line":821,"type":"if","locations":[{"start":{"line":821,"column":9},"end":{"line":821,"column":9}},{"start":{"line":821,"column":9},"end":{"line":821,"column":9}}]},"64":{"line":827,"type":"if","locations":[{"start":{"line":827,"column":2},"end":{"line":827,"column":2}},{"start":{"line":827,"column":2},"end":{"line":827,"column":2}}]},"65":{"line":829,"type":"if","locations":[{"start":{"line":829,"column":9},"end":{"line":829,"column":9}},{"start":{"line":829,"column":9},"end":{"line":829,"column":9}}]},"66":{"line":836,"type":"if","locations":[{"start":{"line":836,"column":2},"end":{"line":836,"column":2}},{"start":{"line":836,"column":2},"end":{"line":836,"column":2}}]},"67":{"line":838,"type":"if","locations":[{"start":{"line":838,"column":9},"end":{"line":838,"column":9}},{"start":{"line":838,"column":9},"end":{"line":838,"column":9}}]},"68":{"line":851,"type":"if","locations":[{"start":{"line":851,"column":2},"end":{"line":851,"column":2}},{"start":{"line":851,"column":2},"end":{"line":851,"column":2}}]},"69":{"line":880,"type":"if","locations":[{"start":{"line":880,"column":2},"end":{"line":880,"column":2}},{"start":{"line":880,"column":2},"end":{"line":880,"column":2}}]},"70":{"line":880,"type":"binary-expr","locations":[{"start":{"line":880,"column":7},"end":{"line":880,"column":37}},{"start":{"line":880,"column":43},"end":{"line":880,"column":66}}]}}}} \ No newline at end of file diff --git a/coverage/lcov-report/index.html b/coverage/lcov-report/index.html index e3907aae..9d5d2a06 100644 --- a/coverage/lcov-report/index.html +++ b/coverage/lcov-report/index.html @@ -183,16 +183,16 @@

Code coverage report for All files

- Statements: 84.83% (1253 / 1477)      + Statements: 94.4% (1400 / 1483)      - Branches: 69.47% (405 / 583)      + Branches: 87.75% (523 / 596)      - Functions: 78.95% (165 / 209)      + Functions: 93.2% (192 / 206)      - Lines: 84.95% (1247 / 1468)      + Lines: 94.38% (1394 / 1477)     

@@ -216,15 +216,15 @@

lib/ - - 84.83% - (1253 / 1477) - 69.47% - (405 / 583) - 78.95% - (165 / 209) - 84.95% - (1247 / 1468) + + 94.4% + (1400 / 1483) + 87.75% + (523 / 596) + 93.2% + (192 / 206) + 94.38% + (1394 / 1477) @@ -232,7 +232,7 @@

diff --git a/coverage/lcov-report/lib/compressor.js.html b/coverage/lcov-report/lib/compressor.js.html index 2d83d2eb..7202b659 100644 --- a/coverage/lcov-report/lib/compressor.js.html +++ b/coverage/lcov-report/lib/compressor.js.html @@ -1095,46 +1095,46 @@

1   1 -14 -14 -14 -14 -14 +50 +50 +50 +50 +50         1 -1643 +3424       1 -47 -142 +88 +227         1 -47 +88         -47 -154 +88 +202   -98 +146             -47 -98 -98 +88 +146 +146       @@ -1162,26 +1162,26 @@

    1 -184 +278     -184 +278             -184 -54 -54 -139 +278 +87 +87 +173   -54 -4 -4 +87 +29 +29   -50 +58       @@ -1190,44 +1190,44 @@

      -130 -45 +191 +94   -85 +97     -130 -129 -88 +191 +190 +100   -41 +90   -129 -129 +190 +190     -130 +191           1 -42 -97 +81 +149           1 -64 +109   -64 -64 -6 -6 -2 +109 +109 +19 +19 +15       @@ -1235,14 +1235,14 @@

      -62 -62 -1213 +94 +94 +2413   +94 62 -36 -36 -20 +62 +46       @@ -1250,7 +1250,7 @@

      -42 +48       @@ -1260,16 +1260,16 @@

    1 -24 +28   -24 -42 -24 -24 +28 +46 +28 +28       -24 +28       @@ -1284,15 +1284,15 @@

    1 -129 -129 -129 -2713 -202 +190 +190 +190 +5011 +263   -2713 +5011   -129 +190 218 218   @@ -1306,13 +1306,13 @@

    1 -8 +26   -8 +26   -8 +26   -8 +26   1   @@ -1321,42 +1321,42 @@

    1 -25 +45       -25 +45         -25 -25 -96 +45 +45 +141         -25 +45       -25 -25 -96 -96 -96 +45 +45 +157 +157 +157 17 8   9     -79 +140     -25 -25 +45 +45       @@ -1367,13 +1367,13 @@

    1 -6 +24   -6 +24   -6 +24   -6 +24   1   @@ -1382,56 +1382,56 @@

    1 -22 -22 +43 +43       -22 -22 -70 -70 +43 +43 +135 +135 8 24     -62 +127           -22 -22 +43 +43     -22 -46 -24 -24 -24 +43 +70 +28 +28 +28         -22 -86 -64 -64 -64 +43 +151 +109 +109 +109         -22 -22 -88 +43 +43 +137     -22 +43   -22 -22 +43 +43       @@ -1452,31 +1452,31 @@

    1 -232 -232 -94 +345 +345 +143     -138 -138 +202 +202 2   -138 +202   -138 -138 -146 -146 +202 +202 +210 +210   -146 +210 8   -146 +210   -146 +210     -138 +202       @@ -1493,23 +1493,23 @@

    1 -250 +353   -250 -250 -106 +353 +353 +151     -250 -149 -149 -159 -159 -159 +353 +207 +207 +217 +217 +217       -250 +353       @@ -1523,16 +1523,16 @@

    1 -115 -115 -115 +153 +153 +153     1 -120 -120 -120 -120 +155 +155 +155 +155       @@ -1582,79 +1582,79 @@

    1 -96 +145   -96 -28 -68 +145 +45 +100 1 -67 -46 +99 +52   -21 +47     -96 -28 +145 +45     -68 -25 +100 +51   -43 -43 +49 +49     -68 -21 +100 +47     -68 +100     -96 +145   -96 +145     1 -104 +149   -104 -104 -30 -74 -52 +149 +149 +46 +103 +58 2   -50 +56     -22 +45     -104 -30 -30 +149 +46 +46     -74 -74 -44 +103 +103 +50     -74 -22 -52 -50 +103 +45 +58 +56   2     -74 +103     -104 +149       @@ -1683,31 +1683,31 @@

    1 -6 +24     1   -19 +87   -12 +33     -12 +33         -12 -14 -14 -12 +33 +35 +35 +33   2 2     -14 +35       @@ -1720,10 +1720,10 @@

      -7 +54     -19 +87       @@ -1733,18 +1733,18 @@

    1 -8 -8 -8 -8 -8 +26 +26 +26 +26 +26       1     -23 +84 3 1 1 @@ -1755,33 +1755,33 @@

      -20 -13 -13 -13 -13 +81 +33 +33 +33 +33         -7 +48           -22 -12 -14 +83 +32 +34   -12 -12 +32 +32           -12 +32       @@ -1789,10 +1789,10 @@

      -12 +32     -22 +83       @@ -1882,38 +1882,38 @@

    1 -34 -34 -330 +75 +75 +501     -34 -34 -330 +75 +75 +501     -34 +75       1 -12 -12 -12 -14 -14 -14 +33 +33 +33 +35 +35 +35   -12 +33       1 -14 -14 +35 +35     -14 +35    
// HTTP/2 compression is implemented by two [Transform Stream][1] subclasses that operate in
 // [object mode][2]: the Compressor and the Decompressor. These provide a layer between the
@@ -2778,7 +2778,7 @@ 

diff --git a/coverage/lcov-report/lib/connection.js.html b/coverage/lcov-report/lib/connection.js.html index 02942ce0..2b5a1418 100644 --- a/coverage/lcov-report/lib/connection.js.html +++ b/coverage/lcov-report/lib/connection.js.html @@ -727,22 +727,22 @@

  1   -25 +43     -25 +43     -25 +43     -25 +43     -25 +43     -25 +43       @@ -789,34 +789,34 @@

      -25 -25 +43 +43     -25 -25 +43 +43     -25 +43       -25 -25 -25 +43 +43 +43     1 -197 +438         1 -25 +40   -25 -25 +40 +40       @@ -830,10 +830,10 @@

    1 -43 -15 -15 -15 +116 +34 +34 +34       @@ -847,14 +847,14 @@

  1   +43 +22 22 -11 -11       -11 -11 +21 +21       @@ -865,33 +865,33 @@

      -22 +43     -22 -22 -22 +43 +43 +43   -22 +43       1 -22 -22 -22 -22 -22 +43 +43 +43 +43 +43       1 -43 -43 -43 -78 +64 +64 +64 +94   -43 +64       @@ -906,25 +906,25 @@

    1 -11 +21   -11 -11 -11 -11 +21 +21 +21 +21   -11 +21       1 -8 +17     -8 -8 +17 +17   -8 +17       @@ -933,75 +933,75 @@

    1 -189 +412     -189 -189 -197 -197 -197 -197 -27 +412 +412 +438 +438 +438 +438 +75         -27 -8 +75 +17     -27 -27 -3 -3 +75 +75 +5 +5     -27 -27 -27 +75 +75 +75       -27 -27 +75 +75     -27 +75   -27 +75           -189 +412         1 -52 +113     -52 +113     -52 -8 +113 +16       -52 -3 +113 +5     -52 +113     -52 +113   -52 +113       @@ -1014,13 +1014,13 @@

  1   -25 -25 +43 +43     -25 -20 -20 +43 +34 +34       @@ -1028,19 +1028,19 @@

      -25 +43       1 -20 -38 +34 +52         1 -25 +43       @@ -1058,9 +1058,9 @@

    1 -25 -25 -25 +43 +43 +43       @@ -1118,19 +1118,19 @@

    1 -1 -1 +3 +3           -1 +3     1 -1 -1 +2 +2       @@ -1138,13 +1138,13 @@

  1   -25 -25 -22 +43 +43 +43   -25 -25 -25 +43 +43 +43       @@ -1158,14 +1158,14 @@

    1 -25 +39 1 1   -24 -24 -24 -30 +38 +38 +38 +51       @@ -1173,9 +1173,9 @@

    1 -8 -6 -6 +22 +20 +20 2 1 1 @@ -1677,7 +1677,7 @@

diff --git a/coverage/lcov-report/lib/endpoint.js.html b/coverage/lcov-report/lib/endpoint.js.html index c9b11b35..23126304 100644 --- a/coverage/lcov-report/lib/endpoint.js.html +++ b/coverage/lcov-report/lib/endpoint.js.html @@ -183,16 +183,16 @@

Code coverage report for lib/endpoint.js

- Statements: 86.75% (72 / 83)      + Statements: 100% (83 / 83)      - Branches: 68.75% (11 / 16)      + Branches: 88.89% (16 / 18)      - Functions: 76.92% (10 / 13)      + Functions: 92.86% (13 / 14)      - Lines: 86.75% (72 / 83)      + Lines: 100% (83 / 83)     

All files » lib/ » endpoint.js
@@ -395,7 +395,10 @@

194 195 196 -1971 +197 +1981 +  +1 1 1 1 @@ -409,31 +412,30 @@

    1 -4 +22     -4 +22       -4 -2 -2 -2 +22 +22 +11   -  +11           -4 +22     -4 +22     -4 +22   1   @@ -444,37 +446,37 @@

    1 -2 -2 +11 +11       1   -2 +11     -2 +11     -2 -2 -48 -  +10 +10 +217 +1   -  -  +1 +1   -48 +216         -2 -2 -2 -2 -2 +9 +9 +9 +9 +9       @@ -513,69 +515,69 @@

    1 -4 -4 -2 -2 -2 +22 +22 +11 +11 +11   -2 -2 -2 +11 +11 +11     -4 -4 -4 -4 -4 +22 +22 +22 +22 +22   -4 -4 +22 +22   -4 +22     1 -31 -31 -18 +256 +256 +156       1 -10 +46           1 -4 +22     1 -1 +10           1 -4 -4 -4 -4 -4 +22 +22 +22 +22 +22     1 -  -  +1 +1     1 -  +2       @@ -585,13 +587,15 @@

  1 1 -  -  -  +6 +2 +2   -  +6   - 
var Serializer   = require('./framer').Serializer;
+ 
var assert = process.env.HTTP2_ASSERT ? require('assert') : function noop() {};
+ 
+var Serializer   = require('./framer').Serializer;
 var Deserializer = require('./framer').Deserializer;
 var Compressor   = require('./compressor').Compressor;
 var Decompressor = require('./compressor').Decompressor;
@@ -612,12 +616,11 @@ 

  // * First part of the handshake process: sending and receiving the client connection header // prelude. + assert((role === 'CLIENT') || role === 'SERVER'); if (role === 'CLIENT') { this._writePrelude(); - } else Eif (role === 'SERVER') { - this._readPrelude(); } else { - throw new Error('Invalid role: ' + role); + this._readPrelude(); }   // * Initialization of componenet. This includes the second part of the handshake process: @@ -655,11 +658,11 @@

// 'error' event if there's a byte that doesn't match var offset = cursor; while(cursor < CLIENT_PRELUDE.length && (cursor - offset) < chunk.length) { - Iif (CLIENT_PRELUDE[cursor] !== chunk[cursor - offset]) { - this._log.fatal({ cursor: cursor, offset: offset, chunk: chunk }, + if (CLIENT_PRELUDE[cursor] !== chunk[cursor - offset]) { + this._log.fatal({ cursor: cursor, offset: offset, chunk: chunk }, 'Client connection header prelude does not match.'); - this._error('handshake', 'Client connection header prelude does not match.'); - return; + this._error('handshake', 'PROTOCOL_ERROR'); + return; } cursor += 1; } @@ -765,13 +768,13 @@

this._connection.on('error', this._error.bind(this, 'connection')); };   -Endpoint.prototype._error = function _error(component, error) { - this._log.fatal({ component: component, message: error }, 'Fatal error, closing connection'); - this.close(error); +Endpoint.prototype._error = function _error(component, error) { + this._log.fatal({ component: component, message: error }, 'Fatal error, closing connection'); + this.close(error); };   -Endpoint.prototype.close = function close(error) { - this._connection.close(error); +Endpoint.prototype.close = function close(error) { + this._connection.close(error); };   // Bunyan serializers @@ -780,19 +783,19 @@

exports.serializers = {};   var nextId = 0; -exports.serializers.e = function(endpoint) { - if (!('id' in endpoint)) { - endpoint.id = nextId; - nextId += 1; +exports.serializers.e = function(endpoint) { + if (!('id' in endpoint)) { + endpoint.id = nextId; + nextId += 1; } - return endpoint.id; + return endpoint.id; };  

diff --git a/coverage/lcov-report/lib/flow.js.html b/coverage/lcov-report/lib/flow.js.html index 03070a46..a821eb49 100644 --- a/coverage/lcov-report/lib/flow.js.html +++ b/coverage/lcov-report/lib/flow.js.html @@ -179,20 +179,20 @@ -
+

Code coverage report for lib/flow.js

- Statements: 72.64% (77 / 106)      + Statements: 100% (105 / 105)      - Branches: 67.74% (42 / 62)      + Branches: 98.53% (67 / 68)      - Functions: 58.82% (10 / 17)      + Functions: 93.75% (15 / 16)      - Lines: 72.64% (77 / 106)      + Lines: 100% (105 / 105)     

All files » lib/ » flow.js
@@ -609,15 +609,15 @@

    1 -68 +162   -68 -68 -68 +162 +162 +162   -68 -68 -68 +162 +162 +162   1   @@ -626,7 +626,7 @@

    1 -  +1       @@ -634,51 +634,51 @@

    1 -105 +308   -105 -19 +308 +59     -105 -  -  -  -  +308 +100 +100 +100 +7   -  +100         -105 +208     -105 +308   -3 +6           1 -  -  -  +7 +7 +6         -  +6           1 -  -  +1 +1       @@ -707,35 +707,34 @@

    1 -  -  +1           1 -524 -524   -  -  +1244 +1143   -524       +101 +7 +7 +7 +7 +8     -1 -34 +7   -34 -34 -      -34 +  +1244       @@ -749,76 +748,77 @@

1   1 -111 -111 -111 +264 +357 +357 +  +257   -111   +100 +7   -  -      +93 +93   -  -            -  +93   -  -  +93 +93     -111 -111 -111 -111 -19 +357 +357 +350 +350 +140   -19 -19 +140 +140   -111 +350     -111 +357     -111 -  +264 +7     -111 +264       1 -84 -2 +182 +6   -82 -82 -82 +176 +176 +176     -84 -84 +182 +181   -  -  +1 +1           1 -12 -12 +34 +34       @@ -835,17 +835,17 @@

1   1 -37 -3 -3 +90 +1 +1   -34 -34 -34 -  -  +89 +89 +89 +1 +1   -34 +88       @@ -859,7 +859,7 @@

    1 -3 +6       @@ -867,13 +867,13 @@

    1 -28 -28 +56 +56       1 -  +1    
var assert = process.env.HTTP2_ASSERT ? require('assert') : function noop() {};
  
@@ -963,8 +963,8 @@ 

// ---------------   // `_receive` is called when there's an incoming frame. -Flow.prototype._receive = function _receive(frame, callback) { - throw new Error('The _receive(frame, callback) method has to be overridden by the child class!'); +Flow.prototype._receive = function _receive(frame, callback) { + throw new Error('The _receive(frame, callback) method has to be overridden by the child class!'); };   // `_receive` is called by `_write` which in turn is [called by Duplex][1] when someone `write()`s @@ -978,13 +978,13 @@

this._ended = true; }   - Iif ((frame.type === 'DATA') && (frame.data.length > 0) && !this._remoteFlowControlDisabled) { - this._receive(frame, function() { - this._received += frame.data.length; - if (!this._restoreWindowTimer) { - this._restoreWindowTimer = setImmediate(this._restoreWindow.bind(this)); + if ((frame.type === 'DATA') && (frame.data.length > 0) && !this._remoteFlowControlDisabled) { + this._receive(frame, function() { + this._received += frame.data.length; + if (!this._restoreWindowTimer) { + this._restoreWindowTimer = setImmediate(this._restoreWindow.bind(this)); } - callback(); + callback(); }.bind(this)); }   @@ -993,30 +993,30 @@

}   if ((frame.type === 'WINDOW_UPDATE') && - ((this._flowControlId === undefined) || (frame.stream === this._flowControlId))) { + ((this._flowControlId === undefined) || (frame.stream === this._flowControlId))) { this._updateWindow(frame); } };   // `_restoreWindow` basically acknowledges the DATA frames received since it's last call. It sends // a WINDOW_UPDATE that restores the flow control window of the remote end. -Flow.prototype._restoreWindow = function _restoreWindow() { - delete this._restoreWindowTimer; - if (!this._ended && !this._remoteFlowControlDisabled && (this._received > 0)) { - this.push({ +Flow.prototype._restoreWindow = function _restoreWindow() { + delete this._restoreWindowTimer; + if (!this._ended && !this._remoteFlowControlDisabled && (this._received > 0)) { + this.push({ type: 'WINDOW_UPDATE', stream: this._flowControlId, window_size: this._received }); - this._received = 0; + this._received = 0; } };   // Remote flow control is currently disabled by default, but in the future, it may be turned off // using the `disableRemoteFlowControl` method. -Flow.prototype.disableRemoteFlowControl = function disableRemoteFlowControl() { - this._remoteFlowControlDisabled = true; - this.push({ +Flow.prototype.disableRemoteFlowControl = function disableRemoteFlowControl() { + this._remoteFlowControlDisabled = true; + this.push({ type: 'WINDOW_UPDATE', stream: this._flowControlId, flags: { @@ -1029,51 +1029,50 @@

// -----------------------------------   // flow -// +----------------------------------------------------+ -// | | -// +--------+ _onWindow +---------+ | -// read() | output | Increase() | flow | _send() | -// <----------| |<-------------| control |<------------- | -// | buffer | | buffer | | -// +--------+ +---------+ | -// | input | | -// ---------->| |--------------------------------------> | -// write() | buffer | _write() _receive() | -// +--------+ | -// | | -// +----------------------------------------------------+ +// +-------------------------------------------------+ +// | | +// +--------+ +---------+ | +// read() | output | _read() | flow | _send() | +// <----------| |<----------| control |<------------- | +// | buffer | | buffer | | +// +--------+ +---------+ | +// | input | | +// ---------->| |-----------------------------------> | +// write() | buffer | _write() _receive() | +// +--------+ | +// | | +// +-------------------------------------------------+   // `_send` is called when more frames should be pushed to the output buffer. -Flow.prototype._send = function _send() { - throw new Error('The _send() method has to be overridden by the child class!'); +Flow.prototype._send = function _send() { + throw new Error('The _send() method has to be overridden by the child class!'); };   // `_send` is called by `_read` which is in turn [called by Duplex][1] when it wants to have more -// items in the output queue. It first check the flow control `_queue` and only calls `_send` if -// there are no items in it (which means that we are not waiting for window update). +// items in the output queue. // [1]: http://nodejs.org/api/stream.html#stream_writable_write_chunk_encoding_callback_1 Flow.prototype._read = function _read() { - Eif (this._queue.length === 0) { + // * if the flow control queue is empty, then let the user push more frames + if (this._queue.length === 0) { this._send(); - } else { - assert(this._window === 0); - assert(this._queue[0].type === 'DATA'); } - this._readableState.reading = false; -};   -// `_onWindowIncrease` is called when window size increases which means that the peer is ready to -// receive more data. Flushes frames stored in the flow control queue and then triggers a further -// `_read` call if the output buffers are still low on frames. -Flow.prototype._onWindowIncrease = function _onWindowIncrease() { - var moreNeeded = true, frame; + // * if there are items in the flow control queue, then let's put them into the output queue (to + // the extent it is possible with respect to the window size and output queue feedback) + else if (this._window > 0) { + var frame; + var moreNeeded = true; + var unshiftRemainder = this._queue.unshift.bind(this._queue); + while (moreNeeded && (frame = this._queue.shift())) { + moreNeeded = this._push(frame, unshiftRemainder); + }   - var unshiftRemainder = this._queue.unshift.bind(this._queue); - while (moreNeeded && (frame = this._queue.shift())) { - moreNeeded = this._push(frame, unshiftRemainder); + assert((moreNeeded == false) || // output queue is full + (this._queue.length === 0) || // flow control queue is empty + ((this._window === 0) && (this._queue[0].type === 'DATA'))); // waiting for window update }   - this.read(0); // See http://nodejs.org/api/stream.html#stream_stream_read_0 + this._readableState.reading = false; };   // `_push(frame)` is the low-level version of `push`. Use this instead of `push` if you always want @@ -1089,31 +1088,32 @@

Flow.prototype._push = function _push(frame, remainderCallback) { do { var forwardable = undefined, remainder = undefined; - Eif ((frame === null) || (frame.type !== 'DATA') || + if ((frame === null) || (frame.type !== 'DATA') || ((frame.data.length <= this._window) && (frame.data.length <= MAX_PAYLOAD_SIZE))) { forwardable = frame; }   - else if (this._window <= 0) { - remainder = frame; + else if (this._window <= 0) { + remainder = frame; }   else { - var chunkSize = Math.min(this._window, MAX_PAYLOAD_SIZE); - forwardable = { + var chunkSize = Math.min(this._window, MAX_PAYLOAD_SIZE); + forwardable = { stream: frame.stream, type: 'DATA', + flags: {}, data: frame.data.slice(0, chunkSize) };   - this._log.trace({ frame: frame, size: frame.data.length, forwardable: chunkSize }, + this._log.trace({ frame: frame, size: frame.data.length, forwardable: chunkSize }, 'Splitting out forwardable part of a DATA frame.'); - frame.data = frame.data.slice(chunkSize); - remainder = frame; + frame.data = frame.data.slice(chunkSize); + remainder = frame; }   var moreNeeded = null; - Eif (forwardable !== undefined) { + if (forwardable !== undefined) { this._log.trace({ frame: forwardable }, 'Pushing frame into the output queue'); if (forwardable && (forwardable.type === 'DATA') && (this._window !== Infinity)) { this._log.trace({ window: this._window, by: forwardable.data.length }, @@ -1125,10 +1125,10 @@

}   frame = remainder; - } while (remainder && moreNeeded); + } while (remainder && moreNeeded);   - Iif (remainder !== undefined) { - remainderCallback(remainder); + if (remainder !== undefined) { + remainderCallback(remainder); }   return moreNeeded; @@ -1144,11 +1144,11 @@

this.emit('sending', frame); }   - Eif (this._queue.length === 0) { + if (this._queue.length === 0) { return this._push(frame, this._queue.push.bind(this._queue)); } else { - this._queue.push(frame); - return null; + this._queue.push(frame); + return null; } };   @@ -1179,11 +1179,11 @@

} else { this._log.trace({ window: this._window, by: size }, 'Increasing flow control window size.'); this._window += size; - Iif ((this._window !== Infinity) && (this._window > WINDOW_SIZE_LIMIT)) { - this._log.error('Flow control window grew too large.'); - this.emit('error', 'FLOW_CONTROL_ERROR'); + if ((this._window !== Infinity) && (this._window > WINDOW_SIZE_LIMIT)) { + this._log.error('Flow control window grew too large.'); + this.emit('error', 'FLOW_CONTROL_ERROR'); } else { - this._onWindowIncrease(); + this.read(0); } } }; @@ -1197,7 +1197,7 @@

// * A sender that receives a WINDOW_UPDATE frame updates the corresponding window by the amount // specified in the frame. Flow.prototype._updateWindow = function _updateWindow(frame) { - this._increaseWindow(frame.flags.END_FLOW_CONTROL ? Infinity : frame.window_size); + this._increaseWindow(frame.flags.END_FLOW_CONTROL ? Infinity : frame.window_size); };   // A SETTINGS frame can alter the initial flow control window size for all current streams. When the @@ -1210,15 +1210,15 @@

};   // Flow control for outgoing frames can be disabled by the peer with various methods. -Flow.prototype.disableLocalFlowControl = function disableLocalFlowControl() { - this._increaseWindow(Infinity); +Flow.prototype.disableLocalFlowControl = function disableLocalFlowControl() { + this._increaseWindow(Infinity); };  

diff --git a/coverage/lcov-report/lib/framer.js.html b/coverage/lcov-report/lib/framer.js.html index 50f39482..08aa9848 100644 --- a/coverage/lcov-report/lib/framer.js.html +++ b/coverage/lcov-report/lib/framer.js.html @@ -183,16 +183,16 @@

Code coverage report for lib/framer.js

- Statements: 87.55% (204 / 233)      + Statements: 93.99% (219 / 233)      - Branches: 68.57% (48 / 70)      + Branches: 82.86% (58 / 70)      - Functions: 83.87% (26 / 31)      + Functions: 90.32% (28 / 31)      - Lines: 87.55% (204 / 233)      + Lines: 93.99% (219 / 233)     

All files » lib/ » framer.js
@@ -926,8 +926,8 @@

    1 -5 -5 +23 +23   1   @@ -935,22 +935,22 @@

    1 -19 +87   -19 +87   -19 -19 -19 +87 +87 +87   -19 -40 +87 +178     -40 +178     -19 +87       @@ -965,9 +965,9 @@

    1 -5 -5 -5 +23 +23 +23   1   @@ -977,39 +977,39 @@

    1 -43 -43 -43 -43 -24 +183 +183 +183 +183 +103           1 -30 +61   -30 +61       -30 +61     -50 -50 -50 -50 +148 +148 +148 +148             -50 -19 -19 +148 +80 +80       @@ -1017,24 +1017,24 @@

      -50 -19 -19 -19 +148 +80 +80 +80       -19 -19 +80 +80         -19 +80       -30 +61       @@ -1094,47 +1094,47 @@

1   1 -29 +97   -29 -29 -31 +97 +97 +101   -29 -29 +97 +97   -29 -29 +97 +97   -29 -29 -30 -30 -30 -6 +97 +97 +70 +70 +70 +46     -29 +97   -29 -29 +97 +97   -29 +97     1 -29 +90   -29 +90   -29 -29 -29 -29 -40 +90 +90 +90 +90 +166     -29 +90       @@ -1168,11 +1168,11 @@

1   1 -5 +32     1 -5 +31       @@ -1211,21 +1211,21 @@

    1 -6 +25 2 2 2 2   -6 +25     1 -6 +24 2 2   -4 +22       @@ -1327,39 +1327,39 @@

    1 -6 -6 -18 -12 -12 -12 +24 +24 +72 +32 +32 +32     -6 +24   -6 -6 -12 -12 +24 +24 +32 +32     -6 +24     1 -6 +20   -6 +20     -6 -12 -12 -12 -12 +20 +26 +26 +26 +26     -12 +26       @@ -1411,16 +1411,16 @@

    1 -2 -2 -2 -2 -2 +4 +4 +4 +4 +4     1 -2 -2 +4 +4       @@ -1483,21 +1483,21 @@

    1 -2 +4   -2 -2 +4 +4   -2 -2 -2 +4 +4 +4   -2 +4     1 -2 -2 +3 +3       @@ -1560,43 +1560,43 @@

  1 1 -  +6       -  -  +6 +4     -  -  +2 +2   -  -  -  +2 +2 +10     -  -  +2 +1     -  +1     -  +1         -  +2       -  +2       -  +2       @@ -2261,44 +2261,44 @@

// * `frame` serializer: it transforms data attributes from Buffers to hex strings and filters out // flags that are not present. var frameCounter = 0; -exports.serializers.frame = function(frame) { - if (!frame) { +exports.serializers.frame = function(frame) { + Iif (!frame) { return null; }   - if ('id' in frame) { - return frame.id; + if ('id' in frame) { + return frame.id; }   - frame.id = frameCounter; - frameCounter += 1; + frame.id = frameCounter; + frameCounter += 1;   - var logEntry = { id: frame.id }; - genericAttributes.concat(typeSpecificAttributes[frame.type]).forEach(function(name) { - logEntry[name] = frame[name]; + var logEntry = { id: frame.id }; + genericAttributes.concat(typeSpecificAttributes[frame.type]).forEach(function(name) { + logEntry[name] = frame[name]; });   - if (frame.data instanceof Buffer) { - if (logEntry.data.length > 50) { + if (frame.data instanceof Buffer) { + Iif (logEntry.data.length > 50) { logEntry.data = frame.data.slice(0, 47).toString('hex') + '...'; } else { - logEntry.data = frame.data.toString('hex'); + logEntry.data = frame.data.toString('hex'); }   - if (!('length' in logEntry)) { + Iif (!('length' in logEntry)) { logEntry.length = frame.data.length; } }   - if (frame.promised_stream instanceof Object) { + Iif (frame.promised_stream instanceof Object) { logEntry.promised_stream = 'stream-' + frame.promised_stream.id; }   - logEntry.flags = Object.keys(frame.flags || {}).filter(function(name) { + logEntry.flags = Object.keys(frame.flags || {}).filter(function(name) { return frame.flags[name] === true; });   - return logEntry; + return logEntry; };   // * `data` serializer: it simply transforms a buffer to a hex string. @@ -2310,7 +2310,7 @@

diff --git a/coverage/lcov-report/lib/http.js.html b/coverage/lcov-report/lib/http.js.html index 4c6c2fc4..21b34da3 100644 --- a/coverage/lcov-report/lib/http.js.html +++ b/coverage/lcov-report/lib/http.js.html @@ -179,20 +179,20 @@ -
+

Code coverage report for lib/http.js

- Statements: 71.77% (272 / 379)      + Statements: 91.73% (355 / 387)      - Branches: 41.43% (58 / 140)      + Branches: 81.94% (118 / 144)      - Functions: 59.02% (36 / 61)      + Functions: 93.1% (54 / 58)      - Lines: 71.77% (272 / 379)      + Lines: 91.73% (355 / 387)     

All files » lib/ » http.js
@@ -1084,7 +1084,64 @@

883 884 885 -886  +886 +887 +888 +889 +890 +891 +892 +893 +894 +895 +896 +897 +898 +899 +900 +901 +902 +903 +904 +905 +906 +907 +908 +909 +910 +911 +912 +913 +914 +915 +916 +917 +918 +919 +920 +921 +922 +923 +924  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +        @@ -1225,7 +1282,7 @@

      -10 +3       @@ -1240,20 +1297,20 @@

  1   -2 -2 -2 +23 +23 +23   -2 +23       -2 -2 -2 +23 +23 +23     -2 +23   1   @@ -1264,49 +1321,49 @@

  1   -2 +25   -2 -2 +25 +25   -2 +25   1   1 -1 -1 +12 +11   -  +1       1 -3 -2 +28 +21   -1 +7       1 -  +2     -  +2       1 -  +1     -  +1       1 -  +3     1 @@ -1324,69 +1381,69 @@

    1 -1 +12   -1 -1 +12 +12   -1 -1 +12 +12     -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 +12 +9 +9 +9 +9 +9 +9 +9 +8 +8         -1 +9       -  -  -  -  +3 +1 +1 +1         -  -  +2 +2     -1 +10   1     1 -1 +9   -1 +9     -1 +9   -1 -1 -1 -1 +9 +9 +9 +9   -1 +9     -1 +9   -1 +9     1 @@ -1404,33 +1461,33 @@

    1 -1 +8   -1 +8     1 -  -  +4 +4     1 -  -  +1 +1       1   -  -  +1 +1           -  -  +1 +1       @@ -1440,33 +1497,33 @@

    1 -1 +8     -1 +8       1 +9 +1 1 -  -      -1 +9   -1 -1 +8 +8     -1 +8           1 -1 +11   1   @@ -1478,7 +1535,7 @@

      -1 +11       @@ -1487,9 +1544,9 @@

      -1 -7 -7 +11 +77 +77       @@ -1497,7 +1554,7 @@

      -1 +11       @@ -1509,133 +1566,128 @@

      -1 +11           -1 -4 -4 -4 +11 +45 +44 +44         -4 +44   -  +1         -1 +11     -1 +11   -1 +11           1 -1 +11   -1 +11   -1 -1 -1 +11 +11 +11   -1 +11   1   1 +11 1 -    -1 +10     -1 +11   +11 1 -      -1 -1 +11 +10     -1 +11   -1 +11   -1 +11   -1 +11     1 -2 -1 +21 +10       1 -1 -1 +10 +10     1 -1 -1 +11 +11     1 -1 +9     1 -  -  -  -  -  -  -  +2 +1     -  +2       -  +2             -  +2     -  +2   -  +2         1 -1 +11     -1 +11       @@ -1648,137 +1700,162 @@

1 1 1 -  +3   1 -1 +7           1 -1 +4   -1 +4   -1 -1 -1 +4 +4 +4           -1 +4       -1 -1 +4 +4   1   1 -1 -1 +11 +7     -1 -1 -1 -1 -1 +11 +11 +11 +11 +11   +11 +1 1 -  -      -1 +10   -1 -1 +10 +7     -1 +10     -1 -  -          +10 1 1 +  +  +  +9 1 1   +  +  +  1 1 +  +  +  +  +8 +8 +8 +8 +  +8 +8     -1 +8       +8 1 -1 -1 -1 -1 -1 -1 -1 +8 +8 +8 +8 +8 +8 +8   -1 -1 +8 1 1         +7 +7   +7 +7   -1 -1 -1 -1 +  +  +  +  +  +8 +8 +8 +8             -1 +10     1 -1 -1 -1 +7 +7 +7     1 -1 -1 -1 -1 -1 -1 -1 -1 +8 +8 +8 +8 +8 +8 +8 +8     1   -  +1     -  +1       @@ -1788,52 +1865,51 @@

    1 -1 +14   -1 +14   -1 -1 +14 +14   1   1 -1 +10   -1 +10   +10 +10 1 -1 -    -1 +10   -1 +10       -1 -1 -1 -1 +10 +10 +10 +10   -1 +10   -1 +10   -1 +10   -1 -1 +10 +10   -1 +10     1 -  -  -  -  +4 +4 +4     1 @@ -1847,57 +1923,57 @@

    1 -3 +37     -3 +37         1 -  -  -  -  +3 +1 +2 +1       1 -  -  -  -  +3 +1 +2 +1       1 -  -  -  -  +3 +1 +2 +1         1 -  -  -  -  +3 +1 +2 +1   -  +1         1 -  +2   -  +2   -  -  +2 +2       @@ -1907,7 +1983,7 @@

    1 -1 +12   1   @@ -1916,7 +1992,7 @@

      -1 +11       @@ -1924,39 +2000,39 @@

      -1 -1 +11 +11         -1 -1 +11 +11     -1 -1 +11 +11           1 -  -  -  -  +2 +2 +2 +2   -  +2   -  +2   -  +2   -  -  +2 +2   -  +2   1   @@ -1981,58 +2057,45 @@

// Additional and modified API elements: // // - **Class: http2.Server** -// - **Event: 'upgrade'**: upgrade is deprecated in HTTP/2 so it will never be emitted for HTTP/2 -// requests. // - **Event: 'connection' (socket, [endpoint])**: there's a second argument if the negotiation of // HTTP/2 was successful: the reference to the [Endpoint](endpoint.html) object tied to the // socket. -// - **Event: 'timeout'**: only emitted for HTTP/1 responses. -// - **server.setTimeout(msecs, callback)**: only affects HTTP/1 connections. -// - **server.timeout**: only affects HTTP/1 connections. // // - **http2.createServer(options, [requestListener])**: additional option: // - **log**: an optional [bunyan](https://github.com/trentm/node-bunyan) logger object +// - **plain**: if `true`, the server will accept HTTP/2 connections over plain TCP instead of +// TLS // // - **Class: http2.ServerResponse** -// - **Event: 'close'**: only emitted for HTTP/1 responses. -// - **Event: 'timeout'**: only emitted for HTTP/1 responses. // - **response.push(options)**: initiates a server push. `options` describes the 'imaginary' // request to which the push stream is a response; the possible options are identical to the // ones accepted by `http2.request`. Returns a ServerResponse object that can be used to send // the response headers and content. -// - **response.writeHead(statusCode, [reasonPhrase], [headers])**: reasonPhrase will always be -// ignored since [it's not supported in HTTP/2][3] -// - **response.setTimeout(timeout, [callback])**: will be ignored for HTTP/2 requests // // - **Class: http2.Agent** // - **new Agent(options)**: additional option: // - **log**: an optional [bunyan](https://github.com/trentm/node-bunyan) logger object -// - **agent.maxSockets**: only affects HTTP/1 connection pool. For HTTP/2, there's always one -// connection per host. // - **agent.sockets**: only contains TCP sockets that corresponds to HTTP/1 requests. // - **agent.endpoints**: contains [Endpoint](endpoint.html) objects for HTTP/2 connections. // +// - **http2.request(options, [callback])**: additional option: +// - **plain**: if `true`, the client will not try to build a TLS tunnel, instead it will use +// the raw TCP stream for HTTP/2 +// // - **Class: http2.ClientRequest** -// - **Event: 'upgrade'**: upgrade is deprecated in HTTP/2 so it will never be emitted for HTTP/2 -// requests. // - **Event: 'socket' (socket)**: in case of an HTTP/2 incoming message, `socket` is a reference // to the associated [HTTP/2 Stream](stream.html) object (and not to the TCP socket). // - **Event: 'push' (promise)**: signals the intention of a server push associated to this // request. `promise` is an IncomingPromise. If there's no listener for this event, the server // push is cancelled. -// - **request.setTimeout(timeout, [callback])**: will be ignored for HTTP/2 requests -// - **request.setNoDelay([noDelay])**: will be ignored for HTTP/2 requests -// - **request.setSocketKeepAlive([enable], [initialDelay])**: will be ignored for HTTP/2 requests // - **request.setPriority(priority)**: assign a priority to this request. `priority` is a number // between 0 (highest priority) and 2^31-1 (lowest priority). Default value is 2^30. // // - **Class: http2.IncomingMessage** // - has two subclasses for easier interface description: **IncomingRequest** and // **IncomingResponse** -// - **Event: 'close'**: only emitted for HTTP/1 messages. // - **message.socket**: in case of an HTTP/2 incoming message, it's a reference to the associated // [HTTP/2 Stream](stream.html) object (and not to the TCP socket). -// - **message.setTimeout(timeout, [callback])**: will be ignored for HTTP/2 requests // // - **Class: http2.IncomingRequest (IncomingMessage)** // - **message.url**: in case of an HTTP/2 incoming request, the `url` field always contains the @@ -2057,7 +2120,6 @@

// // - **Class: http2.Server** // - **Event: 'checkContinue'** -// - **Event: 'connect'** // - **server.maxHeadersCount** // // - **Class: http2.ServerResponse** @@ -2065,12 +2127,45 @@

// - **response.addTrailers(headers)** // // - **Class: http2.ClientRequest** -// - **Event: 'connect'** // - **Event: 'continue'** // // - **Class: http2.IncomingMessage** // - **message.trailers** // +// API elements that are not applicable to HTTP/2 (deprecated functionality, or for other reason). +// These will not be present when a request is done with HTTP/2, but will function normally when +// falling back to using HTTP/1.1 +// +// - **Class: http2.Server** +// - **Event: 'upgrade'**: upgrade is deprecated in HTTP/2 +// - **Event: 'timeout'**: HTTP/2 sockets won't timeout because of application level keepalive +// (PING frames) +// - **Event: 'connect'**: CONNECT method is not supported in current draft of HTTP/2 +// - **server.setTimeout(msecs, callback)** +// - **server.timeout** +// +// - **Class: http2.ServerResponse** +// - **Event: 'close'** +// - **Event: 'timeout'** +// - **response.writeHead(statusCode, [reasonPhrase], [headers])**: reasonPhrase will always be +// ignored since [it's not supported in HTTP/2][3] +// - **response.setTimeout(timeout, [callback])** +// +// - **Class: http2.Agent** +// - **agent.maxSockets**: only affects HTTP/1 connection pool. When using HTTP/2, there's always +// one connection per host. +// +// - **Class: http2.ClientRequest** +// - **Event: 'upgrade'** +// - **Event: 'connect'** +// - **request.setTimeout(timeout, [callback])** +// - **request.setNoDelay([noDelay])** +// - **request.setSocketKeepAlive([enable], [initialDelay])** +// +// - **Class: http2.IncomingMessage** +// - **Event: 'close'** +// - **message.setTimeout(timeout, [callback])** +// // [1]: http://nodejs.org/api/https.html // [2]: http://nodejs.org/api/http.html // [3]: http://tools.ietf.org/html/draft-ietf-httpbis-http2-04#section-8.1.3 @@ -2142,7 +2237,7 @@

} IncomingMessage.prototype = Object.create(PassThrough.prototype, { constructor: { value: IncomingMessage } });   -IncomingMessage.prototype.setTimeout = function noop() {}; +IncomingMessage.prototype.setTimeout = noop;   // OutgoingMessage class // --------------------- @@ -2159,10 +2254,10 @@

OutgoingMessage.prototype = Object.create(Writable.prototype, { constructor: { value: OutgoingMessage } });   OutgoingMessage.prototype._write = function _write(chunk, encoding, callback) { - Eif (this.stream) { + if (this.stream) { this.stream.write(chunk, encoding, callback); } else { - this.once('socket', this._write.bind(this, chunk, encoding, callback)); + this.once('socket', this._write.bind(this, chunk, encoding, callback)); } };   @@ -2174,27 +2269,27 @@

} };   -OutgoingMessage.prototype.setHeader = function setHeader(name, value) { - if (this.headersSent) { +OutgoingMessage.prototype.setHeader = function setHeader(name, value) { + Iif (this.headersSent) { throw new Error('Can\'t set headers after they are sent.'); } else { - this._headers[name.toLowerCase()] = value; + this._headers[name.toLowerCase()] = value; } };   -OutgoingMessage.prototype.removeHeader = function removeHeader(name) { - if (this.headersSent) { +OutgoingMessage.prototype.removeHeader = function removeHeader(name) { + Iif (this.headersSent) { throw new Error('Can\'t remove headers after they are sent.'); } else { - delete this._headers[name.toLowerCase()]; + delete this._headers[name.toLowerCase()]; } };   -OutgoingMessage.prototype.getHeader = function getHeader(name) { - return this._headers[name.toLowerCase()]; +OutgoingMessage.prototype.getHeader = function getHeader(name) { + return this._headers[name.toLowerCase()]; };   -IncomingMessage.prototype.setTimeout = function noop() {}; +OutgoingMessage.prototype.setTimeout = noop;   // Server side // =========== @@ -2209,16 +2304,16 @@

// ------------   function Server(options) { - options = options || {}; + options = options || {};   - this._log = (options.log || defaultLogger).child({ component: 'http' }); + this._log = (options.log || defaultLogger).child({ component: 'http' }); this._settings = options.settings;   var start = this._start.bind(this); var fallback = this._fallback.bind(this);   // HTTP2 over TLS (using NPN instean of ALPN) - Eif ((options.key && options.cert) || options.pfx) { + if ((options.key && options.cert) || options.pfx) { this._log.info('Creating HTTP/2 server over TLS/NPN'); this._mode = 'tls'; options.NPNProtocols = [implementedVersion, 'http/1.1', 'http/1.0']; @@ -2236,16 +2331,16 @@

}   // HTTP2 over plain TCP - else if (options.plain) { - this._log.info('Creating HTTP/2 server over plain TCP'); - this._mode = 'plain'; - this._server = net.createServer(start); + else if (options.plain) { + this._log.info('Creating HTTP/2 server over plain TCP'); + this._mode = 'plain'; + this._server = net.createServer(start); }   // HTTP/2 with HTTP/1.1 upgrade else { - this._log.error('Trying to create HTTP/2 server with Upgrade from HTTP/1.1'); - throw new Error('HTTP1.1 -> HTTP2 upgrade is not yet supported. Please provide TLS keys.'); + this._log.error('Trying to create HTTP/2 server with Upgrade from HTTP/1.1'); + throw new Error('HTTP1.1 -> HTTP2 upgrade is not yet supported. Please provide TLS keys.'); }   this._server.on('close', this.emit.bind(this, 'close')); @@ -2294,28 +2389,28 @@

this._server.listen.apply(this._server, arguments); };   -Server.prototype.close = function close(callback) { - this._log.info('Closing server'); - this._server.close(callback); +Server.prototype.close = function close(callback) { + this._log.info('Closing server'); + this._server.close(callback); };   -OutgoingRequest.prototype.setTimeout = function setTimeout(timeout, callback) { - if (this._mode === 'tls') { - this._server.setTimeout(timeout, callback); +Server.prototype.setTimeout = function setTimeout(timeout, callback) { + Eif (this._mode === 'tls') { + this._server.setTimeout(timeout, callback); } };   -Object.defineProperty(OutgoingRequest.prototype, 'timeout', { - get: function getTimeout() { - if (this._mode === 'tls') { - return this._server.timeout; +Object.defineProperty(Server.prototype, 'timeout', { + get: function getTimeout() { + Eif (this._mode === 'tls') { + return this._server.timeout; } else { return undefined; } }, - set: function setTimeout(timeout) { - if (this._mode === 'tls') { - this._server.timeout = timeout; + set: function setTimeout(timeout) { + Eif (this._mode === 'tls') { + this._server.timeout = timeout; } } }); @@ -2333,9 +2428,9 @@

};   function createServer(options, requestListener) { - Iif (typeof options === 'function') { - requestListener = options; - options = undefined; + if (typeof options === 'function') { + requestListener = options; + options = undefined; }   var server = new Server(options); @@ -2401,7 +2496,7 @@

':path': 'url' }; for (var name in headers) { - Eif (name in mapping) { + if (name in mapping) { var value = headers[name]; Iif ((typeof value !== 'string') || (value.length === 0)) { this._log.error({ key: name, value: value }, 'Invalid header field'); @@ -2410,7 +2505,7 @@

} this[mapping[name]] = value; } else { - this.headers[name] = headers[name]; + this.headers[name] = headers[name]; } }   @@ -2432,7 +2527,7 @@

this._log = stream._log.child({ component: 'http' });   this.stream = stream; - this.statusCode = undefined; + this.statusCode = 200; this.sendDate = true;   this.stream.once('headers', this._onRequestHeaders.bind(this)); @@ -2440,8 +2535,8 @@

OutgoingResponse.prototype = Object.create(OutgoingMessage.prototype, { constructor: { value: OutgoingResponse } });   OutgoingResponse.prototype.writeHead = function writeHead(statusCode, reasonPhrase, headers) { - Iif (typeof reasonPhrase === 'string') { - this._log.warn('Reason phrase argument was present but ignored by the writeHead method'); + if (typeof reasonPhrase === 'string') { + this._log.warn('Reason phrase argument was present but ignored by the writeHead method'); } else { headers = reasonPhrase; } @@ -2449,10 +2544,10 @@

headers = headers || {};   for (var name in headers) { - this._headers[name.toLowerCase()] = headers[name]; + this._headers[name.toLowerCase()] = headers[name]; }   - Eif (this.sendDate && !('date' in this._headers)) { + if (this.sendDate && !('date' in this._headers)) { this._headers.date = (new Date()).toUTCString(); }   @@ -2485,33 +2580,28 @@

this._requestHeaders = headers; };   -OutgoingResponse.prototype.push = function push(options) { - if (!this.headersSent) { - throw new Error('Initiating a server push is only possible after the head of the parent ' + - 'request is sent.'); - } -  - if (typeof options === 'string') { - options = url.parse(options); +OutgoingResponse.prototype.push = function push(options) { + if (typeof options === 'string') { + options = url.parse(options); }   - if (!options.path) { + Iif (!options.path) { throw new Error('`path` option is mandatory.'); }   - var promise = util._extend({ + var promise = util._extend({ ':method': (options.method || 'GET').toUpperCase(), ':scheme': (options.protocol && options.protocol.slice(0, -1)) || this._requestHeaders[':scheme'], ':host': options.hostname || options.host || this._requestHeaders[':host'], ':path': options.path }, options.headers);   - this._log.info({ method: promise[':method'], scheme: promise[':scheme'], host: promise[':host'], + this._log.info({ method: promise[':method'], scheme: promise[':scheme'], host: promise[':host'], path: promise[':path'], headers: options.headers }, 'Promising push stream');   - var pushStream = this.stream.promise(promise); + var pushStream = this.stream.promise(promise);   - return new OutgoingResponse(pushStream); + return new OutgoingResponse(pushStream); };   // Overriding `EventEmitter`'s `on(event, listener)` method to forward certain subscriptions to @@ -2532,8 +2622,8 @@

exports.IncomingResponse = IncomingResponse; exports.Agent = Agent; exports.globalAgent = undefined; -exports.request = function request(options, callback) { - return (options.agent || exports.globalAgent).request(options, callback); +exports.request = function request(options, callback) { + return (options.agent || exports.globalAgent).request(options, callback); }; exports.get = function get(options, callback) { return (options.agent || exports.globalAgent).get(options, callback); @@ -2565,33 +2655,49 @@

Agent.prototype = Object.create(EventEmitter.prototype, { constructor: { value: Agent } });   Agent.prototype.request = function request(options, callback) { - Eif (typeof options === 'string') { + if (typeof options === 'string') { options = url.parse(options); }   options.method = (options.method || 'GET').toUpperCase(); - options.protocol = options.protocol || 'https:'; - options.host = options.hostname || options.host || 'localhost'; - options.port = options.port || 443; - options.path = options.path || '/'; -  - Iif (options.protocol === 'http') { - this._log.error('Trying to negotiate client request with Upgrade from HTTP/1.1'); - throw new Error('HTTP1.1 -> HTTP2 upgrade is not yet supported.'); + options.protocol = options.protocol || 'https:'; + options.host = options.hostname || options.host || 'localhost'; + options.port = options.port || 443; + options.path = options.path || '/'; +  + if (options.protocol === 'http:') { + this._log.error('Trying to negotiate client request with Upgrade from HTTP/1.1'); + throw new Error('HTTP1.1 -> HTTP2 upgrade is not yet supported.'); }   var request = new OutgoingRequest(this._log);   - Eif (callback) { + if (callback) { request.on('response', callback); }   - var key = [options.host, options.port].join(':'); + var key = [ + !!options.plain, + options.host, + options.port + ].join(':');   // * There's an existing HTTP/2 connection to this host - Iif (key in this.endpoints) { - var endpoint = this.endpoints[key]; - request._start(endpoint.createStream(), options); + if (key in this.endpoints) { + var endpoint = this.endpoints[key]; + request._start(endpoint.createStream(), options); + } +  + // * HTTP/2 over plain TCP + else if (options.plain) { + endpoint = new Endpoint('CLIENT', this._settings, this._log); + endpoint.socket = net.connect({ + host: options.host, + port: options.port, + localAddress: options.localAddress + }); + endpoint.pipe(endpoint.socket).pipe(endpoint); + request._start(endpoint.createStream(), options); }   // * HTTP/2 over TLS negotiated using NPN (or later ALPN) @@ -2611,15 +2717,24 @@

  var self = this; function negotiated() { - Eif (!started) { - Eif (httpsRequest.socket.npnProtocol === implementedVersion) { - httpsRequest.socket.emit('agentRemove'); - unbundleSocket(httpsRequest.socket); - var endpoint = new Endpoint('CLIENT', self._settings, self._log); + var endpoint; + Eif (httpsRequest.socket.npnProtocol === implementedVersion) { + httpsRequest.socket.emit('agentRemove'); + unbundleSocket(httpsRequest.socket); + endpoint = new Endpoint('CLIENT', self._settings, self._log); + endpoint.socket = httpsRequest.socket; + endpoint.pipe(endpoint.socket).pipe(endpoint); + } + if (started) { + Eif (endpoint) { + endpoint.close(); + } else { + httpsRequest.abort(); + } + } else { + Eif (endpoint) { self._log.info({ e: endpoint, server: options.host + ':' + options.port }, 'New outgoing HTTP/2 connection'); - endpoint.socket = httpsRequest.socket; - endpoint.pipe(endpoint.socket).pipe(endpoint); self.endpoints[key] = endpoint; self.emit(key, endpoint); } else { @@ -2659,11 +2774,11 @@

}   Object.defineProperty(Agent.prototype, 'maxSockets', { - get: function getMaxSockets() { - return this._httpsAgent.maxSockets; + get: function getMaxSockets() { + return this._httpsAgent.maxSockets; }, - set: function setMaxSockets(value) { - this._httpsAgent.maxSockets = value; + set: function setMaxSockets(value) { + this._httpsAgent.maxSockets = value; } });   @@ -2689,7 +2804,7 @@

  var headers = {}; for (var key in options.headers) { - headers[key] = options.headers[key]; + headers[key] = options.headers[key]; } delete headers.host;   @@ -2714,11 +2829,10 @@

this.stream.on('promise', this._onPromise.bind(this)); };   -OutgoingRequest.prototype._fallback = function _fallback(request) { - this.stream = this.request = request; - this.emit('socket', this.socket); -  - this.pipe(request); +OutgoingRequest.prototype._fallback = function _fallback(request) { + request.on('response', this.emit.bind(this, 'response')); + this.stream = this.request = request; + this.emit('socket', this.socket); };   OutgoingRequest.prototype.setPriority = function setPriority(priority) { @@ -2740,49 +2854,49 @@

};   // Methods only in fallback mode -OutgoingRequest.prototype.setNoDelay = function setNoDelay(noDelay) { - if (this.request) { - this.request.setNoDelay(noDelay); - } else if (!this.stream) { - this.on('socket', this.setNoDelay.bind(this, noDelay)); +OutgoingRequest.prototype.setNoDelay = function setNoDelay(noDelay) { + if (this.request) { + this.request.setNoDelay(noDelay); + } else if (!this.stream) { + this.on('socket', this.setNoDelay.bind(this, noDelay)); } };   -OutgoingRequest.prototype.setSocketKeepAlive = function setSocketKeepAlive(enable, initialDelay) { - if (this.request) { - this.request.setSocketKeepAlive(enable, initialDelay); - } else if (!this.stream) { - this.on('socket', this.setSocketKeepAlive.bind(this, enable, initialDelay)); +OutgoingRequest.prototype.setSocketKeepAlive = function setSocketKeepAlive(enable, initialDelay) { + if (this.request) { + this.request.setSocketKeepAlive(enable, initialDelay); + } else if (!this.stream) { + this.on('socket', this.setSocketKeepAlive.bind(this, enable, initialDelay)); } };   -OutgoingRequest.prototype.setTimeout = function setTimeout(timeout, callback) { - if (this.request) { - this.request.setTimeout(timeout, callback); - } else if (!this.stream) { - this.on('socket', this.setTimeout.bind(this, timeout, callback)); +OutgoingRequest.prototype.setTimeout = function setTimeout(timeout, callback) { + if (this.request) { + this.request.setTimeout(timeout, callback); + } else if (!this.stream) { + this.on('socket', this.setTimeout.bind(this, timeout, callback)); } };   // Aborting the request -OutgoingRequest.prototype.abort = function abort() { - if (this.request) { - this.request.abort(); - } else if (this.stream) { - this.stream.reset('CANCEL'); +OutgoingRequest.prototype.abort = function abort() { + if (this.request) { + this.request.abort(); + } else if (this.stream) { + this.stream.reset('CANCEL'); } else { - this.on('socket', this.abort.bind(this)); + this.on('socket', this.abort.bind(this)); } };   // Receiving push promises -OutgoingRequest.prototype._onPromise = function _onPromise(stream, headers) { - this._log.info({ push_stream: stream.id }, 'Receiving push promise'); +OutgoingRequest.prototype._onPromise = function _onPromise(stream, headers) { + this._log.info({ push_stream: stream.id }, 'Receiving push promise');   - var promise = new IncomingPromise(stream, headers); + var promise = new IncomingPromise(stream, headers);   - if (this.listeners('push').length > 0) { - this.emit('push', promise); + Eif (this.listeners('push').length > 0) { + this.emit('push', promise); } else { promise.cancel(); } @@ -2826,22 +2940,22 @@

// IncomingPromise class // -------------------------   -function IncomingPromise(responseStream, promiseHeaders) { - var stream = new Readable(); - stream._read = function noop() {}; - stream.push(null); - stream._log = responseStream._log; +function IncomingPromise(responseStream, promiseHeaders) { + var stream = new Readable(); + stream._read = noop; + stream.push(null); + stream._log = responseStream._log;   - IncomingRequest.call(this, stream); + IncomingRequest.call(this, stream);   - this._onHeaders(promiseHeaders); + this._onHeaders(promiseHeaders);   - this._responseStream = responseStream; + this._responseStream = responseStream;   - var response = new IncomingResponse(this._responseStream); - response.once('ready', this.emit.bind(this, 'response', response)); + var response = new IncomingResponse(this._responseStream); + response.once('ready', this.emit.bind(this, 'response', response));   - this.stream.on('promise', this._onPromise.bind(this)); + this.stream.on('promise', this._onPromise.bind(this)); } IncomingPromise.prototype = Object.create(IncomingRequest.prototype, { constructor: { value: IncomingPromise } });   @@ -2859,7 +2973,7 @@

diff --git a/coverage/lcov-report/lib/index.html b/coverage/lcov-report/lib/index.html index 2998945e..12ed1f39 100644 --- a/coverage/lcov-report/lib/index.html +++ b/coverage/lcov-report/lib/index.html @@ -183,16 +183,16 @@

Code coverage report for lib/

- Statements: 84.83% (1253 / 1477)      + Statements: 94.4% (1400 / 1483)      - Branches: 69.47% (405 / 583)      + Branches: 87.75% (523 / 596)      - Functions: 78.95% (165 / 209)      + Functions: 93.2% (192 / 206)      - Lines: 84.95% (1247 / 1468)      + Lines: 94.38% (1394 / 1477)     

All files » lib/
@@ -242,67 +242,67 @@

endpoint.js - - 86.75% - (72 / 83) - 68.75% - (11 / 16) - 76.92% - (10 / 13) - 86.75% - (72 / 83) + + 100% + (83 / 83) + 88.89% + (16 / 18) + 92.86% + (13 / 14) + 100% + (83 / 83) - flow.js - - 72.64% - (77 / 106) - 67.74% - (42 / 62) - 58.82% - (10 / 17) - 72.64% - (77 / 106) + flow.js + + 100% + (105 / 105) + 98.53% + (67 / 68) + 93.75% + (15 / 16) + 100% + (105 / 105) framer.js - - 87.55% - (204 / 233) - 68.57% - (48 / 70) - 83.87% - (26 / 31) - 87.55% - (204 / 233) + + 93.99% + (219 / 233) + 82.86% + (58 / 70) + 90.32% + (28 / 31) + 93.99% + (219 / 233) - http.js - - 71.77% - (272 / 379) - 41.43% - (58 / 140) - 59.02% - (36 / 61) - 71.77% - (272 / 379) + http.js + + 91.73% + (355 / 387) + 81.94% + (118 / 144) + 93.1% + (54 / 58) + 91.73% + (355 / 387) stream.js - - 83.84% - (166 / 198) - 72.22% - (104 / 144) - 90.48% - (19 / 21) - 84.66% - (160 / 189) + + 89.34% + (176 / 197) + 84.14% + (122 / 145) + 85.71% + (18 / 21) + 89.01% + (170 / 191) @@ -310,7 +310,7 @@

diff --git a/coverage/lcov-report/lib/stream.js.html b/coverage/lcov-report/lib/stream.js.html index aae1b68d..786fcf28 100644 --- a/coverage/lcov-report/lib/stream.js.html +++ b/coverage/lcov-report/lib/stream.js.html @@ -183,16 +183,16 @@

Code coverage report for lib/stream.js

- Statements: 83.84% (166 / 198)      + Statements: 89.34% (176 / 197)      - Branches: 72.22% (104 / 144)      + Branches: 84.14% (122 / 145)      - Functions: 90.48% (19 / 21)      + Functions: 85.71% (18 / 21)      - Lines: 84.66% (160 / 189)      + Lines: 89.01% (170 / 191)     

All files » lib/ » stream.js
@@ -758,7 +758,18 @@

557 558 559 -5601 +560 +561 +562 +563 +564 +565 +566 +567 +568 +569 +570 +5711       @@ -805,19 +816,19 @@

    1 -43 +103     -43 +103     -43 +103     -43 +103     -43 +103     1 @@ -831,43 +842,44 @@

    1 -43 -43 -43 -8 +103 +103 +103 +103 +6   -43 -20 +103 +39     -20 +39   -43 -2 +103 +        1 -4 -4 -4 +6 +6 +6         -4 +6     1 -18 +40           1 -2 -2 +  +        @@ -881,14 +893,19 @@

      -2 -2 -2 +  +  +  +  +        1 -15 +26 +19 +19 +        @@ -930,28 +947,28 @@

1   1 -43 -43 -43 -43 -43 -43 -43 +103 +103 +103 +103 +103 +103 +103   -43 +103       1 -53 +87   -53 +87       -53 -20 -20 +87 +42 +42       @@ -959,23 +976,23 @@

      -33 +45       -53 -12 +87 +33     -53 -53 +87 +87           1 -13 +35       @@ -985,14 +1002,14 @@

  1   -8 +18           -8 -8 +18 +18       @@ -1002,7 +1019,7 @@

    1 -335 +690       @@ -1014,20 +1031,19 @@

    1 +34         -1 -12 -12 -12 -5 -5 -5 -5 +34 +34 +10 +10 +10 +10   -7 +24       @@ -1062,69 +1078,68 @@

    1 -43 -43 -43 -43 -43 +103 +103 +103 +103 +103 +103         1 -56 -56 -56 -56 -  +155 +155 +155 +155         1 -100 +220           1 -110 -110 -  -110 -110 -110 -40 -38 -2 -15 -  -12 -  -  -3 +268 +268 +  +268 +268 +268 +106 +87 +8 +33 +24 +10     -110 +268   -110 +268             -24 -20 -20 -1 +55 +40 +40 +3   -20 +40 +15 +6   -4 +9   -24 +55       @@ -1136,16 +1151,16 @@

      -6 -2 -4 -  +18 4 +14 +6 +8     -4 +8   -6 +18       @@ -1155,16 +1170,16 @@

      +18 6 -  -6 -2 +12 4 +8     -4 +8   -6 +18       @@ -1176,14 +1191,14 @@

      -23 -9 -14 -  +61 +27 +34 +2       -23 +61       @@ -1192,14 +1207,14 @@

      -21 -9 -12 +55 +23 +32     -  +3   -21 +55       @@ -1212,14 +1227,14 @@

      +36 +21 15 -5 -10     3   -15 +36       @@ -1242,21 +1257,22 @@

      -15 +25       -    -15 +14   +25         -110 -12   +268 +64 +64       @@ -1264,42 +1280,48 @@

      -110 -8   -8 -8 +268 +13 +  +13 +13       +268 +110 110 -50 -50 -29 +57   -21 +53   -60 -28 +158 +85       -110 -15 +268 +45     -15 -  -            -15 -15 -15 -15 +  +45 +20 +20 +  +  +  +  +  +25 +25 +25       @@ -1311,11 +1333,11 @@

  1 1 -  -  -  +6 +2 +2   -  +6    
var assert = process.env.HTTP2_ASSERT ? require('assert') : function noop() {};
  
@@ -1390,6 +1412,7 @@ 

  // PUSH_PROMISE and HEADERS are forwarded to the user through events. Stream.prototype._initializeManagement = function _initializeManagement() { + this._resetSent = false; this._priority = DEFAULT_PRIORITY; this._letPeerPrioritize = true; this.on('PUSH_PROMISE', function(frame) { @@ -1401,8 +1424,8 @@

} this.emit('headers', frame.headers); }); - this.on('PRIORITY', function(frame) { - this.priority(frame.priority, true); + this.on('PRIORITY', function(frame) { + this.priority(frame.priority, true); }); };   @@ -1424,9 +1447,9 @@

}); };   -Stream.prototype.priority = function priority(priority, peer) { - Eif ((peer && this._letPeerPrioritize) || !peer) { - Iif (!peer) { +Stream.prototype.priority = function priority(priority, peer) { + if ((peer && this._letPeerPrioritize) || !peer) { + if (!peer) { this._letPeerPrioritize = false;   var lastFrame = this.upstream.getLastQueuedFrame(); @@ -1440,17 +1463,22 @@

} }   - this._log.debug({ priority: priority }, 'Changing priority'); - this._priority = priority; - this.emit('priority', priority); + this._log.debug({ priority: priority }, 'Changing priority'); + this._priority = priority; + this.emit('priority', priority); } };   +// Resetting the stream. Normally, an endpoint SHOULD NOT send more than one RST_STREAM frame for +// any stream. Stream.prototype.reset = function reset(error) { - this.upstream.push({ - type: 'RST_STREAM', - error: error - }); + if (!this._resetSent) { + this._resetSent = true; + this.upstream.push({ + type: 'RST_STREAM', + error: error + }); + } };   // Data flow @@ -1572,13 +1600,12 @@

// flag on the last frame. If there's no frame in the queue, or if it doesn't support this flag, // then we create a 0 length DATA frame. We could do this all the time, but putting the flag on an // existing frame is a nice optimization. -var endFrame = { - type: 'DATA', - flags: { END_STREAM: true }, - data: new Buffer(0) -}; Stream.prototype._finishing = function _finishing() { - delete endFrame.stream; + var endFrame = { + type: 'DATA', + flags: { END_STREAM: true }, + data: new Buffer(0) + }; var lastFrame = this.upstream.getLastQueuedFrame(); if (lastFrame && ((lastFrame.type === 'DATA') || (lastFrame.type === 'HEADERS'))) { this._log.debug({ frame: lastFrame }, 'Marking last frame with END_STREAM flag.'); @@ -1623,7 +1650,8 @@

Stream.prototype._initializeState = function _initializeState() { this.state = 'IDLE'; this._initiated = undefined; - this._closedByPeer = false; + this._closedByUs = undefined; + this._closedWithRst = undefined; this.on('sending', this._transition.bind(this, true)); this.on('receiving', this._transition.bind(this, false)); }; @@ -1631,11 +1659,10 @@

// Only `_setState` should change `this.state` directly. It also logs the state change and notifies // interested parties using the 'state' event. Stream.prototype._setState = function transition(state) { - Eif (this.state !== state) { - this._log.debug({ from: this.state, to: state }, 'State transition'); - this.state = state; - this.emit('state', state); - } + assert(this.state !== state); + this._log.debug({ from: this.state, to: state }, 'State transition'); + this.state = state; + this.emit('state', state); };   // A state is 'active' if the stream in that state counts towards the concurrency limit. Streams @@ -1651,17 +1678,14 @@

var receiving = !sending; var error = undefined;   - var DATA = false, HEADERS = false, PRIORITY = false, RST_STREAM = false, SETTINGS = false; - var PUSH_PROMISE = false, PING = false, GOAWAY = false, WINDOW_UPDATE = false; + var DATA = false, HEADERS = false, PRIORITY = false; + var RST_STREAM = false, PUSH_PROMISE = false, WINDOW_UPDATE = false; switch(frame.type) { case 'DATA' : DATA = true; break; case 'HEADERS' : HEADERS = true; break; case 'PRIORITY' : PRIORITY = true; break; case 'RST_STREAM' : RST_STREAM = true; break; - case 'SETTINGS' : SETTINGS = true; break; case 'PUSH_PROMISE' : PUSH_PROMISE = true; break; - case 'PING' : PING = true; break; - case 'GOAWAY' : GOAWAY = true; break; case 'WINDOW_UPDATE': WINDOW_UPDATE = true; break; }   @@ -1680,6 +1704,8 @@

this._setState(sending ? 'HALF_CLOSED_LOCAL' : 'HALF_CLOSED_REMOTE'); } this._initiated = sending; + } else if (sending && RST_STREAM) { + this._setState('CLOSED'); } else { error = 'PROTOCOL_ERROR'; } @@ -1697,8 +1723,8 @@

case 'RESERVED_LOCAL': if (sending && HEADERS) { this._setState('HALF_CLOSED_REMOTE'); - } else Iif (RST_STREAM) { - this._setState('CLOSED'); + } else if (RST_STREAM) { + this._setState('CLOSED'); } else Iif (receiving && PRIORITY) { /* No state change */ } else { @@ -1714,11 +1740,11 @@

// * An endpoint MAY send PRIORITY frames in this state to reprioritize the stream. // * Receiving any other type of frame MUST be treated as a stream error of type PROTOCOL_ERROR. case 'RESERVED_REMOTE': - Iif (RST_STREAM) { - this._setState('CLOSED'); + if (RST_STREAM) { + this._setState('CLOSED'); } else if (receiving && HEADERS) { this._setState('HALF_CLOSED_LOCAL'); - } else Iif (sending && PRIORITY) { + } else Iif (sending && PRIORITY) { /* No state change */ } else { error = 'PROTOCOL_ERROR'; @@ -1737,8 +1763,8 @@

case 'OPEN': if (frame.flags.END_STREAM) { this._setState(sending ? 'HALF_CLOSED_LOCAL' : 'HALF_CLOSED_REMOTE'); - } else Iif (RST_STREAM) { - this._setState('CLOSED'); + } else if (RST_STREAM) { + this._setState('CLOSED'); } else { /* No state change */ } @@ -1753,10 +1779,10 @@

case 'HALF_CLOSED_LOCAL': if (RST_STREAM || (receiving && frame.flags.END_STREAM)) { this._setState('CLOSED'); - } else Eif (receiving || (sending && (PRIORITY || WINDOW_UPDATE))) { + } else if (receiving || (sending && (PRIORITY || WINDOW_UPDATE))) { /* No state change */ } else { - error = 'PROTOCOL_ERROR'; + error = 'PROTOCOL_ERROR'; } break;   @@ -1785,12 +1811,12 @@

// * An endpoint MUST NOT send frames on a closed stream. An endpoint that receives a frame // after receiving a RST_STREAM or a frame containing a END_STREAM flag on that stream MUST // treat that as a stream error of type STREAM_CLOSED. - // * WINDOW_UPDATE or PRIORITY frames can be received in this state for a short period after a - // frame containing an END_STREAM flag is sent. Until the remote peer receives and processes - // the frame bearing the END_STREAM flag, it might send either frame type. Endpoints MUST - // ignore WINDOW_UPDATE frames received in this state, though endpoints MAY choose to treat - // WINDOW_UPDATE frames that arrive a significant time after sending END_STREAM as a - // connection error of type PROTOCOL_ERROR. + // * WINDOW_UPDATE, PRIORITY or RST_STREAM frames can be received in this state for a short + // period after a frame containing an END_STREAM flag is sent. Until the remote peer receives + // and processes the frame bearing the END_STREAM flag, it might send either frame type. + // Endpoints MUST ignore WINDOW_UPDATE frames received in this state, though endpoints MAY + // choose to treat WINDOW_UPDATE frames that arrive a significant time after sending + // END_STREAM as a connection error of type PROTOCOL_ERROR. // * If this state is reached as a result of sending a RST_STREAM frame, the peer that receives // the RST_STREAM might have already sent - or enqueued for sending - frames on the stream // that cannot be withdrawn. An endpoint that sends a RST_STREAM frame MUST ignore frames that @@ -1801,11 +1827,12 @@

// causes a stream to become "reserved". If promised streams are not desired, a RST_STREAM // can be used to close any of those streams. case 'CLOSED': - Eif ((sending && RST_STREAM) || (receiving && !this._closedByPeer) || - (receiving && (WINDOW_UPDATE || PRIORITY))) { + if ((sending && RST_STREAM) || + (receiving && this._closedByUs && + (this._closedWithRst || WINDOW_UPDATE || PRIORITY || RST_STREAM))) { /* No state change */ } else { - error = 'STREAM_CLOSED'; + error = 'STREAM_CLOSED'; } break; } @@ -1813,8 +1840,9 @@

// Noting that the connection was closed by the other endpoint. It may be important in edge cases. // For example, when the peer tries to cancel a promised stream, but we already sent every data // on it, then the stream is in CLOSED state, yet we want to ignore the incoming RST_STREAM. - if (receiving && (RST_STREAM || frame.flags.END_STREAM)) { - this._closedByPeer = true; + if ((this.state === 'CLOSED') && (previousState !== 'CLOSED')) { + this._closedByUs = sending; + this._closedWithRst = RST_STREAM; }   // Sending/receiving a PUSH_PROMISE @@ -1844,19 +1872,24 @@

  // Common error handling. if (error) { - var info = { error: error, frame: frame, state: this.state }; + var info = { + error: error, + frame: frame, + state: this.state, + closedByUs: this._closedByUs, + closedWithRst: this._closedWithRst + };   // * When sending something invalid, throwing an exception, since it is probably a bug. - Iif (sending) { - this._log.error(info, 'Stream error: sending illegal frame.'); - throw new Error('Sending illegal frame (' + frame.type + ') in ' + this.state + ' state.'); + if (sending) { + this._log.error(info, 'Stream error: sending illegal frame.'); + throw new Error('Sending illegal frame (' + frame.type + ') in ' + this.state + ' state.'); }   // * When receiving something invalid, sending an RST_STREAM using the `reset` method. // This will automatically cause a transition to the CLOSED state. else { this._log.error(info, 'Stream error: received illegal frame.'); - this.state = 'CLOSED'; this.reset(error); this.emit('error', error); } @@ -1869,19 +1902,19 @@

exports.serializers = {};   var nextId = 0; -exports.serializers.s = function(stream) { - if (!('id' in stream)) { - stream.id = nextId; - nextId += 1; +exports.serializers.s = function(stream) { + if (!('id' in stream)) { + stream.id = nextId; + nextId += 1; } - return stream.id; + return stream.id; };  

diff --git a/coverage/lcov.info b/coverage/lcov.info index a2540e70..314311f5 100644 --- a/coverage/lcov.info +++ b/coverage/lcov.info @@ -36,428 +36,428 @@ FN:840,cut FN:852,shallowCopy FNF:34 FNH:34 -FNDA:14,CompressionContext -FNDA:1643,(anonymous_2) -FNDA:47,getWorkingSet -FNDA:142,(anonymous_4) -FNDA:47,reinitialize -FNDA:154,(anonymous_6) -FNDA:98,(anonymous_7) -FNDA:98,(anonymous_8) -FNDA:184,execute -FNDA:139,(anonymous_10) -FNDA:42,(anonymous_11) -FNDA:97,(anonymous_12) -FNDA:64,(anonymous_13) -FNDA:1213,(anonymous_14) -FNDA:24,(anonymous_15) -FNDA:129,(anonymous_16) -FNDA:8,Decompressor -FNDA:25,decompress -FNDA:6,Compressor -FNDA:22,compress -FNDA:232,writeInteger -FNDA:250,readInteger -FNDA:115,writeString -FNDA:120,readString -FNDA:96,writeHeader -FNDA:104,readHeader -FNDA:6,_initializeStream -FNDA:19,_transform -FNDA:8,_initializeStream -FNDA:23,_transform -FNDA:14,(anonymous_31) -FNDA:34,concat -FNDA:12,cut -FNDA:14,shallowCopy +FNDA:50,CompressionContext +FNDA:3424,(anonymous_2) +FNDA:88,getWorkingSet +FNDA:227,(anonymous_4) +FNDA:88,reinitialize +FNDA:202,(anonymous_6) +FNDA:146,(anonymous_7) +FNDA:146,(anonymous_8) +FNDA:278,execute +FNDA:173,(anonymous_10) +FNDA:81,(anonymous_11) +FNDA:149,(anonymous_12) +FNDA:109,(anonymous_13) +FNDA:2413,(anonymous_14) +FNDA:28,(anonymous_15) +FNDA:190,(anonymous_16) +FNDA:26,Decompressor +FNDA:45,decompress +FNDA:24,Compressor +FNDA:43,compress +FNDA:345,writeInteger +FNDA:353,readInteger +FNDA:153,writeString +FNDA:155,readString +FNDA:145,writeHeader +FNDA:149,readHeader +FNDA:24,_initializeStream +FNDA:87,_transform +FNDA:26,_initializeStream +FNDA:84,_transform +FNDA:34,(anonymous_31) +FNDA:75,concat +FNDA:33,cut +FNDA:35,shallowCopy DA:16,1 DA:18,1 DA:19,1 DA:20,1 DA:36,1 DA:38,1 -DA:39,14 -DA:40,14 -DA:41,14 -DA:42,14 -DA:43,14 +DA:39,50 +DA:40,50 +DA:41,50 +DA:42,50 +DA:43,50 DA:48,1 -DA:49,1643 +DA:49,3424 DA:53,1 -DA:54,47 -DA:55,142 +DA:54,88 +DA:55,227 DA:60,1 -DA:61,47 -DA:66,47 -DA:67,154 -DA:69,98 -DA:76,47 -DA:77,98 -DA:78,98 +DA:61,88 +DA:66,88 +DA:67,202 +DA:69,146 +DA:76,88 +DA:77,146 +DA:78,146 DA:105,1 -DA:106,184 -DA:109,184 -DA:116,184 -DA:117,54 -DA:118,54 -DA:119,139 -DA:121,54 -DA:122,4 -DA:123,4 -DA:125,50 -DA:134,130 -DA:135,45 -DA:137,85 -DA:140,130 -DA:141,129 -DA:142,88 -DA:144,41 -DA:146,129 -DA:147,129 -DA:150,130 +DA:106,278 +DA:109,278 +DA:116,278 +DA:117,87 +DA:118,87 +DA:119,173 +DA:121,87 +DA:122,29 +DA:123,29 +DA:125,58 +DA:134,191 +DA:135,94 +DA:137,97 +DA:140,191 +DA:141,190 +DA:142,100 +DA:144,90 +DA:146,190 +DA:147,190 +DA:150,191 DA:156,1 -DA:157,42 -DA:158,97 +DA:157,81 +DA:158,149 DA:164,1 -DA:165,64 -DA:167,64 -DA:168,64 -DA:169,6 -DA:170,6 -DA:171,2 -DA:179,62 -DA:180,62 -DA:181,1213 -DA:183,62 -DA:184,36 -DA:185,36 -DA:186,20 -DA:194,42 +DA:165,109 +DA:167,109 +DA:168,109 +DA:169,19 +DA:170,19 +DA:171,15 +DA:179,94 +DA:180,94 +DA:181,2413 +DA:183,94 +DA:184,62 +DA:185,62 +DA:186,46 +DA:194,48 DA:203,1 -DA:204,24 -DA:206,24 -DA:207,42 -DA:208,24 -DA:209,24 -DA:213,24 +DA:204,28 +DA:206,28 +DA:207,46 +DA:208,28 +DA:209,28 +DA:213,28 DA:227,1 -DA:228,129 -DA:229,129 -DA:230,129 -DA:231,2713 -DA:232,202 -DA:234,2713 -DA:236,129 +DA:228,190 +DA:229,190 +DA:230,190 +DA:231,5011 +DA:232,263 +DA:234,5011 +DA:236,190 DA:237,218 DA:238,218 DA:249,1 -DA:250,8 -DA:252,8 -DA:254,8 -DA:256,8 +DA:250,26 +DA:252,26 +DA:254,26 +DA:256,26 DA:258,1 DA:264,1 -DA:265,25 -DA:269,25 -DA:274,25 -DA:275,25 -DA:276,96 -DA:281,25 -DA:285,25 -DA:286,25 -DA:287,96 -DA:288,96 -DA:289,96 +DA:265,45 +DA:269,45 +DA:274,45 +DA:275,45 +DA:276,141 +DA:281,45 +DA:285,45 +DA:286,45 +DA:287,157 +DA:288,157 +DA:289,157 DA:290,17 DA:291,8 DA:293,9 -DA:296,79 -DA:299,25 -DA:300,25 +DA:296,140 +DA:299,45 +DA:300,45 DA:310,1 -DA:311,6 -DA:313,6 -DA:315,6 -DA:317,6 +DA:311,24 +DA:313,24 +DA:315,24 +DA:317,24 DA:319,1 DA:325,1 -DA:326,22 -DA:327,22 -DA:331,22 -DA:332,22 -DA:333,70 -DA:334,70 +DA:326,43 +DA:327,43 +DA:331,43 +DA:332,43 +DA:333,135 +DA:334,135 DA:335,8 DA:336,24 -DA:339,62 -DA:345,22 -DA:346,22 -DA:349,22 -DA:350,46 -DA:351,24 -DA:352,24 -DA:353,24 -DA:358,22 -DA:359,86 -DA:360,64 -DA:361,64 -DA:362,64 -DA:367,22 -DA:368,22 -DA:369,88 -DA:372,22 -DA:374,22 -DA:375,22 +DA:339,127 +DA:345,43 +DA:346,43 +DA:349,43 +DA:350,70 +DA:351,28 +DA:352,28 +DA:353,28 +DA:358,43 +DA:359,151 +DA:360,109 +DA:361,109 +DA:362,109 +DA:367,43 +DA:368,43 +DA:369,137 +DA:372,43 +DA:374,43 +DA:375,43 DA:395,1 -DA:396,232 -DA:397,232 -DA:398,94 -DA:401,138 -DA:402,138 +DA:396,345 +DA:397,345 +DA:398,143 +DA:401,202 +DA:402,202 DA:403,2 -DA:405,138 -DA:407,138 -DA:408,138 -DA:409,146 -DA:410,146 -DA:412,146 +DA:405,202 +DA:407,202 +DA:408,202 +DA:409,210 +DA:410,210 +DA:412,210 DA:413,8 -DA:415,146 -DA:417,146 -DA:420,138 +DA:415,210 +DA:417,210 +DA:420,202 DA:436,1 -DA:437,250 -DA:439,250 -DA:440,250 -DA:441,106 -DA:444,250 -DA:445,149 -DA:446,149 -DA:447,159 -DA:448,159 -DA:449,159 -DA:453,250 +DA:437,353 +DA:439,353 +DA:440,353 +DA:441,151 +DA:444,353 +DA:445,207 +DA:446,207 +DA:447,217 +DA:448,217 +DA:449,217 +DA:453,353 DA:466,1 -DA:467,115 -DA:468,115 -DA:469,115 +DA:467,153 +DA:468,153 +DA:469,153 DA:472,1 -DA:473,120 -DA:474,120 -DA:475,120 -DA:476,120 +DA:473,155 +DA:474,155 +DA:475,155 +DA:476,155 DA:518,1 DA:525,1 -DA:526,96 -DA:528,96 -DA:529,28 -DA:530,68 +DA:526,145 +DA:528,145 +DA:529,45 +DA:530,100 DA:531,1 -DA:532,67 -DA:533,46 -DA:535,21 -DA:538,96 -DA:539,28 -DA:542,68 -DA:543,25 -DA:545,43 -DA:546,43 -DA:549,68 -DA:550,21 -DA:553,68 -DA:556,96 -DA:558,96 +DA:532,99 +DA:533,52 +DA:535,47 +DA:538,145 +DA:539,45 +DA:542,100 +DA:543,51 +DA:545,49 +DA:546,49 +DA:549,100 +DA:550,47 +DA:553,100 +DA:556,145 +DA:558,145 DA:561,1 -DA:562,104 -DA:564,104 -DA:565,104 -DA:566,30 -DA:567,74 -DA:568,52 +DA:562,149 +DA:564,149 +DA:565,149 +DA:566,46 +DA:567,103 +DA:568,58 DA:569,2 -DA:571,50 -DA:574,22 -DA:577,104 -DA:578,30 -DA:579,30 -DA:582,74 -DA:583,74 -DA:584,44 -DA:587,74 -DA:588,22 -DA:589,52 -DA:590,50 +DA:571,56 +DA:574,45 +DA:577,149 +DA:578,46 +DA:579,46 +DA:582,103 +DA:583,103 +DA:584,50 +DA:587,103 +DA:588,45 +DA:589,58 +DA:590,56 DA:592,2 -DA:595,74 -DA:598,104 +DA:595,103 +DA:598,149 DA:623,1 DA:626,1 -DA:627,6 +DA:627,24 DA:630,1 -DA:632,19 -DA:634,12 -DA:637,12 -DA:642,12 -DA:643,14 -DA:644,14 -DA:645,12 +DA:632,87 +DA:634,33 +DA:637,33 +DA:642,33 +DA:643,35 +DA:644,35 +DA:645,33 DA:647,2 DA:648,2 -DA:651,14 -DA:664,7 -DA:667,19 +DA:651,35 +DA:664,54 +DA:667,87 DA:676,1 -DA:677,8 -DA:678,8 -DA:679,8 -DA:680,8 -DA:681,8 +DA:677,26 +DA:678,26 +DA:679,26 +DA:680,26 +DA:681,26 DA:685,1 -DA:688,23 +DA:688,84 DA:689,3 DA:690,1 DA:691,1 DA:692,1 DA:694,2 -DA:699,20 -DA:700,13 -DA:701,13 -DA:702,13 -DA:703,13 -DA:708,7 -DA:714,22 -DA:715,12 -DA:716,14 -DA:718,12 -DA:719,12 +DA:699,81 +DA:700,33 +DA:701,33 +DA:702,33 +DA:703,33 +DA:708,48 +DA:714,83 +DA:715,32 +DA:716,34 +DA:718,32 +DA:719,32 DA:721,0 DA:722,0 DA:723,0 -DA:725,12 -DA:733,12 -DA:736,22 +DA:725,32 +DA:733,32 +DA:736,83 DA:742,1 DA:783,1 DA:825,1 -DA:826,34 -DA:827,34 -DA:828,330 -DA:831,34 -DA:832,34 -DA:833,330 -DA:836,34 +DA:826,75 +DA:827,75 +DA:828,501 +DA:831,75 +DA:832,75 +DA:833,501 +DA:836,75 DA:840,1 -DA:841,12 -DA:842,12 -DA:843,12 -DA:844,14 -DA:845,14 -DA:846,14 -DA:848,12 +DA:841,33 +DA:842,33 +DA:843,33 +DA:844,35 +DA:845,35 +DA:846,35 +DA:848,33 DA:852,1 -DA:853,14 -DA:854,14 +DA:853,35 +DA:854,35 DA:855,0 -DA:857,14 +DA:857,35 LF:289 LH:285 -BRDA:41,1,0,14 -BRDA:41,1,1,14 -BRDA:49,2,0,1643 -BRDA:49,2,1,128 -BRDA:116,3,0,54 -BRDA:116,3,1,130 -BRDA:121,4,0,4 -BRDA:121,4,1,50 -BRDA:134,5,0,45 -BRDA:134,5,1,85 -BRDA:140,6,0,129 +BRDA:41,1,0,50 +BRDA:41,1,1,50 +BRDA:49,2,0,3424 +BRDA:49,2,1,214 +BRDA:116,3,0,87 +BRDA:116,3,1,191 +BRDA:121,4,0,29 +BRDA:121,4,1,58 +BRDA:134,5,0,94 +BRDA:134,5,1,97 +BRDA:140,6,0,190 BRDA:140,6,1,1 -BRDA:141,7,0,88 -BRDA:141,7,1,41 -BRDA:168,8,0,6 -BRDA:168,8,1,58 -BRDA:170,9,0,2 +BRDA:141,7,0,100 +BRDA:141,7,1,90 +BRDA:168,8,0,19 +BRDA:168,8,1,90 +BRDA:170,9,0,15 BRDA:170,9,1,4 -BRDA:183,10,0,36 -BRDA:183,10,1,26 -BRDA:185,11,0,20 +BRDA:183,10,0,62 +BRDA:183,10,1,32 +BRDA:185,11,0,46 BRDA:185,11,1,16 -BRDA:207,12,0,24 +BRDA:207,12,0,28 BRDA:207,12,1,18 -BRDA:231,13,0,202 -BRDA:231,13,1,2511 -BRDA:252,14,0,5 -BRDA:252,14,1,3 +BRDA:231,13,0,263 +BRDA:231,13,1,4748 +BRDA:252,14,0,14 +BRDA:252,14,1,12 BRDA:289,15,0,17 -BRDA:289,15,1,79 +BRDA:289,15,1,140 BRDA:290,16,0,8 BRDA:290,16,1,9 -BRDA:313,17,0,3 -BRDA:313,17,1,3 +BRDA:313,17,0,12 +BRDA:313,17,1,12 BRDA:334,18,0,8 -BRDA:334,18,1,62 -BRDA:350,19,0,24 -BRDA:350,19,1,22 -BRDA:359,20,0,64 -BRDA:359,20,1,22 -BRDA:397,21,0,94 -BRDA:397,21,1,138 +BRDA:334,18,1,127 +BRDA:350,19,0,28 +BRDA:350,19,1,42 +BRDA:359,20,0,109 +BRDA:359,20,1,42 +BRDA:397,21,0,143 +BRDA:397,21,1,202 BRDA:402,22,0,2 -BRDA:402,22,1,136 +BRDA:402,22,1,200 BRDA:412,23,0,8 -BRDA:412,23,1,138 -BRDA:440,24,0,106 -BRDA:440,24,1,144 -BRDA:444,25,0,149 -BRDA:444,25,1,101 -BRDA:528,26,0,28 -BRDA:528,26,1,68 +BRDA:412,23,1,202 +BRDA:440,24,0,151 +BRDA:440,24,1,202 +BRDA:444,25,0,207 +BRDA:444,25,1,146 +BRDA:528,26,0,45 +BRDA:528,26,1,100 BRDA:530,27,0,1 -BRDA:530,27,1,67 -BRDA:532,28,0,46 -BRDA:532,28,1,21 -BRDA:538,29,0,28 -BRDA:538,29,1,68 -BRDA:542,30,0,25 -BRDA:542,30,1,43 -BRDA:549,31,0,21 -BRDA:549,31,1,47 -BRDA:565,32,0,30 -BRDA:565,32,1,74 -BRDA:567,33,0,52 -BRDA:567,33,1,22 +BRDA:530,27,1,99 +BRDA:532,28,0,52 +BRDA:532,28,1,47 +BRDA:538,29,0,45 +BRDA:538,29,1,100 +BRDA:542,30,0,51 +BRDA:542,30,1,49 +BRDA:549,31,0,47 +BRDA:549,31,1,53 +BRDA:565,32,0,46 +BRDA:565,32,1,103 +BRDA:567,33,0,58 +BRDA:567,33,1,45 BRDA:568,34,0,2 -BRDA:568,34,1,50 -BRDA:577,35,0,30 -BRDA:577,35,1,74 -BRDA:583,36,0,44 -BRDA:583,36,1,30 -BRDA:587,37,0,22 -BRDA:587,37,1,52 -BRDA:589,38,0,50 +BRDA:568,34,1,56 +BRDA:577,35,0,46 +BRDA:577,35,1,103 +BRDA:583,36,0,50 +BRDA:583,36,1,53 +BRDA:587,37,0,45 +BRDA:587,37,1,58 +BRDA:589,38,0,56 BRDA:589,38,1,2 -BRDA:632,39,0,12 -BRDA:632,39,1,7 -BRDA:632,40,0,19 -BRDA:632,40,1,12 -BRDA:644,41,0,12 +BRDA:632,39,0,33 +BRDA:632,39,1,54 +BRDA:632,40,0,87 +BRDA:632,40,1,61 +BRDA:644,41,0,33 BRDA:644,41,1,2 BRDA:688,42,0,3 -BRDA:688,42,1,20 +BRDA:688,42,1,81 BRDA:689,43,0,1 BRDA:689,43,1,2 BRDA:689,44,0,3 BRDA:689,44,1,2 -BRDA:699,45,0,13 -BRDA:699,45,1,7 -BRDA:699,46,0,20 -BRDA:699,46,1,12 -BRDA:714,47,0,12 -BRDA:714,47,1,10 -BRDA:714,48,0,22 -BRDA:714,48,1,15 -BRDA:714,48,2,8 +BRDA:699,45,0,33 +BRDA:699,45,1,48 +BRDA:699,46,0,81 +BRDA:699,46,1,55 +BRDA:714,47,0,32 +BRDA:714,47,1,51 +BRDA:714,48,0,83 +BRDA:714,48,1,35 +BRDA:714,48,2,10 BRF:97 BRH:97 end_of_record @@ -498,174 +498,174 @@ FN:483,_setStreamFlowControl FNF:32 FNH:30 FNDA:0,noop -FNDA:25,Connection -FNDA:25,_initializeStreamManagement -FNDA:197,_getIdOf -FNDA:25,_writeControlFrame +FNDA:43,Connection +FNDA:43,_initializeStreamManagement +FNDA:438,_getIdOf +FNDA:40,_writeControlFrame FNDA:18,_updateStreamLimit -FNDA:43,_changeStreamCount -FNDA:22,_enableReceiving -FNDA:22,_enableSending -FNDA:43,_insert +FNDA:116,_changeStreamCount +FNDA:43,_enableReceiving +FNDA:43,_enableSending +FNDA:64,_insert FNDA:1,_reprioritize -FNDA:11,_createIncomingStream -FNDA:8,createStream -FNDA:189,_send +FNDA:21,_createIncomingStream +FNDA:17,createStream +FNDA:412,_send FNDA:0,(anonymous_15) -FNDA:52,_receive -FNDA:25,_initializeSettingsManagement -FNDA:20,(anonymous_18) -FNDA:20,_receiveSettings -FNDA:25,set -FNDA:25,_initializeLifecycleManagement +FNDA:113,_receive +FNDA:43,_initializeSettingsManagement +FNDA:34,(anonymous_18) +FNDA:34,_receiveSettings +FNDA:43,set +FNDA:43,_initializeLifecycleManagement FNDA:2,_generatePingId FNDA:2,ping FNDA:5,_receivePing -FNDA:1,close -FNDA:1,_receiveGoaway -FNDA:25,_initializeFlowControl -FNDA:22,(anonymous_28) -FNDA:24,noop -FNDA:25,_setInitialStreamWindowSize -FNDA:30,(anonymous_31) -FNDA:8,_setStreamFlowControl +FNDA:3,close +FNDA:2,_receiveGoaway +FNDA:43,_initializeFlowControl +FNDA:43,(anonymous_28) +FNDA:38,noop +FNDA:39,_setInitialStreamWindowSize +FNDA:51,(anonymous_31) +FNDA:22,_setStreamFlowControl DA:1,1 DA:10,1 DA:12,1 DA:36,1 -DA:38,25 -DA:41,25 -DA:44,25 -DA:47,25 -DA:50,25 -DA:53,25 +DA:38,43 +DA:41,43 +DA:44,43 +DA:47,43 +DA:50,43 +DA:53,43 DA:57,1 DA:93,1 DA:96,1 -DA:100,25 -DA:101,25 -DA:104,25 -DA:105,25 -DA:108,25 -DA:112,25 -DA:113,25 -DA:114,25 +DA:100,43 +DA:101,43 +DA:104,43 +DA:105,43 +DA:108,43 +DA:112,43 +DA:113,43 +DA:114,43 DA:117,1 -DA:118,197 +DA:118,438 DA:123,1 -DA:124,25 -DA:126,25 -DA:127,25 +DA:124,40 +DA:126,40 +DA:127,40 DA:129,0 DA:130,0 DA:135,1 DA:136,18 DA:137,18 DA:140,1 -DA:141,43 -DA:142,15 -DA:143,15 -DA:144,15 +DA:141,116 +DA:142,34 +DA:143,34 +DA:144,34 DA:156,1 -DA:158,22 -DA:159,11 -DA:160,11 -DA:164,11 -DA:165,11 +DA:158,43 +DA:159,22 +DA:160,22 +DA:164,21 +DA:165,21 DA:170,0 DA:172,0 DA:173,0 -DA:176,22 -DA:179,22 -DA:180,22 -DA:181,22 -DA:183,22 +DA:176,43 +DA:179,43 +DA:180,43 +DA:181,43 +DA:183,43 DA:187,1 -DA:188,22 -DA:189,22 -DA:190,22 -DA:191,22 -DA:192,22 +DA:188,43 +DA:189,43 +DA:190,43 +DA:191,43 +DA:192,43 DA:196,1 -DA:197,43 -DA:198,43 -DA:199,43 -DA:200,78 -DA:202,43 +DA:197,64 +DA:198,64 +DA:199,64 +DA:200,94 +DA:202,64 DA:207,1 DA:208,1 DA:209,1 DA:210,1 DA:211,1 DA:216,1 -DA:217,11 -DA:219,11 -DA:220,11 -DA:221,11 -DA:222,11 -DA:224,11 +DA:217,21 +DA:219,21 +DA:220,21 +DA:221,21 +DA:222,21 +DA:224,21 DA:228,1 -DA:229,8 -DA:232,8 -DA:233,8 -DA:235,8 +DA:229,17 +DA:232,17 +DA:233,17 +DA:235,17 DA:243,1 -DA:244,189 -DA:247,189 -DA:248,189 -DA:249,197 -DA:250,197 -DA:251,197 -DA:252,197 -DA:253,27 +DA:244,412 +DA:247,412 +DA:248,412 +DA:249,438 +DA:250,438 +DA:251,438 +DA:252,438 +DA:253,75 DA:254,0 DA:255,0 -DA:258,27 -DA:259,8 -DA:262,27 -DA:263,27 -DA:264,3 -DA:265,3 -DA:268,27 -DA:269,27 -DA:270,27 +DA:258,75 +DA:259,17 +DA:262,75 +DA:263,75 +DA:264,5 +DA:265,5 +DA:268,75 +DA:269,75 +DA:270,75 DA:271,0 -DA:274,27 -DA:275,27 -DA:278,27 +DA:274,75 +DA:275,75 +DA:278,75 DA:279,0 -DA:280,27 +DA:280,75 DA:281,0 -DA:286,189 +DA:286,412 DA:291,1 -DA:292,52 -DA:295,52 -DA:298,52 -DA:299,8 -DA:303,52 -DA:304,3 -DA:307,52 -DA:310,52 -DA:312,52 +DA:292,113 +DA:295,113 +DA:298,113 +DA:299,16 +DA:303,113 +DA:304,5 +DA:307,113 +DA:310,113 +DA:312,113 DA:318,1 DA:323,1 -DA:325,25 -DA:326,25 -DA:329,25 -DA:330,20 -DA:331,20 +DA:325,43 +DA:326,43 +DA:329,43 +DA:330,34 +DA:331,34 DA:333,0 DA:334,0 -DA:339,25 +DA:339,43 DA:343,1 -DA:344,20 -DA:345,38 +DA:344,34 +DA:345,52 DA:350,1 -DA:351,25 +DA:351,43 DA:368,1 -DA:369,25 -DA:370,25 -DA:371,25 +DA:369,43 +DA:370,43 +DA:371,43 DA:375,1 DA:376,2 DA:377,2 @@ -689,32 +689,32 @@ DA:411,1 DA:415,2 DA:416,2 DA:428,1 -DA:429,1 -DA:430,1 -DA:436,1 +DA:429,3 +DA:430,3 +DA:436,3 DA:439,1 -DA:440,1 -DA:441,1 +DA:440,2 +DA:441,2 DA:447,1 -DA:449,25 -DA:450,25 -DA:451,22 -DA:453,25 -DA:454,25 -DA:455,25 +DA:449,43 +DA:450,43 +DA:451,43 +DA:453,43 +DA:454,43 +DA:455,43 DA:462,1 DA:468,1 -DA:469,25 +DA:469,39 DA:470,1 DA:471,1 -DA:473,24 -DA:474,24 -DA:475,24 -DA:476,30 +DA:473,38 +DA:474,38 +DA:475,38 +DA:476,51 DA:483,1 -DA:484,8 -DA:485,6 -DA:486,6 +DA:484,22 +DA:485,20 +DA:486,20 DA:487,2 DA:488,1 DA:489,1 @@ -722,55 +722,55 @@ LF:189 LH:177 BRDA:1,1,0,1 BRDA:1,1,1,0 -BRDA:124,2,0,25 +BRDA:124,2,0,40 BRDA:124,2,1,0 -BRDA:124,3,0,25 -BRDA:124,3,1,5 -BRDA:124,3,2,1 +BRDA:124,3,0,40 +BRDA:124,3,1,6 +BRDA:124,3,2,2 BRDA:124,3,3,0 -BRDA:141,4,0,15 -BRDA:141,4,1,28 -BRDA:158,5,0,11 -BRDA:158,5,1,11 -BRDA:164,6,0,11 +BRDA:141,4,0,34 +BRDA:141,4,1,82 +BRDA:158,5,0,22 +BRDA:158,5,1,21 +BRDA:164,6,0,21 BRDA:164,6,1,0 -BRDA:164,7,0,11 -BRDA:164,7,1,11 -BRDA:199,8,0,121 -BRDA:199,8,1,92 +BRDA:164,7,0,21 +BRDA:164,7,1,21 +BRDA:199,8,0,158 +BRDA:199,8,1,107 BRDA:253,9,0,0 -BRDA:253,9,1,27 -BRDA:258,10,0,8 -BRDA:258,10,1,19 -BRDA:263,11,0,3 -BRDA:263,11,1,24 -BRDA:274,12,0,27 +BRDA:253,9,1,75 +BRDA:258,10,0,17 +BRDA:258,10,1,58 +BRDA:263,11,0,5 +BRDA:263,11,1,70 +BRDA:274,12,0,75 BRDA:274,12,1,0 BRDA:278,13,0,0 -BRDA:278,13,1,27 +BRDA:278,13,1,75 BRDA:280,14,0,0 -BRDA:280,14,1,27 -BRDA:298,15,0,8 -BRDA:298,15,1,44 -BRDA:303,16,0,3 -BRDA:303,16,1,49 -BRDA:326,17,0,25 -BRDA:326,17,1,2 -BRDA:330,18,0,20 +BRDA:280,14,1,75 +BRDA:298,15,0,16 +BRDA:298,15,1,97 +BRDA:303,16,0,5 +BRDA:303,16,1,108 +BRDA:326,17,0,43 +BRDA:326,17,1,18 +BRDA:330,18,0,34 BRDA:330,18,1,0 -BRDA:330,19,0,20 -BRDA:330,19,1,20 +BRDA:330,19,0,34 +BRDA:330,19,1,34 BRDA:404,20,0,3 BRDA:404,20,1,2 BRDA:406,21,0,2 BRDA:406,21,1,1 -BRDA:434,22,0,1 -BRDA:434,22,1,1 +BRDA:434,22,0,3 +BRDA:434,22,1,2 BRDA:469,23,0,1 -BRDA:469,23,1,24 -BRDA:469,24,0,25 +BRDA:469,23,1,38 +BRDA:469,24,0,39 BRDA:469,24,1,2 -BRDA:484,25,0,6 +BRDA:484,25,0,20 BRDA:484,25,1,2 BRDA:487,26,0,1 BRDA:487,26,1,1 @@ -787,724 +787,734 @@ FN:105,(anonymous_5) FN:126,_restoreWindow FN:140,disableRemoteFlowControl FN:170,_send -FN:178,_read -FN:191,_onWindowIncrease -FN:212,_push +FN:177,_read +FN:211,_push FN:261,push FN:280,getLastQueuedFrame FN:298,_increaseWindow FN:322,_updateWindow FN:330,setInitialWindow FN:336,disableLocalFlowControl -FNF:17 -FNH:10 +FNF:16 +FNH:15 FNDA:0,noop -FNDA:68,Flow -FNDA:0,_receive -FNDA:105,_write -FNDA:0,(anonymous_5) -FNDA:0,_restoreWindow -FNDA:0,disableRemoteFlowControl -FNDA:0,_send -FNDA:524,_read -FNDA:34,_onWindowIncrease -FNDA:111,_push -FNDA:84,push -FNDA:12,getLastQueuedFrame -FNDA:37,_increaseWindow -FNDA:3,_updateWindow -FNDA:28,setInitialWindow -FNDA:0,disableLocalFlowControl +FNDA:162,Flow +FNDA:1,_receive +FNDA:308,_write +FNDA:100,(anonymous_5) +FNDA:7,_restoreWindow +FNDA:1,disableRemoteFlowControl +FNDA:1,_send +FNDA:1244,_read +FNDA:264,_push +FNDA:182,push +FNDA:34,getLastQueuedFrame +FNDA:90,_increaseWindow +FNDA:6,_updateWindow +FNDA:56,setInitialWindow +FNDA:1,disableLocalFlowControl DA:1,1 DA:10,1 DA:12,1 DA:69,1 DA:72,1 -DA:73,68 -DA:75,68 -DA:76,68 -DA:77,68 -DA:79,68 -DA:80,68 -DA:81,68 +DA:73,162 +DA:75,162 +DA:76,162 +DA:77,162 +DA:79,162 +DA:80,162 +DA:81,162 DA:83,1 DA:89,1 -DA:90,0 +DA:90,1 DA:97,1 -DA:98,105 -DA:100,105 -DA:101,19 -DA:104,105 -DA:105,0 -DA:106,0 -DA:107,0 -DA:108,0 -DA:110,0 -DA:115,105 -DA:118,105 -DA:120,3 +DA:98,308 +DA:100,308 +DA:101,59 +DA:104,308 +DA:105,100 +DA:106,100 +DA:107,100 +DA:108,7 +DA:110,100 +DA:115,208 +DA:118,308 +DA:120,6 DA:126,1 -DA:127,0 -DA:128,0 -DA:129,0 -DA:134,0 +DA:127,7 +DA:128,7 +DA:129,6 +DA:134,6 DA:140,1 -DA:141,0 -DA:142,0 +DA:141,1 +DA:142,1 DA:170,1 -DA:171,0 -DA:178,1 -DA:179,524 -DA:180,524 -DA:182,0 -DA:183,0 -DA:185,524 -DA:191,1 -DA:192,34 -DA:194,34 -DA:195,34 -DA:196,0 -DA:199,34 -DA:210,1 -DA:212,1 -DA:213,111 -DA:214,111 -DA:215,111 -DA:217,111 -DA:220,0 -DA:221,0 -DA:225,0 -DA:226,0 -DA:232,0 -DA:234,0 -DA:235,0 -DA:238,111 -DA:239,111 -DA:240,111 -DA:241,111 -DA:242,19 -DA:244,19 -DA:245,19 -DA:247,111 -DA:250,111 -DA:253,111 -DA:254,0 -DA:257,111 +DA:171,1 +DA:177,1 +DA:179,1244 +DA:180,1143 +DA:185,101 +DA:186,7 +DA:187,7 +DA:188,7 +DA:189,7 +DA:190,8 +DA:193,7 +DA:198,1244 +DA:209,1 +DA:211,1 +DA:212,264 +DA:213,357 +DA:214,357 +DA:216,257 +DA:219,100 +DA:220,7 +DA:224,93 +DA:225,93 +DA:232,93 +DA:234,93 +DA:235,93 +DA:238,357 +DA:239,357 +DA:240,350 +DA:241,350 +DA:242,140 +DA:244,140 +DA:245,140 +DA:247,350 +DA:250,357 +DA:253,264 +DA:254,7 +DA:257,264 DA:261,1 -DA:262,84 -DA:263,2 -DA:265,82 -DA:266,82 -DA:267,82 -DA:270,84 -DA:271,84 -DA:273,0 -DA:274,0 +DA:262,182 +DA:263,6 +DA:265,176 +DA:266,176 +DA:267,176 +DA:270,182 +DA:271,181 +DA:273,1 +DA:274,1 DA:280,1 -DA:281,12 -DA:282,12 +DA:281,34 +DA:282,34 DA:296,1 DA:298,1 -DA:299,37 -DA:300,3 -DA:301,3 -DA:303,34 -DA:304,34 -DA:305,34 -DA:306,0 -DA:307,0 -DA:309,34 +DA:299,90 +DA:300,1 +DA:301,1 +DA:303,89 +DA:304,89 +DA:305,89 +DA:306,1 +DA:307,1 +DA:309,88 DA:322,1 -DA:323,3 +DA:323,6 DA:330,1 -DA:331,28 -DA:332,28 +DA:331,56 +DA:332,56 DA:336,1 -DA:337,0 -LF:106 -LH:77 +DA:337,1 +LF:105 +LH:105 BRDA:1,1,0,1 BRDA:1,1,1,0 -BRDA:100,2,0,19 -BRDA:100,2,1,86 -BRDA:104,3,0,0 -BRDA:104,3,1,105 -BRDA:104,4,0,105 -BRDA:104,4,1,31 -BRDA:104,4,2,17 -BRDA:107,5,0,0 -BRDA:107,5,1,0 -BRDA:118,6,0,3 -BRDA:118,6,1,102 -BRDA:118,7,0,105 -BRDA:118,7,1,3 -BRDA:118,7,2,0 -BRDA:128,8,0,0 -BRDA:128,8,1,0 -BRDA:128,9,0,0 -BRDA:128,9,1,0 -BRDA:128,9,2,0 -BRDA:179,10,0,524 -BRDA:179,10,1,0 -BRDA:195,11,0,34 -BRDA:195,11,1,34 -BRDA:251,12,0,111 -BRDA:251,12,1,0 -BRDA:215,13,0,111 -BRDA:215,13,1,0 -BRDA:215,14,0,111 -BRDA:215,14,1,109 -BRDA:215,14,2,26 -BRDA:215,14,3,26 -BRDA:220,15,0,0 -BRDA:220,15,1,0 -BRDA:239,16,0,111 -BRDA:239,16,1,0 -BRDA:241,17,0,19 -BRDA:241,17,1,92 -BRDA:241,18,0,111 -BRDA:241,18,1,109 -BRDA:241,18,2,26 -BRDA:253,19,0,0 -BRDA:253,19,1,111 -BRDA:262,20,0,2 -BRDA:262,20,1,82 -BRDA:265,21,0,82 -BRDA:265,21,1,71 -BRDA:270,22,0,84 -BRDA:270,22,1,0 -BRDA:282,23,0,12 -BRDA:282,23,1,12 -BRDA:299,24,0,3 -BRDA:299,24,1,34 -BRDA:299,25,0,37 -BRDA:299,25,1,4 -BRDA:305,26,0,0 -BRDA:305,26,1,34 -BRDA:305,27,0,34 -BRDA:305,27,1,26 -BRDA:323,28,0,0 -BRDA:323,28,1,3 -BRF:62 -BRH:42 +BRDA:100,2,0,59 +BRDA:100,2,1,249 +BRDA:104,3,0,100 +BRDA:104,3,1,208 +BRDA:104,4,0,308 +BRDA:104,4,1,180 +BRDA:104,4,2,133 +BRDA:107,5,0,7 +BRDA:107,5,1,93 +BRDA:118,6,0,6 +BRDA:118,6,1,302 +BRDA:118,7,0,308 +BRDA:118,7,1,6 +BRDA:118,7,2,6 +BRDA:128,8,0,6 +BRDA:128,8,1,1 +BRDA:128,9,0,7 +BRDA:128,9,1,6 +BRDA:128,9,2,6 +BRDA:179,10,0,1143 +BRDA:179,10,1,101 +BRDA:185,11,0,7 +BRDA:185,11,1,94 +BRDA:189,12,0,15 +BRDA:189,12,1,14 +BRDA:193,13,0,7 +BRDA:193,13,1,7 +BRDA:193,13,2,1 +BRDA:193,13,3,1 +BRDA:251,14,0,357 +BRDA:251,14,1,100 +BRDA:214,15,0,257 +BRDA:214,15,1,100 +BRDA:214,16,0,357 +BRDA:214,16,1,351 +BRDA:214,16,2,190 +BRDA:214,16,3,163 +BRDA:219,17,0,7 +BRDA:219,17,1,93 +BRDA:239,18,0,350 +BRDA:239,18,1,7 +BRDA:241,19,0,140 +BRDA:241,19,1,210 +BRDA:241,20,0,350 +BRDA:241,20,1,344 +BRDA:241,20,2,183 +BRDA:253,21,0,7 +BRDA:253,21,1,257 +BRDA:262,22,0,6 +BRDA:262,22,1,176 +BRDA:265,23,0,176 +BRDA:265,23,1,135 +BRDA:270,24,0,181 +BRDA:270,24,1,1 +BRDA:282,25,0,34 +BRDA:282,25,1,34 +BRDA:299,26,0,1 +BRDA:299,26,1,89 +BRDA:299,27,0,90 +BRDA:299,27,1,2 +BRDA:305,28,0,1 +BRDA:305,28,1,88 +BRDA:305,29,0,89 +BRDA:305,29,1,43 +BRDA:323,30,0,1 +BRDA:323,30,1,5 +BRF:68 +BRH:67 end_of_record TN: SF:/data/upstream/node-http2/lib/stream.js FN:1,noop FN:47,Stream FN:73,_initializeManagement -FN:76,(anonymous_4) -FN:79,(anonymous_5) -FN:85,(anonymous_6) -FN:90,promise -FN:101,headers -FN:108,priority -FN:130,reset -FN:172,_initializeDataFlow -FN:185,_receive -FN:217,_read -FN:226,_write -FN:244,_send -FN:261,_finishing -FN:304,_initializeState -FN:314,transition -FN:324,activeState -FN:331,transition -FN:553,(anonymous_21) +FN:77,(anonymous_4) +FN:80,(anonymous_5) +FN:86,(anonymous_6) +FN:91,promise +FN:102,headers +FN:109,priority +FN:133,reset +FN:178,_initializeDataFlow +FN:191,_receive +FN:223,_read +FN:232,_write +FN:250,_send +FN:262,_finishing +FN:309,_initializeState +FN:320,transition +FN:329,activeState +FN:336,transition +FN:564,(anonymous_21) FNF:21 -FNH:19 +FNH:18 FNDA:0,noop -FNDA:43,Stream -FNDA:43,_initializeManagement -FNDA:8,(anonymous_4) -FNDA:20,(anonymous_5) -FNDA:2,(anonymous_6) -FNDA:4,promise -FNDA:18,headers -FNDA:2,priority -FNDA:15,reset -FNDA:43,_initializeDataFlow -FNDA:53,_receive -FNDA:13,_read -FNDA:8,_write -FNDA:335,_send -FNDA:12,_finishing -FNDA:43,_initializeState -FNDA:56,transition -FNDA:100,activeState -FNDA:110,transition -FNDA:0,(anonymous_21) +FNDA:103,Stream +FNDA:103,_initializeManagement +FNDA:6,(anonymous_4) +FNDA:39,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:6,promise +FNDA:40,headers +FNDA:0,priority +FNDA:26,reset +FNDA:103,_initializeDataFlow +FNDA:87,_receive +FNDA:35,_read +FNDA:18,_write +FNDA:690,_send +FNDA:34,_finishing +FNDA:103,_initializeState +FNDA:155,transition +FNDA:220,activeState +FNDA:268,transition +FNDA:6,(anonymous_21) DA:1,1 DA:12,1 DA:14,1 DA:47,1 -DA:48,43 -DA:51,43 -DA:54,43 -DA:57,43 -DA:60,43 +DA:48,103 +DA:51,103 +DA:54,103 +DA:57,103 +DA:60,103 DA:63,1 DA:69,1 DA:70,1 DA:73,1 -DA:74,43 -DA:75,43 -DA:76,43 -DA:77,8 -DA:79,43 -DA:80,20 -DA:81,0 -DA:83,20 -DA:85,43 -DA:86,2 -DA:90,1 -DA:91,4 -DA:92,4 -DA:93,4 -DA:98,4 -DA:101,1 -DA:102,18 -DA:108,1 -DA:109,2 -DA:110,2 +DA:74,103 +DA:75,103 +DA:76,103 +DA:77,103 +DA:78,6 +DA:80,103 +DA:81,39 +DA:82,0 +DA:84,39 +DA:86,103 +DA:87,0 +DA:91,1 +DA:92,6 +DA:93,6 +DA:94,6 +DA:99,6 +DA:102,1 +DA:103,40 +DA:109,1 +DA:110,0 DA:111,0 -DA:113,0 +DA:112,0 DA:114,0 DA:115,0 -DA:117,0 -DA:124,2 -DA:125,2 -DA:126,2 -DA:130,1 -DA:131,15 -DA:170,1 -DA:172,1 -DA:173,43 -DA:174,43 -DA:175,43 -DA:176,43 -DA:177,43 -DA:178,43 -DA:179,43 -DA:181,43 -DA:185,1 -DA:186,53 -DA:188,53 -DA:192,53 -DA:193,20 -DA:194,20 -DA:195,0 -DA:196,0 -DA:202,33 -DA:206,53 -DA:207,12 -DA:210,53 -DA:211,53 -DA:217,1 -DA:218,13 -DA:219,0 -DA:220,0 -DA:221,0 -DA:226,1 -DA:228,8 -DA:234,8 -DA:235,8 -DA:237,0 -DA:244,1 -DA:245,335 -DA:246,0 -DA:247,0 -DA:248,0 -DA:256,1 -DA:261,1 -DA:262,12 -DA:263,12 -DA:264,12 -DA:265,5 -DA:266,5 -DA:267,5 -DA:268,5 -DA:270,7 -DA:304,1 -DA:305,43 -DA:306,43 -DA:307,43 -DA:308,43 -DA:309,43 -DA:314,1 -DA:315,56 -DA:316,56 -DA:317,56 -DA:318,56 -DA:324,1 -DA:325,100 -DA:331,1 -DA:332,110 -DA:333,110 -DA:335,110 -DA:336,110 -DA:337,110 -DA:338,40 -DA:339,38 -DA:340,2 -DA:341,15 -DA:342,0 -DA:343,12 -DA:344,0 -DA:345,0 -DA:346,3 -DA:349,110 -DA:351,110 -DA:358,24 -DA:359,20 -DA:360,20 -DA:361,1 -DA:363,20 -DA:365,4 -DA:367,24 -DA:379,6 -DA:380,2 -DA:381,4 -DA:382,0 -DA:383,4 -DA:386,4 -DA:388,6 -DA:398,6 -DA:399,0 -DA:400,6 -DA:401,2 -DA:402,4 +DA:116,0 +DA:118,0 +DA:125,0 +DA:126,0 +DA:127,0 +DA:133,1 +DA:134,26 +DA:135,19 +DA:136,19 +DA:176,1 +DA:178,1 +DA:179,103 +DA:180,103 +DA:181,103 +DA:182,103 +DA:183,103 +DA:184,103 +DA:185,103 +DA:187,103 +DA:191,1 +DA:192,87 +DA:194,87 +DA:198,87 +DA:199,42 +DA:200,42 +DA:201,0 +DA:202,0 +DA:208,45 +DA:212,87 +DA:213,33 +DA:216,87 +DA:217,87 +DA:223,1 +DA:224,35 +DA:225,0 +DA:226,0 +DA:227,0 +DA:232,1 +DA:234,18 +DA:240,18 +DA:241,18 +DA:243,0 +DA:250,1 +DA:251,690 +DA:252,0 +DA:253,0 +DA:254,0 +DA:262,1 +DA:263,34 +DA:268,34 +DA:269,34 +DA:270,10 +DA:271,10 +DA:272,10 +DA:273,10 +DA:275,24 +DA:309,1 +DA:310,103 +DA:311,103 +DA:312,103 +DA:313,103 +DA:314,103 +DA:315,103 +DA:320,1 +DA:321,155 +DA:322,155 +DA:323,155 +DA:324,155 +DA:329,1 +DA:330,220 +DA:336,1 +DA:337,268 +DA:338,268 +DA:340,268 +DA:341,268 +DA:342,268 +DA:343,106 +DA:344,87 +DA:345,8 +DA:346,33 +DA:347,24 +DA:348,10 +DA:351,268 +DA:353,268 +DA:360,55 +DA:361,40 +DA:362,40 +DA:363,3 +DA:365,40 +DA:366,15 +DA:367,6 +DA:369,9 +DA:371,55 +DA:383,18 +DA:384,4 +DA:385,14 +DA:386,6 +DA:387,8 +DA:390,8 +DA:392,18 +DA:402,18 +DA:403,6 +DA:404,12 DA:405,4 -DA:407,6 -DA:419,23 -DA:420,9 -DA:421,14 -DA:422,0 -DA:426,23 -DA:435,21 -DA:436,9 -DA:437,12 -DA:440,0 -DA:442,21 -DA:455,15 -DA:456,5 -DA:457,10 -DA:460,3 -DA:462,15 -DA:485,15 -DA:489,0 -DA:491,15 -DA:497,110 -DA:498,12 -DA:507,110 -DA:508,8 -DA:510,8 -DA:511,8 -DA:515,110 -DA:516,50 -DA:517,50 -DA:518,29 -DA:520,21 -DA:522,60 -DA:523,28 -DA:527,110 -DA:528,15 -DA:531,15 -DA:532,0 -DA:533,0 -DA:539,15 -DA:540,15 -DA:541,15 -DA:542,15 -DA:550,1 -DA:552,1 -DA:553,1 -DA:554,0 -DA:555,0 -DA:556,0 -DA:558,0 -LF:189 -LH:160 +DA:406,8 +DA:409,8 +DA:411,18 +DA:423,61 +DA:424,27 +DA:425,34 +DA:426,2 +DA:430,61 +DA:439,55 +DA:440,23 +DA:441,32 +DA:444,3 +DA:446,55 +DA:459,36 +DA:460,21 +DA:461,15 +DA:464,3 +DA:466,36 +DA:489,25 +DA:494,14 +DA:496,25 +DA:502,268 +DA:503,64 +DA:504,64 +DA:513,268 +DA:514,13 +DA:516,13 +DA:517,13 +DA:521,268 +DA:522,110 +DA:523,110 +DA:524,57 +DA:526,53 +DA:528,158 +DA:529,85 +DA:533,268 +DA:534,45 +DA:543,45 +DA:544,20 +DA:545,20 +DA:551,25 +DA:552,25 +DA:553,25 +DA:561,1 +DA:563,1 +DA:564,1 +DA:565,6 +DA:566,2 +DA:567,2 +DA:569,6 +LF:191 +LH:170 BRDA:1,1,0,1 BRDA:1,1,1,0 -BRDA:80,2,0,0 -BRDA:80,2,1,20 -BRDA:109,3,0,2 -BRDA:109,3,1,0 -BRDA:109,4,0,2 -BRDA:109,4,1,2 -BRDA:109,4,2,0 -BRDA:110,5,0,0 -BRDA:110,5,1,2 -BRDA:114,6,0,0 -BRDA:114,6,1,0 -BRDA:114,7,0,0 -BRDA:114,7,1,0 -BRDA:114,7,2,0 -BRDA:192,8,0,20 -BRDA:192,8,1,33 -BRDA:194,9,0,0 -BRDA:194,9,1,20 -BRDA:206,10,0,12 -BRDA:206,10,1,41 -BRDA:210,11,0,53 -BRDA:210,11,1,0 -BRDA:218,12,0,0 -BRDA:218,12,1,13 -BRDA:234,13,0,8 -BRDA:234,13,1,0 -BRDA:245,14,0,0 -BRDA:245,14,1,335 -BRDA:264,15,0,5 -BRDA:264,15,1,7 -BRDA:264,16,0,12 -BRDA:264,16,1,5 -BRDA:264,16,2,1 -BRDA:266,17,0,5 -BRDA:266,17,1,0 -BRDA:315,18,0,56 -BRDA:315,18,1,0 -BRDA:325,19,0,100 -BRDA:325,19,1,66 -BRDA:325,19,2,58 -BRDA:337,20,0,40 -BRDA:337,20,1,38 -BRDA:337,20,2,2 -BRDA:337,20,3,15 -BRDA:337,20,4,0 -BRDA:337,20,5,12 -BRDA:337,20,6,0 -BRDA:337,20,7,0 -BRDA:337,20,8,3 -BRDA:351,21,0,24 -BRDA:351,21,1,6 -BRDA:351,21,2,6 -BRDA:351,21,3,23 -BRDA:351,21,4,21 -BRDA:351,21,5,15 -BRDA:351,21,6,15 -BRDA:358,22,0,20 -BRDA:358,22,1,4 -BRDA:360,23,0,1 -BRDA:360,23,1,19 -BRDA:361,24,0,0 -BRDA:361,24,1,1 -BRDA:379,25,0,2 -BRDA:379,25,1,4 -BRDA:379,26,0,6 -BRDA:379,26,1,2 -BRDA:381,27,0,0 -BRDA:381,27,1,4 -BRDA:383,28,0,0 -BRDA:383,28,1,4 -BRDA:383,29,0,4 -BRDA:383,29,1,4 -BRDA:398,30,0,0 -BRDA:398,30,1,6 -BRDA:400,31,0,2 -BRDA:400,31,1,4 -BRDA:400,32,0,6 -BRDA:400,32,1,6 -BRDA:402,33,0,0 -BRDA:402,33,1,4 -BRDA:402,34,0,4 -BRDA:402,34,1,0 -BRDA:419,35,0,9 -BRDA:419,35,1,14 -BRDA:420,36,0,7 -BRDA:420,36,1,2 -BRDA:421,37,0,0 -BRDA:421,37,1,14 -BRDA:435,38,0,9 -BRDA:435,38,1,12 -BRDA:435,39,0,21 -BRDA:435,39,1,21 -BRDA:435,39,2,21 -BRDA:437,40,0,12 -BRDA:437,40,1,0 -BRDA:437,41,0,12 -BRDA:437,41,1,0 -BRDA:437,41,2,0 -BRDA:437,41,3,0 -BRDA:455,42,0,5 -BRDA:455,42,1,10 -BRDA:455,43,0,15 -BRDA:455,43,1,15 -BRDA:455,43,2,12 -BRDA:457,44,0,7 -BRDA:457,44,1,3 -BRDA:457,45,0,10 -BRDA:457,45,1,3 -BRDA:457,45,2,3 -BRDA:457,45,3,3 -BRDA:485,46,0,15 -BRDA:485,46,1,0 -BRDA:485,47,0,15 -BRDA:485,47,1,15 -BRDA:485,47,2,0 -BRDA:485,47,3,0 -BRDA:485,47,4,0 -BRDA:485,47,5,0 -BRDA:485,47,6,0 -BRDA:497,48,0,12 -BRDA:497,48,1,98 -BRDA:497,49,0,110 -BRDA:497,49,1,53 -BRDA:497,49,2,53 -BRDA:507,50,0,8 -BRDA:507,50,1,102 -BRDA:507,51,0,110 -BRDA:507,51,1,12 -BRDA:510,52,0,4 -BRDA:510,52,1,4 -BRDA:515,53,0,50 -BRDA:515,53,1,60 -BRDA:517,54,0,29 -BRDA:517,54,1,21 -BRDA:522,55,0,28 -BRDA:522,55,1,32 -BRDA:527,56,0,15 -BRDA:527,56,1,95 -BRDA:531,57,0,0 -BRDA:531,57,1,15 -BRDA:554,58,0,0 -BRDA:554,58,1,0 -BRF:144 -BRH:104 +BRDA:81,2,0,0 +BRDA:81,2,1,39 +BRDA:110,3,0,0 +BRDA:110,3,1,0 +BRDA:110,4,0,0 +BRDA:110,4,1,0 +BRDA:110,4,2,0 +BRDA:111,5,0,0 +BRDA:111,5,1,0 +BRDA:115,6,0,0 +BRDA:115,6,1,0 +BRDA:115,7,0,0 +BRDA:115,7,1,0 +BRDA:115,7,2,0 +BRDA:134,8,0,19 +BRDA:134,8,1,7 +BRDA:198,9,0,42 +BRDA:198,9,1,45 +BRDA:200,10,0,0 +BRDA:200,10,1,42 +BRDA:212,11,0,33 +BRDA:212,11,1,54 +BRDA:216,12,0,87 +BRDA:216,12,1,0 +BRDA:224,13,0,0 +BRDA:224,13,1,35 +BRDA:240,14,0,18 +BRDA:240,14,1,0 +BRDA:251,15,0,0 +BRDA:251,15,1,690 +BRDA:269,16,0,10 +BRDA:269,16,1,24 +BRDA:269,17,0,34 +BRDA:269,17,1,10 +BRDA:269,17,2,4 +BRDA:271,18,0,10 +BRDA:271,18,1,0 +BRDA:330,19,0,220 +BRDA:330,19,1,133 +BRDA:330,19,2,117 +BRDA:342,20,0,106 +BRDA:342,20,1,87 +BRDA:342,20,2,8 +BRDA:342,20,3,33 +BRDA:342,20,4,24 +BRDA:342,20,5,10 +BRDA:353,21,0,55 +BRDA:353,21,1,18 +BRDA:353,21,2,18 +BRDA:353,21,3,61 +BRDA:353,21,4,55 +BRDA:353,21,5,36 +BRDA:353,21,6,25 +BRDA:360,22,0,40 +BRDA:360,22,1,15 +BRDA:362,23,0,3 +BRDA:362,23,1,37 +BRDA:363,24,0,0 +BRDA:363,24,1,3 +BRDA:366,25,0,6 +BRDA:366,25,1,9 +BRDA:366,26,0,15 +BRDA:366,26,1,10 +BRDA:383,27,0,4 +BRDA:383,27,1,14 +BRDA:383,28,0,18 +BRDA:383,28,1,13 +BRDA:385,29,0,6 +BRDA:385,29,1,8 +BRDA:387,30,0,0 +BRDA:387,30,1,8 +BRDA:387,31,0,8 +BRDA:387,31,1,4 +BRDA:402,32,0,6 +BRDA:402,32,1,12 +BRDA:404,33,0,4 +BRDA:404,33,1,8 +BRDA:404,34,0,12 +BRDA:404,34,1,8 +BRDA:406,35,0,0 +BRDA:406,35,1,8 +BRDA:406,36,0,8 +BRDA:406,36,1,4 +BRDA:423,37,0,27 +BRDA:423,37,1,34 +BRDA:424,38,0,18 +BRDA:424,38,1,9 +BRDA:425,39,0,2 +BRDA:425,39,1,32 +BRDA:439,40,0,23 +BRDA:439,40,1,32 +BRDA:439,41,0,55 +BRDA:439,41,1,53 +BRDA:439,41,2,50 +BRDA:441,42,0,29 +BRDA:441,42,1,3 +BRDA:441,43,0,32 +BRDA:441,43,1,3 +BRDA:441,43,2,3 +BRDA:441,43,3,3 +BRDA:459,44,0,21 +BRDA:459,44,1,15 +BRDA:459,45,0,36 +BRDA:459,45,1,31 +BRDA:459,45,2,28 +BRDA:461,46,0,12 +BRDA:461,46,1,3 +BRDA:461,47,0,15 +BRDA:461,47,1,3 +BRDA:461,47,2,3 +BRDA:461,47,3,3 +BRDA:489,48,0,11 +BRDA:489,48,1,14 +BRDA:489,49,0,25 +BRDA:489,49,1,7 +BRDA:489,49,2,23 +BRDA:489,49,3,18 +BRDA:489,49,4,12 +BRDA:489,49,5,6 +BRDA:489,49,6,5 +BRDA:489,49,7,4 +BRDA:502,50,0,64 +BRDA:502,50,1,204 +BRDA:502,51,0,268 +BRDA:502,51,1,89 +BRDA:513,52,0,13 +BRDA:513,52,1,255 +BRDA:513,53,0,268 +BRDA:513,53,1,24 +BRDA:516,54,0,6 +BRDA:516,54,1,7 +BRDA:521,55,0,110 +BRDA:521,55,1,158 +BRDA:523,56,0,57 +BRDA:523,56,1,53 +BRDA:528,57,0,85 +BRDA:528,57,1,73 +BRDA:533,58,0,45 +BRDA:533,58,1,223 +BRDA:543,59,0,20 +BRDA:543,59,1,25 +BRDA:565,60,0,2 +BRDA:565,60,1,4 +BRF:145 +BRH:122 end_of_record TN: SF:/data/upstream/node-http2/lib/endpoint.js -FN:14,Endpoint -FN:49,_writePrelude -FN:55,_readPrelude -FN:60,_temporalWrite -FN:118,_initializeDataFlow -FN:142,_read -FN:149,_write -FN:156,_initializeManagement -FN:160,createStream -FN:167,_initializeErrorHandling -FN:175,_error -FN:180,close -FN:190,(anonymous_13) -FNF:13 -FNH:10 -FNDA:4,Endpoint -FNDA:2,_writePrelude -FNDA:2,_readPrelude -FNDA:2,_temporalWrite -FNDA:4,_initializeDataFlow -FNDA:31,_read -FNDA:10,_write -FNDA:4,_initializeManagement -FNDA:1,createStream -FNDA:4,_initializeErrorHandling -FNDA:0,_error -FNDA:0,close -FNDA:0,(anonymous_13) +FN:1,noop +FN:16,Endpoint +FN:50,_writePrelude +FN:56,_readPrelude +FN:61,_temporalWrite +FN:119,_initializeDataFlow +FN:143,_read +FN:150,_write +FN:157,_initializeManagement +FN:161,createStream +FN:168,_initializeErrorHandling +FN:176,_error +FN:181,close +FN:191,(anonymous_14) +FNF:14 +FNH:13 +FNDA:0,noop +FNDA:22,Endpoint +FNDA:11,_writePrelude +FNDA:11,_readPrelude +FNDA:10,_temporalWrite +FNDA:22,_initializeDataFlow +FNDA:256,_read +FNDA:46,_write +FNDA:22,_initializeManagement +FNDA:10,createStream +FNDA:22,_initializeErrorHandling +FNDA:1,_error +FNDA:2,close +FNDA:6,(anonymous_14) DA:1,1 -DA:2,1 DA:3,1 DA:4,1 DA:5,1 DA:6,1 +DA:7,1 DA:8,1 -DA:14,1 -DA:15,4 -DA:18,4 -DA:22,4 -DA:23,2 -DA:24,2 -DA:25,2 -DA:27,0 -DA:33,4 -DA:36,4 -DA:39,4 -DA:41,1 -DA:46,1 -DA:49,1 -DA:50,2 -DA:51,2 -DA:55,1 -DA:57,2 -DA:60,2 -DA:63,2 -DA:64,2 -DA:65,48 -DA:66,0 -DA:68,0 -DA:69,0 -DA:71,48 -DA:76,2 -DA:77,2 -DA:78,2 -DA:79,2 -DA:80,2 -DA:118,1 -DA:119,4 -DA:120,4 -DA:121,2 -DA:122,2 -DA:123,2 -DA:125,2 -DA:126,2 -DA:127,2 -DA:130,4 -DA:131,4 -DA:132,4 -DA:133,4 -DA:134,4 -DA:136,4 -DA:137,4 -DA:139,4 -DA:142,1 -DA:143,31 -DA:144,31 -DA:145,18 -DA:149,1 -DA:150,10 -DA:156,1 -DA:157,4 -DA:160,1 +DA:10,1 +DA:16,1 +DA:17,22 +DA:20,22 +DA:24,22 +DA:25,22 +DA:26,11 +DA:28,11 +DA:34,22 +DA:37,22 +DA:40,22 +DA:42,1 +DA:47,1 +DA:50,1 +DA:51,11 +DA:52,11 +DA:56,1 +DA:58,11 +DA:61,11 +DA:64,10 +DA:65,10 +DA:66,217 +DA:67,1 +DA:69,1 +DA:70,1 +DA:72,216 +DA:77,9 +DA:78,9 +DA:79,9 +DA:80,9 +DA:81,9 +DA:119,1 +DA:120,22 +DA:121,22 +DA:122,11 +DA:123,11 +DA:124,11 +DA:126,11 +DA:127,11 +DA:128,11 +DA:131,22 +DA:132,22 +DA:133,22 +DA:134,22 +DA:135,22 +DA:137,22 +DA:138,22 +DA:140,22 +DA:143,1 +DA:144,256 +DA:145,256 +DA:146,156 +DA:150,1 +DA:151,46 +DA:157,1 +DA:158,22 DA:161,1 -DA:167,1 -DA:168,4 -DA:169,4 -DA:170,4 -DA:171,4 -DA:172,4 -DA:175,1 -DA:176,0 -DA:177,0 -DA:180,1 -DA:181,0 -DA:187,1 -DA:189,1 +DA:162,10 +DA:168,1 +DA:169,22 +DA:170,22 +DA:171,22 +DA:172,22 +DA:173,22 +DA:176,1 +DA:177,1 +DA:178,1 +DA:181,1 +DA:182,2 +DA:188,1 DA:190,1 -DA:191,0 -DA:192,0 -DA:193,0 -DA:195,0 +DA:191,1 +DA:192,6 +DA:193,2 +DA:194,2 +DA:196,6 LF:83 -LH:72 -BRDA:22,1,0,2 -BRDA:22,1,1,2 -BRDA:24,2,0,2 -BRDA:24,2,1,0 -BRDA:64,3,0,50 -BRDA:64,3,1,48 -BRDA:65,4,0,0 -BRDA:65,4,1,48 -BRDA:76,5,0,2 -BRDA:76,5,1,0 -BRDA:120,6,0,2 -BRDA:120,6,1,2 -BRDA:144,7,0,49 -BRDA:144,7,1,49 -BRDA:191,8,0,0 -BRDA:191,8,1,0 -BRF:16 -BRH:11 +LH:83 +BRDA:1,1,0,1 +BRDA:1,1,1,0 +BRDA:24,2,0,22 +BRDA:24,2,1,11 +BRDA:25,3,0,11 +BRDA:25,3,1,11 +BRDA:65,4,0,226 +BRDA:65,4,1,217 +BRDA:66,5,0,1 +BRDA:66,5,1,216 +BRDA:77,6,0,9 +BRDA:77,6,1,0 +BRDA:121,7,0,11 +BRDA:121,7,1,11 +BRDA:145,8,0,412 +BRDA:145,8,1,412 +BRDA:192,9,0,2 +BRDA:192,9,1,4 +BRF:18 +BRH:16 end_of_record TN: SF:/data/upstream/node-http2/lib/framer.js @@ -1540,36 +1550,36 @@ FN:672,(anonymous_29) FN:692,(anonymous_30) FN:700,(anonymous_31) FNF:31 -FNH:26 +FNH:28 FNDA:0,noop -FNDA:5,Serializer -FNDA:19,_transform -FNDA:5,Deserializer -FNDA:43,(anonymous_5) -FNDA:30,_transform -FNDA:29,writeCommonHeader -FNDA:29,readCommonHeader -FNDA:5,writeData -FNDA:5,readData -FNDA:6,writeHeadersPriority -FNDA:6,readHeadersPriority +FNDA:23,Serializer +FNDA:87,_transform +FNDA:23,Deserializer +FNDA:183,(anonymous_5) +FNDA:61,_transform +FNDA:97,writeCommonHeader +FNDA:90,readCommonHeader +FNDA:32,writeData +FNDA:31,readData +FNDA:25,writeHeadersPriority +FNDA:24,readHeadersPriority FNDA:2,writePriority FNDA:2,readPriority FNDA:2,writeRstStream FNDA:2,readRstStream -FNDA:6,writeSettings -FNDA:18,(anonymous_18) -FNDA:6,readSettings -FNDA:2,writePushPromise -FNDA:2,readPushPromise +FNDA:24,writeSettings +FNDA:72,(anonymous_18) +FNDA:20,readSettings +FNDA:4,writePushPromise +FNDA:4,readPushPromise FNDA:2,writePing FNDA:2,readPing -FNDA:2,writeGoaway -FNDA:2,readGoaway +FNDA:4,writeGoaway +FNDA:3,readGoaway FNDA:2,writeWindowUpdate FNDA:2,readWindowUpdate -FNDA:0,(anonymous_28) -FNDA:0,(anonymous_29) +FNDA:6,(anonymous_28) +FNDA:10,(anonymous_29) FNDA:0,(anonymous_30) FNDA:0,(anonymous_31) DA:5,1 @@ -1578,54 +1588,54 @@ DA:9,1 DA:10,1 DA:12,1 DA:25,1 -DA:26,5 -DA:27,5 +DA:26,23 +DA:27,23 DA:29,1 DA:34,1 -DA:35,19 -DA:37,19 -DA:39,19 -DA:40,19 -DA:41,19 -DA:43,19 -DA:44,40 +DA:35,87 +DA:37,87 +DA:39,87 +DA:40,87 +DA:41,87 +DA:43,87 +DA:44,178 DA:45,0 -DA:47,40 -DA:50,19 +DA:47,178 +DA:50,87 DA:64,1 -DA:65,5 -DA:66,5 -DA:67,5 +DA:65,23 +DA:66,23 +DA:67,23 DA:69,1 DA:76,1 -DA:77,43 -DA:78,43 -DA:79,43 -DA:80,43 -DA:81,24 +DA:77,183 +DA:78,183 +DA:79,183 +DA:80,183 +DA:81,103 DA:87,1 -DA:88,30 -DA:90,30 +DA:88,61 +DA:90,61 DA:91,0 -DA:94,30 -DA:97,50 -DA:98,50 -DA:99,50 -DA:100,50 -DA:107,50 -DA:108,19 -DA:109,19 -DA:117,50 -DA:118,19 -DA:119,19 -DA:120,19 +DA:94,61 +DA:97,148 +DA:98,148 +DA:99,148 +DA:100,148 +DA:107,148 +DA:108,80 +DA:109,80 +DA:117,148 +DA:118,80 +DA:119,80 +DA:120,80 DA:121,0 DA:122,0 -DA:124,19 -DA:125,19 +DA:124,80 +DA:125,80 DA:128,0 -DA:130,19 -DA:134,30 +DA:130,80 +DA:134,61 DA:182,1 DA:183,1 DA:185,1 @@ -1633,55 +1643,55 @@ DA:187,1 DA:189,1 DA:191,1 DA:193,1 -DA:194,29 -DA:196,29 -DA:197,29 -DA:198,31 -DA:200,29 -DA:201,29 -DA:203,29 -DA:204,29 -DA:206,29 -DA:207,29 -DA:208,30 -DA:209,30 -DA:210,30 -DA:211,6 -DA:214,29 -DA:216,29 -DA:217,29 -DA:219,29 +DA:194,97 +DA:196,97 +DA:197,97 +DA:198,101 +DA:200,97 +DA:201,97 +DA:203,97 +DA:204,97 +DA:206,97 +DA:207,97 +DA:208,70 +DA:209,70 +DA:210,70 +DA:211,46 +DA:214,97 +DA:216,97 +DA:217,97 +DA:219,97 DA:222,1 -DA:223,29 -DA:225,29 -DA:227,29 -DA:228,29 -DA:229,29 -DA:230,29 -DA:231,40 -DA:234,29 +DA:223,90 +DA:225,90 +DA:227,90 +DA:228,90 +DA:229,90 +DA:230,90 +DA:231,166 +DA:234,90 DA:261,1 DA:263,1 DA:265,1 DA:267,1 -DA:268,5 +DA:268,32 DA:271,1 -DA:272,5 +DA:272,31 DA:294,1 DA:296,1 DA:298,1 DA:310,1 -DA:311,6 +DA:311,25 DA:312,2 DA:313,2 DA:314,2 DA:315,2 -DA:317,6 +DA:317,25 DA:320,1 -DA:321,6 +DA:321,24 DA:322,2 DA:323,2 -DA:325,4 +DA:325,22 DA:336,1 DA:338,1 DA:340,1 @@ -1706,29 +1716,29 @@ DA:402,1 DA:404,1 DA:406,1 DA:426,1 -DA:427,6 -DA:428,6 -DA:429,18 -DA:430,12 -DA:431,12 -DA:432,12 -DA:435,6 -DA:437,6 -DA:438,6 -DA:439,12 -DA:440,12 -DA:443,6 +DA:427,24 +DA:428,24 +DA:429,72 +DA:430,32 +DA:431,32 +DA:432,32 +DA:435,24 +DA:437,24 +DA:438,24 +DA:439,32 +DA:440,32 +DA:443,24 DA:446,1 -DA:447,6 -DA:449,6 +DA:447,20 +DA:449,20 DA:450,0 -DA:452,6 -DA:453,12 -DA:454,12 -DA:455,12 -DA:456,12 +DA:452,20 +DA:453,26 +DA:454,26 +DA:455,26 +DA:456,26 DA:457,0 -DA:459,12 +DA:459,26 DA:464,1 DA:468,1 DA:472,1 @@ -1737,14 +1747,14 @@ DA:492,1 DA:494,1 DA:496,1 DA:510,1 -DA:511,2 -DA:512,2 -DA:513,2 -DA:514,2 -DA:515,2 +DA:511,4 +DA:512,4 +DA:513,4 +DA:514,4 +DA:515,4 DA:518,1 -DA:519,2 -DA:520,2 +DA:519,4 +DA:520,4 DA:534,1 DA:536,1 DA:538,1 @@ -1759,16 +1769,16 @@ DA:561,1 DA:563,1 DA:565,1 DA:582,1 -DA:583,2 -DA:585,2 -DA:586,2 -DA:588,2 -DA:589,2 -DA:590,2 -DA:592,2 +DA:583,4 +DA:585,4 +DA:586,4 +DA:588,4 +DA:589,4 +DA:590,4 +DA:592,4 DA:595,1 -DA:596,2 -DA:597,2 +DA:596,3 +DA:597,3 DA:611,1 DA:613,1 DA:615,1 @@ -1783,750 +1793,756 @@ DA:636,1 DA:654,1 DA:658,1 DA:659,1 -DA:660,0 +DA:660,6 DA:661,0 -DA:664,0 -DA:665,0 -DA:668,0 -DA:669,0 -DA:671,0 -DA:672,0 -DA:673,0 -DA:676,0 -DA:677,0 +DA:664,6 +DA:665,4 +DA:668,2 +DA:669,2 +DA:671,2 +DA:672,2 +DA:673,10 +DA:676,2 +DA:677,1 DA:678,0 -DA:680,0 -DA:683,0 +DA:680,1 +DA:683,1 DA:684,0 -DA:688,0 +DA:688,2 DA:689,0 -DA:692,0 +DA:692,2 DA:693,0 -DA:696,0 +DA:696,2 DA:700,1 DA:701,0 LF:233 -LH:204 +LH:219 BRDA:5,1,0,1 BRDA:5,1,1,0 BRDA:44,2,0,0 -BRDA:44,2,1,40 -BRDA:80,3,0,24 -BRDA:80,3,1,19 +BRDA:44,2,1,178 +BRDA:80,3,0,103 +BRDA:80,3,1,80 BRDA:90,4,0,0 -BRDA:90,4,1,30 -BRDA:107,5,0,19 -BRDA:107,5,1,31 -BRDA:107,6,0,50 -BRDA:107,6,1,36 -BRDA:117,7,0,19 -BRDA:117,7,1,31 -BRDA:117,8,0,50 -BRDA:117,8,1,19 -BRDA:118,9,0,19 +BRDA:90,4,1,61 +BRDA:107,5,0,80 +BRDA:107,5,1,68 +BRDA:107,6,0,148 +BRDA:107,6,1,136 +BRDA:117,7,0,80 +BRDA:117,7,1,68 +BRDA:117,8,0,148 +BRDA:117,8,1,80 +BRDA:118,9,0,80 BRDA:118,9,1,0 BRDA:120,10,0,0 -BRDA:120,10,1,19 -BRDA:210,11,0,6 +BRDA:120,10,1,80 +BRDA:210,11,0,46 BRDA:210,11,1,24 -BRDA:217,12,0,29 -BRDA:217,12,1,4 +BRDA:217,12,0,97 +BRDA:217,12,1,24 BRDA:311,13,0,2 -BRDA:311,13,1,4 +BRDA:311,13,1,23 BRDA:313,14,0,2 BRDA:313,14,1,2 BRDA:321,15,0,2 -BRDA:321,15,1,4 +BRDA:321,15,1,22 BRDA:385,16,0,2 BRDA:385,16,1,2 -BRDA:429,17,0,12 -BRDA:429,17,1,6 -BRDA:432,18,0,4 -BRDA:432,18,1,8 +BRDA:429,17,0,32 +BRDA:429,17,1,40 +BRDA:432,18,0,20 +BRDA:432,18,1,12 BRDA:449,19,0,0 -BRDA:449,19,1,6 +BRDA:449,19,1,20 BRDA:456,20,0,0 -BRDA:456,20,1,12 -BRDA:456,21,0,12 -BRDA:456,21,1,12 -BRDA:459,22,0,4 +BRDA:456,20,1,26 +BRDA:456,21,0,26 +BRDA:456,21,1,26 +BRDA:459,22,0,18 BRDA:459,22,1,8 -BRDA:512,23,0,2 -BRDA:512,23,1,2 +BRDA:512,23,0,4 +BRDA:512,23,1,4 BRDA:543,24,0,2 BRDA:543,24,1,2 BRDA:548,25,0,0 BRDA:548,25,1,2 -BRDA:585,26,0,2 -BRDA:585,26,1,2 -BRDA:589,27,0,2 -BRDA:589,27,1,2 +BRDA:585,26,0,4 +BRDA:585,26,1,4 +BRDA:589,27,0,4 +BRDA:589,27,1,4 BRDA:624,28,0,2 BRDA:624,28,1,2 BRDA:660,29,0,0 -BRDA:660,29,1,0 -BRDA:664,30,0,0 -BRDA:664,30,1,0 -BRDA:676,31,0,0 -BRDA:676,31,1,0 +BRDA:660,29,1,6 +BRDA:664,30,0,4 +BRDA:664,30,1,2 +BRDA:676,31,0,1 +BRDA:676,31,1,1 BRDA:677,32,0,0 -BRDA:677,32,1,0 +BRDA:677,32,1,1 BRDA:683,33,0,0 -BRDA:683,33,1,0 +BRDA:683,33,1,1 BRDA:688,34,0,0 -BRDA:688,34,1,0 -BRDA:692,35,0,0 -BRDA:692,35,1,0 +BRDA:688,34,1,2 +BRDA:692,35,0,2 +BRDA:692,35,1,2 BRF:70 -BRH:48 +BRH:58 end_of_record TN: SF:/data/upstream/node-http2/lib/http.js -FN:133,noop -FN:142,(anonymous_2) -FN:148,(anonymous_3) -FN:155,IncomingMessage -FN:174,noop -FN:179,OutgoingMessage -FN:190,_write -FN:198,_finish -FN:206,setHeader -FN:214,removeHeader -FN:222,getHeader -FN:226,noop -FN:240,Server -FN:257,(anonymous_14) -FN:285,_start -FN:294,_onStream -FN:306,_fallback -FN:320,listen -FN:326,close -FN:331,setTimeout -FN:338,getTimeout -FN:345,setTimeout -FN:356,on -FN:364,createServer -FN:382,IncomingRequest -FN:391,_onHeaders -FN:458,OutgoingResponse -FN:471,writeHead -FN:497,_implicitHeaders -FN:503,write -FN:508,end -FN:513,_onRequestHeaders -FN:517,push -FN:548,on -FN:564,request -FN:567,get -FN:574,Agent -FN:596,request -FN:633,(anonymous_39) -FN:642,negotiated -FN:660,(anonymous_41) -FN:673,get -FN:679,unbundleSocket -FN:691,getMaxSockets -FN:694,setMaxSockets -FN:704,OutgoingRequest -FN:714,_start -FN:746,_fallback -FN:753,setPriority -FN:763,on -FN:772,setNoDelay -FN:780,setSocketKeepAlive -FN:788,setTimeout -FN:797,abort -FN:808,_onPromise -FN:823,IncomingResponse -FN:829,_onHeaders -FN:858,IncomingPromise -FN:860,noop -FN:877,cancel -FN:881,setPriority -FNF:61 -FNH:36 -FNDA:79,noop -FNDA:10,(anonymous_2) +FN:152,noop +FN:161,(anonymous_2) +FN:167,(anonymous_3) +FN:174,IncomingMessage +FN:198,OutgoingMessage +FN:209,_write +FN:217,_finish +FN:225,setHeader +FN:233,removeHeader +FN:241,getHeader +FN:259,Server +FN:276,(anonymous_12) +FN:304,_start +FN:313,_onStream +FN:325,_fallback +FN:339,listen +FN:345,close +FN:350,setTimeout +FN:357,getTimeout +FN:364,setTimeout +FN:375,on +FN:383,createServer +FN:401,IncomingRequest +FN:410,_onHeaders +FN:477,OutgoingResponse +FN:490,writeHead +FN:516,_implicitHeaders +FN:522,write +FN:527,end +FN:532,_onRequestHeaders +FN:536,push +FN:562,on +FN:578,request +FN:581,get +FN:588,Agent +FN:610,request +FN:663,(anonymous_37) +FN:672,negotiated +FN:699,(anonymous_39) +FN:712,get +FN:718,unbundleSocket +FN:730,getMaxSockets +FN:733,setMaxSockets +FN:743,OutgoingRequest +FN:753,_start +FN:785,_fallback +FN:791,setPriority +FN:801,on +FN:810,setNoDelay +FN:818,setSocketKeepAlive +FN:826,setTimeout +FN:835,abort +FN:846,_onPromise +FN:861,IncomingResponse +FN:867,_onHeaders +FN:896,IncomingPromise +FN:915,cancel +FN:919,setPriority +FNF:58 +FNH:54 +FNDA:2,noop +FNDA:3,(anonymous_2) FNDA:6,(anonymous_3) -FNDA:2,IncomingMessage -FNDA:0,noop -FNDA:2,OutgoingMessage -FNDA:1,_write -FNDA:3,_finish -FNDA:0,setHeader -FNDA:0,removeHeader -FNDA:0,getHeader -FNDA:0,noop -FNDA:1,Server -FNDA:1,(anonymous_14) -FNDA:1,_start -FNDA:1,_onStream -FNDA:0,_fallback -FNDA:1,listen -FNDA:0,close -FNDA:0,setTimeout -FNDA:0,getTimeout -FNDA:0,setTimeout -FNDA:1,on -FNDA:1,createServer -FNDA:1,IncomingRequest -FNDA:1,_onHeaders -FNDA:1,OutgoingResponse -FNDA:1,writeHead -FNDA:2,_implicitHeaders -FNDA:1,write -FNDA:1,end -FNDA:1,_onRequestHeaders -FNDA:0,push -FNDA:1,on -FNDA:0,request -FNDA:1,get -FNDA:1,Agent -FNDA:1,request -FNDA:1,(anonymous_39) -FNDA:1,negotiated -FNDA:1,(anonymous_41) -FNDA:1,get -FNDA:1,unbundleSocket -FNDA:0,getMaxSockets -FNDA:0,setMaxSockets -FNDA:1,OutgoingRequest -FNDA:1,_start +FNDA:23,IncomingMessage +FNDA:25,OutgoingMessage +FNDA:12,_write +FNDA:28,_finish +FNDA:2,setHeader +FNDA:1,removeHeader +FNDA:3,getHeader +FNDA:12,Server +FNDA:8,(anonymous_12) +FNDA:9,_start +FNDA:9,_onStream FNDA:0,_fallback +FNDA:8,listen +FNDA:4,close +FNDA:1,setTimeout +FNDA:1,getTimeout +FNDA:1,setTimeout +FNDA:8,on +FNDA:9,createServer +FNDA:11,IncomingRequest +FNDA:11,_onHeaders +FNDA:11,OutgoingResponse +FNDA:11,writeHead +FNDA:21,_implicitHeaders +FNDA:10,write +FNDA:11,end +FNDA:9,_onRequestHeaders +FNDA:2,push +FNDA:11,on +FNDA:3,request +FNDA:7,get +FNDA:4,Agent +FNDA:11,request +FNDA:8,(anonymous_37) +FNDA:8,negotiated +FNDA:8,(anonymous_39) +FNDA:7,get +FNDA:8,unbundleSocket +FNDA:1,getMaxSockets +FNDA:1,setMaxSockets +FNDA:14,OutgoingRequest +FNDA:10,_start +FNDA:4,_fallback FNDA:0,setPriority -FNDA:3,on -FNDA:0,setNoDelay -FNDA:0,setSocketKeepAlive -FNDA:0,setTimeout -FNDA:0,abort -FNDA:0,_onPromise -FNDA:1,IncomingResponse -FNDA:1,_onHeaders -FNDA:0,IncomingPromise -FNDA:0,noop +FNDA:37,on +FNDA:3,setNoDelay +FNDA:3,setSocketKeepAlive +FNDA:3,setTimeout +FNDA:3,abort +FNDA:2,_onPromise +FNDA:12,IncomingResponse +FNDA:11,_onHeaders +FNDA:2,IncomingPromise FNDA:0,cancel FNDA:0,setPriority -DA:110,1 -DA:111,1 -DA:112,1 -DA:113,1 -DA:114,1 -DA:115,1 -DA:116,1 -DA:117,1 -DA:118,1 -DA:119,1 -DA:121,1 -DA:122,1 -DA:123,1 -DA:127,1 +DA:129,1 +DA:130,1 +DA:131,1 +DA:132,1 DA:133,1 DA:134,1 -DA:142,10 +DA:135,1 +DA:136,1 +DA:137,1 +DA:138,1 +DA:140,1 +DA:141,1 +DA:142,1 DA:146,1 -DA:147,1 -DA:148,1 -DA:149,6 -DA:155,1 -DA:157,2 -DA:158,2 -DA:159,2 -DA:161,2 -DA:165,2 -DA:166,2 -DA:167,2 -DA:170,2 -DA:172,1 +DA:152,1 +DA:153,1 +DA:161,3 +DA:165,1 +DA:166,1 +DA:167,1 +DA:168,6 DA:174,1 -DA:179,1 -DA:181,2 -DA:183,2 -DA:184,2 -DA:186,2 -DA:188,1 -DA:190,1 +DA:176,23 +DA:177,23 +DA:178,23 +DA:180,23 +DA:184,23 +DA:185,23 +DA:186,23 +DA:189,23 DA:191,1 -DA:192,1 -DA:194,0 +DA:193,1 DA:198,1 -DA:199,3 -DA:200,2 -DA:202,1 -DA:206,1 -DA:207,0 -DA:208,0 -DA:210,0 -DA:214,1 -DA:215,0 -DA:216,0 -DA:218,0 -DA:222,1 -DA:223,0 -DA:226,1 -DA:231,1 -DA:232,1 +DA:200,25 +DA:202,25 +DA:203,25 +DA:205,25 +DA:207,1 +DA:209,1 +DA:210,12 +DA:211,11 +DA:213,1 +DA:217,1 +DA:218,28 +DA:219,21 +DA:221,7 +DA:225,1 +DA:226,2 +DA:227,0 +DA:229,2 DA:233,1 DA:234,1 -DA:235,1 -DA:240,1 +DA:235,0 +DA:237,1 DA:241,1 -DA:243,1 -DA:244,1 -DA:246,1 -DA:247,1 +DA:242,3 +DA:245,1 DA:250,1 DA:251,1 DA:252,1 DA:253,1 DA:254,1 -DA:255,1 -DA:256,1 -DA:257,1 -DA:258,1 DA:259,1 -DA:261,0 -DA:264,1 -DA:268,0 -DA:269,0 -DA:270,0 -DA:271,0 -DA:276,0 -DA:277,0 -DA:280,1 -DA:282,1 -DA:285,1 -DA:286,1 +DA:260,12 +DA:262,12 +DA:263,12 +DA:265,12 +DA:266,12 +DA:269,12 +DA:270,9 +DA:271,9 +DA:272,9 +DA:273,9 +DA:274,9 +DA:275,9 +DA:276,9 +DA:277,8 +DA:278,8 +DA:280,0 +DA:283,9 +DA:287,3 DA:288,1 -DA:291,1 -DA:293,1 -DA:294,1 -DA:295,1 -DA:296,1 -DA:298,1 +DA:289,1 +DA:290,1 +DA:295,2 +DA:296,2 +DA:299,10 DA:301,1 -DA:303,1 -DA:306,1 -DA:307,0 -DA:310,0 -DA:311,0 -DA:314,0 -DA:320,1 -DA:321,1 -DA:323,1 -DA:326,1 -DA:327,0 -DA:328,0 -DA:331,1 -DA:332,0 +DA:304,1 +DA:305,9 +DA:307,9 +DA:310,9 +DA:312,9 +DA:313,9 +DA:314,9 +DA:315,9 +DA:317,9 +DA:320,9 +DA:322,9 +DA:325,1 +DA:326,0 +DA:329,0 +DA:330,0 DA:333,0 -DA:337,1 -DA:339,0 -DA:340,0 -DA:342,0 -DA:346,0 -DA:347,0 +DA:339,1 +DA:340,8 +DA:342,8 +DA:345,1 +DA:346,4 +DA:347,4 +DA:350,1 +DA:351,1 +DA:352,1 DA:356,1 -DA:357,1 -DA:358,0 -DA:360,1 -DA:364,1 +DA:358,1 +DA:359,1 +DA:361,0 DA:365,1 -DA:366,0 -DA:367,0 -DA:370,1 -DA:372,1 -DA:373,1 -DA:376,1 -DA:382,1 +DA:366,1 +DA:375,1 +DA:376,8 +DA:377,0 +DA:379,8 DA:383,1 +DA:384,9 DA:385,1 -DA:391,1 -DA:395,1 +DA:386,1 +DA:389,9 +DA:391,8 +DA:392,8 +DA:395,8 +DA:401,1 +DA:402,11 DA:404,1 -DA:405,7 -DA:406,7 -DA:407,0 -DA:408,0 -DA:409,0 -DA:414,1 -DA:426,1 -DA:432,1 -DA:433,4 -DA:434,4 -DA:435,4 -DA:436,0 -DA:437,0 -DA:438,0 -DA:440,4 -DA:442,0 -DA:447,1 -DA:450,1 -DA:452,1 -DA:458,1 -DA:459,1 +DA:410,1 +DA:414,11 +DA:423,11 +DA:424,77 +DA:425,77 +DA:426,0 +DA:427,0 +DA:428,0 +DA:433,11 +DA:445,11 +DA:451,11 +DA:452,45 +DA:453,44 +DA:454,44 +DA:455,0 +DA:456,0 +DA:457,0 +DA:459,44 DA:461,1 -DA:463,1 -DA:464,1 -DA:465,1 -DA:467,1 -DA:469,1 -DA:471,1 -DA:472,1 -DA:473,0 -DA:475,1 -DA:478,1 -DA:480,1 -DA:481,0 -DA:484,1 -DA:485,1 +DA:466,11 +DA:469,11 +DA:471,11 +DA:477,1 +DA:478,11 +DA:480,11 +DA:482,11 +DA:483,11 +DA:484,11 +DA:486,11 DA:488,1 DA:490,1 +DA:491,11 DA:492,1 -DA:494,1 -DA:497,1 -DA:498,2 -DA:499,1 -DA:503,1 -DA:504,1 -DA:505,1 -DA:508,1 -DA:509,1 -DA:510,1 -DA:513,1 -DA:514,1 -DA:517,1 -DA:518,0 -DA:519,0 -DA:523,0 -DA:524,0 -DA:527,0 -DA:528,0 -DA:531,0 -DA:538,0 -DA:541,0 -DA:543,0 -DA:548,1 -DA:549,1 -DA:550,0 -DA:552,1 -DA:559,1 -DA:560,1 -DA:561,1 +DA:494,10 +DA:497,11 +DA:499,11 +DA:500,1 +DA:503,11 +DA:504,10 +DA:507,11 +DA:509,11 +DA:511,11 +DA:513,11 +DA:516,1 +DA:517,21 +DA:518,10 +DA:522,1 +DA:523,10 +DA:524,10 +DA:527,1 +DA:528,11 +DA:529,11 +DA:532,1 +DA:533,9 +DA:536,1 +DA:537,2 +DA:538,1 +DA:541,2 +DA:542,0 +DA:545,2 +DA:552,2 +DA:555,2 +DA:557,2 DA:562,1 -DA:563,1 -DA:564,1 -DA:565,0 -DA:567,1 -DA:568,1 +DA:563,11 +DA:564,0 +DA:566,11 +DA:573,1 DA:574,1 DA:575,1 +DA:576,1 DA:577,1 -DA:579,1 -DA:580,1 +DA:578,1 +DA:579,3 DA:581,1 -DA:587,1 -DA:591,1 -DA:592,1 -DA:594,1 -DA:596,1 -DA:597,1 -DA:598,1 -DA:601,1 -DA:602,1 -DA:603,1 -DA:604,1 -DA:605,1 -DA:607,1 -DA:608,0 -DA:609,0 -DA:612,1 -DA:614,1 -DA:615,1 -DA:618,1 -DA:621,1 -DA:622,0 -DA:623,0 -DA:628,1 -DA:629,1 -DA:630,1 -DA:631,1 -DA:633,1 -DA:634,1 -DA:635,0 -DA:637,1 +DA:582,7 +DA:588,1 +DA:589,4 +DA:591,4 +DA:593,4 +DA:594,4 +DA:595,4 +DA:601,4 +DA:605,4 +DA:606,4 +DA:608,1 +DA:610,1 +DA:611,11 +DA:612,7 +DA:615,11 +DA:616,11 +DA:617,11 +DA:618,11 +DA:619,11 +DA:621,11 +DA:622,1 +DA:623,1 +DA:626,10 +DA:628,10 +DA:629,7 +DA:632,10 +DA:639,10 +DA:640,1 DA:641,1 -DA:642,1 -DA:643,1 -DA:644,1 -DA:645,1 +DA:645,9 DA:646,1 DA:647,1 -DA:648,1 -DA:650,1 -DA:651,1 DA:652,1 DA:653,1 -DA:655,0 -DA:660,1 -DA:661,1 -DA:662,1 -DA:663,1 +DA:658,8 +DA:659,8 +DA:660,8 +DA:661,8 +DA:663,8 +DA:664,8 DA:665,0 -DA:670,1 -DA:673,1 -DA:674,1 -DA:675,1 -DA:676,1 -DA:679,1 -DA:680,1 -DA:681,1 +DA:667,8 +DA:671,8 +DA:672,1 +DA:673,8 +DA:674,8 +DA:675,8 +DA:676,8 +DA:677,8 +DA:678,8 +DA:679,8 +DA:681,8 DA:682,1 DA:683,1 -DA:684,1 -DA:685,1 -DA:686,1 -DA:687,1 -DA:690,1 -DA:692,0 -DA:695,0 -DA:699,1 -DA:704,1 -DA:705,1 -DA:707,1 -DA:709,1 -DA:710,1 +DA:685,0 +DA:688,7 +DA:689,7 +DA:691,7 +DA:692,7 +DA:694,0 +DA:699,8 +DA:700,8 +DA:701,8 +DA:702,8 +DA:704,0 +DA:709,10 DA:712,1 -DA:714,1 -DA:715,1 -DA:717,1 -DA:719,1 -DA:720,1 -DA:721,0 -DA:723,1 -DA:725,1 -DA:726,0 +DA:713,7 +DA:714,7 +DA:715,7 +DA:718,1 +DA:719,8 +DA:720,8 +DA:721,8 +DA:722,8 +DA:723,8 +DA:724,8 +DA:725,8 +DA:726,8 DA:729,1 -DA:730,1 DA:731,1 -DA:732,1 DA:734,1 -DA:736,1 DA:738,1 -DA:740,1 -DA:741,1 DA:743,1 -DA:746,1 -DA:747,0 -DA:748,0 -DA:750,0 +DA:744,14 +DA:746,14 +DA:748,14 +DA:749,14 +DA:751,1 DA:753,1 -DA:754,0 -DA:755,0 -DA:757,0 -DA:763,1 -DA:764,3 +DA:754,10 +DA:756,10 +DA:758,10 +DA:759,10 +DA:760,1 +DA:762,10 +DA:764,10 DA:765,0 -DA:767,3 -DA:772,1 -DA:773,0 -DA:774,0 -DA:775,0 -DA:776,0 -DA:780,1 -DA:781,0 -DA:782,0 -DA:783,0 -DA:784,0 -DA:788,1 -DA:789,0 -DA:790,0 -DA:791,0 +DA:768,10 +DA:769,10 +DA:770,10 +DA:771,10 +DA:773,10 +DA:775,10 +DA:777,10 +DA:779,10 +DA:780,10 +DA:782,10 +DA:785,1 +DA:786,4 +DA:787,4 +DA:788,4 +DA:791,1 DA:792,0 -DA:797,1 -DA:798,0 -DA:799,0 -DA:800,0 -DA:801,0 +DA:793,0 +DA:795,0 +DA:801,1 +DA:802,37 DA:803,0 -DA:808,1 -DA:809,0 -DA:811,0 -DA:813,0 -DA:814,0 -DA:816,0 -DA:823,1 -DA:824,1 +DA:805,37 +DA:810,1 +DA:811,3 +DA:812,1 +DA:813,2 +DA:814,1 +DA:818,1 +DA:819,3 +DA:820,1 +DA:821,2 +DA:822,1 DA:826,1 -DA:829,1 -DA:833,1 +DA:827,3 +DA:828,1 +DA:829,2 +DA:830,1 +DA:835,1 +DA:836,3 +DA:837,1 +DA:838,2 +DA:839,1 DA:841,1 -DA:842,1 -DA:843,0 -DA:844,0 -DA:845,0 -DA:847,1 -DA:848,1 -DA:851,1 -DA:852,1 -DA:858,1 -DA:859,0 -DA:860,0 -DA:861,0 -DA:862,0 -DA:864,0 -DA:866,0 -DA:868,0 -DA:870,0 -DA:871,0 -DA:873,0 -DA:875,1 -DA:877,1 -DA:878,0 -DA:881,1 +DA:846,1 +DA:847,2 +DA:849,2 +DA:851,2 +DA:852,2 +DA:854,0 +DA:861,1 +DA:862,12 +DA:864,1 +DA:867,1 +DA:871,11 +DA:879,11 +DA:880,11 +DA:881,0 DA:882,0 -DA:885,1 -LF:379 -LH:272 -BRDA:191,1,0,1 -BRDA:191,1,1,0 -BRDA:199,2,0,2 -BRDA:199,2,1,1 -BRDA:207,3,0,0 -BRDA:207,3,1,0 -BRDA:215,4,0,0 -BRDA:215,4,1,0 -BRDA:241,5,0,1 -BRDA:241,5,1,0 -BRDA:243,6,0,1 -BRDA:243,6,1,0 -BRDA:250,7,0,1 -BRDA:250,7,1,0 -BRDA:250,8,0,1 -BRDA:250,8,1,1 -BRDA:250,8,2,0 -BRDA:258,9,0,1 -BRDA:258,9,1,0 -BRDA:268,10,0,0 -BRDA:268,10,1,0 -BRDA:321,11,0,0 -BRDA:321,11,1,1 -BRDA:332,12,0,0 -BRDA:332,12,1,0 -BRDA:339,13,0,0 -BRDA:339,13,1,0 -BRDA:346,14,0,0 -BRDA:346,14,1,0 -BRDA:357,15,0,0 -BRDA:357,15,1,1 -BRDA:357,16,0,1 -BRDA:357,16,1,1 -BRDA:365,17,0,0 -BRDA:365,17,1,1 -BRDA:372,18,0,1 -BRDA:372,18,1,0 -BRDA:406,19,0,0 -BRDA:406,19,1,7 -BRDA:433,20,0,4 -BRDA:433,20,1,0 -BRDA:435,21,0,0 -BRDA:435,21,1,4 -BRDA:435,22,0,4 -BRDA:435,22,1,4 -BRDA:472,23,0,0 -BRDA:472,23,1,1 -BRDA:478,24,0,1 -BRDA:478,24,1,1 -BRDA:484,25,0,1 -BRDA:484,25,1,0 -BRDA:484,26,0,1 -BRDA:484,26,1,1 -BRDA:498,27,0,1 -BRDA:498,27,1,1 -BRDA:518,28,0,0 -BRDA:518,28,1,0 -BRDA:523,29,0,0 -BRDA:523,29,1,0 -BRDA:527,30,0,0 -BRDA:527,30,1,0 -BRDA:532,31,0,0 -BRDA:532,31,1,0 -BRDA:533,32,0,0 -BRDA:533,32,1,0 -BRDA:533,32,2,0 -BRDA:534,33,0,0 -BRDA:534,33,1,0 -BRDA:534,33,2,0 -BRDA:549,34,0,0 -BRDA:549,34,1,1 -BRDA:549,35,0,1 -BRDA:549,35,1,0 -BRDA:565,36,0,0 -BRDA:565,36,1,0 -BRDA:568,37,0,1 -BRDA:568,37,1,1 -BRDA:577,38,0,1 -BRDA:577,38,1,1 -BRDA:580,39,0,1 -BRDA:580,39,1,1 -BRDA:597,40,0,1 -BRDA:597,40,1,0 -BRDA:601,41,0,1 -BRDA:601,41,1,1 -BRDA:602,42,0,1 -BRDA:602,42,1,0 -BRDA:603,43,0,1 -BRDA:603,43,1,0 -BRDA:603,43,2,0 -BRDA:604,44,0,1 -BRDA:604,44,1,0 -BRDA:605,45,0,1 -BRDA:605,45,1,0 -BRDA:607,46,0,0 -BRDA:607,46,1,1 -BRDA:614,47,0,1 -BRDA:614,47,1,0 -BRDA:621,48,0,0 -BRDA:621,48,1,1 -BRDA:634,49,0,0 -BRDA:634,49,1,1 -BRDA:643,50,0,1 -BRDA:643,50,1,0 -BRDA:644,51,0,1 -BRDA:644,51,1,0 -BRDA:662,52,0,1 -BRDA:662,52,1,0 -BRDA:725,53,0,0 -BRDA:725,53,1,1 -BRDA:735,54,0,1 -BRDA:735,54,1,1 -BRDA:754,55,0,0 -BRDA:754,55,1,0 -BRDA:764,56,0,0 -BRDA:764,56,1,3 -BRDA:764,57,0,3 -BRDA:764,57,1,0 -BRDA:773,58,0,0 -BRDA:773,58,1,0 -BRDA:775,59,0,0 -BRDA:775,59,1,0 -BRDA:781,60,0,0 -BRDA:781,60,1,0 -BRDA:783,61,0,0 -BRDA:783,61,1,0 -BRDA:789,62,0,0 -BRDA:789,62,1,0 -BRDA:791,63,0,0 -BRDA:791,63,1,0 -BRDA:798,64,0,0 -BRDA:798,64,1,0 -BRDA:800,65,0,0 -BRDA:800,65,1,0 -BRDA:813,66,0,0 -BRDA:813,66,1,0 -BRDA:842,67,0,0 -BRDA:842,67,1,1 -BRDA:842,68,0,1 -BRDA:842,68,1,1 -BRF:140 -BRH:58 +DA:883,0 +DA:885,11 +DA:886,11 +DA:889,11 +DA:890,11 +DA:896,1 +DA:897,2 +DA:898,2 +DA:899,2 +DA:900,2 +DA:902,2 +DA:904,2 +DA:906,2 +DA:908,2 +DA:909,2 +DA:911,2 +DA:913,1 +DA:915,1 +DA:916,0 +DA:919,1 +DA:920,0 +DA:923,1 +LF:387 +LH:355 +BRDA:210,1,0,11 +BRDA:210,1,1,1 +BRDA:218,2,0,21 +BRDA:218,2,1,7 +BRDA:226,3,0,0 +BRDA:226,3,1,2 +BRDA:234,4,0,0 +BRDA:234,4,1,1 +BRDA:260,5,0,12 +BRDA:260,5,1,2 +BRDA:262,6,0,12 +BRDA:262,6,1,2 +BRDA:269,7,0,9 +BRDA:269,7,1,3 +BRDA:269,8,0,12 +BRDA:269,8,1,9 +BRDA:269,8,2,3 +BRDA:277,9,0,8 +BRDA:277,9,1,0 +BRDA:287,10,0,1 +BRDA:287,10,1,2 +BRDA:340,11,0,0 +BRDA:340,11,1,8 +BRDA:351,12,0,1 +BRDA:351,12,1,0 +BRDA:358,13,0,1 +BRDA:358,13,1,0 +BRDA:365,14,0,1 +BRDA:365,14,1,0 +BRDA:376,15,0,0 +BRDA:376,15,1,8 +BRDA:376,16,0,8 +BRDA:376,16,1,8 +BRDA:384,17,0,1 +BRDA:384,17,1,8 +BRDA:391,18,0,8 +BRDA:391,18,1,0 +BRDA:425,19,0,0 +BRDA:425,19,1,77 +BRDA:452,20,0,44 +BRDA:452,20,1,1 +BRDA:454,21,0,0 +BRDA:454,21,1,44 +BRDA:454,22,0,44 +BRDA:454,22,1,44 +BRDA:491,23,0,1 +BRDA:491,23,1,10 +BRDA:497,24,0,11 +BRDA:497,24,1,10 +BRDA:503,25,0,10 +BRDA:503,25,1,1 +BRDA:503,26,0,11 +BRDA:503,26,1,10 +BRDA:517,27,0,10 +BRDA:517,27,1,11 +BRDA:537,28,0,1 +BRDA:537,28,1,1 +BRDA:541,29,0,0 +BRDA:541,29,1,2 +BRDA:546,30,0,2 +BRDA:546,30,1,2 +BRDA:547,31,0,2 +BRDA:547,31,1,1 +BRDA:547,31,2,1 +BRDA:548,32,0,2 +BRDA:548,32,1,2 +BRDA:548,32,2,2 +BRDA:563,33,0,0 +BRDA:563,33,1,11 +BRDA:563,34,0,11 +BRDA:563,34,1,0 +BRDA:579,35,0,3 +BRDA:579,35,1,3 +BRDA:582,36,0,7 +BRDA:582,36,1,7 +BRDA:591,37,0,4 +BRDA:591,37,1,1 +BRDA:594,38,0,4 +BRDA:594,38,1,1 +BRDA:611,39,0,7 +BRDA:611,39,1,4 +BRDA:615,40,0,11 +BRDA:615,40,1,11 +BRDA:616,41,0,11 +BRDA:616,41,1,3 +BRDA:617,42,0,11 +BRDA:617,42,1,4 +BRDA:617,42,2,1 +BRDA:618,43,0,11 +BRDA:618,43,1,1 +BRDA:619,44,0,11 +BRDA:619,44,1,1 +BRDA:621,45,0,1 +BRDA:621,45,1,10 +BRDA:628,46,0,7 +BRDA:628,46,1,3 +BRDA:639,47,0,1 +BRDA:639,47,1,9 +BRDA:645,48,0,1 +BRDA:645,48,1,8 +BRDA:664,49,0,0 +BRDA:664,49,1,8 +BRDA:674,50,0,8 +BRDA:674,50,1,0 +BRDA:681,51,0,1 +BRDA:681,51,1,7 +BRDA:682,52,0,1 +BRDA:682,52,1,0 +BRDA:688,53,0,7 +BRDA:688,53,1,0 +BRDA:701,54,0,8 +BRDA:701,54,1,0 +BRDA:764,55,0,0 +BRDA:764,55,1,10 +BRDA:774,56,0,10 +BRDA:774,56,1,9 +BRDA:792,57,0,0 +BRDA:792,57,1,0 +BRDA:802,58,0,0 +BRDA:802,58,1,37 +BRDA:802,59,0,37 +BRDA:802,59,1,0 +BRDA:811,60,0,1 +BRDA:811,60,1,2 +BRDA:813,61,0,1 +BRDA:813,61,1,1 +BRDA:819,62,0,1 +BRDA:819,62,1,2 +BRDA:821,63,0,1 +BRDA:821,63,1,1 +BRDA:827,64,0,1 +BRDA:827,64,1,2 +BRDA:829,65,0,1 +BRDA:829,65,1,1 +BRDA:836,66,0,1 +BRDA:836,66,1,2 +BRDA:838,67,0,1 +BRDA:838,67,1,1 +BRDA:851,68,0,2 +BRDA:851,68,1,0 +BRDA:880,69,0,0 +BRDA:880,69,1,11 +BRDA:880,70,0,11 +BRDA:880,70,1,11 +BRF:144 +BRH:118 end_of_record From 7dc1f15f1401cb1d8ab89ce83ceaf0a9eb816bd9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Moln=C3=A1r?= Date: Mon, 9 Sep 2013 22:47:39 +0200 Subject: [PATCH 11/20] Updating test coverage. --- coverage/coverage.json | 2 +- coverage/lcov-report/index.html | 28 +- coverage/lcov-report/lib/compressor.js.html | 1666 +++---- coverage/lcov-report/lib/connection.js.html | 512 ++- coverage/lcov-report/lib/endpoint.js.html | 116 +- coverage/lcov-report/lib/flow.js.html | 149 +- coverage/lcov-report/lib/framer.js.html | 347 +- coverage/lcov-report/lib/http.js.html | 689 +-- coverage/lcov-report/lib/index.html | 90 +- coverage/lcov-report/lib/stream.js.html | 194 +- coverage/lcov.info | 4386 ++++++++++--------- 11 files changed, 4415 insertions(+), 3764 deletions(-) diff --git a/coverage/coverage.json b/coverage/coverage.json index 88232590..75cf6155 100644 --- a/coverage/coverage.json +++ b/coverage/coverage.json @@ -1 +1 @@ -{"/data/upstream/node-http2/lib/compressor.js":{"path":"/data/upstream/node-http2/lib/compressor.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":50,"8":50,"9":50,"10":50,"11":50,"12":1,"13":3424,"14":1,"15":88,"16":227,"17":1,"18":88,"19":88,"20":202,"21":146,"22":88,"23":146,"24":146,"25":1,"26":278,"27":278,"28":278,"29":87,"30":87,"31":173,"32":87,"33":29,"34":29,"35":58,"36":191,"37":94,"38":97,"39":191,"40":190,"41":100,"42":90,"43":190,"44":190,"45":191,"46":1,"47":81,"48":149,"49":1,"50":109,"51":109,"52":109,"53":19,"54":19,"55":15,"56":94,"57":94,"58":2413,"59":94,"60":62,"61":62,"62":46,"63":48,"64":1,"65":28,"66":28,"67":46,"68":28,"69":28,"70":28,"71":1,"72":190,"73":190,"74":190,"75":5011,"76":263,"77":5011,"78":190,"79":218,"80":218,"81":1,"82":26,"83":26,"84":26,"85":26,"86":1,"87":1,"88":45,"89":45,"90":45,"91":45,"92":141,"93":45,"94":45,"95":45,"96":157,"97":157,"98":157,"99":17,"100":8,"101":9,"102":140,"103":45,"104":45,"105":1,"106":24,"107":24,"108":24,"109":24,"110":1,"111":1,"112":43,"113":43,"114":43,"115":43,"116":135,"117":135,"118":8,"119":24,"120":127,"121":43,"122":43,"123":43,"124":70,"125":28,"126":28,"127":28,"128":43,"129":151,"130":109,"131":109,"132":109,"133":43,"134":43,"135":137,"136":43,"137":43,"138":43,"139":1,"140":345,"141":345,"142":143,"143":202,"144":202,"145":2,"146":202,"147":202,"148":202,"149":210,"150":210,"151":210,"152":8,"153":210,"154":210,"155":202,"156":1,"157":353,"158":353,"159":353,"160":151,"161":353,"162":207,"163":207,"164":217,"165":217,"166":217,"167":353,"168":1,"169":153,"170":153,"171":153,"172":1,"173":155,"174":155,"175":155,"176":155,"177":1,"178":1,"179":145,"180":145,"181":45,"182":100,"183":1,"184":99,"185":52,"186":47,"187":145,"188":45,"189":100,"190":51,"191":49,"192":49,"193":100,"194":47,"195":100,"196":145,"197":145,"198":1,"199":149,"200":149,"201":149,"202":46,"203":103,"204":58,"205":2,"206":56,"207":45,"208":149,"209":46,"210":46,"211":103,"212":103,"213":50,"214":103,"215":45,"216":58,"217":56,"218":2,"219":103,"220":149,"221":1,"222":1,"223":24,"224":1,"225":87,"226":33,"227":33,"228":33,"229":35,"230":35,"231":33,"232":2,"233":2,"234":35,"235":54,"236":87,"237":1,"238":26,"239":26,"240":26,"241":26,"242":26,"243":1,"244":84,"245":3,"246":1,"247":1,"248":1,"249":2,"250":81,"251":33,"252":33,"253":33,"254":33,"255":48,"256":83,"257":32,"258":34,"259":32,"260":32,"261":0,"262":0,"263":0,"264":32,"265":32,"266":83,"267":1,"268":1,"269":1,"270":75,"271":75,"272":501,"273":75,"274":75,"275":501,"276":75,"277":1,"278":33,"279":33,"280":33,"281":35,"282":35,"283":35,"284":33,"285":1,"286":35,"287":35,"288":0,"289":35},"b":{"1":[50,50],"2":[3424,214],"3":[87,191],"4":[29,58],"5":[94,97],"6":[190,1],"7":[100,90],"8":[19,90],"9":[15,4],"10":[62,32],"11":[46,16],"12":[28,18],"13":[263,4748],"14":[14,12],"15":[17,140],"16":[8,9],"17":[12,12],"18":[8,127],"19":[28,42],"20":[109,42],"21":[143,202],"22":[2,200],"23":[8,202],"24":[151,202],"25":[207,146],"26":[45,100],"27":[1,99],"28":[52,47],"29":[45,100],"30":[51,49],"31":[47,53],"32":[46,103],"33":[58,45],"34":[2,56],"35":[46,103],"36":[50,53],"37":[45,58],"38":[56,2],"39":[33,54],"40":[87,61],"41":[33,2],"42":[3,81],"43":[1,2],"44":[3,2],"45":[33,48],"46":[81,55],"47":[32,51],"48":[83,35,10]},"f":{"1":50,"2":3424,"3":88,"4":227,"5":88,"6":202,"7":146,"8":146,"9":278,"10":173,"11":81,"12":149,"13":109,"14":2413,"15":28,"16":190,"17":26,"18":45,"19":24,"20":43,"21":345,"22":353,"23":153,"24":155,"25":145,"26":149,"27":24,"28":87,"29":26,"30":84,"31":34,"32":75,"33":33,"34":35},"fnMap":{"1":{"name":"CompressionContext","line":38,"loc":{"start":{"line":38,"column":0},"end":{"line":38,"column":47}}},"2":{"name":"(anonymous_2)","line":48,"loc":{"start":{"line":48,"column":27},"end":{"line":48,"column":50}}},"3":{"name":"getWorkingSet","line":53,"loc":{"start":{"line":53,"column":45},"end":{"line":53,"column":70}}},"4":{"name":"(anonymous_4)","line":54,"loc":{"start":{"line":54,"column":27},"end":{"line":54,"column":43}}},"5":{"name":"reinitialize","line":60,"loc":{"start":{"line":60,"column":44},"end":{"line":60,"column":68}}},"6":{"name":"(anonymous_6)","line":66,"loc":{"start":{"line":66,"column":41},"end":{"line":66,"column":57}}},"7":{"name":"(anonymous_7)","line":68,"loc":{"start":{"line":68,"column":9},"end":{"line":68,"column":25}}},"8":{"name":"(anonymous_8)","line":76,"loc":{"start":{"line":76,"column":38},"end":{"line":76,"column":53}}},"9":{"name":"execute","line":105,"loc":{"start":{"line":105,"column":39},"end":{"line":105,"column":65}}},"10":{"name":"(anonymous_10)","line":118,"loc":{"start":{"line":118,"column":40},"end":{"line":118,"column":56}}},"11":{"name":"(anonymous_11)","line":156,"loc":{"start":{"line":156,"column":43},"end":{"line":156,"column":59}}},"12":{"name":"(anonymous_12)","line":157,"loc":{"start":{"line":157,"column":28},"end":{"line":157,"column":44}}},"13":{"name":"(anonymous_13)","line":164,"loc":{"start":{"line":164,"column":50},"end":{"line":164,"column":65}}},"14":{"name":"(anonymous_14)","line":180,"loc":{"start":{"line":180,"column":37},"end":{"line":180,"column":53}}},"15":{"name":"(anonymous_15)","line":203,"loc":{"start":{"line":203,"column":53},"end":{"line":203,"column":68}}},"16":{"name":"(anonymous_16)","line":227,"loc":{"start":{"line":227,"column":49},"end":{"line":227,"column":60}}},"17":{"name":"Decompressor","line":249,"loc":{"start":{"line":249,"column":0},"end":{"line":249,"column":33}}},"18":{"name":"decompress","line":264,"loc":{"start":{"line":264,"column":36},"end":{"line":264,"column":64}}},"19":{"name":"Compressor","line":310,"loc":{"start":{"line":310,"column":0},"end":{"line":310,"column":31}}},"20":{"name":"compress","line":325,"loc":{"start":{"line":325,"column":32},"end":{"line":325,"column":59}}},"21":{"name":"writeInteger","line":395,"loc":{"start":{"line":395,"column":21},"end":{"line":395,"column":49}}},"22":{"name":"readInteger","line":436,"loc":{"start":{"line":436,"column":23},"end":{"line":436,"column":55}}},"23":{"name":"writeString","line":466,"loc":{"start":{"line":466,"column":20},"end":{"line":466,"column":46}}},"24":{"name":"readString","line":472,"loc":{"start":{"line":472,"column":22},"end":{"line":472,"column":50}}},"25":{"name":"writeHeader","line":525,"loc":{"start":{"line":525,"column":20},"end":{"line":525,"column":49}}},"26":{"name":"readHeader","line":561,"loc":{"start":{"line":561,"column":22},"end":{"line":561,"column":50}}},"27":{"name":"_initializeStream","line":626,"loc":{"start":{"line":626,"column":41},"end":{"line":626,"column":70}}},"28":{"name":"_transform","line":630,"loc":{"start":{"line":630,"column":34},"end":{"line":630,"column":77}}},"29":{"name":"_initializeStream","line":676,"loc":{"start":{"line":676,"column":43},"end":{"line":676,"column":72}}},"30":{"name":"_transform","line":685,"loc":{"start":{"line":685,"column":36},"end":{"line":685,"column":79}}},"31":{"name":"(anonymous_31)","line":715,"loc":{"start":{"line":715,"column":41},"end":{"line":715,"column":57}}},"32":{"name":"concat","line":825,"loc":{"start":{"line":825,"column":0},"end":{"line":825,"column":25}}},"33":{"name":"cut","line":840,"loc":{"start":{"line":840,"column":0},"end":{"line":840,"column":27}}},"34":{"name":"shallowCopy","line":852,"loc":{"start":{"line":852,"column":0},"end":{"line":852,"column":29}}}},"statementMap":{"1":{"start":{"line":16,"column":0},"end":{"line":16,"column":44}},"2":{"start":{"line":18,"column":0},"end":{"line":18,"column":48}},"3":{"start":{"line":19,"column":0},"end":{"line":19,"column":36}},"4":{"start":{"line":20,"column":0},"end":{"line":20,"column":32}},"5":{"start":{"line":36,"column":0},"end":{"line":36,"column":38}},"6":{"start":{"line":38,"column":0},"end":{"line":44,"column":1}},"7":{"start":{"line":39,"column":2},"end":{"line":39,"column":18}},"8":{"start":{"line":40,"column":2},"end":{"line":40,"column":30}},"9":{"start":{"line":41,"column":2},"end":{"line":41,"column":52}},"10":{"start":{"line":42,"column":2},"end":{"line":42,"column":23}},"11":{"start":{"line":43,"column":2},"end":{"line":43,"column":21}},"12":{"start":{"line":48,"column":0},"end":{"line":50,"column":2}},"13":{"start":{"line":49,"column":2},"end":{"line":49,"column":88}},"14":{"start":{"line":53,"column":0},"end":{"line":57,"column":2}},"15":{"start":{"line":54,"column":2},"end":{"line":56,"column":5}},"16":{"start":{"line":55,"column":4},"end":{"line":55,"column":22}},"17":{"start":{"line":60,"column":0},"end":{"line":80,"column":2}},"18":{"start":{"line":61,"column":2},"end":{"line":61,"column":18}},"19":{"start":{"line":66,"column":2},"end":{"line":70,"column":5}},"20":{"start":{"line":67,"column":4},"end":{"line":67,"column":50}},"21":{"start":{"line":69,"column":4},"end":{"line":69,"column":22}},"22":{"start":{"line":76,"column":2},"end":{"line":79,"column":5}},"23":{"start":{"line":77,"column":4},"end":{"line":77,"column":42}},"24":{"start":{"line":78,"column":4},"end":{"line":78,"column":40}},"25":{"start":{"line":105,"column":0},"end":{"line":152,"column":2}},"26":{"start":{"line":106,"column":2},"end":{"line":107,"column":55}},"27":{"start":{"line":109,"column":2},"end":{"line":109,"column":18}},"28":{"start":{"line":116,"column":2},"end":{"line":151,"column":3}},"29":{"start":{"line":117,"column":4},"end":{"line":117,"column":26}},"30":{"start":{"line":118,"column":4},"end":{"line":120,"column":7}},"31":{"start":{"line":119,"column":6},"end":{"line":119,"column":35}},"32":{"start":{"line":121,"column":4},"end":{"line":126,"column":5}},"33":{"start":{"line":122,"column":6},"end":{"line":122,"column":32}},"34":{"start":{"line":123,"column":6},"end":{"line":123,"column":55}},"35":{"start":{"line":125,"column":6},"end":{"line":125,"column":31}},"36":{"start":{"line":134,"column":4},"end":{"line":138,"column":5}},"37":{"start":{"line":135,"column":6},"end":{"line":135,"column":59}},"38":{"start":{"line":137,"column":6},"end":{"line":137,"column":43}},"39":{"start":{"line":140,"column":4},"end":{"line":148,"column":5}},"40":{"start":{"line":141,"column":6},"end":{"line":145,"column":7}},"41":{"start":{"line":142,"column":8},"end":{"line":142,"column":31}},"42":{"start":{"line":144,"column":8},"end":{"line":144,"column":51}},"43":{"start":{"line":146,"column":6},"end":{"line":146,"column":31}},"44":{"start":{"line":147,"column":6},"end":{"line":147,"column":40}},"45":{"start":{"line":150,"column":4},"end":{"line":150,"column":53}},"46":{"start":{"line":156,"column":0},"end":{"line":160,"column":2}},"47":{"start":{"line":157,"column":2},"end":{"line":159,"column":5}},"48":{"start":{"line":158,"column":4},"end":{"line":158,"column":33}},"49":{"start":{"line":164,"column":0},"end":{"line":199,"column":2}},"50":{"start":{"line":165,"column":2},"end":{"line":165,"column":56}},"51":{"start":{"line":167,"column":2},"end":{"line":167,"column":44}},"52":{"start":{"line":168,"column":2},"end":{"line":177,"column":3}},"53":{"start":{"line":169,"column":4},"end":{"line":169,"column":54}},"54":{"start":{"line":170,"column":4},"end":{"line":176,"column":5}},"55":{"start":{"line":171,"column":6},"end":{"line":175,"column":8}},"56":{"start":{"line":179,"column":2},"end":{"line":179,"column":35}},"57":{"start":{"line":180,"column":2},"end":{"line":182,"column":5}},"58":{"start":{"line":181,"column":4},"end":{"line":181,"column":43}},"59":{"start":{"line":183,"column":2},"end":{"line":192,"column":3}},"60":{"start":{"line":184,"column":4},"end":{"line":184,"column":54}},"61":{"start":{"line":185,"column":4},"end":{"line":191,"column":5}},"62":{"start":{"line":186,"column":6},"end":{"line":190,"column":8}},"63":{"start":{"line":194,"column":2},"end":{"line":198,"column":4}},"64":{"start":{"line":203,"column":0},"end":{"line":218,"column":2}},"65":{"start":{"line":204,"column":2},"end":{"line":204,"column":12}},"66":{"start":{"line":206,"column":2},"end":{"line":211,"column":3}},"67":{"start":{"line":207,"column":4},"end":{"line":210,"column":5}},"68":{"start":{"line":208,"column":6},"end":{"line":208,"column":31}},"69":{"start":{"line":209,"column":6},"end":{"line":209,"column":12}},"70":{"start":{"line":213,"column":2},"end":{"line":217,"column":4}},"71":{"start":{"line":227,"column":0},"end":{"line":240,"column":2}},"72":{"start":{"line":228,"column":2},"end":{"line":228,"column":26}},"73":{"start":{"line":229,"column":2},"end":{"line":229,"column":15}},"74":{"start":{"line":230,"column":2},"end":{"line":235,"column":3}},"75":{"start":{"line":231,"column":4},"end":{"line":233,"column":5}},"76":{"start":{"line":232,"column":6},"end":{"line":232,"column":80}},"77":{"start":{"line":234,"column":4},"end":{"line":234,"column":26}},"78":{"start":{"line":236,"column":2},"end":{"line":239,"column":3}},"79":{"start":{"line":237,"column":4},"end":{"line":237,"column":32}},"80":{"start":{"line":238,"column":4},"end":{"line":238,"column":25}},"81":{"start":{"line":249,"column":0},"end":{"line":257,"column":1}},"82":{"start":{"line":250,"column":2},"end":{"line":250,"column":55}},"83":{"start":{"line":252,"column":2},"end":{"line":253,"column":84}},"84":{"start":{"line":254,"column":2},"end":{"line":254,"column":66}},"85":{"start":{"line":256,"column":2},"end":{"line":256,"column":27}},"86":{"start":{"line":258,"column":0},"end":{"line":258,"column":102}},"87":{"start":{"line":264,"column":0},"end":{"line":301,"column":2}},"88":{"start":{"line":265,"column":2},"end":{"line":265,"column":69}},"89":{"start":{"line":269,"column":2},"end":{"line":269,"column":31}},"90":{"start":{"line":274,"column":2},"end":{"line":274,"column":20}},"91":{"start":{"line":275,"column":2},"end":{"line":277,"column":3}},"92":{"start":{"line":276,"column":4},"end":{"line":276,"column":55}},"93":{"start":{"line":281,"column":2},"end":{"line":281,"column":44}},"94":{"start":{"line":285,"column":2},"end":{"line":285,"column":19}},"95":{"start":{"line":286,"column":2},"end":{"line":298,"column":3}},"96":{"start":{"line":287,"column":4},"end":{"line":287,"column":27}},"97":{"start":{"line":288,"column":4},"end":{"line":288,"column":28}},"98":{"start":{"line":289,"column":4},"end":{"line":297,"column":5}},"99":{"start":{"line":290,"column":6},"end":{"line":294,"column":7}},"100":{"start":{"line":291,"column":8},"end":{"line":291,"column":34}},"101":{"start":{"line":293,"column":8},"end":{"line":293,"column":47}},"102":{"start":{"line":296,"column":6},"end":{"line":296,"column":28}},"103":{"start":{"line":299,"column":2},"end":{"line":299,"column":72}},"104":{"start":{"line":300,"column":2},"end":{"line":300,"column":17}},"105":{"start":{"line":310,"column":0},"end":{"line":318,"column":1}},"106":{"start":{"line":311,"column":2},"end":{"line":311,"column":53}},"107":{"start":{"line":313,"column":2},"end":{"line":314,"column":84}},"108":{"start":{"line":315,"column":2},"end":{"line":315,"column":66}},"109":{"start":{"line":317,"column":2},"end":{"line":317,"column":27}},"110":{"start":{"line":319,"column":0},"end":{"line":319,"column":98}},"111":{"start":{"line":325,"column":0},"end":{"line":376,"column":2}},"112":{"start":{"line":326,"column":2},"end":{"line":326,"column":71}},"113":{"start":{"line":327,"column":2},"end":{"line":327,"column":8}},"114":{"start":{"line":331,"column":2},"end":{"line":331,"column":17}},"115":{"start":{"line":332,"column":2},"end":{"line":341,"column":3}},"116":{"start":{"line":333,"column":4},"end":{"line":333,"column":30}},"117":{"start":{"line":334,"column":4},"end":{"line":340,"column":5}},"118":{"start":{"line":335,"column":6},"end":{"line":337,"column":7}},"119":{"start":{"line":336,"column":8},"end":{"line":336,"column":53}},"120":{"start":{"line":339,"column":6},"end":{"line":339,"column":48}},"121":{"start":{"line":345,"column":2},"end":{"line":345,"column":31}},"122":{"start":{"line":346,"column":2},"end":{"line":346,"column":70}},"123":{"start":{"line":349,"column":2},"end":{"line":355,"column":3}},"124":{"start":{"line":350,"column":4},"end":{"line":354,"column":5}},"125":{"start":{"line":351,"column":6},"end":{"line":351,"column":64}},"126":{"start":{"line":352,"column":6},"end":{"line":352,"column":37}},"127":{"start":{"line":353,"column":6},"end":{"line":353,"column":29}},"128":{"start":{"line":358,"column":2},"end":{"line":364,"column":3}},"129":{"start":{"line":359,"column":4},"end":{"line":363,"column":5}},"130":{"start":{"line":360,"column":6},"end":{"line":360,"column":59}},"131":{"start":{"line":361,"column":6},"end":{"line":361,"column":37}},"132":{"start":{"line":362,"column":6},"end":{"line":362,"column":29}},"133":{"start":{"line":367,"column":2},"end":{"line":367,"column":19}},"134":{"start":{"line":368,"column":2},"end":{"line":370,"column":3}},"135":{"start":{"line":369,"column":4},"end":{"line":369,"column":49}},"136":{"start":{"line":372,"column":2},"end":{"line":372,"column":65}},"137":{"start":{"line":374,"column":2},"end":{"line":374,"column":66}},"138":{"start":{"line":375,"column":2},"end":{"line":375,"column":16}},"139":{"start":{"line":395,"column":0},"end":{"line":421,"column":2}},"140":{"start":{"line":396,"column":2},"end":{"line":396,"column":32}},"141":{"start":{"line":397,"column":2},"end":{"line":399,"column":3}},"142":{"start":{"line":398,"column":4},"end":{"line":398,"column":29}},"143":{"start":{"line":401,"column":2},"end":{"line":401,"column":17}},"144":{"start":{"line":402,"column":2},"end":{"line":404,"column":3}},"145":{"start":{"line":403,"column":4},"end":{"line":403,"column":22}},"146":{"start":{"line":405,"column":2},"end":{"line":405,"column":13}},"147":{"start":{"line":407,"column":2},"end":{"line":407,"column":15}},"148":{"start":{"line":408,"column":2},"end":{"line":418,"column":3}},"149":{"start":{"line":409,"column":4},"end":{"line":409,"column":28}},"150":{"start":{"line":410,"column":4},"end":{"line":410,"column":16}},"151":{"start":{"line":412,"column":4},"end":{"line":414,"column":5}},"152":{"start":{"line":413,"column":6},"end":{"line":413,"column":15}},"153":{"start":{"line":415,"column":4},"end":{"line":415,"column":18}},"154":{"start":{"line":417,"column":4},"end":{"line":417,"column":10}},"155":{"start":{"line":420,"column":2},"end":{"line":420,"column":29}},"156":{"start":{"line":436,"column":0},"end":{"line":454,"column":2}},"157":{"start":{"line":437,"column":2},"end":{"line":437,"column":32}},"158":{"start":{"line":439,"column":2},"end":{"line":439,"column":40}},"159":{"start":{"line":440,"column":2},"end":{"line":442,"column":3}},"160":{"start":{"line":441,"column":4},"end":{"line":441,"column":23}},"161":{"start":{"line":444,"column":2},"end":{"line":451,"column":3}},"162":{"start":{"line":445,"column":4},"end":{"line":445,"column":14}},"163":{"start":{"line":446,"column":4},"end":{"line":450,"column":46}},"164":{"start":{"line":447,"column":6},"end":{"line":447,"column":46}},"165":{"start":{"line":448,"column":6},"end":{"line":448,"column":13}},"166":{"start":{"line":449,"column":6},"end":{"line":449,"column":25}},"167":{"start":{"line":453,"column":2},"end":{"line":453,"column":11}},"168":{"start":{"line":466,"column":0},"end":{"line":470,"column":2}},"169":{"start":{"line":467,"column":2},"end":{"line":467,"column":46}},"170":{"start":{"line":468,"column":2},"end":{"line":468,"column":66}},"171":{"start":{"line":469,"column":2},"end":{"line":469,"column":45}},"172":{"start":{"line":472,"column":0},"end":{"line":477,"column":2}},"173":{"start":{"line":473,"column":2},"end":{"line":473,"column":47}},"174":{"start":{"line":474,"column":2},"end":{"line":474,"column":75}},"175":{"start":{"line":475,"column":2},"end":{"line":475,"column":26}},"176":{"start":{"line":476,"column":2},"end":{"line":476,"column":13}},"177":{"start":{"line":518,"column":0},"end":{"line":523,"column":2}},"178":{"start":{"line":525,"column":0},"end":{"line":559,"column":2}},"179":{"start":{"line":526,"column":2},"end":{"line":526,"column":35}},"180":{"start":{"line":528,"column":2},"end":{"line":536,"column":3}},"181":{"start":{"line":529,"column":4},"end":{"line":529,"column":45}},"182":{"start":{"line":530,"column":9},"end":{"line":536,"column":3}},"183":{"start":{"line":531,"column":4},"end":{"line":531,"column":45}},"184":{"start":{"line":532,"column":9},"end":{"line":536,"column":3}},"185":{"start":{"line":533,"column":4},"end":{"line":533,"column":56}},"186":{"start":{"line":535,"column":4},"end":{"line":535,"column":57}},"187":{"start":{"line":538,"column":2},"end":{"line":554,"column":3}},"188":{"start":{"line":539,"column":4},"end":{"line":539,"column":74}},"189":{"start":{"line":542,"column":4},"end":{"line":547,"column":5}},"190":{"start":{"line":543,"column":6},"end":{"line":543,"column":79}},"191":{"start":{"line":545,"column":6},"end":{"line":545,"column":65}},"192":{"start":{"line":546,"column":6},"end":{"line":546,"column":51}},"193":{"start":{"line":549,"column":4},"end":{"line":551,"column":5}},"194":{"start":{"line":550,"column":6},"end":{"line":550,"column":56}},"195":{"start":{"line":553,"column":4},"end":{"line":553,"column":50}},"196":{"start":{"line":556,"column":2},"end":{"line":556,"column":45}},"197":{"start":{"line":558,"column":2},"end":{"line":558,"column":51}},"198":{"start":{"line":561,"column":0},"end":{"line":599,"column":2}},"199":{"start":{"line":562,"column":2},"end":{"line":562,"column":34}},"200":{"start":{"line":564,"column":2},"end":{"line":564,"column":40}},"201":{"start":{"line":565,"column":2},"end":{"line":575,"column":3}},"202":{"start":{"line":566,"column":4},"end":{"line":566,"column":45}},"203":{"start":{"line":567,"column":9},"end":{"line":575,"column":3}},"204":{"start":{"line":568,"column":4},"end":{"line":572,"column":5}},"205":{"start":{"line":569,"column":6},"end":{"line":569,"column":47}},"206":{"start":{"line":571,"column":6},"end":{"line":571,"column":58}},"207":{"start":{"line":574,"column":4},"end":{"line":574,"column":57}},"208":{"start":{"line":577,"column":2},"end":{"line":596,"column":3}},"209":{"start":{"line":578,"column":4},"end":{"line":578,"column":85}},"210":{"start":{"line":579,"column":4},"end":{"line":579,"column":22}},"211":{"start":{"line":582,"column":4},"end":{"line":582,"column":74}},"212":{"start":{"line":583,"column":4},"end":{"line":585,"column":5}},"213":{"start":{"line":584,"column":6},"end":{"line":584,"column":48}},"214":{"start":{"line":587,"column":4},"end":{"line":593,"column":5}},"215":{"start":{"line":588,"column":6},"end":{"line":588,"column":53}},"216":{"start":{"line":589,"column":11},"end":{"line":593,"column":5}},"217":{"start":{"line":590,"column":6},"end":{"line":590,"column":30}},"218":{"start":{"line":592,"column":6},"end":{"line":592,"column":24}},"219":{"start":{"line":595,"column":4},"end":{"line":595,"column":47}},"220":{"start":{"line":598,"column":2},"end":{"line":598,"column":16}},"221":{"start":{"line":623,"column":0},"end":{"line":623,"column":34}},"222":{"start":{"line":626,"column":0},"end":{"line":628,"column":2}},"223":{"start":{"line":627,"column":2},"end":{"line":627,"column":45}},"224":{"start":{"line":630,"column":0},"end":{"line":668,"column":2}},"225":{"start":{"line":632,"column":2},"end":{"line":665,"column":3}},"226":{"start":{"line":634,"column":4},"end":{"line":634,"column":46}},"227":{"start":{"line":637,"column":4},"end":{"line":637,"column":52}},"228":{"start":{"line":642,"column":4},"end":{"line":659,"column":5}},"229":{"start":{"line":643,"column":6},"end":{"line":643,"column":43}},"230":{"start":{"line":644,"column":6},"end":{"line":649,"column":7}},"231":{"start":{"line":645,"column":8},"end":{"line":645,"column":42}},"232":{"start":{"line":647,"column":8},"end":{"line":647,"column":43}},"233":{"start":{"line":648,"column":8},"end":{"line":648,"column":36}},"234":{"start":{"line":651,"column":6},"end":{"line":658,"column":9}},"235":{"start":{"line":664,"column":4},"end":{"line":664,"column":21}},"236":{"start":{"line":667,"column":2},"end":{"line":667,"column":9}},"237":{"start":{"line":676,"column":0},"end":{"line":682,"column":2}},"238":{"start":{"line":677,"column":2},"end":{"line":677,"column":45}},"239":{"start":{"line":678,"column":2},"end":{"line":678,"column":27}},"240":{"start":{"line":679,"column":2},"end":{"line":679,"column":25}},"241":{"start":{"line":680,"column":2},"end":{"line":680,"column":27}},"242":{"start":{"line":681,"column":2},"end":{"line":681,"column":27}},"243":{"start":{"line":685,"column":0},"end":{"line":737,"column":2}},"244":{"start":{"line":688,"column":2},"end":{"line":709,"column":3}},"245":{"start":{"line":689,"column":4},"end":{"line":693,"column":5}},"246":{"start":{"line":690,"column":6},"end":{"line":690,"column":71}},"247":{"start":{"line":691,"column":6},"end":{"line":691,"column":43}},"248":{"start":{"line":692,"column":6},"end":{"line":692,"column":13}},"249":{"start":{"line":694,"column":4},"end":{"line":694,"column":29}},"250":{"start":{"line":699,"column":7},"end":{"line":709,"column":3}},"251":{"start":{"line":700,"column":4},"end":{"line":700,"column":28}},"252":{"start":{"line":701,"column":4},"end":{"line":701,"column":28}},"253":{"start":{"line":702,"column":4},"end":{"line":702,"column":32}},"254":{"start":{"line":703,"column":4},"end":{"line":703,"column":27}},"255":{"start":{"line":708,"column":4},"end":{"line":708,"column":21}},"256":{"start":{"line":714,"column":2},"end":{"line":734,"column":3}},"257":{"start":{"line":715,"column":4},"end":{"line":717,"column":8}},"258":{"start":{"line":716,"column":6},"end":{"line":716,"column":24}},"259":{"start":{"line":718,"column":4},"end":{"line":724,"column":5}},"260":{"start":{"line":719,"column":6},"end":{"line":719,"column":44}},"261":{"start":{"line":721,"column":6},"end":{"line":721,"column":68}},"262":{"start":{"line":722,"column":6},"end":{"line":722,"column":46}},"263":{"start":{"line":723,"column":6},"end":{"line":723,"column":13}},"264":{"start":{"line":725,"column":4},"end":{"line":732,"column":7}},"265":{"start":{"line":733,"column":4},"end":{"line":733,"column":29}},"266":{"start":{"line":736,"column":2},"end":{"line":736,"column":9}},"267":{"start":{"line":742,"column":0},"end":{"line":781,"column":2}},"268":{"start":{"line":783,"column":0},"end":{"line":819,"column":2}},"269":{"start":{"line":825,"column":0},"end":{"line":837,"column":1}},"270":{"start":{"line":826,"column":2},"end":{"line":826,"column":15}},"271":{"start":{"line":827,"column":2},"end":{"line":829,"column":3}},"272":{"start":{"line":828,"column":4},"end":{"line":828,"column":30}},"273":{"start":{"line":831,"column":2},"end":{"line":831,"column":38}},"274":{"start":{"line":832,"column":2},"end":{"line":834,"column":3}},"275":{"start":{"line":833,"column":4},"end":{"line":833,"column":42}},"276":{"start":{"line":836,"column":2},"end":{"line":836,"column":22}},"277":{"start":{"line":840,"column":0},"end":{"line":849,"column":1}},"278":{"start":{"line":841,"column":2},"end":{"line":841,"column":18}},"279":{"start":{"line":842,"column":2},"end":{"line":842,"column":17}},"280":{"start":{"line":843,"column":2},"end":{"line":847,"column":34}},"281":{"start":{"line":844,"column":4},"end":{"line":844,"column":59}},"282":{"start":{"line":845,"column":4},"end":{"line":845,"column":58}},"283":{"start":{"line":846,"column":4},"end":{"line":846,"column":24}},"284":{"start":{"line":848,"column":2},"end":{"line":848,"column":16}},"285":{"start":{"line":852,"column":0},"end":{"line":858,"column":1}},"286":{"start":{"line":853,"column":2},"end":{"line":853,"column":17}},"287":{"start":{"line":854,"column":2},"end":{"line":856,"column":3}},"288":{"start":{"line":855,"column":4},"end":{"line":855,"column":29}},"289":{"start":{"line":857,"column":2},"end":{"line":857,"column":15}}},"branchMap":{"1":{"line":41,"type":"binary-expr","locations":[{"start":{"line":41,"column":16},"end":{"line":41,"column":21}},{"start":{"line":41,"column":25},"end":{"line":41,"column":51}}]},"2":{"line":49,"type":"binary-expr","locations":[{"start":{"line":49,"column":10},"end":{"line":49,"column":59}},{"start":{"line":49,"column":65},"end":{"line":49,"column":86}}]},"3":{"line":116,"type":"if","locations":[{"start":{"line":116,"column":2},"end":{"line":116,"column":2}},{"start":{"line":116,"column":2},"end":{"line":116,"column":2}}]},"4":{"line":121,"type":"if","locations":[{"start":{"line":121,"column":4},"end":{"line":121,"column":4}},{"start":{"line":121,"column":4},"end":{"line":121,"column":4}}]},"5":{"line":134,"type":"if","locations":[{"start":{"line":134,"column":4},"end":{"line":134,"column":4}},{"start":{"line":134,"column":4},"end":{"line":134,"column":4}}]},"6":{"line":140,"type":"if","locations":[{"start":{"line":140,"column":4},"end":{"line":140,"column":4}},{"start":{"line":140,"column":4},"end":{"line":140,"column":4}}]},"7":{"line":141,"type":"if","locations":[{"start":{"line":141,"column":6},"end":{"line":141,"column":6}},{"start":{"line":141,"column":6},"end":{"line":141,"column":6}}]},"8":{"line":168,"type":"if","locations":[{"start":{"line":168,"column":2},"end":{"line":168,"column":2}},{"start":{"line":168,"column":2},"end":{"line":168,"column":2}}]},"9":{"line":170,"type":"if","locations":[{"start":{"line":170,"column":4},"end":{"line":170,"column":4}},{"start":{"line":170,"column":4},"end":{"line":170,"column":4}}]},"10":{"line":183,"type":"if","locations":[{"start":{"line":183,"column":2},"end":{"line":183,"column":2}},{"start":{"line":183,"column":2},"end":{"line":183,"column":2}}]},"11":{"line":185,"type":"if","locations":[{"start":{"line":185,"column":4},"end":{"line":185,"column":4}},{"start":{"line":185,"column":4},"end":{"line":185,"column":4}}]},"12":{"line":207,"type":"if","locations":[{"start":{"line":207,"column":4},"end":{"line":207,"column":4}},{"start":{"line":207,"column":4},"end":{"line":207,"column":4}}]},"13":{"line":231,"type":"if","locations":[{"start":{"line":231,"column":4},"end":{"line":231,"column":4}},{"start":{"line":231,"column":4},"end":{"line":231,"column":4}}]},"14":{"line":252,"type":"cond-expr","locations":[{"start":{"line":252,"column":44},"end":{"line":252,"column":82}},{"start":{"line":253,"column":44},"end":{"line":253,"column":83}}]},"15":{"line":289,"type":"if","locations":[{"start":{"line":289,"column":4},"end":{"line":289,"column":4}},{"start":{"line":289,"column":4},"end":{"line":289,"column":4}}]},"16":{"line":290,"type":"if","locations":[{"start":{"line":290,"column":6},"end":{"line":290,"column":6}},{"start":{"line":290,"column":6},"end":{"line":290,"column":6}}]},"17":{"line":313,"type":"cond-expr","locations":[{"start":{"line":313,"column":44},"end":{"line":313,"column":82}},{"start":{"line":314,"column":44},"end":{"line":314,"column":83}}]},"18":{"line":334,"type":"if","locations":[{"start":{"line":334,"column":4},"end":{"line":334,"column":4}},{"start":{"line":334,"column":4},"end":{"line":334,"column":4}}]},"19":{"line":350,"type":"if","locations":[{"start":{"line":350,"column":4},"end":{"line":350,"column":4}},{"start":{"line":350,"column":4},"end":{"line":350,"column":4}}]},"20":{"line":359,"type":"if","locations":[{"start":{"line":359,"column":4},"end":{"line":359,"column":4}},{"start":{"line":359,"column":4},"end":{"line":359,"column":4}}]},"21":{"line":397,"type":"if","locations":[{"start":{"line":397,"column":2},"end":{"line":397,"column":2}},{"start":{"line":397,"column":2},"end":{"line":397,"column":2}}]},"22":{"line":402,"type":"if","locations":[{"start":{"line":402,"column":2},"end":{"line":402,"column":2}},{"start":{"line":402,"column":2},"end":{"line":402,"column":2}}]},"23":{"line":412,"type":"if","locations":[{"start":{"line":412,"column":4},"end":{"line":412,"column":4}},{"start":{"line":412,"column":4},"end":{"line":412,"column":4}}]},"24":{"line":440,"type":"if","locations":[{"start":{"line":440,"column":2},"end":{"line":440,"column":2}},{"start":{"line":440,"column":2},"end":{"line":440,"column":2}}]},"25":{"line":444,"type":"if","locations":[{"start":{"line":444,"column":2},"end":{"line":444,"column":2}},{"start":{"line":444,"column":2},"end":{"line":444,"column":2}}]},"26":{"line":528,"type":"if","locations":[{"start":{"line":528,"column":2},"end":{"line":528,"column":2}},{"start":{"line":528,"column":2},"end":{"line":528,"column":2}}]},"27":{"line":530,"type":"if","locations":[{"start":{"line":530,"column":9},"end":{"line":530,"column":9}},{"start":{"line":530,"column":9},"end":{"line":530,"column":9}}]},"28":{"line":532,"type":"if","locations":[{"start":{"line":532,"column":9},"end":{"line":532,"column":9}},{"start":{"line":532,"column":9},"end":{"line":532,"column":9}}]},"29":{"line":538,"type":"if","locations":[{"start":{"line":538,"column":2},"end":{"line":538,"column":2}},{"start":{"line":538,"column":2},"end":{"line":538,"column":2}}]},"30":{"line":542,"type":"if","locations":[{"start":{"line":542,"column":4},"end":{"line":542,"column":4}},{"start":{"line":542,"column":4},"end":{"line":542,"column":4}}]},"31":{"line":549,"type":"if","locations":[{"start":{"line":549,"column":4},"end":{"line":549,"column":4}},{"start":{"line":549,"column":4},"end":{"line":549,"column":4}}]},"32":{"line":565,"type":"if","locations":[{"start":{"line":565,"column":2},"end":{"line":565,"column":2}},{"start":{"line":565,"column":2},"end":{"line":565,"column":2}}]},"33":{"line":567,"type":"if","locations":[{"start":{"line":567,"column":9},"end":{"line":567,"column":9}},{"start":{"line":567,"column":9},"end":{"line":567,"column":9}}]},"34":{"line":568,"type":"if","locations":[{"start":{"line":568,"column":4},"end":{"line":568,"column":4}},{"start":{"line":568,"column":4},"end":{"line":568,"column":4}}]},"35":{"line":577,"type":"if","locations":[{"start":{"line":577,"column":2},"end":{"line":577,"column":2}},{"start":{"line":577,"column":2},"end":{"line":577,"column":2}}]},"36":{"line":583,"type":"if","locations":[{"start":{"line":583,"column":4},"end":{"line":583,"column":4}},{"start":{"line":583,"column":4},"end":{"line":583,"column":4}}]},"37":{"line":587,"type":"if","locations":[{"start":{"line":587,"column":4},"end":{"line":587,"column":4}},{"start":{"line":587,"column":4},"end":{"line":587,"column":4}}]},"38":{"line":589,"type":"if","locations":[{"start":{"line":589,"column":11},"end":{"line":589,"column":11}},{"start":{"line":589,"column":11},"end":{"line":589,"column":11}}]},"39":{"line":632,"type":"if","locations":[{"start":{"line":632,"column":2},"end":{"line":632,"column":2}},{"start":{"line":632,"column":2},"end":{"line":632,"column":2}}]},"40":{"line":632,"type":"binary-expr","locations":[{"start":{"line":632,"column":6},"end":{"line":632,"column":30}},{"start":{"line":632,"column":34},"end":{"line":632,"column":63}}]},"41":{"line":644,"type":"if","locations":[{"start":{"line":644,"column":6},"end":{"line":644,"column":6}},{"start":{"line":644,"column":6},"end":{"line":644,"column":6}}]},"42":{"line":688,"type":"if","locations":[{"start":{"line":688,"column":2},"end":{"line":688,"column":2}},{"start":{"line":688,"column":2},"end":{"line":688,"column":2}}]},"43":{"line":689,"type":"if","locations":[{"start":{"line":689,"column":4},"end":{"line":689,"column":4}},{"start":{"line":689,"column":4},"end":{"line":689,"column":4}}]},"44":{"line":689,"type":"binary-expr","locations":[{"start":{"line":689,"column":9},"end":{"line":689,"column":34}},{"start":{"line":689,"column":40},"end":{"line":689,"column":69}}]},"45":{"line":699,"type":"if","locations":[{"start":{"line":699,"column":7},"end":{"line":699,"column":7}},{"start":{"line":699,"column":7},"end":{"line":699,"column":7}}]},"46":{"line":699,"type":"binary-expr","locations":[{"start":{"line":699,"column":12},"end":{"line":699,"column":36}},{"start":{"line":699,"column":42},"end":{"line":699,"column":71}}]},"47":{"line":714,"type":"if","locations":[{"start":{"line":714,"column":2},"end":{"line":714,"column":2}},{"start":{"line":714,"column":2},"end":{"line":714,"column":2}}]},"48":{"line":714,"type":"binary-expr","locations":[{"start":{"line":714,"column":6},"end":{"line":714,"column":22}},{"start":{"line":714,"column":27},"end":{"line":714,"column":50}},{"start":{"line":714,"column":54},"end":{"line":714,"column":82}}]}}},"/data/upstream/node-http2/lib/connection.js":{"path":"/data/upstream/node-http2/lib/connection.js","s":{"1":1,"2":1,"3":1,"4":1,"5":43,"6":43,"7":43,"8":43,"9":43,"10":43,"11":1,"12":1,"13":1,"14":43,"15":43,"16":43,"17":43,"18":43,"19":43,"20":43,"21":43,"22":1,"23":438,"24":1,"25":40,"26":40,"27":40,"28":0,"29":0,"30":1,"31":18,"32":18,"33":1,"34":116,"35":34,"36":34,"37":34,"38":1,"39":43,"40":22,"41":22,"42":21,"43":21,"44":0,"45":0,"46":0,"47":43,"48":43,"49":43,"50":43,"51":43,"52":1,"53":43,"54":43,"55":43,"56":43,"57":43,"58":1,"59":64,"60":64,"61":64,"62":94,"63":64,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":21,"71":21,"72":21,"73":21,"74":21,"75":21,"76":1,"77":17,"78":17,"79":17,"80":17,"81":1,"82":412,"83":412,"84":412,"85":438,"86":438,"87":438,"88":438,"89":75,"90":0,"91":0,"92":75,"93":17,"94":75,"95":75,"96":5,"97":5,"98":75,"99":75,"100":75,"101":0,"102":75,"103":75,"104":75,"105":0,"106":75,"107":0,"108":412,"109":1,"110":113,"111":113,"112":113,"113":16,"114":113,"115":5,"116":113,"117":113,"118":113,"119":1,"120":1,"121":43,"122":43,"123":43,"124":34,"125":34,"126":0,"127":0,"128":43,"129":1,"130":34,"131":52,"132":1,"133":43,"134":1,"135":43,"136":43,"137":43,"138":1,"139":2,"140":2,"141":2,"142":32,"143":2,"144":1,"145":2,"146":2,"147":2,"148":2,"149":2,"150":1,"151":5,"152":3,"153":3,"154":2,"155":2,"156":2,"157":1,"158":2,"159":2,"160":1,"161":3,"162":3,"163":3,"164":1,"165":2,"166":2,"167":1,"168":43,"169":43,"170":43,"171":43,"172":43,"173":43,"174":1,"175":1,"176":39,"177":1,"178":1,"179":38,"180":38,"181":38,"182":51,"183":1,"184":22,"185":20,"186":20,"187":2,"188":1,"189":1},"b":{"1":[1,0],"2":[40,0],"3":[40,6,2,0],"4":[34,82],"5":[22,21],"6":[21,0],"7":[21,21],"8":[158,107],"9":[0,75],"10":[17,58],"11":[5,70],"12":[75,0],"13":[0,75],"14":[0,75],"15":[16,97],"16":[5,108],"17":[43,18],"18":[34,0],"19":[34,34],"20":[3,2],"21":[2,1],"22":[3,2],"23":[1,38],"24":[39,2],"25":[20,2],"26":[1,1]},"f":{"1":0,"2":43,"3":43,"4":438,"5":40,"6":18,"7":116,"8":43,"9":43,"10":64,"11":1,"12":21,"13":17,"14":412,"15":0,"16":113,"17":43,"18":34,"19":34,"20":43,"21":43,"22":2,"23":2,"24":5,"25":3,"26":2,"27":43,"28":43,"29":38,"30":39,"31":51,"32":22},"fnMap":{"1":{"name":"noop","line":1,"loc":{"start":{"line":1,"column":45},"end":{"line":1,"column":76}}},"2":{"name":"Connection","line":36,"loc":{"start":{"line":36,"column":0},"end":{"line":36,"column":50}}},"3":{"name":"_initializeStreamManagement","line":96,"loc":{"start":{"line":96,"column":51},"end":{"line":96,"column":103}}},"4":{"name":"_getIdOf","line":117,"loc":{"start":{"line":117,"column":32},"end":{"line":117,"column":58}}},"5":{"name":"_writeControlFrame","line":123,"loc":{"start":{"line":123,"column":42},"end":{"line":123,"column":77}}},"6":{"name":"_updateStreamLimit","line":135,"loc":{"start":{"line":135,"column":42},"end":{"line":135,"column":86}}},"7":{"name":"_changeStreamCount","line":140,"loc":{"start":{"line":140,"column":42},"end":{"line":140,"column":78}}},"8":{"name":"_enableReceiving","line":156,"loc":{"start":{"line":156,"column":40},"end":{"line":156,"column":78}}},"9":{"name":"_enableSending","line":187,"loc":{"start":{"line":187,"column":38},"end":{"line":187,"column":70}}},"10":{"name":"_insert","line":196,"loc":{"start":{"line":196,"column":31},"end":{"line":196,"column":56}}},"11":{"name":"_reprioritize","line":207,"loc":{"start":{"line":207,"column":37},"end":{"line":207,"column":68}}},"12":{"name":"_createIncomingStream","line":216,"loc":{"start":{"line":216,"column":45},"end":{"line":216,"column":80}}},"13":{"name":"createStream","line":228,"loc":{"start":{"line":228,"column":36},"end":{"line":228,"column":60}}},"14":{"name":"_send","line":243,"loc":{"start":{"line":243,"column":29},"end":{"line":243,"column":46}}},"15":{"name":"(anonymous_15)","line":270,"loc":{"start":{"line":270,"column":41},"end":{"line":270,"column":66}}},"16":{"name":"_receive","line":291,"loc":{"start":{"line":291,"column":32},"end":{"line":291,"column":63}}},"17":{"name":"_initializeSettingsManagement","line":323,"loc":{"start":{"line":323,"column":53},"end":{"line":323,"column":102}}},"18":{"name":"(anonymous_18)","line":329,"loc":{"start":{"line":329,"column":25},"end":{"line":329,"column":41}}},"19":{"name":"_receiveSettings","line":343,"loc":{"start":{"line":343,"column":40},"end":{"line":343,"column":73}}},"20":{"name":"set","line":350,"loc":{"start":{"line":350,"column":27},"end":{"line":350,"column":50}}},"21":{"name":"_initializeLifecycleManagement","line":368,"loc":{"start":{"line":368,"column":54},"end":{"line":368,"column":96}}},"22":{"name":"_generatePingId","line":375,"loc":{"start":{"line":375,"column":39},"end":{"line":375,"column":66}}},"23":{"name":"ping","line":386,"loc":{"start":{"line":386,"column":28},"end":{"line":386,"column":52}}},"24":{"name":"_receivePing","line":403,"loc":{"start":{"line":403,"column":36},"end":{"line":403,"column":65}}},"25":{"name":"close","line":428,"loc":{"start":{"line":428,"column":29},"end":{"line":428,"column":51}}},"26":{"name":"_receiveGoaway","line":439,"loc":{"start":{"line":439,"column":38},"end":{"line":439,"column":69}}},"27":{"name":"_initializeFlowControl","line":447,"loc":{"start":{"line":447,"column":46},"end":{"line":447,"column":80}}},"28":{"name":"(anonymous_28)","line":450,"loc":{"start":{"line":450,"column":24},"end":{"line":450,"column":41}}},"29":{"name":"noop","line":455,"loc":{"start":{"line":455,"column":49},"end":{"line":455,"column":65}}},"30":{"name":"_setInitialStreamWindowSize","line":468,"loc":{"start":{"line":468,"column":51},"end":{"line":468,"column":94}}},"31":{"name":"(anonymous_31)","line":475,"loc":{"start":{"line":475,"column":28},"end":{"line":475,"column":45}}},"32":{"name":"_setStreamFlowControl","line":483,"loc":{"start":{"line":483,"column":45},"end":{"line":483,"column":85}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":79}},"2":{"start":{"line":10,"column":0},"end":{"line":10,"column":34}},"3":{"start":{"line":12,"column":0},"end":{"line":12,"column":32}},"4":{"start":{"line":36,"column":0},"end":{"line":56,"column":1}},"5":{"start":{"line":38,"column":2},"end":{"line":38,"column":21}},"6":{"start":{"line":41,"column":2},"end":{"line":41,"column":53}},"7":{"start":{"line":44,"column":2},"end":{"line":44,"column":50}},"8":{"start":{"line":47,"column":2},"end":{"line":47,"column":47}},"9":{"start":{"line":50,"column":2},"end":{"line":50,"column":40}},"10":{"start":{"line":53,"column":2},"end":{"line":53,"column":32}},"11":{"start":{"line":57,"column":0},"end":{"line":57,"column":93}},"12":{"start":{"line":93,"column":0},"end":{"line":93,"column":41}},"13":{"start":{"line":96,"column":0},"end":{"line":115,"column":2}},"14":{"start":{"line":100,"column":2},"end":{"line":100,"column":23}},"15":{"start":{"line":101,"column":2},"end":{"line":101,"column":24}},"16":{"start":{"line":104,"column":2},"end":{"line":104,"column":37}},"17":{"start":{"line":105,"column":2},"end":{"line":105,"column":31}},"18":{"start":{"line":108,"column":2},"end":{"line":108,"column":83}},"19":{"start":{"line":112,"column":2},"end":{"line":112,"column":24}},"20":{"start":{"line":113,"column":2},"end":{"line":113,"column":31}},"21":{"start":{"line":114,"column":2},"end":{"line":114,"column":70}},"22":{"start":{"line":117,"column":0},"end":{"line":119,"column":2}},"23":{"start":{"line":118,"column":2},"end":{"line":118,"column":41}},"24":{"start":{"line":123,"column":0},"end":{"line":132,"column":2}},"25":{"start":{"line":124,"column":2},"end":{"line":131,"column":3}},"26":{"start":{"line":126,"column":4},"end":{"line":126,"column":74}},"27":{"start":{"line":127,"column":4},"end":{"line":127,"column":33}},"28":{"start":{"line":129,"column":4},"end":{"line":129,"column":72}},"29":{"start":{"line":130,"column":4},"end":{"line":130,"column":41}},"30":{"start":{"line":135,"column":0},"end":{"line":138,"column":2}},"31":{"start":{"line":136,"column":2},"end":{"line":136,"column":37}},"32":{"start":{"line":137,"column":2},"end":{"line":137,"column":15}},"33":{"start":{"line":140,"column":0},"end":{"line":146,"column":2}},"34":{"start":{"line":141,"column":2},"end":{"line":145,"column":3}},"35":{"start":{"line":142,"column":4},"end":{"line":142,"column":99}},"36":{"start":{"line":143,"column":4},"end":{"line":143,"column":32}},"37":{"start":{"line":144,"column":4},"end":{"line":144,"column":17}},"38":{"start":{"line":156,"column":0},"end":{"line":184,"column":2}},"39":{"start":{"line":158,"column":2},"end":{"line":174,"column":3}},"40":{"start":{"line":159,"column":4},"end":{"line":159,"column":28}},"41":{"start":{"line":160,"column":4},"end":{"line":160,"column":28}},"42":{"start":{"line":164,"column":7},"end":{"line":174,"column":3}},"43":{"start":{"line":165,"column":4},"end":{"line":165,"column":34}},"44":{"start":{"line":170,"column":4},"end":{"line":171,"column":51}},"45":{"start":{"line":172,"column":4},"end":{"line":172,"column":41}},"46":{"start":{"line":173,"column":4},"end":{"line":173,"column":21}},"47":{"start":{"line":176,"column":2},"end":{"line":176,"column":35}},"48":{"start":{"line":179,"column":2},"end":{"line":179,"column":84}},"49":{"start":{"line":180,"column":2},"end":{"line":180,"column":31}},"50":{"start":{"line":181,"column":2},"end":{"line":181,"column":38}},"51":{"start":{"line":183,"column":2},"end":{"line":183,"column":12}},"52":{"start":{"line":187,"column":0},"end":{"line":193,"column":2}},"53":{"start":{"line":188,"column":2},"end":{"line":188,"column":67}},"54":{"start":{"line":189,"column":2},"end":{"line":189,"column":23}},"55":{"start":{"line":190,"column":2},"end":{"line":190,"column":63}},"56":{"start":{"line":191,"column":2},"end":{"line":191,"column":58}},"57":{"start":{"line":192,"column":2},"end":{"line":192,"column":15}},"58":{"start":{"line":196,"column":0},"end":{"line":203,"column":2}},"59":{"start":{"line":197,"column":2},"end":{"line":197,"column":33}},"60":{"start":{"line":198,"column":2},"end":{"line":198,"column":16}},"61":{"start":{"line":199,"column":2},"end":{"line":201,"column":3}},"62":{"start":{"line":200,"column":4},"end":{"line":200,"column":15}},"63":{"start":{"line":202,"column":2},"end":{"line":202,"column":35}},"64":{"start":{"line":207,"column":0},"end":{"line":212,"column":2}},"65":{"start":{"line":208,"column":2},"end":{"line":208,"column":47}},"66":{"start":{"line":209,"column":2},"end":{"line":209,"column":23}},"67":{"start":{"line":210,"column":2},"end":{"line":210,"column":36}},"68":{"start":{"line":211,"column":2},"end":{"line":211,"column":23}},"69":{"start":{"line":216,"column":0},"end":{"line":225,"column":2}},"70":{"start":{"line":217,"column":2},"end":{"line":217,"column":61}},"71":{"start":{"line":219,"column":2},"end":{"line":219,"column":37}},"72":{"start":{"line":220,"column":2},"end":{"line":220,"column":36}},"73":{"start":{"line":221,"column":2},"end":{"line":221,"column":30}},"74":{"start":{"line":222,"column":2},"end":{"line":222,"column":34}},"75":{"start":{"line":224,"column":2},"end":{"line":224,"column":16}},"76":{"start":{"line":228,"column":0},"end":{"line":236,"column":2}},"77":{"start":{"line":229,"column":2},"end":{"line":229,"column":51}},"78":{"start":{"line":232,"column":2},"end":{"line":232,"column":37}},"79":{"start":{"line":233,"column":2},"end":{"line":233,"column":30}},"80":{"start":{"line":235,"column":2},"end":{"line":235,"column":16}},"81":{"start":{"line":243,"column":0},"end":{"line":287,"column":2}},"82":{"start":{"line":244,"column":2},"end":{"line":244,"column":62}},"83":{"start":{"line":247,"column":0},"end":{"line":284,"column":3}},"84":{"start":{"line":248,"column":2},"end":{"line":284,"column":3}},"85":{"start":{"line":249,"column":4},"end":{"line":249,"column":37}},"86":{"start":{"line":250,"column":4},"end":{"line":250,"column":35}},"87":{"start":{"line":251,"column":4},"end":{"line":251,"column":14}},"88":{"start":{"line":252,"column":4},"end":{"line":283,"column":5}},"89":{"start":{"line":253,"column":6},"end":{"line":256,"column":7}},"90":{"start":{"line":254,"column":8},"end":{"line":254,"column":39}},"91":{"start":{"line":255,"column":8},"end":{"line":255,"column":29}},"92":{"start":{"line":258,"column":6},"end":{"line":260,"column":7}},"93":{"start":{"line":259,"column":8},"end":{"line":259,"column":43}},"94":{"start":{"line":262,"column":6},"end":{"line":262,"column":24}},"95":{"start":{"line":263,"column":6},"end":{"line":266,"column":7}},"96":{"start":{"line":264,"column":8},"end":{"line":264,"column":76}},"97":{"start":{"line":265,"column":8},"end":{"line":265,"column":77}},"98":{"start":{"line":268,"column":6},"end":{"line":268,"column":87}},"99":{"start":{"line":269,"column":6},"end":{"line":269,"column":27}},"100":{"start":{"line":270,"column":6},"end":{"line":272,"column":9}},"101":{"start":{"line":271,"column":8},"end":{"line":271,"column":60}},"102":{"start":{"line":274,"column":6},"end":{"line":276,"column":7}},"103":{"start":{"line":275,"column":8},"end":{"line":275,"column":52}},"104":{"start":{"line":278,"column":6},"end":{"line":282,"column":7}},"105":{"start":{"line":279,"column":8},"end":{"line":279,"column":29}},"106":{"start":{"line":280,"column":13},"end":{"line":282,"column":7}},"107":{"start":{"line":281,"column":8},"end":{"line":281,"column":26}},"108":{"start":{"line":286,"column":2},"end":{"line":286,"column":90}},"109":{"start":{"line":291,"column":0},"end":{"line":313,"column":2}},"110":{"start":{"line":292,"column":2},"end":{"line":292,"column":65}},"111":{"start":{"line":295,"column":2},"end":{"line":295,"column":45}},"112":{"start":{"line":298,"column":2},"end":{"line":300,"column":3}},"113":{"start":{"line":299,"column":4},"end":{"line":299,"column":54}},"114":{"start":{"line":303,"column":2},"end":{"line":305,"column":3}},"115":{"start":{"line":304,"column":4},"end":{"line":304,"column":78}},"116":{"start":{"line":307,"column":2},"end":{"line":307,"column":58}},"117":{"start":{"line":310,"column":2},"end":{"line":310,"column":31}},"118":{"start":{"line":312,"column":2},"end":{"line":312,"column":9}},"119":{"start":{"line":318,"column":0},"end":{"line":320,"column":2}},"120":{"start":{"line":323,"column":0},"end":{"line":340,"column":2}},"121":{"start":{"line":325,"column":2},"end":{"line":325,"column":88}},"122":{"start":{"line":326,"column":2},"end":{"line":326,"column":40}},"123":{"start":{"line":329,"column":2},"end":{"line":336,"column":5}},"124":{"start":{"line":330,"column":4},"end":{"line":335,"column":5}},"125":{"start":{"line":331,"column":6},"end":{"line":331,"column":94}},"126":{"start":{"line":333,"column":6},"end":{"line":333,"column":99}},"127":{"start":{"line":334,"column":6},"end":{"line":334,"column":25}},"128":{"start":{"line":339,"column":2},"end":{"line":339,"column":45}},"129":{"start":{"line":343,"column":0},"end":{"line":347,"column":2}},"130":{"start":{"line":344,"column":2},"end":{"line":346,"column":3}},"131":{"start":{"line":345,"column":4},"end":{"line":345,"column":42}},"132":{"start":{"line":350,"column":0},"end":{"line":356,"column":2}},"133":{"start":{"line":351,"column":2},"end":{"line":355,"column":5}},"134":{"start":{"line":368,"column":0},"end":{"line":372,"column":2}},"135":{"start":{"line":369,"column":2},"end":{"line":369,"column":19}},"136":{"start":{"line":370,"column":2},"end":{"line":370,"column":37}},"137":{"start":{"line":371,"column":2},"end":{"line":371,"column":41}},"138":{"start":{"line":375,"column":0},"end":{"line":383,"column":2}},"139":{"start":{"line":376,"column":2},"end":{"line":381,"column":29}},"140":{"start":{"line":377,"column":4},"end":{"line":377,"column":16}},"141":{"start":{"line":378,"column":4},"end":{"line":380,"column":5}},"142":{"start":{"line":379,"column":6},"end":{"line":379,"column":54}},"143":{"start":{"line":382,"column":2},"end":{"line":382,"column":12}},"144":{"start":{"line":386,"column":0},"end":{"line":400,"column":2}},"145":{"start":{"line":387,"column":2},"end":{"line":387,"column":34}},"146":{"start":{"line":388,"column":2},"end":{"line":388,"column":35}},"147":{"start":{"line":389,"column":2},"end":{"line":389,"column":29}},"148":{"start":{"line":391,"column":2},"end":{"line":391,"column":51}},"149":{"start":{"line":392,"column":2},"end":{"line":399,"column":5}},"150":{"start":{"line":403,"column":0},"end":{"line":425,"column":2}},"151":{"start":{"line":404,"column":2},"end":{"line":424,"column":3}},"152":{"start":{"line":405,"column":4},"end":{"line":405,"column":40}},"153":{"start":{"line":406,"column":4},"end":{"line":412,"column":5}},"154":{"start":{"line":407,"column":6},"end":{"line":407,"column":76}},"155":{"start":{"line":408,"column":6},"end":{"line":408,"column":24}},"156":{"start":{"line":409,"column":6},"end":{"line":409,"column":29}},"157":{"start":{"line":411,"column":6},"end":{"line":411,"column":71}},"158":{"start":{"line":415,"column":4},"end":{"line":415,"column":61}},"159":{"start":{"line":416,"column":4},"end":{"line":423,"column":7}},"160":{"start":{"line":428,"column":0},"end":{"line":437,"column":2}},"161":{"start":{"line":429,"column":2},"end":{"line":429,"column":61}},"162":{"start":{"line":430,"column":2},"end":{"line":435,"column":5}},"163":{"start":{"line":436,"column":2},"end":{"line":436,"column":18}},"164":{"start":{"line":439,"column":0},"end":{"line":442,"column":2}},"165":{"start":{"line":440,"column":2},"end":{"line":440,"column":76}},"166":{"start":{"line":441,"column":2},"end":{"line":441,"column":18}},"167":{"start":{"line":447,"column":0},"end":{"line":459,"column":2}},"168":{"start":{"line":449,"column":2},"end":{"line":449,"column":61}},"169":{"start":{"line":450,"column":2},"end":{"line":452,"column":5}},"170":{"start":{"line":451,"column":4},"end":{"line":451,"column":68}},"171":{"start":{"line":453,"column":2},"end":{"line":453,"column":76}},"172":{"start":{"line":454,"column":2},"end":{"line":454,"column":71}},"173":{"start":{"line":455,"column":2},"end":{"line":455,"column":68}},"174":{"start":{"line":462,"column":0},"end":{"line":462,"column":39}},"175":{"start":{"line":468,"column":0},"end":{"line":479,"column":2}},"176":{"start":{"line":469,"column":2},"end":{"line":478,"column":3}},"177":{"start":{"line":470,"column":4},"end":{"line":470,"column":112}},"178":{"start":{"line":471,"column":4},"end":{"line":471,"column":45}},"179":{"start":{"line":473,"column":4},"end":{"line":473,"column":76}},"180":{"start":{"line":474,"column":4},"end":{"line":474,"column":41}},"181":{"start":{"line":475,"column":4},"end":{"line":477,"column":7}},"182":{"start":{"line":476,"column":6},"end":{"line":476,"column":45}},"183":{"start":{"line":483,"column":0},"end":{"line":491,"column":2}},"184":{"start":{"line":484,"column":2},"end":{"line":490,"column":3}},"185":{"start":{"line":485,"column":4},"end":{"line":485,"column":35}},"186":{"start":{"line":486,"column":4},"end":{"line":486,"column":47}},"187":{"start":{"line":487,"column":9},"end":{"line":490,"column":3}},"188":{"start":{"line":488,"column":4},"end":{"line":488,"column":81}},"189":{"start":{"line":489,"column":4},"end":{"line":489,"column":45}}},"branchMap":{"1":{"line":1,"type":"cond-expr","locations":[{"start":{"line":1,"column":40},"end":{"line":1,"column":57}},{"start":{"line":1,"column":45},"end":{"line":1,"column":78}}]},"2":{"line":124,"type":"if","locations":[{"start":{"line":124,"column":2},"end":{"line":124,"column":2}},{"start":{"line":124,"column":2},"end":{"line":124,"column":2}}]},"3":{"line":124,"type":"binary-expr","locations":[{"start":{"line":124,"column":7},"end":{"line":124,"column":32}},{"start":{"line":124,"column":38},"end":{"line":124,"column":59}},{"start":{"line":125,"column":7},"end":{"line":125,"column":30}},{"start":{"line":125,"column":36},"end":{"line":125,"column":66}}]},"4":{"line":141,"type":"if","locations":[{"start":{"line":141,"column":2},"end":{"line":141,"column":2}},{"start":{"line":141,"column":2},"end":{"line":141,"column":2}}]},"5":{"line":158,"type":"if","locations":[{"start":{"line":158,"column":2},"end":{"line":158,"column":2}},{"start":{"line":158,"column":2},"end":{"line":158,"column":2}}]},"6":{"line":164,"type":"if","locations":[{"start":{"line":164,"column":7},"end":{"line":164,"column":7}},{"start":{"line":164,"column":7},"end":{"line":164,"column":7}}]},"7":{"line":164,"type":"binary-expr","locations":[{"start":{"line":164,"column":12},"end":{"line":164,"column":41}},{"start":{"line":164,"column":47},"end":{"line":164,"column":82}}]},"8":{"line":199,"type":"binary-expr","locations":[{"start":{"line":199,"column":10},"end":{"line":199,"column":32}},{"start":{"line":199,"column":38},"end":{"line":199,"column":82}}]},"9":{"line":253,"type":"if","locations":[{"start":{"line":253,"column":6},"end":{"line":253,"column":6}},{"start":{"line":253,"column":6},"end":{"line":253,"column":6}}]},"10":{"line":258,"type":"if","locations":[{"start":{"line":258,"column":6},"end":{"line":258,"column":6}},{"start":{"line":258,"column":6},"end":{"line":258,"column":6}}]},"11":{"line":263,"type":"if","locations":[{"start":{"line":263,"column":6},"end":{"line":263,"column":6}},{"start":{"line":263,"column":6},"end":{"line":263,"column":6}}]},"12":{"line":274,"type":"if","locations":[{"start":{"line":274,"column":6},"end":{"line":274,"column":6}},{"start":{"line":274,"column":6},"end":{"line":274,"column":6}}]},"13":{"line":278,"type":"if","locations":[{"start":{"line":278,"column":6},"end":{"line":278,"column":6}},{"start":{"line":278,"column":6},"end":{"line":278,"column":6}}]},"14":{"line":280,"type":"if","locations":[{"start":{"line":280,"column":13},"end":{"line":280,"column":13}},{"start":{"line":280,"column":13},"end":{"line":280,"column":13}}]},"15":{"line":298,"type":"if","locations":[{"start":{"line":298,"column":2},"end":{"line":298,"column":2}},{"start":{"line":298,"column":2},"end":{"line":298,"column":2}}]},"16":{"line":303,"type":"if","locations":[{"start":{"line":303,"column":2},"end":{"line":303,"column":2}},{"start":{"line":303,"column":2},"end":{"line":303,"column":2}}]},"17":{"line":326,"type":"binary-expr","locations":[{"start":{"line":326,"column":11},"end":{"line":326,"column":19}},{"start":{"line":326,"column":23},"end":{"line":326,"column":38}}]},"18":{"line":330,"type":"if","locations":[{"start":{"line":330,"column":4},"end":{"line":330,"column":4}},{"start":{"line":330,"column":4},"end":{"line":330,"column":4}}]},"19":{"line":330,"type":"binary-expr","locations":[{"start":{"line":330,"column":9},"end":{"line":330,"column":27}},{"start":{"line":330,"column":33},"end":{"line":330,"column":58}}]},"20":{"line":404,"type":"if","locations":[{"start":{"line":404,"column":2},"end":{"line":404,"column":2}},{"start":{"line":404,"column":2},"end":{"line":404,"column":2}}]},"21":{"line":406,"type":"if","locations":[{"start":{"line":406,"column":4},"end":{"line":406,"column":4}},{"start":{"line":406,"column":4},"end":{"line":406,"column":4}}]},"22":{"line":434,"type":"binary-expr","locations":[{"start":{"line":434,"column":11},"end":{"line":434,"column":16}},{"start":{"line":434,"column":20},"end":{"line":434,"column":30}}]},"23":{"line":469,"type":"if","locations":[{"start":{"line":469,"column":2},"end":{"line":469,"column":2}},{"start":{"line":469,"column":2},"end":{"line":469,"column":2}}]},"24":{"line":469,"type":"binary-expr","locations":[{"start":{"line":469,"column":7},"end":{"line":469,"column":49}},{"start":{"line":469,"column":55},"end":{"line":469,"column":72}}]},"25":{"line":484,"type":"if","locations":[{"start":{"line":484,"column":2},"end":{"line":484,"column":2}},{"start":{"line":484,"column":2},"end":{"line":484,"column":2}}]},"26":{"line":487,"type":"if","locations":[{"start":{"line":487,"column":9},"end":{"line":487,"column":9}},{"start":{"line":487,"column":9},"end":{"line":487,"column":9}}]}}},"/data/upstream/node-http2/lib/flow.js":{"path":"/data/upstream/node-http2/lib/flow.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":162,"7":162,"8":162,"9":162,"10":162,"11":162,"12":162,"13":1,"14":1,"15":1,"16":1,"17":308,"18":308,"19":59,"20":308,"21":100,"22":100,"23":100,"24":7,"25":100,"26":208,"27":308,"28":6,"29":1,"30":7,"31":7,"32":6,"33":6,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1244,"41":1143,"42":101,"43":7,"44":7,"45":7,"46":7,"47":8,"48":7,"49":1244,"50":1,"51":1,"52":264,"53":357,"54":357,"55":257,"56":100,"57":7,"58":93,"59":93,"60":93,"61":93,"62":93,"63":357,"64":357,"65":350,"66":350,"67":140,"68":140,"69":140,"70":350,"71":357,"72":264,"73":7,"74":264,"75":1,"76":182,"77":6,"78":176,"79":176,"80":176,"81":182,"82":181,"83":1,"84":1,"85":1,"86":34,"87":34,"88":1,"89":1,"90":90,"91":1,"92":1,"93":89,"94":89,"95":89,"96":1,"97":1,"98":88,"99":1,"100":6,"101":1,"102":56,"103":56,"104":1,"105":1},"b":{"1":[1,0],"2":[59,249],"3":[100,208],"4":[308,180,133],"5":[7,93],"6":[6,302],"7":[308,6,6],"8":[6,1],"9":[7,6,6],"10":[1143,101],"11":[7,94],"12":[15,14],"13":[7,7,1,1],"14":[357,100],"15":[257,100],"16":[357,351,190,163],"17":[7,93],"18":[350,7],"19":[140,210],"20":[350,344,183],"21":[7,257],"22":[6,176],"23":[176,135],"24":[181,1],"25":[34,34],"26":[1,89],"27":[90,2],"28":[1,88],"29":[89,43],"30":[1,5]},"f":{"1":0,"2":162,"3":1,"4":308,"5":100,"6":7,"7":1,"8":1,"9":1244,"10":264,"11":182,"12":34,"13":90,"14":6,"15":56,"16":1},"fnMap":{"1":{"name":"noop","line":1,"loc":{"start":{"line":1,"column":45},"end":{"line":1,"column":76}}},"2":{"name":"Flow","line":72,"loc":{"start":{"line":72,"column":0},"end":{"line":72,"column":29}}},"3":{"name":"_receive","line":89,"loc":{"start":{"line":89,"column":26},"end":{"line":89,"column":61}}},"4":{"name":"_write","line":97,"loc":{"start":{"line":97,"column":24},"end":{"line":97,"column":67}}},"5":{"name":"(anonymous_5)","line":105,"loc":{"start":{"line":105,"column":25},"end":{"line":105,"column":36}}},"6":{"name":"_restoreWindow","line":126,"loc":{"start":{"line":126,"column":32},"end":{"line":126,"column":58}}},"7":{"name":"disableRemoteFlowControl","line":140,"loc":{"start":{"line":140,"column":42},"end":{"line":140,"column":78}}},"8":{"name":"_send","line":170,"loc":{"start":{"line":170,"column":23},"end":{"line":170,"column":40}}},"9":{"name":"_read","line":177,"loc":{"start":{"line":177,"column":23},"end":{"line":177,"column":40}}},"10":{"name":"_push","line":211,"loc":{"start":{"line":211,"column":23},"end":{"line":211,"column":64}}},"11":{"name":"push","line":261,"loc":{"start":{"line":261,"column":22},"end":{"line":261,"column":43}}},"12":{"name":"getLastQueuedFrame","line":280,"loc":{"start":{"line":280,"column":36},"end":{"line":280,"column":66}}},"13":{"name":"_increaseWindow","line":298,"loc":{"start":{"line":298,"column":33},"end":{"line":298,"column":64}}},"14":{"name":"_updateWindow","line":322,"loc":{"start":{"line":322,"column":31},"end":{"line":322,"column":61}}},"15":{"name":"setInitialWindow","line":330,"loc":{"start":{"line":330,"column":34},"end":{"line":330,"column":75}}},"16":{"name":"disableLocalFlowControl","line":336,"loc":{"start":{"line":336,"column":41},"end":{"line":336,"column":76}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":79}},"2":{"start":{"line":10,"column":0},"end":{"line":10,"column":39}},"3":{"start":{"line":12,"column":0},"end":{"line":12,"column":20}},"4":{"start":{"line":69,"column":0},"end":{"line":69,"column":32}},"5":{"start":{"line":72,"column":0},"end":{"line":82,"column":1}},"6":{"start":{"line":73,"column":2},"end":{"line":73,"column":42}},"7":{"start":{"line":75,"column":2},"end":{"line":75,"column":59}},"8":{"start":{"line":76,"column":2},"end":{"line":76,"column":38}},"9":{"start":{"line":77,"column":2},"end":{"line":77,"column":19}},"10":{"start":{"line":79,"column":2},"end":{"line":79,"column":22}},"11":{"start":{"line":80,"column":2},"end":{"line":80,"column":21}},"12":{"start":{"line":81,"column":2},"end":{"line":81,"column":41}},"13":{"start":{"line":83,"column":0},"end":{"line":83,"column":83}},"14":{"start":{"line":89,"column":0},"end":{"line":91,"column":2}},"15":{"start":{"line":90,"column":2},"end":{"line":90,"column":99}},"16":{"start":{"line":97,"column":0},"end":{"line":122,"column":2}},"17":{"start":{"line":98,"column":2},"end":{"line":98,"column":32}},"18":{"start":{"line":100,"column":2},"end":{"line":102,"column":3}},"19":{"start":{"line":101,"column":4},"end":{"line":101,"column":23}},"20":{"start":{"line":104,"column":2},"end":{"line":116,"column":3}},"21":{"start":{"line":105,"column":4},"end":{"line":111,"column":18}},"22":{"start":{"line":106,"column":6},"end":{"line":106,"column":42}},"23":{"start":{"line":107,"column":6},"end":{"line":109,"column":7}},"24":{"start":{"line":108,"column":8},"end":{"line":108,"column":80}},"25":{"start":{"line":110,"column":6},"end":{"line":110,"column":17}},"26":{"start":{"line":115,"column":4},"end":{"line":115,"column":35}},"27":{"start":{"line":118,"column":2},"end":{"line":121,"column":3}},"28":{"start":{"line":120,"column":4},"end":{"line":120,"column":30}},"29":{"start":{"line":126,"column":0},"end":{"line":136,"column":2}},"30":{"start":{"line":127,"column":2},"end":{"line":127,"column":34}},"31":{"start":{"line":128,"column":2},"end":{"line":135,"column":3}},"32":{"start":{"line":129,"column":4},"end":{"line":133,"column":7}},"33":{"start":{"line":134,"column":4},"end":{"line":134,"column":23}},"34":{"start":{"line":140,"column":0},"end":{"line":149,"column":2}},"35":{"start":{"line":141,"column":2},"end":{"line":141,"column":41}},"36":{"start":{"line":142,"column":2},"end":{"line":148,"column":5}},"37":{"start":{"line":170,"column":0},"end":{"line":172,"column":2}},"38":{"start":{"line":171,"column":2},"end":{"line":171,"column":81}},"39":{"start":{"line":177,"column":0},"end":{"line":199,"column":2}},"40":{"start":{"line":179,"column":2},"end":{"line":196,"column":3}},"41":{"start":{"line":180,"column":4},"end":{"line":180,"column":17}},"42":{"start":{"line":185,"column":7},"end":{"line":196,"column":3}},"43":{"start":{"line":186,"column":4},"end":{"line":186,"column":14}},"44":{"start":{"line":187,"column":4},"end":{"line":187,"column":26}},"45":{"start":{"line":188,"column":4},"end":{"line":188,"column":65}},"46":{"start":{"line":189,"column":4},"end":{"line":191,"column":5}},"47":{"start":{"line":190,"column":6},"end":{"line":190,"column":55}},"48":{"start":{"line":193,"column":4},"end":{"line":195,"column":71}},"49":{"start":{"line":198,"column":2},"end":{"line":198,"column":38}},"50":{"start":{"line":209,"column":0},"end":{"line":209,"column":28}},"51":{"start":{"line":211,"column":0},"end":{"line":258,"column":2}},"52":{"start":{"line":212,"column":2},"end":{"line":251,"column":36}},"53":{"start":{"line":213,"column":4},"end":{"line":213,"column":55}},"54":{"start":{"line":214,"column":4},"end":{"line":236,"column":5}},"55":{"start":{"line":216,"column":6},"end":{"line":216,"column":26}},"56":{"start":{"line":219,"column":9},"end":{"line":236,"column":5}},"57":{"start":{"line":220,"column":6},"end":{"line":220,"column":24}},"58":{"start":{"line":224,"column":6},"end":{"line":224,"column":63}},"59":{"start":{"line":225,"column":6},"end":{"line":230,"column":8}},"60":{"start":{"line":232,"column":6},"end":{"line":233,"column":73}},"61":{"start":{"line":234,"column":6},"end":{"line":234,"column":47}},"62":{"start":{"line":235,"column":6},"end":{"line":235,"column":24}},"63":{"start":{"line":238,"column":4},"end":{"line":238,"column":26}},"64":{"start":{"line":239,"column":4},"end":{"line":248,"column":5}},"65":{"start":{"line":240,"column":6},"end":{"line":240,"column":85}},"66":{"start":{"line":241,"column":6},"end":{"line":246,"column":7}},"67":{"start":{"line":242,"column":8},"end":{"line":243,"column":65}},"68":{"start":{"line":244,"column":8},"end":{"line":244,"column":48}},"69":{"start":{"line":245,"column":8},"end":{"line":245,"column":34}},"70":{"start":{"line":247,"column":6},"end":{"line":247,"column":65}},"71":{"start":{"line":250,"column":4},"end":{"line":250,"column":22}},"72":{"start":{"line":253,"column":2},"end":{"line":255,"column":3}},"73":{"start":{"line":254,"column":4},"end":{"line":254,"column":33}},"74":{"start":{"line":257,"column":2},"end":{"line":257,"column":20}},"75":{"start":{"line":261,"column":0},"end":{"line":276,"column":2}},"76":{"start":{"line":262,"column":2},"end":{"line":268,"column":3}},"77":{"start":{"line":263,"column":4},"end":{"line":263,"column":57}},"78":{"start":{"line":265,"column":4},"end":{"line":265,"column":36}},"79":{"start":{"line":266,"column":4},"end":{"line":266,"column":67}},"80":{"start":{"line":267,"column":4},"end":{"line":267,"column":32}},"81":{"start":{"line":270,"column":2},"end":{"line":275,"column":3}},"82":{"start":{"line":271,"column":4},"end":{"line":271,"column":65}},"83":{"start":{"line":273,"column":4},"end":{"line":273,"column":28}},"84":{"start":{"line":274,"column":4},"end":{"line":274,"column":16}},"85":{"start":{"line":280,"column":0},"end":{"line":283,"column":2}},"86":{"start":{"line":281,"column":2},"end":{"line":281,"column":49}},"87":{"start":{"line":282,"column":2},"end":{"line":282,"column":88}},"88":{"start":{"line":296,"column":0},"end":{"line":296,"column":44}},"89":{"start":{"line":298,"column":0},"end":{"line":312,"column":2}},"90":{"start":{"line":299,"column":2},"end":{"line":311,"column":3}},"91":{"start":{"line":300,"column":4},"end":{"line":300,"column":97}},"92":{"start":{"line":301,"column":4},"end":{"line":301,"column":45}},"93":{"start":{"line":303,"column":4},"end":{"line":303,"column":96}},"94":{"start":{"line":304,"column":4},"end":{"line":304,"column":25}},"95":{"start":{"line":305,"column":4},"end":{"line":310,"column":5}},"96":{"start":{"line":306,"column":6},"end":{"line":306,"column":61}},"97":{"start":{"line":307,"column":6},"end":{"line":307,"column":47}},"98":{"start":{"line":309,"column":6},"end":{"line":309,"column":19}},"99":{"start":{"line":322,"column":0},"end":{"line":324,"column":2}},"100":{"start":{"line":323,"column":2},"end":{"line":323,"column":84}},"101":{"start":{"line":330,"column":0},"end":{"line":333,"column":2}},"102":{"start":{"line":331,"column":2},"end":{"line":331,"column":60}},"103":{"start":{"line":332,"column":2},"end":{"line":332,"column":38}},"104":{"start":{"line":336,"column":0},"end":{"line":338,"column":2}},"105":{"start":{"line":337,"column":2},"end":{"line":337,"column":33}}},"branchMap":{"1":{"line":1,"type":"cond-expr","locations":[{"start":{"line":1,"column":40},"end":{"line":1,"column":57}},{"start":{"line":1,"column":45},"end":{"line":1,"column":78}}]},"2":{"line":100,"type":"if","locations":[{"start":{"line":100,"column":2},"end":{"line":100,"column":2}},{"start":{"line":100,"column":2},"end":{"line":100,"column":2}}]},"3":{"line":104,"type":"if","locations":[{"start":{"line":104,"column":2},"end":{"line":104,"column":2}},{"start":{"line":104,"column":2},"end":{"line":104,"column":2}}]},"4":{"line":104,"type":"binary-expr","locations":[{"start":{"line":104,"column":7},"end":{"line":104,"column":28}},{"start":{"line":104,"column":34},"end":{"line":104,"column":55}},{"start":{"line":104,"column":60},"end":{"line":104,"column":92}}]},"5":{"line":107,"type":"if","locations":[{"start":{"line":107,"column":6},"end":{"line":107,"column":6}},{"start":{"line":107,"column":6},"end":{"line":107,"column":6}}]},"6":{"line":118,"type":"if","locations":[{"start":{"line":118,"column":2},"end":{"line":118,"column":2}},{"start":{"line":118,"column":2},"end":{"line":118,"column":2}}]},"7":{"line":118,"type":"binary-expr","locations":[{"start":{"line":118,"column":7},"end":{"line":118,"column":37}},{"start":{"line":119,"column":8},"end":{"line":119,"column":41}},{"start":{"line":119,"column":47},"end":{"line":119,"column":83}}]},"8":{"line":128,"type":"if","locations":[{"start":{"line":128,"column":2},"end":{"line":128,"column":2}},{"start":{"line":128,"column":2},"end":{"line":128,"column":2}}]},"9":{"line":128,"type":"binary-expr","locations":[{"start":{"line":128,"column":6},"end":{"line":128,"column":18}},{"start":{"line":128,"column":22},"end":{"line":128,"column":54}},{"start":{"line":128,"column":59},"end":{"line":128,"column":77}}]},"10":{"line":179,"type":"if","locations":[{"start":{"line":179,"column":2},"end":{"line":179,"column":2}},{"start":{"line":179,"column":2},"end":{"line":179,"column":2}}]},"11":{"line":185,"type":"if","locations":[{"start":{"line":185,"column":7},"end":{"line":185,"column":7}},{"start":{"line":185,"column":7},"end":{"line":185,"column":7}}]},"12":{"line":189,"type":"binary-expr","locations":[{"start":{"line":189,"column":11},"end":{"line":189,"column":21}},{"start":{"line":189,"column":26},"end":{"line":189,"column":53}}]},"13":{"line":193,"type":"binary-expr","locations":[{"start":{"line":193,"column":12},"end":{"line":193,"column":31}},{"start":{"line":194,"column":12},"end":{"line":194,"column":36}},{"start":{"line":195,"column":13},"end":{"line":195,"column":31}},{"start":{"line":195,"column":37},"end":{"line":195,"column":67}}]},"14":{"line":251,"type":"binary-expr","locations":[{"start":{"line":251,"column":11},"end":{"line":251,"column":20}},{"start":{"line":251,"column":24},"end":{"line":251,"column":34}}]},"15":{"line":214,"type":"if","locations":[{"start":{"line":214,"column":4},"end":{"line":214,"column":4}},{"start":{"line":214,"column":4},"end":{"line":214,"column":4}}]},"16":{"line":214,"type":"binary-expr","locations":[{"start":{"line":214,"column":9},"end":{"line":214,"column":23}},{"start":{"line":214,"column":29},"end":{"line":214,"column":50}},{"start":{"line":215,"column":10},"end":{"line":215,"column":43}},{"start":{"line":215,"column":49},"end":{"line":215,"column":86}}]},"17":{"line":219,"type":"if","locations":[{"start":{"line":219,"column":9},"end":{"line":219,"column":9}},{"start":{"line":219,"column":9},"end":{"line":219,"column":9}}]},"18":{"line":239,"type":"if","locations":[{"start":{"line":239,"column":4},"end":{"line":239,"column":4}},{"start":{"line":239,"column":4},"end":{"line":239,"column":4}}]},"19":{"line":241,"type":"if","locations":[{"start":{"line":241,"column":6},"end":{"line":241,"column":6}},{"start":{"line":241,"column":6},"end":{"line":241,"column":6}}]},"20":{"line":241,"type":"binary-expr","locations":[{"start":{"line":241,"column":10},"end":{"line":241,"column":21}},{"start":{"line":241,"column":26},"end":{"line":241,"column":53}},{"start":{"line":241,"column":59},"end":{"line":241,"column":84}}]},"21":{"line":253,"type":"if","locations":[{"start":{"line":253,"column":2},"end":{"line":253,"column":2}},{"start":{"line":253,"column":2},"end":{"line":253,"column":2}}]},"22":{"line":262,"type":"if","locations":[{"start":{"line":262,"column":2},"end":{"line":262,"column":2}},{"start":{"line":262,"column":2},"end":{"line":262,"column":2}}]},"23":{"line":265,"type":"binary-expr","locations":[{"start":{"line":265,"column":18},"end":{"line":265,"column":29}},{"start":{"line":265,"column":33},"end":{"line":265,"column":35}}]},"24":{"line":270,"type":"if","locations":[{"start":{"line":270,"column":2},"end":{"line":270,"column":2}},{"start":{"line":270,"column":2},"end":{"line":270,"column":2}}]},"25":{"line":282,"type":"binary-expr","locations":[{"start":{"line":282,"column":9},"end":{"line":282,"column":44}},{"start":{"line":282,"column":48},"end":{"line":282,"column":87}}]},"26":{"line":299,"type":"if","locations":[{"start":{"line":299,"column":2},"end":{"line":299,"column":2}},{"start":{"line":299,"column":2},"end":{"line":299,"column":2}}]},"27":{"line":299,"type":"binary-expr","locations":[{"start":{"line":299,"column":7},"end":{"line":299,"column":32}},{"start":{"line":299,"column":38},"end":{"line":299,"column":55}}]},"28":{"line":305,"type":"if","locations":[{"start":{"line":305,"column":4},"end":{"line":305,"column":4}},{"start":{"line":305,"column":4},"end":{"line":305,"column":4}}]},"29":{"line":305,"type":"binary-expr","locations":[{"start":{"line":305,"column":9},"end":{"line":305,"column":34}},{"start":{"line":305,"column":40},"end":{"line":305,"column":72}}]},"30":{"line":323,"type":"cond-expr","locations":[{"start":{"line":323,"column":54},"end":{"line":323,"column":62}},{"start":{"line":323,"column":65},"end":{"line":323,"column":82}}]}}},"/data/upstream/node-http2/lib/stream.js":{"path":"/data/upstream/node-http2/lib/stream.js","s":{"1":1,"2":1,"3":1,"4":1,"5":103,"6":103,"7":103,"8":103,"9":103,"10":1,"11":1,"12":1,"13":1,"14":103,"15":103,"16":103,"17":103,"18":6,"19":103,"20":39,"21":0,"22":39,"23":103,"24":0,"25":1,"26":6,"27":6,"28":6,"29":6,"30":1,"31":40,"32":1,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":1,"44":26,"45":19,"46":19,"47":1,"48":1,"49":103,"50":103,"51":103,"52":103,"53":103,"54":103,"55":103,"56":103,"57":1,"58":87,"59":87,"60":87,"61":42,"62":42,"63":0,"64":0,"65":45,"66":87,"67":33,"68":87,"69":87,"70":1,"71":35,"72":0,"73":0,"74":0,"75":1,"76":18,"77":18,"78":18,"79":0,"80":1,"81":690,"82":0,"83":0,"84":0,"85":1,"86":34,"87":34,"88":34,"89":10,"90":10,"91":10,"92":10,"93":24,"94":1,"95":103,"96":103,"97":103,"98":103,"99":103,"100":103,"101":1,"102":155,"103":155,"104":155,"105":155,"106":1,"107":220,"108":1,"109":268,"110":268,"111":268,"112":268,"113":268,"114":106,"115":106,"116":87,"117":87,"118":8,"119":8,"120":33,"121":33,"122":24,"123":24,"124":10,"125":10,"126":268,"127":268,"128":55,"129":40,"130":40,"131":3,"132":40,"133":15,"134":6,"135":9,"136":55,"137":18,"138":4,"139":14,"140":6,"141":8,"142":8,"143":18,"144":18,"145":6,"146":12,"147":4,"148":8,"149":8,"150":18,"151":61,"152":27,"153":34,"154":2,"155":61,"156":55,"157":23,"158":32,"159":3,"160":55,"161":36,"162":21,"163":15,"164":3,"165":36,"166":25,"167":14,"168":25,"169":268,"170":64,"171":64,"172":268,"173":13,"174":13,"175":13,"176":268,"177":110,"178":110,"179":57,"180":53,"181":158,"182":85,"183":268,"184":45,"185":45,"186":20,"187":20,"188":25,"189":25,"190":25,"191":1,"192":1,"193":1,"194":6,"195":2,"196":2,"197":6},"b":{"1":[1,0],"2":[0,39],"3":[0,0],"4":[0,0,0],"5":[0,0],"6":[0,0],"7":[0,0,0],"8":[19,7],"9":[42,45],"10":[0,42],"11":[33,54],"12":[87,0],"13":[0,35],"14":[18,0],"15":[0,690],"16":[10,24],"17":[34,10,4],"18":[10,0],"19":[220,133,117],"20":[106,87,8,33,24,10],"21":[55,18,18,61,55,36,25],"22":[40,15],"23":[3,37],"24":[0,3],"25":[6,9],"26":[15,10],"27":[4,14],"28":[18,13],"29":[6,8],"30":[0,8],"31":[8,4],"32":[6,12],"33":[4,8],"34":[12,8],"35":[0,8],"36":[8,4],"37":[27,34],"38":[18,9],"39":[2,32],"40":[23,32],"41":[55,53,50],"42":[29,3],"43":[32,3,3,3],"44":[21,15],"45":[36,31,28],"46":[12,3],"47":[15,3,3,3],"48":[11,14],"49":[25,7,23,18,12,6,5,4],"50":[64,204],"51":[268,89],"52":[13,255],"53":[268,24],"54":[6,7],"55":[110,158],"56":[57,53],"57":[85,73],"58":[45,223],"59":[20,25],"60":[2,4]},"f":{"1":0,"2":103,"3":103,"4":6,"5":39,"6":0,"7":6,"8":40,"9":0,"10":26,"11":103,"12":87,"13":35,"14":18,"15":690,"16":34,"17":103,"18":155,"19":220,"20":268,"21":6},"fnMap":{"1":{"name":"noop","line":1,"loc":{"start":{"line":1,"column":45},"end":{"line":1,"column":76}}},"2":{"name":"Stream","line":47,"loc":{"start":{"line":47,"column":0},"end":{"line":47,"column":21}}},"3":{"name":"_initializeManagement","line":73,"loc":{"start":{"line":73,"column":41},"end":{"line":73,"column":74}}},"4":{"name":"(anonymous_4)","line":77,"loc":{"start":{"line":77,"column":26},"end":{"line":77,"column":42}}},"5":{"name":"(anonymous_5)","line":80,"loc":{"start":{"line":80,"column":21},"end":{"line":80,"column":37}}},"6":{"name":"(anonymous_6)","line":86,"loc":{"start":{"line":86,"column":22},"end":{"line":86,"column":38}}},"7":{"name":"promise","line":91,"loc":{"start":{"line":91,"column":27},"end":{"line":91,"column":53}}},"8":{"name":"headers","line":102,"loc":{"start":{"line":102,"column":27},"end":{"line":102,"column":53}}},"9":{"name":"priority","line":109,"loc":{"start":{"line":109,"column":28},"end":{"line":109,"column":62}}},"10":{"name":"reset","line":133,"loc":{"start":{"line":133,"column":25},"end":{"line":133,"column":47}}},"11":{"name":"_initializeDataFlow","line":178,"loc":{"start":{"line":178,"column":39},"end":{"line":178,"column":70}}},"12":{"name":"_receive","line":191,"loc":{"start":{"line":191,"column":28},"end":{"line":191,"column":60}}},"13":{"name":"_read","line":223,"loc":{"start":{"line":223,"column":25},"end":{"line":223,"column":42}}},"14":{"name":"_write","line":232,"loc":{"start":{"line":232,"column":26},"end":{"line":232,"column":67}}},"15":{"name":"_send","line":250,"loc":{"start":{"line":250,"column":25},"end":{"line":250,"column":42}}},"16":{"name":"_finishing","line":262,"loc":{"start":{"line":262,"column":30},"end":{"line":262,"column":52}}},"17":{"name":"_initializeState","line":309,"loc":{"start":{"line":309,"column":36},"end":{"line":309,"column":64}}},"18":{"name":"transition","line":320,"loc":{"start":{"line":320,"column":29},"end":{"line":320,"column":56}}},"19":{"name":"activeState","line":329,"loc":{"start":{"line":329,"column":0},"end":{"line":329,"column":28}}},"20":{"name":"transition","line":336,"loc":{"start":{"line":336,"column":31},"end":{"line":336,"column":67}}},"21":{"name":"(anonymous_21)","line":564,"loc":{"start":{"line":564,"column":24},"end":{"line":564,"column":41}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":79}},"2":{"start":{"line":12,"column":0},"end":{"line":12,"column":38}},"3":{"start":{"line":14,"column":0},"end":{"line":14,"column":24}},"4":{"start":{"line":47,"column":0},"end":{"line":61,"column":1}},"5":{"start":{"line":48,"column":2},"end":{"line":48,"column":20}},"6":{"start":{"line":51,"column":2},"end":{"line":51,"column":58}},"7":{"start":{"line":54,"column":2},"end":{"line":54,"column":31}},"8":{"start":{"line":57,"column":2},"end":{"line":57,"column":29}},"9":{"start":{"line":60,"column":2},"end":{"line":60,"column":26}},"10":{"start":{"line":63,"column":0},"end":{"line":63,"column":87}},"11":{"start":{"line":69,"column":0},"end":{"line":69,"column":39}},"12":{"start":{"line":70,"column":0},"end":{"line":70,"column":39}},"13":{"start":{"line":73,"column":0},"end":{"line":89,"column":2}},"14":{"start":{"line":74,"column":2},"end":{"line":74,"column":26}},"15":{"start":{"line":75,"column":2},"end":{"line":75,"column":36}},"16":{"start":{"line":76,"column":2},"end":{"line":76,"column":33}},"17":{"start":{"line":77,"column":2},"end":{"line":79,"column":5}},"18":{"start":{"line":78,"column":4},"end":{"line":78,"column":63}},"19":{"start":{"line":80,"column":2},"end":{"line":85,"column":5}},"20":{"start":{"line":81,"column":4},"end":{"line":83,"column":5}},"21":{"start":{"line":82,"column":6},"end":{"line":82,"column":42}},"22":{"start":{"line":84,"column":4},"end":{"line":84,"column":40}},"23":{"start":{"line":86,"column":2},"end":{"line":88,"column":5}},"24":{"start":{"line":87,"column":4},"end":{"line":87,"column":40}},"25":{"start":{"line":91,"column":0},"end":{"line":100,"column":2}},"26":{"start":{"line":92,"column":2},"end":{"line":92,"column":37}},"27":{"start":{"line":93,"column":2},"end":{"line":93,"column":64}},"28":{"start":{"line":94,"column":2},"end":{"line":98,"column":5}},"29":{"start":{"line":99,"column":2},"end":{"line":99,"column":16}},"30":{"start":{"line":102,"column":0},"end":{"line":107,"column":2}},"31":{"start":{"line":103,"column":2},"end":{"line":106,"column":5}},"32":{"start":{"line":109,"column":0},"end":{"line":129,"column":2}},"33":{"start":{"line":110,"column":2},"end":{"line":128,"column":3}},"34":{"start":{"line":111,"column":4},"end":{"line":123,"column":5}},"35":{"start":{"line":112,"column":6},"end":{"line":112,"column":38}},"36":{"start":{"line":114,"column":6},"end":{"line":114,"column":57}},"37":{"start":{"line":115,"column":6},"end":{"line":122,"column":7}},"38":{"start":{"line":116,"column":8},"end":{"line":116,"column":38}},"39":{"start":{"line":118,"column":8},"end":{"line":121,"column":11}},"40":{"start":{"line":125,"column":4},"end":{"line":125,"column":65}},"41":{"start":{"line":126,"column":4},"end":{"line":126,"column":30}},"42":{"start":{"line":127,"column":4},"end":{"line":127,"column":36}},"43":{"start":{"line":133,"column":0},"end":{"line":141,"column":2}},"44":{"start":{"line":134,"column":2},"end":{"line":140,"column":3}},"45":{"start":{"line":135,"column":4},"end":{"line":135,"column":27}},"46":{"start":{"line":136,"column":4},"end":{"line":139,"column":7}},"47":{"start":{"line":176,"column":0},"end":{"line":176,"column":34}},"48":{"start":{"line":178,"column":0},"end":{"line":188,"column":2}},"49":{"start":{"line":179,"column":2},"end":{"line":179,"column":29}},"50":{"start":{"line":180,"column":2},"end":{"line":180,"column":33}},"51":{"start":{"line":181,"column":2},"end":{"line":181,"column":46}},"52":{"start":{"line":182,"column":2},"end":{"line":182,"column":52}},"53":{"start":{"line":183,"column":2},"end":{"line":183,"column":63}},"54":{"start":{"line":184,"column":2},"end":{"line":184,"column":67}},"55":{"start":{"line":185,"column":2},"end":{"line":185,"column":59}},"56":{"start":{"line":187,"column":2},"end":{"line":187,"column":37}},"57":{"start":{"line":191,"column":0},"end":{"line":219,"column":2}},"58":{"start":{"line":192,"column":2},"end":{"line":192,"column":55}},"59":{"start":{"line":194,"column":2},"end":{"line":194,"column":23}},"60":{"start":{"line":198,"column":2},"end":{"line":209,"column":3}},"61":{"start":{"line":199,"column":4},"end":{"line":199,"column":43}},"62":{"start":{"line":200,"column":4},"end":{"line":203,"column":5}},"63":{"start":{"line":201,"column":6},"end":{"line":201,"column":32}},"64":{"start":{"line":202,"column":6},"end":{"line":202,"column":24}},"65":{"start":{"line":208,"column":4},"end":{"line":208,"column":33}},"66":{"start":{"line":212,"column":2},"end":{"line":214,"column":3}},"67":{"start":{"line":213,"column":4},"end":{"line":213,"column":20}},"68":{"start":{"line":216,"column":2},"end":{"line":218,"column":3}},"69":{"start":{"line":217,"column":4},"end":{"line":217,"column":12}},"70":{"start":{"line":223,"column":0},"end":{"line":229,"column":2}},"71":{"start":{"line":224,"column":2},"end":{"line":228,"column":3}},"72":{"start":{"line":225,"column":4},"end":{"line":225,"column":40}},"73":{"start":{"line":226,"column":4},"end":{"line":226,"column":29}},"74":{"start":{"line":227,"column":4},"end":{"line":227,"column":18}},"75":{"start":{"line":232,"column":0},"end":{"line":245,"column":2}},"76":{"start":{"line":234,"column":2},"end":{"line":237,"column":5}},"77":{"start":{"line":240,"column":2},"end":{"line":244,"column":3}},"78":{"start":{"line":241,"column":4},"end":{"line":241,"column":12}},"79":{"start":{"line":243,"column":4},"end":{"line":243,"column":27}},"80":{"start":{"line":250,"column":0},"end":{"line":256,"column":2}},"81":{"start":{"line":251,"column":2},"end":{"line":255,"column":3}},"82":{"start":{"line":252,"column":4},"end":{"line":252,"column":34}},"83":{"start":{"line":253,"column":4},"end":{"line":253,"column":26}},"84":{"start":{"line":254,"column":4},"end":{"line":254,"column":15}},"85":{"start":{"line":262,"column":0},"end":{"line":277,"column":2}},"86":{"start":{"line":263,"column":2},"end":{"line":267,"column":4}},"87":{"start":{"line":268,"column":2},"end":{"line":268,"column":53}},"88":{"start":{"line":269,"column":2},"end":{"line":276,"column":3}},"89":{"start":{"line":270,"column":4},"end":{"line":270,"column":86}},"90":{"start":{"line":271,"column":4},"end":{"line":271,"column":44}},"91":{"start":{"line":272,"column":4},"end":{"line":272,"column":38}},"92":{"start":{"line":273,"column":4},"end":{"line":273,"column":37}},"93":{"start":{"line":275,"column":4},"end":{"line":275,"column":33}},"94":{"start":{"line":309,"column":0},"end":{"line":316,"column":2}},"95":{"start":{"line":310,"column":2},"end":{"line":310,"column":22}},"96":{"start":{"line":311,"column":2},"end":{"line":311,"column":30}},"97":{"start":{"line":312,"column":2},"end":{"line":312,"column":31}},"98":{"start":{"line":313,"column":2},"end":{"line":313,"column":34}},"99":{"start":{"line":314,"column":2},"end":{"line":314,"column":56}},"100":{"start":{"line":315,"column":2},"end":{"line":315,"column":59}},"101":{"start":{"line":320,"column":0},"end":{"line":325,"column":2}},"102":{"start":{"line":321,"column":2},"end":{"line":321,"column":31}},"103":{"start":{"line":322,"column":2},"end":{"line":322,"column":71}},"104":{"start":{"line":323,"column":2},"end":{"line":323,"column":21}},"105":{"start":{"line":324,"column":2},"end":{"line":324,"column":28}},"106":{"start":{"line":329,"column":0},"end":{"line":331,"column":1}},"107":{"start":{"line":330,"column":2},"end":{"line":330,"column":101}},"108":{"start":{"line":336,"column":0},"end":{"line":556,"column":2}},"109":{"start":{"line":337,"column":2},"end":{"line":337,"column":27}},"110":{"start":{"line":338,"column":2},"end":{"line":338,"column":24}},"111":{"start":{"line":340,"column":2},"end":{"line":340,"column":54}},"112":{"start":{"line":341,"column":2},"end":{"line":341,"column":70}},"113":{"start":{"line":342,"column":2},"end":{"line":349,"column":3}},"114":{"start":{"line":343,"column":26},"end":{"line":343,"column":47}},"115":{"start":{"line":343,"column":48},"end":{"line":343,"column":54}},"116":{"start":{"line":344,"column":26},"end":{"line":344,"column":47}},"117":{"start":{"line":344,"column":48},"end":{"line":344,"column":54}},"118":{"start":{"line":345,"column":26},"end":{"line":345,"column":47}},"119":{"start":{"line":345,"column":48},"end":{"line":345,"column":54}},"120":{"start":{"line":346,"column":26},"end":{"line":346,"column":47}},"121":{"start":{"line":346,"column":48},"end":{"line":346,"column":54}},"122":{"start":{"line":347,"column":26},"end":{"line":347,"column":47}},"123":{"start":{"line":347,"column":48},"end":{"line":347,"column":54}},"124":{"start":{"line":348,"column":26},"end":{"line":348,"column":47}},"125":{"start":{"line":348,"column":48},"end":{"line":348,"column":54}},"126":{"start":{"line":351,"column":2},"end":{"line":351,"column":33}},"127":{"start":{"line":353,"column":2},"end":{"line":497,"column":3}},"128":{"start":{"line":360,"column":6},"end":{"line":370,"column":7}},"129":{"start":{"line":361,"column":8},"end":{"line":361,"column":31}},"130":{"start":{"line":362,"column":8},"end":{"line":364,"column":9}},"131":{"start":{"line":363,"column":10},"end":{"line":363,"column":79}},"132":{"start":{"line":365,"column":8},"end":{"line":365,"column":34}},"133":{"start":{"line":366,"column":13},"end":{"line":370,"column":7}},"134":{"start":{"line":367,"column":8},"end":{"line":367,"column":33}},"135":{"start":{"line":369,"column":8},"end":{"line":369,"column":33}},"136":{"start":{"line":371,"column":6},"end":{"line":371,"column":12}},"137":{"start":{"line":383,"column":6},"end":{"line":391,"column":7}},"138":{"start":{"line":384,"column":8},"end":{"line":384,"column":45}},"139":{"start":{"line":385,"column":13},"end":{"line":391,"column":7}},"140":{"start":{"line":386,"column":8},"end":{"line":386,"column":33}},"141":{"start":{"line":387,"column":13},"end":{"line":391,"column":7}},"142":{"start":{"line":390,"column":8},"end":{"line":390,"column":33}},"143":{"start":{"line":392,"column":6},"end":{"line":392,"column":12}},"144":{"start":{"line":402,"column":6},"end":{"line":410,"column":7}},"145":{"start":{"line":403,"column":8},"end":{"line":403,"column":33}},"146":{"start":{"line":404,"column":13},"end":{"line":410,"column":7}},"147":{"start":{"line":405,"column":8},"end":{"line":405,"column":44}},"148":{"start":{"line":406,"column":13},"end":{"line":410,"column":7}},"149":{"start":{"line":409,"column":8},"end":{"line":409,"column":33}},"150":{"start":{"line":411,"column":6},"end":{"line":411,"column":12}},"151":{"start":{"line":423,"column":6},"end":{"line":429,"column":7}},"152":{"start":{"line":424,"column":8},"end":{"line":424,"column":77}},"153":{"start":{"line":425,"column":13},"end":{"line":429,"column":7}},"154":{"start":{"line":426,"column":8},"end":{"line":426,"column":33}},"155":{"start":{"line":430,"column":6},"end":{"line":430,"column":12}},"156":{"start":{"line":439,"column":6},"end":{"line":445,"column":7}},"157":{"start":{"line":440,"column":8},"end":{"line":440,"column":33}},"158":{"start":{"line":441,"column":13},"end":{"line":445,"column":7}},"159":{"start":{"line":444,"column":8},"end":{"line":444,"column":33}},"160":{"start":{"line":446,"column":6},"end":{"line":446,"column":12}},"161":{"start":{"line":459,"column":6},"end":{"line":465,"column":7}},"162":{"start":{"line":460,"column":8},"end":{"line":460,"column":33}},"163":{"start":{"line":461,"column":13},"end":{"line":465,"column":7}},"164":{"start":{"line":464,"column":8},"end":{"line":464,"column":33}},"165":{"start":{"line":466,"column":6},"end":{"line":466,"column":12}},"166":{"start":{"line":489,"column":6},"end":{"line":495,"column":7}},"167":{"start":{"line":494,"column":8},"end":{"line":494,"column":32}},"168":{"start":{"line":496,"column":6},"end":{"line":496,"column":12}},"169":{"start":{"line":502,"column":2},"end":{"line":505,"column":3}},"170":{"start":{"line":503,"column":4},"end":{"line":503,"column":31}},"171":{"start":{"line":504,"column":4},"end":{"line":504,"column":37}},"172":{"start":{"line":513,"column":2},"end":{"line":518,"column":3}},"173":{"start":{"line":514,"column":4},"end":{"line":515,"column":86}},"174":{"start":{"line":516,"column":4},"end":{"line":516,"column":84}},"175":{"start":{"line":517,"column":4},"end":{"line":517,"column":47}},"176":{"start":{"line":521,"column":2},"end":{"line":530,"column":3}},"177":{"start":{"line":522,"column":4},"end":{"line":522,"column":72}},"178":{"start":{"line":523,"column":4},"end":{"line":527,"column":5}},"179":{"start":{"line":524,"column":6},"end":{"line":524,"column":34}},"180":{"start":{"line":526,"column":6},"end":{"line":526,"column":33}},"181":{"start":{"line":528,"column":9},"end":{"line":530,"column":3}},"182":{"start":{"line":529,"column":4},"end":{"line":529,"column":27}},"183":{"start":{"line":533,"column":2},"end":{"line":555,"column":3}},"184":{"start":{"line":534,"column":4},"end":{"line":540,"column":6}},"185":{"start":{"line":543,"column":4},"end":{"line":554,"column":5}},"186":{"start":{"line":544,"column":6},"end":{"line":544,"column":68}},"187":{"start":{"line":545,"column":6},"end":{"line":545,"column":97}},"188":{"start":{"line":551,"column":6},"end":{"line":551,"column":69}},"189":{"start":{"line":552,"column":6},"end":{"line":552,"column":24}},"190":{"start":{"line":553,"column":6},"end":{"line":553,"column":32}},"191":{"start":{"line":561,"column":0},"end":{"line":561,"column":25}},"192":{"start":{"line":563,"column":0},"end":{"line":563,"column":15}},"193":{"start":{"line":564,"column":0},"end":{"line":570,"column":2}},"194":{"start":{"line":565,"column":2},"end":{"line":568,"column":3}},"195":{"start":{"line":566,"column":4},"end":{"line":566,"column":23}},"196":{"start":{"line":567,"column":4},"end":{"line":567,"column":16}},"197":{"start":{"line":569,"column":2},"end":{"line":569,"column":19}}},"branchMap":{"1":{"line":1,"type":"cond-expr","locations":[{"start":{"line":1,"column":40},"end":{"line":1,"column":57}},{"start":{"line":1,"column":45},"end":{"line":1,"column":78}}]},"2":{"line":81,"type":"if","locations":[{"start":{"line":81,"column":4},"end":{"line":81,"column":4}},{"start":{"line":81,"column":4},"end":{"line":81,"column":4}}]},"3":{"line":110,"type":"if","locations":[{"start":{"line":110,"column":2},"end":{"line":110,"column":2}},{"start":{"line":110,"column":2},"end":{"line":110,"column":2}}]},"4":{"line":110,"type":"binary-expr","locations":[{"start":{"line":110,"column":7},"end":{"line":110,"column":11}},{"start":{"line":110,"column":15},"end":{"line":110,"column":38}},{"start":{"line":110,"column":43},"end":{"line":110,"column":48}}]},"5":{"line":111,"type":"if","locations":[{"start":{"line":111,"column":4},"end":{"line":111,"column":4}},{"start":{"line":111,"column":4},"end":{"line":111,"column":4}}]},"6":{"line":115,"type":"if","locations":[{"start":{"line":115,"column":6},"end":{"line":115,"column":6}},{"start":{"line":115,"column":6},"end":{"line":115,"column":6}}]},"7":{"line":115,"type":"binary-expr","locations":[{"start":{"line":115,"column":10},"end":{"line":115,"column":19}},{"start":{"line":115,"column":25},"end":{"line":115,"column":53}},{"start":{"line":115,"column":59},"end":{"line":115,"column":88}}]},"8":{"line":134,"type":"if","locations":[{"start":{"line":134,"column":2},"end":{"line":134,"column":2}},{"start":{"line":134,"column":2},"end":{"line":134,"column":2}}]},"9":{"line":198,"type":"if","locations":[{"start":{"line":198,"column":2},"end":{"line":198,"column":2}},{"start":{"line":198,"column":2},"end":{"line":198,"column":2}}]},"10":{"line":200,"type":"if","locations":[{"start":{"line":200,"column":4},"end":{"line":200,"column":4}},{"start":{"line":200,"column":4},"end":{"line":200,"column":4}}]},"11":{"line":212,"type":"if","locations":[{"start":{"line":212,"column":2},"end":{"line":212,"column":2}},{"start":{"line":212,"column":2},"end":{"line":212,"column":2}}]},"12":{"line":216,"type":"if","locations":[{"start":{"line":216,"column":2},"end":{"line":216,"column":2}},{"start":{"line":216,"column":2},"end":{"line":216,"column":2}}]},"13":{"line":224,"type":"if","locations":[{"start":{"line":224,"column":2},"end":{"line":224,"column":2}},{"start":{"line":224,"column":2},"end":{"line":224,"column":2}}]},"14":{"line":240,"type":"if","locations":[{"start":{"line":240,"column":2},"end":{"line":240,"column":2}},{"start":{"line":240,"column":2},"end":{"line":240,"column":2}}]},"15":{"line":251,"type":"if","locations":[{"start":{"line":251,"column":2},"end":{"line":251,"column":2}},{"start":{"line":251,"column":2},"end":{"line":251,"column":2}}]},"16":{"line":269,"type":"if","locations":[{"start":{"line":269,"column":2},"end":{"line":269,"column":2}},{"start":{"line":269,"column":2},"end":{"line":269,"column":2}}]},"17":{"line":269,"type":"binary-expr","locations":[{"start":{"line":269,"column":6},"end":{"line":269,"column":15}},{"start":{"line":269,"column":21},"end":{"line":269,"column":46}},{"start":{"line":269,"column":52},"end":{"line":269,"column":80}}]},"18":{"line":271,"type":"binary-expr","locations":[{"start":{"line":271,"column":22},"end":{"line":271,"column":37}},{"start":{"line":271,"column":41},"end":{"line":271,"column":43}}]},"19":{"line":330,"type":"binary-expr","locations":[{"start":{"line":330,"column":11},"end":{"line":330,"column":40}},{"start":{"line":330,"column":46},"end":{"line":330,"column":76}},{"start":{"line":330,"column":82},"end":{"line":330,"column":98}}]},"20":{"line":342,"type":"switch","locations":[{"start":{"line":343,"column":4},"end":{"line":343,"column":54}},{"start":{"line":344,"column":4},"end":{"line":344,"column":54}},{"start":{"line":345,"column":4},"end":{"line":345,"column":54}},{"start":{"line":346,"column":4},"end":{"line":346,"column":54}},{"start":{"line":347,"column":4},"end":{"line":347,"column":54}},{"start":{"line":348,"column":4},"end":{"line":348,"column":54}}]},"21":{"line":353,"type":"switch","locations":[{"start":{"line":359,"column":4},"end":{"line":371,"column":12}},{"start":{"line":382,"column":4},"end":{"line":392,"column":12}},{"start":{"line":401,"column":4},"end":{"line":411,"column":12}},{"start":{"line":422,"column":4},"end":{"line":430,"column":12}},{"start":{"line":438,"column":4},"end":{"line":446,"column":12}},{"start":{"line":458,"column":4},"end":{"line":466,"column":12}},{"start":{"line":488,"column":4},"end":{"line":496,"column":12}}]},"22":{"line":360,"type":"if","locations":[{"start":{"line":360,"column":6},"end":{"line":360,"column":6}},{"start":{"line":360,"column":6},"end":{"line":360,"column":6}}]},"23":{"line":362,"type":"if","locations":[{"start":{"line":362,"column":8},"end":{"line":362,"column":8}},{"start":{"line":362,"column":8},"end":{"line":362,"column":8}}]},"24":{"line":363,"type":"cond-expr","locations":[{"start":{"line":363,"column":35},"end":{"line":363,"column":54}},{"start":{"line":363,"column":57},"end":{"line":363,"column":77}}]},"25":{"line":366,"type":"if","locations":[{"start":{"line":366,"column":13},"end":{"line":366,"column":13}},{"start":{"line":366,"column":13},"end":{"line":366,"column":13}}]},"26":{"line":366,"type":"binary-expr","locations":[{"start":{"line":366,"column":17},"end":{"line":366,"column":24}},{"start":{"line":366,"column":28},"end":{"line":366,"column":38}}]},"27":{"line":383,"type":"if","locations":[{"start":{"line":383,"column":6},"end":{"line":383,"column":6}},{"start":{"line":383,"column":6},"end":{"line":383,"column":6}}]},"28":{"line":383,"type":"binary-expr","locations":[{"start":{"line":383,"column":10},"end":{"line":383,"column":17}},{"start":{"line":383,"column":21},"end":{"line":383,"column":28}}]},"29":{"line":385,"type":"if","locations":[{"start":{"line":385,"column":13},"end":{"line":385,"column":13}},{"start":{"line":385,"column":13},"end":{"line":385,"column":13}}]},"30":{"line":387,"type":"if","locations":[{"start":{"line":387,"column":13},"end":{"line":387,"column":13}},{"start":{"line":387,"column":13},"end":{"line":387,"column":13}}]},"31":{"line":387,"type":"binary-expr","locations":[{"start":{"line":387,"column":17},"end":{"line":387,"column":26}},{"start":{"line":387,"column":30},"end":{"line":387,"column":38}}]},"32":{"line":402,"type":"if","locations":[{"start":{"line":402,"column":6},"end":{"line":402,"column":6}},{"start":{"line":402,"column":6},"end":{"line":402,"column":6}}]},"33":{"line":404,"type":"if","locations":[{"start":{"line":404,"column":13},"end":{"line":404,"column":13}},{"start":{"line":404,"column":13},"end":{"line":404,"column":13}}]},"34":{"line":404,"type":"binary-expr","locations":[{"start":{"line":404,"column":17},"end":{"line":404,"column":26}},{"start":{"line":404,"column":30},"end":{"line":404,"column":37}}]},"35":{"line":406,"type":"if","locations":[{"start":{"line":406,"column":13},"end":{"line":406,"column":13}},{"start":{"line":406,"column":13},"end":{"line":406,"column":13}}]},"36":{"line":406,"type":"binary-expr","locations":[{"start":{"line":406,"column":17},"end":{"line":406,"column":24}},{"start":{"line":406,"column":28},"end":{"line":406,"column":36}}]},"37":{"line":423,"type":"if","locations":[{"start":{"line":423,"column":6},"end":{"line":423,"column":6}},{"start":{"line":423,"column":6},"end":{"line":423,"column":6}}]},"38":{"line":424,"type":"cond-expr","locations":[{"start":{"line":424,"column":33},"end":{"line":424,"column":52}},{"start":{"line":424,"column":55},"end":{"line":424,"column":75}}]},"39":{"line":425,"type":"if","locations":[{"start":{"line":425,"column":13},"end":{"line":425,"column":13}},{"start":{"line":425,"column":13},"end":{"line":425,"column":13}}]},"40":{"line":439,"type":"if","locations":[{"start":{"line":439,"column":6},"end":{"line":439,"column":6}},{"start":{"line":439,"column":6},"end":{"line":439,"column":6}}]},"41":{"line":439,"type":"binary-expr","locations":[{"start":{"line":439,"column":10},"end":{"line":439,"column":20}},{"start":{"line":439,"column":25},"end":{"line":439,"column":34}},{"start":{"line":439,"column":38},"end":{"line":439,"column":60}}]},"42":{"line":441,"type":"if","locations":[{"start":{"line":441,"column":13},"end":{"line":441,"column":13}},{"start":{"line":441,"column":13},"end":{"line":441,"column":13}}]},"43":{"line":441,"type":"binary-expr","locations":[{"start":{"line":441,"column":17},"end":{"line":441,"column":26}},{"start":{"line":441,"column":31},"end":{"line":441,"column":38}},{"start":{"line":441,"column":43},"end":{"line":441,"column":51}},{"start":{"line":441,"column":55},"end":{"line":441,"column":68}}]},"44":{"line":459,"type":"if","locations":[{"start":{"line":459,"column":6},"end":{"line":459,"column":6}},{"start":{"line":459,"column":6},"end":{"line":459,"column":6}}]},"45":{"line":459,"type":"binary-expr","locations":[{"start":{"line":459,"column":10},"end":{"line":459,"column":20}},{"start":{"line":459,"column":25},"end":{"line":459,"column":32}},{"start":{"line":459,"column":36},"end":{"line":459,"column":58}}]},"46":{"line":461,"type":"if","locations":[{"start":{"line":461,"column":13},"end":{"line":461,"column":13}},{"start":{"line":461,"column":13},"end":{"line":461,"column":13}}]},"47":{"line":461,"type":"binary-expr","locations":[{"start":{"line":461,"column":17},"end":{"line":461,"column":24}},{"start":{"line":461,"column":29},"end":{"line":461,"column":38}},{"start":{"line":461,"column":43},"end":{"line":461,"column":56}},{"start":{"line":461,"column":60},"end":{"line":461,"column":68}}]},"48":{"line":489,"type":"if","locations":[{"start":{"line":489,"column":6},"end":{"line":489,"column":6}},{"start":{"line":489,"column":6},"end":{"line":489,"column":6}}]},"49":{"line":489,"type":"binary-expr","locations":[{"start":{"line":489,"column":11},"end":{"line":489,"column":18}},{"start":{"line":489,"column":22},"end":{"line":489,"column":32}},{"start":{"line":490,"column":11},"end":{"line":490,"column":20}},{"start":{"line":490,"column":24},"end":{"line":490,"column":40}},{"start":{"line":491,"column":12},"end":{"line":491,"column":31}},{"start":{"line":491,"column":35},"end":{"line":491,"column":48}},{"start":{"line":491,"column":52},"end":{"line":491,"column":60}},{"start":{"line":491,"column":64},"end":{"line":491,"column":74}}]},"50":{"line":502,"type":"if","locations":[{"start":{"line":502,"column":2},"end":{"line":502,"column":2}},{"start":{"line":502,"column":2},"end":{"line":502,"column":2}}]},"51":{"line":502,"type":"binary-expr","locations":[{"start":{"line":502,"column":7},"end":{"line":502,"column":30}},{"start":{"line":502,"column":36},"end":{"line":502,"column":62}}]},"52":{"line":513,"type":"if","locations":[{"start":{"line":513,"column":2},"end":{"line":513,"column":2}},{"start":{"line":513,"column":2},"end":{"line":513,"column":2}}]},"53":{"line":513,"type":"binary-expr","locations":[{"start":{"line":513,"column":6},"end":{"line":513,"column":18}},{"start":{"line":513,"column":22},"end":{"line":513,"column":28}}]},"54":{"line":516,"type":"cond-expr","locations":[{"start":{"line":516,"column":46},"end":{"line":516,"column":62}},{"start":{"line":516,"column":65},"end":{"line":516,"column":82}}]},"55":{"line":521,"type":"if","locations":[{"start":{"line":521,"column":2},"end":{"line":521,"column":2}},{"start":{"line":521,"column":2},"end":{"line":521,"column":2}}]},"56":{"line":523,"type":"if","locations":[{"start":{"line":523,"column":4},"end":{"line":523,"column":4}},{"start":{"line":523,"column":4},"end":{"line":523,"column":4}}]},"57":{"line":528,"type":"if","locations":[{"start":{"line":528,"column":9},"end":{"line":528,"column":9}},{"start":{"line":528,"column":9},"end":{"line":528,"column":9}}]},"58":{"line":533,"type":"if","locations":[{"start":{"line":533,"column":2},"end":{"line":533,"column":2}},{"start":{"line":533,"column":2},"end":{"line":533,"column":2}}]},"59":{"line":543,"type":"if","locations":[{"start":{"line":543,"column":4},"end":{"line":543,"column":4}},{"start":{"line":543,"column":4},"end":{"line":543,"column":4}}]},"60":{"line":565,"type":"if","locations":[{"start":{"line":565,"column":2},"end":{"line":565,"column":2}},{"start":{"line":565,"column":2},"end":{"line":565,"column":2}}]}}},"/data/upstream/node-http2/lib/endpoint.js":{"path":"/data/upstream/node-http2/lib/endpoint.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":22,"11":22,"12":22,"13":22,"14":11,"15":11,"16":22,"17":22,"18":22,"19":1,"20":1,"21":1,"22":11,"23":11,"24":1,"25":11,"26":11,"27":10,"28":10,"29":217,"30":1,"31":1,"32":1,"33":216,"34":9,"35":9,"36":9,"37":9,"38":9,"39":1,"40":22,"41":22,"42":11,"43":11,"44":11,"45":11,"46":11,"47":11,"48":22,"49":22,"50":22,"51":22,"52":22,"53":22,"54":22,"55":22,"56":1,"57":256,"58":256,"59":156,"60":1,"61":46,"62":1,"63":22,"64":1,"65":10,"66":1,"67":22,"68":22,"69":22,"70":22,"71":22,"72":1,"73":1,"74":1,"75":1,"76":2,"77":1,"78":1,"79":1,"80":6,"81":2,"82":2,"83":6},"b":{"1":[1,0],"2":[22,11],"3":[11,11],"4":[226,217],"5":[1,216],"6":[9,0],"7":[11,11],"8":[412,412],"9":[2,4]},"f":{"1":0,"2":22,"3":11,"4":11,"5":10,"6":22,"7":256,"8":46,"9":22,"10":10,"11":22,"12":1,"13":2,"14":6},"fnMap":{"1":{"name":"noop","line":1,"loc":{"start":{"line":1,"column":45},"end":{"line":1,"column":76}}},"2":{"name":"Endpoint","line":16,"loc":{"start":{"line":16,"column":0},"end":{"line":16,"column":39}}},"3":{"name":"_writePrelude","line":50,"loc":{"start":{"line":50,"column":35},"end":{"line":50,"column":60}}},"4":{"name":"_readPrelude","line":56,"loc":{"start":{"line":56,"column":34},"end":{"line":56,"column":58}}},"5":{"name":"_temporalWrite","line":61,"loc":{"start":{"line":61,"column":16},"end":{"line":61,"column":63}}},"6":{"name":"_initializeDataFlow","line":119,"loc":{"start":{"line":119,"column":41},"end":{"line":119,"column":86}}},"7":{"name":"_read","line":143,"loc":{"start":{"line":143,"column":27},"end":{"line":143,"column":44}}},"8":{"name":"_write","line":150,"loc":{"start":{"line":150,"column":28},"end":{"line":150,"column":67}}},"9":{"name":"_initializeManagement","line":157,"loc":{"start":{"line":157,"column":43},"end":{"line":157,"column":76}}},"10":{"name":"createStream","line":161,"loc":{"start":{"line":161,"column":34},"end":{"line":161,"column":58}}},"11":{"name":"_initializeErrorHandling","line":168,"loc":{"start":{"line":168,"column":46},"end":{"line":168,"column":82}}},"12":{"name":"_error","line":176,"loc":{"start":{"line":176,"column":28},"end":{"line":176,"column":62}}},"13":{"name":"close","line":181,"loc":{"start":{"line":181,"column":27},"end":{"line":181,"column":49}}},"14":{"name":"(anonymous_14)","line":191,"loc":{"start":{"line":191,"column":24},"end":{"line":191,"column":43}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":79}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":50}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":52}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":54}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":56}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":54}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":44}},"8":{"start":{"line":10,"column":0},"end":{"line":10,"column":28}},"9":{"start":{"line":16,"column":0},"end":{"line":41,"column":1}},"10":{"start":{"line":17,"column":2},"end":{"line":17,"column":20}},"11":{"start":{"line":20,"column":2},"end":{"line":20,"column":60}},"12":{"start":{"line":24,"column":2},"end":{"line":24,"column":51}},"13":{"start":{"line":25,"column":2},"end":{"line":29,"column":3}},"14":{"start":{"line":26,"column":4},"end":{"line":26,"column":25}},"15":{"start":{"line":28,"column":4},"end":{"line":28,"column":24}},"16":{"start":{"line":34,"column":2},"end":{"line":34,"column":43}},"17":{"start":{"line":37,"column":2},"end":{"line":37,"column":31}},"18":{"start":{"line":40,"column":2},"end":{"line":40,"column":34}},"19":{"start":{"line":42,"column":0},"end":{"line":42,"column":91}},"20":{"start":{"line":47,"column":0},"end":{"line":47,"column":68}},"21":{"start":{"line":50,"column":0},"end":{"line":53,"column":2}},"22":{"start":{"line":51,"column":2},"end":{"line":51,"column":67}},"23":{"start":{"line":52,"column":2},"end":{"line":52,"column":28}},"24":{"start":{"line":56,"column":0},"end":{"line":84,"column":2}},"25":{"start":{"line":58,"column":2},"end":{"line":58,"column":17}},"26":{"start":{"line":61,"column":2},"end":{"line":83,"column":4}},"27":{"start":{"line":64,"column":4},"end":{"line":64,"column":24}},"28":{"start":{"line":65,"column":4},"end":{"line":73,"column":5}},"29":{"start":{"line":66,"column":6},"end":{"line":71,"column":7}},"30":{"start":{"line":67,"column":8},"end":{"line":68,"column":76}},"31":{"start":{"line":69,"column":8},"end":{"line":69,"column":51}},"32":{"start":{"line":70,"column":8},"end":{"line":70,"column":15}},"33":{"start":{"line":72,"column":6},"end":{"line":72,"column":18}},"34":{"start":{"line":77,"column":4},"end":{"line":82,"column":5}},"35":{"start":{"line":78,"column":6},"end":{"line":78,"column":85}},"36":{"start":{"line":79,"column":6},"end":{"line":79,"column":25}},"37":{"start":{"line":80,"column":6},"end":{"line":80,"column":43}},"38":{"start":{"line":81,"column":6},"end":{"line":81,"column":41}},"39":{"start":{"line":119,"column":0},"end":{"line":141,"column":2}},"40":{"start":{"line":120,"column":2},"end":{"line":120,"column":54}},"41":{"start":{"line":121,"column":2},"end":{"line":129,"column":3}},"42":{"start":{"line":122,"column":4},"end":{"line":122,"column":22}},"43":{"start":{"line":123,"column":4},"end":{"line":123,"column":31}},"44":{"start":{"line":124,"column":4},"end":{"line":124,"column":34}},"45":{"start":{"line":126,"column":4},"end":{"line":126,"column":22}},"46":{"start":{"line":127,"column":4},"end":{"line":127,"column":32}},"47":{"start":{"line":128,"column":4},"end":{"line":128,"column":33}},"48":{"start":{"line":131,"column":2},"end":{"line":131,"column":49}},"49":{"start":{"line":132,"column":2},"end":{"line":132,"column":51}},"50":{"start":{"line":133,"column":2},"end":{"line":133,"column":65}},"51":{"start":{"line":134,"column":2},"end":{"line":134,"column":69}},"52":{"start":{"line":135,"column":2},"end":{"line":135,"column":74}},"53":{"start":{"line":137,"column":2},"end":{"line":137,"column":65}},"54":{"start":{"line":138,"column":2},"end":{"line":138,"column":69}},"55":{"start":{"line":140,"column":2},"end":{"line":140,"column":57}},"56":{"start":{"line":143,"column":0},"end":{"line":148,"column":2}},"57":{"start":{"line":144,"column":2},"end":{"line":144,"column":31}},"58":{"start":{"line":145,"column":2},"end":{"line":147,"column":3}},"59":{"start":{"line":146,"column":4},"end":{"line":146,"column":34}},"60":{"start":{"line":150,"column":0},"end":{"line":152,"column":2}},"61":{"start":{"line":151,"column":2},"end":{"line":151,"column":50}},"62":{"start":{"line":157,"column":0},"end":{"line":159,"column":2}},"63":{"start":{"line":158,"column":2},"end":{"line":158,"column":64}},"64":{"start":{"line":161,"column":0},"end":{"line":163,"column":2}},"65":{"start":{"line":162,"column":2},"end":{"line":162,"column":41}},"66":{"start":{"line":168,"column":0},"end":{"line":174,"column":2}},"67":{"start":{"line":169,"column":2},"end":{"line":169,"column":69}},"68":{"start":{"line":170,"column":2},"end":{"line":170,"column":73}},"69":{"start":{"line":171,"column":2},"end":{"line":171,"column":69}},"70":{"start":{"line":172,"column":2},"end":{"line":172,"column":73}},"71":{"start":{"line":173,"column":2},"end":{"line":173,"column":69}},"72":{"start":{"line":176,"column":0},"end":{"line":179,"column":2}},"73":{"start":{"line":177,"column":2},"end":{"line":177,"column":95}},"74":{"start":{"line":178,"column":2},"end":{"line":178,"column":20}},"75":{"start":{"line":181,"column":0},"end":{"line":183,"column":2}},"76":{"start":{"line":182,"column":2},"end":{"line":182,"column":32}},"77":{"start":{"line":188,"column":0},"end":{"line":188,"column":25}},"78":{"start":{"line":190,"column":0},"end":{"line":190,"column":15}},"79":{"start":{"line":191,"column":0},"end":{"line":197,"column":2}},"80":{"start":{"line":192,"column":2},"end":{"line":195,"column":3}},"81":{"start":{"line":193,"column":4},"end":{"line":193,"column":25}},"82":{"start":{"line":194,"column":4},"end":{"line":194,"column":16}},"83":{"start":{"line":196,"column":2},"end":{"line":196,"column":21}}},"branchMap":{"1":{"line":1,"type":"cond-expr","locations":[{"start":{"line":1,"column":40},"end":{"line":1,"column":57}},{"start":{"line":1,"column":45},"end":{"line":1,"column":78}}]},"2":{"line":24,"type":"binary-expr","locations":[{"start":{"line":24,"column":10},"end":{"line":24,"column":27}},{"start":{"line":24,"column":32},"end":{"line":24,"column":49}}]},"3":{"line":25,"type":"if","locations":[{"start":{"line":25,"column":2},"end":{"line":25,"column":2}},{"start":{"line":25,"column":2},"end":{"line":25,"column":2}}]},"4":{"line":65,"type":"binary-expr","locations":[{"start":{"line":65,"column":10},"end":{"line":65,"column":40}},{"start":{"line":65,"column":44},"end":{"line":65,"column":76}}]},"5":{"line":66,"type":"if","locations":[{"start":{"line":66,"column":6},"end":{"line":66,"column":6}},{"start":{"line":66,"column":6},"end":{"line":66,"column":6}}]},"6":{"line":77,"type":"if","locations":[{"start":{"line":77,"column":4},"end":{"line":77,"column":4}},{"start":{"line":77,"column":4},"end":{"line":77,"column":4}}]},"7":{"line":121,"type":"if","locations":[{"start":{"line":121,"column":2},"end":{"line":121,"column":2}},{"start":{"line":121,"column":2},"end":{"line":121,"column":2}}]},"8":{"line":145,"type":"binary-expr","locations":[{"start":{"line":145,"column":9},"end":{"line":145,"column":19}},{"start":{"line":145,"column":24},"end":{"line":145,"column":55}}]},"9":{"line":192,"type":"if","locations":[{"start":{"line":192,"column":2},"end":{"line":192,"column":2}},{"start":{"line":192,"column":2},"end":{"line":192,"column":2}}]}}},"/data/upstream/node-http2/lib/framer.js":{"path":"/data/upstream/node-http2/lib/framer.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":23,"8":23,"9":1,"10":1,"11":87,"12":87,"13":87,"14":87,"15":87,"16":87,"17":178,"18":0,"19":178,"20":87,"21":1,"22":23,"23":23,"24":23,"25":1,"26":1,"27":183,"28":183,"29":183,"30":183,"31":103,"32":1,"33":61,"34":61,"35":0,"36":61,"37":148,"38":148,"39":148,"40":148,"41":148,"42":80,"43":80,"44":148,"45":80,"46":80,"47":80,"48":0,"49":0,"50":80,"51":80,"52":0,"53":80,"54":61,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":97,"63":97,"64":97,"65":101,"66":97,"67":97,"68":97,"69":97,"70":97,"71":97,"72":70,"73":70,"74":70,"75":46,"76":97,"77":97,"78":97,"79":97,"80":1,"81":90,"82":90,"83":90,"84":90,"85":90,"86":90,"87":166,"88":90,"89":1,"90":1,"91":1,"92":1,"93":32,"94":1,"95":31,"96":1,"97":1,"98":1,"99":1,"100":25,"101":2,"102":2,"103":2,"104":2,"105":25,"106":1,"107":24,"108":2,"109":2,"110":22,"111":1,"112":1,"113":1,"114":1,"115":2,"116":2,"117":2,"118":1,"119":2,"120":1,"121":1,"122":1,"123":1,"124":2,"125":2,"126":2,"127":2,"128":2,"129":1,"130":2,"131":1,"132":1,"133":1,"134":1,"135":24,"136":24,"137":72,"138":32,"139":32,"140":32,"141":24,"142":24,"143":24,"144":32,"145":32,"146":24,"147":1,"148":20,"149":20,"150":0,"151":20,"152":26,"153":26,"154":26,"155":26,"156":0,"157":26,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1,"166":4,"167":4,"168":4,"169":4,"170":4,"171":1,"172":4,"173":4,"174":1,"175":1,"176":1,"177":1,"178":2,"179":2,"180":1,"181":2,"182":0,"183":2,"184":1,"185":1,"186":1,"187":1,"188":4,"189":4,"190":4,"191":4,"192":4,"193":4,"194":4,"195":1,"196":3,"197":3,"198":1,"199":1,"200":1,"201":1,"202":2,"203":2,"204":2,"205":2,"206":1,"207":2,"208":1,"209":1,"210":1,"211":1,"212":6,"213":0,"214":6,"215":4,"216":2,"217":2,"218":2,"219":2,"220":10,"221":2,"222":1,"223":0,"224":1,"225":1,"226":0,"227":2,"228":0,"229":2,"230":0,"231":2,"232":1,"233":0},"b":{"1":[1,0],"2":[0,178],"3":[103,80],"4":[0,61],"5":[80,68],"6":[148,136],"7":[80,68],"8":[148,80],"9":[80,0],"10":[0,80],"11":[46,24],"12":[97,24],"13":[2,23],"14":[2,2],"15":[2,22],"16":[2,2],"17":[32,40],"18":[20,12],"19":[0,20],"20":[0,26],"21":[26,26],"22":[18,8],"23":[4,4],"24":[2,2],"25":[0,2],"26":[4,4],"27":[4,4],"28":[2,2],"29":[0,6],"30":[4,2],"31":[1,1],"32":[0,1],"33":[0,1],"34":[0,2],"35":[2,2]},"f":{"1":0,"2":23,"3":87,"4":23,"5":183,"6":61,"7":97,"8":90,"9":32,"10":31,"11":25,"12":24,"13":2,"14":2,"15":2,"16":2,"17":24,"18":72,"19":20,"20":4,"21":4,"22":2,"23":2,"24":4,"25":3,"26":2,"27":2,"28":6,"29":10,"30":0,"31":0},"fnMap":{"1":{"name":"noop","line":5,"loc":{"start":{"line":5,"column":60},"end":{"line":5,"column":76}}},"2":{"name":"Serializer","line":25,"loc":{"start":{"line":25,"column":0},"end":{"line":25,"column":25}}},"3":{"name":"_transform","line":34,"loc":{"start":{"line":34,"column":34},"end":{"line":34,"column":77}}},"4":{"name":"Deserializer","line":64,"loc":{"start":{"line":64,"column":0},"end":{"line":64,"column":27}}},"5":{"name":"(anonymous_5)","line":76,"loc":{"start":{"line":76,"column":31},"end":{"line":76,"column":46}}},"6":{"name":"_transform","line":87,"loc":{"start":{"line":87,"column":36},"end":{"line":87,"column":79}}},"7":{"name":"writeCommonHeader","line":193,"loc":{"start":{"line":193,"column":26},"end":{"line":193,"column":69}}},"8":{"name":"readCommonHeader","line":222,"loc":{"start":{"line":222,"column":28},"end":{"line":222,"column":69}}},"9":{"name":"writeData","line":267,"loc":{"start":{"line":267,"column":18},"end":{"line":267,"column":53}}},"10":{"name":"readData","line":271,"loc":{"start":{"line":271,"column":20},"end":{"line":271,"column":53}}},"11":{"name":"writeHeadersPriority","line":310,"loc":{"start":{"line":310,"column":21},"end":{"line":310,"column":67}}},"12":{"name":"readHeadersPriority","line":320,"loc":{"start":{"line":320,"column":23},"end":{"line":320,"column":67}}},"13":{"name":"writePriority","line":350,"loc":{"start":{"line":350,"column":22},"end":{"line":350,"column":61}}},"14":{"name":"readPriority","line":356,"loc":{"start":{"line":356,"column":24},"end":{"line":356,"column":61}}},"15":{"name":"writeRstStream","line":382,"loc":{"start":{"line":382,"column":24},"end":{"line":382,"column":64}}},"16":{"name":"readRstStream","line":390,"loc":{"start":{"line":390,"column":26},"end":{"line":390,"column":64}}},"17":{"name":"writeSettings","line":426,"loc":{"start":{"line":426,"column":22},"end":{"line":426,"column":61}}},"18":{"name":"(anonymous_18)","line":428,"loc":{"start":{"line":428,"column":26},"end":{"line":428,"column":48}}},"19":{"name":"readSettings","line":446,"loc":{"start":{"line":446,"column":24},"end":{"line":446,"column":61}}},"20":{"name":"writePushPromise","line":510,"loc":{"start":{"line":510,"column":26},"end":{"line":510,"column":68}}},"21":{"name":"readPushPromise","line":518,"loc":{"start":{"line":518,"column":28},"end":{"line":518,"column":68}}},"22":{"name":"writePing","line":542,"loc":{"start":{"line":542,"column":18},"end":{"line":542,"column":53}}},"23":{"name":"readPing","line":547,"loc":{"start":{"line":547,"column":20},"end":{"line":547,"column":53}}},"24":{"name":"writeGoaway","line":582,"loc":{"start":{"line":582,"column":20},"end":{"line":582,"column":57}}},"25":{"name":"readGoaway","line":595,"loc":{"start":{"line":595,"column":22},"end":{"line":595,"column":57}}},"26":{"name":"writeWindowUpdate","line":622,"loc":{"start":{"line":622,"column":27},"end":{"line":622,"column":70}}},"27":{"name":"readWindowUpdate","line":629,"loc":{"start":{"line":629,"column":29},"end":{"line":629,"column":70}}},"28":{"name":"(anonymous_28)","line":659,"loc":{"start":{"line":659,"column":28},"end":{"line":659,"column":44}}},"29":{"name":"(anonymous_29)","line":672,"loc":{"start":{"line":672,"column":71},"end":{"line":672,"column":86}}},"30":{"name":"(anonymous_30)","line":692,"loc":{"start":{"line":692,"column":57},"end":{"line":692,"column":72}}},"31":{"name":"(anonymous_31)","line":700,"loc":{"start":{"line":700,"column":27},"end":{"line":700,"column":42}}}},"statementMap":{"1":{"start":{"line":5,"column":0},"end":{"line":5,"column":79}},"2":{"start":{"line":7,"column":0},"end":{"line":7,"column":44}},"3":{"start":{"line":9,"column":0},"end":{"line":9,"column":32}},"4":{"start":{"line":10,"column":0},"end":{"line":10,"column":36}},"5":{"start":{"line":12,"column":0},"end":{"line":12,"column":50}},"6":{"start":{"line":25,"column":0},"end":{"line":28,"column":1}},"7":{"start":{"line":26,"column":2},"end":{"line":26,"column":53}},"8":{"start":{"line":27,"column":2},"end":{"line":27,"column":45}},"9":{"start":{"line":29,"column":0},"end":{"line":29,"column":98}},"10":{"start":{"line":34,"column":0},"end":{"line":51,"column":2}},"11":{"start":{"line":35,"column":2},"end":{"line":35,"column":54}},"12":{"start":{"line":37,"column":2},"end":{"line":37,"column":72}},"13":{"start":{"line":39,"column":2},"end":{"line":39,"column":19}},"14":{"start":{"line":40,"column":2},"end":{"line":40,"column":41}},"15":{"start":{"line":41,"column":2},"end":{"line":41,"column":42}},"16":{"start":{"line":43,"column":2},"end":{"line":48,"column":3}},"17":{"start":{"line":44,"column":4},"end":{"line":46,"column":5}},"18":{"start":{"line":45,"column":6},"end":{"line":45,"column":61}},"19":{"start":{"line":47,"column":4},"end":{"line":47,"column":26}},"20":{"start":{"line":50,"column":2},"end":{"line":50,"column":9}},"21":{"start":{"line":64,"column":0},"end":{"line":68,"column":1}},"22":{"start":{"line":65,"column":2},"end":{"line":65,"column":55}},"23":{"start":{"line":66,"column":2},"end":{"line":66,"column":45}},"24":{"start":{"line":67,"column":2},"end":{"line":67,"column":33}},"25":{"start":{"line":69,"column":0},"end":{"line":69,"column":102}},"26":{"start":{"line":76,"column":0},"end":{"line":83,"column":2}},"27":{"start":{"line":77,"column":2},"end":{"line":77,"column":19}},"28":{"start":{"line":78,"column":2},"end":{"line":78,"column":34}},"29":{"start":{"line":79,"column":2},"end":{"line":79,"column":51}},"30":{"start":{"line":80,"column":2},"end":{"line":82,"column":3}},"31":{"start":{"line":81,"column":4},"end":{"line":81,"column":21}},"32":{"start":{"line":87,"column":0},"end":{"line":135,"column":2}},"33":{"start":{"line":88,"column":2},"end":{"line":88,"column":17}},"34":{"start":{"line":90,"column":2},"end":{"line":92,"column":3}},"35":{"start":{"line":91,"column":4},"end":{"line":91,"column":54}},"36":{"start":{"line":94,"column":2},"end":{"line":132,"column":3}},"37":{"start":{"line":97,"column":4},"end":{"line":97,"column":85}},"38":{"start":{"line":98,"column":4},"end":{"line":98,"column":68}},"39":{"start":{"line":99,"column":4},"end":{"line":99,"column":27}},"40":{"start":{"line":100,"column":4},"end":{"line":100,"column":21}},"41":{"start":{"line":107,"column":4},"end":{"line":110,"column":5}},"42":{"start":{"line":108,"column":6},"end":{"line":108,"column":59}},"43":{"start":{"line":109,"column":6},"end":{"line":109,"column":37}},"44":{"start":{"line":117,"column":4},"end":{"line":131,"column":5}},"45":{"start":{"line":118,"column":6},"end":{"line":129,"column":7}},"46":{"start":{"line":119,"column":8},"end":{"line":119,"column":78}},"47":{"start":{"line":120,"column":8},"end":{"line":126,"column":9}},"48":{"start":{"line":121,"column":10},"end":{"line":121,"column":58}},"49":{"start":{"line":122,"column":10},"end":{"line":122,"column":47}},"50":{"start":{"line":124,"column":10},"end":{"line":124,"column":68}},"51":{"start":{"line":125,"column":10},"end":{"line":125,"column":33}},"52":{"start":{"line":128,"column":8},"end":{"line":128,"column":78}},"53":{"start":{"line":130,"column":6},"end":{"line":130,"column":37}},"54":{"start":{"line":134,"column":2},"end":{"line":134,"column":9}},"55":{"start":{"line":182,"column":0},"end":{"line":182,"column":27}},"56":{"start":{"line":183,"column":0},"end":{"line":183,"column":29}},"57":{"start":{"line":185,"column":0},"end":{"line":185,"column":20}},"58":{"start":{"line":187,"column":0},"end":{"line":187,"column":20}},"59":{"start":{"line":189,"column":0},"end":{"line":189,"column":62}},"60":{"start":{"line":191,"column":0},"end":{"line":191,"column":32}},"61":{"start":{"line":193,"column":0},"end":{"line":220,"column":2}},"62":{"start":{"line":194,"column":2},"end":{"line":194,"column":52}},"63":{"start":{"line":196,"column":2},"end":{"line":196,"column":15}},"64":{"start":{"line":197,"column":2},"end":{"line":199,"column":3}},"65":{"start":{"line":198,"column":4},"end":{"line":198,"column":30}},"66":{"start":{"line":200,"column":2},"end":{"line":200,"column":73}},"67":{"start":{"line":201,"column":2},"end":{"line":201,"column":38}},"68":{"start":{"line":203,"column":2},"end":{"line":203,"column":46}},"69":{"start":{"line":204,"column":2},"end":{"line":204,"column":37}},"70":{"start":{"line":206,"column":2},"end":{"line":206,"column":19}},"71":{"start":{"line":207,"column":2},"end":{"line":213,"column":3}},"72":{"start":{"line":208,"column":4},"end":{"line":208,"column":56}},"73":{"start":{"line":209,"column":4},"end":{"line":209,"column":87}},"74":{"start":{"line":210,"column":4},"end":{"line":212,"column":5}},"75":{"start":{"line":211,"column":6},"end":{"line":211,"column":34}},"76":{"start":{"line":214,"column":2},"end":{"line":214,"column":39}},"77":{"start":{"line":216,"column":2},"end":{"line":216,"column":76}},"78":{"start":{"line":217,"column":2},"end":{"line":217,"column":51}},"79":{"start":{"line":219,"column":2},"end":{"line":219,"column":32}},"80":{"start":{"line":222,"column":0},"end":{"line":235,"column":2}},"81":{"start":{"line":223,"column":2},"end":{"line":223,"column":40}},"82":{"start":{"line":225,"column":2},"end":{"line":225,"column":47}},"83":{"start":{"line":227,"column":2},"end":{"line":227,"column":19}},"84":{"start":{"line":228,"column":2},"end":{"line":228,"column":37}},"85":{"start":{"line":229,"column":2},"end":{"line":229,"column":44}},"86":{"start":{"line":230,"column":2},"end":{"line":232,"column":3}},"87":{"start":{"line":231,"column":4},"end":{"line":231,"column":64}},"88":{"start":{"line":234,"column":2},"end":{"line":234,"column":53}},"89":{"start":{"line":261,"column":0},"end":{"line":261,"column":25}},"90":{"start":{"line":263,"column":0},"end":{"line":263,"column":45}},"91":{"start":{"line":265,"column":0},"end":{"line":265,"column":39}},"92":{"start":{"line":267,"column":0},"end":{"line":269,"column":2}},"93":{"start":{"line":268,"column":2},"end":{"line":268,"column":27}},"94":{"start":{"line":271,"column":0},"end":{"line":273,"column":2}},"95":{"start":{"line":272,"column":2},"end":{"line":272,"column":22}},"96":{"start":{"line":294,"column":0},"end":{"line":294,"column":28}},"97":{"start":{"line":296,"column":0},"end":{"line":296,"column":75}},"98":{"start":{"line":298,"column":0},"end":{"line":298,"column":65}},"99":{"start":{"line":310,"column":0},"end":{"line":318,"column":2}},"100":{"start":{"line":311,"column":2},"end":{"line":316,"column":3}},"101":{"start":{"line":312,"column":4},"end":{"line":312,"column":31}},"102":{"start":{"line":313,"column":4},"end":{"line":313,"column":68}},"103":{"start":{"line":314,"column":4},"end":{"line":314,"column":44}},"104":{"start":{"line":315,"column":4},"end":{"line":315,"column":25}},"105":{"start":{"line":317,"column":2},"end":{"line":317,"column":27}},"106":{"start":{"line":320,"column":0},"end":{"line":327,"column":2}},"107":{"start":{"line":321,"column":2},"end":{"line":326,"column":3}},"108":{"start":{"line":322,"column":4},"end":{"line":322,"column":57}},"109":{"start":{"line":323,"column":4},"end":{"line":323,"column":33}},"110":{"start":{"line":325,"column":4},"end":{"line":325,"column":24}},"111":{"start":{"line":336,"column":0},"end":{"line":336,"column":29}},"112":{"start":{"line":338,"column":0},"end":{"line":338,"column":25}},"113":{"start":{"line":340,"column":0},"end":{"line":340,"column":47}},"114":{"start":{"line":350,"column":0},"end":{"line":354,"column":2}},"115":{"start":{"line":351,"column":2},"end":{"line":351,"column":29}},"116":{"start":{"line":352,"column":2},"end":{"line":352,"column":42}},"117":{"start":{"line":353,"column":2},"end":{"line":353,"column":23}},"118":{"start":{"line":356,"column":0},"end":{"line":358,"column":2}},"119":{"start":{"line":357,"column":2},"end":{"line":357,"column":42}},"120":{"start":{"line":367,"column":0},"end":{"line":367,"column":31}},"121":{"start":{"line":369,"column":0},"end":{"line":369,"column":27}},"122":{"start":{"line":371,"column":0},"end":{"line":371,"column":46}},"123":{"start":{"line":382,"column":0},"end":{"line":388,"column":2}},"124":{"start":{"line":383,"column":2},"end":{"line":383,"column":29}},"125":{"start":{"line":384,"column":2},"end":{"line":384,"column":45}},"126":{"start":{"line":385,"column":2},"end":{"line":385,"column":46}},"127":{"start":{"line":386,"column":2},"end":{"line":386,"column":32}},"128":{"start":{"line":387,"column":2},"end":{"line":387,"column":23}},"129":{"start":{"line":390,"column":0},"end":{"line":392,"column":2}},"130":{"start":{"line":391,"column":2},"end":{"line":391,"column":51}},"131":{"start":{"line":402,"column":0},"end":{"line":402,"column":29}},"132":{"start":{"line":404,"column":0},"end":{"line":404,"column":25}},"133":{"start":{"line":406,"column":0},"end":{"line":406,"column":47}},"134":{"start":{"line":426,"column":0},"end":{"line":444,"column":2}},"135":{"start":{"line":427,"column":2},"end":{"line":427,"column":64}},"136":{"start":{"line":428,"column":2},"end":{"line":434,"column":5}},"137":{"start":{"line":429,"column":4},"end":{"line":433,"column":5}},"138":{"start":{"line":430,"column":6},"end":{"line":430,"column":65}},"139":{"start":{"line":431,"column":6},"end":{"line":431,"column":47}},"140":{"start":{"line":432,"column":6},"end":{"line":432,"column":78}},"141":{"start":{"line":435,"column":2},"end":{"line":435,"column":84}},"142":{"start":{"line":437,"column":2},"end":{"line":437,"column":47}},"143":{"start":{"line":438,"column":2},"end":{"line":441,"column":3}},"144":{"start":{"line":439,"column":4},"end":{"line":439,"column":57}},"145":{"start":{"line":440,"column":4},"end":{"line":440,"column":53}},"146":{"start":{"line":443,"column":2},"end":{"line":443,"column":23}},"147":{"start":{"line":446,"column":0},"end":{"line":461,"column":2}},"148":{"start":{"line":447,"column":2},"end":{"line":447,"column":22}},"149":{"start":{"line":449,"column":2},"end":{"line":451,"column":3}},"150":{"start":{"line":450,"column":4},"end":{"line":450,"column":36}},"151":{"start":{"line":452,"column":2},"end":{"line":460,"column":3}},"152":{"start":{"line":453,"column":4},"end":{"line":453,"column":49}},"153":{"start":{"line":454,"column":4},"end":{"line":454,"column":38}},"154":{"start":{"line":455,"column":4},"end":{"line":455,"column":45}},"155":{"start":{"line":456,"column":4},"end":{"line":458,"column":5}},"156":{"start":{"line":457,"column":6},"end":{"line":457,"column":15}},"157":{"start":{"line":459,"column":4},"end":{"line":459,"column":79}},"158":{"start":{"line":464,"column":0},"end":{"line":464,"column":25}},"159":{"start":{"line":468,"column":0},"end":{"line":468,"column":78}},"160":{"start":{"line":472,"column":0},"end":{"line":472,"column":75}},"161":{"start":{"line":478,"column":0},"end":{"line":478,"column":76}},"162":{"start":{"line":492,"column":0},"end":{"line":492,"column":33}},"163":{"start":{"line":494,"column":0},"end":{"line":494,"column":47}},"164":{"start":{"line":496,"column":0},"end":{"line":496,"column":77}},"165":{"start":{"line":510,"column":0},"end":{"line":516,"column":2}},"166":{"start":{"line":511,"column":2},"end":{"line":511,"column":29}},"167":{"start":{"line":512,"column":2},"end":{"line":512,"column":80}},"168":{"start":{"line":513,"column":2},"end":{"line":513,"column":49}},"169":{"start":{"line":514,"column":2},"end":{"line":514,"column":23}},"170":{"start":{"line":515,"column":2},"end":{"line":515,"column":27}},"171":{"start":{"line":518,"column":0},"end":{"line":521,"column":2}},"172":{"start":{"line":519,"column":2},"end":{"line":519,"column":62}},"173":{"start":{"line":520,"column":2},"end":{"line":520,"column":31}},"174":{"start":{"line":534,"column":0},"end":{"line":534,"column":25}},"175":{"start":{"line":536,"column":0},"end":{"line":536,"column":27}},"176":{"start":{"line":538,"column":0},"end":{"line":538,"column":39}},"177":{"start":{"line":542,"column":0},"end":{"line":545,"column":2}},"178":{"start":{"line":543,"column":2},"end":{"line":543,"column":101}},"179":{"start":{"line":544,"column":2},"end":{"line":544,"column":27}},"180":{"start":{"line":547,"column":0},"end":{"line":552,"column":2}},"181":{"start":{"line":548,"column":2},"end":{"line":550,"column":3}},"182":{"start":{"line":549,"column":4},"end":{"line":549,"column":37}},"183":{"start":{"line":551,"column":2},"end":{"line":551,"column":22}},"184":{"start":{"line":561,"column":0},"end":{"line":561,"column":27}},"185":{"start":{"line":563,"column":0},"end":{"line":563,"column":23}},"186":{"start":{"line":565,"column":0},"end":{"line":565,"column":57}},"187":{"start":{"line":582,"column":0},"end":{"line":593,"column":2}},"188":{"start":{"line":583,"column":2},"end":{"line":583,"column":29}},"189":{"start":{"line":585,"column":2},"end":{"line":585,"column":72}},"190":{"start":{"line":586,"column":2},"end":{"line":586,"column":45}},"191":{"start":{"line":588,"column":2},"end":{"line":588,"column":45}},"192":{"start":{"line":589,"column":2},"end":{"line":589,"column":46}},"193":{"start":{"line":590,"column":2},"end":{"line":590,"column":32}},"194":{"start":{"line":592,"column":2},"end":{"line":592,"column":23}},"195":{"start":{"line":595,"column":0},"end":{"line":598,"column":2}},"196":{"start":{"line":596,"column":2},"end":{"line":596,"column":58}},"197":{"start":{"line":597,"column":2},"end":{"line":597,"column":51}},"198":{"start":{"line":611,"column":0},"end":{"line":611,"column":34}},"199":{"start":{"line":613,"column":0},"end":{"line":613,"column":48}},"200":{"start":{"line":615,"column":0},"end":{"line":615,"column":55}},"201":{"start":{"line":622,"column":0},"end":{"line":627,"column":2}},"202":{"start":{"line":623,"column":2},"end":{"line":623,"column":29}},"203":{"start":{"line":624,"column":2},"end":{"line":624,"column":72}},"204":{"start":{"line":625,"column":2},"end":{"line":625,"column":45}},"205":{"start":{"line":626,"column":2},"end":{"line":626,"column":23}},"206":{"start":{"line":629,"column":0},"end":{"line":631,"column":2}},"207":{"start":{"line":630,"column":2},"end":{"line":630,"column":58}},"208":{"start":{"line":636,"column":0},"end":{"line":647,"column":2}},"209":{"start":{"line":654,"column":0},"end":{"line":654,"column":25}},"210":{"start":{"line":658,"column":0},"end":{"line":658,"column":21}},"211":{"start":{"line":659,"column":0},"end":{"line":697,"column":2}},"212":{"start":{"line":660,"column":2},"end":{"line":662,"column":3}},"213":{"start":{"line":661,"column":4},"end":{"line":661,"column":16}},"214":{"start":{"line":664,"column":2},"end":{"line":666,"column":3}},"215":{"start":{"line":665,"column":4},"end":{"line":665,"column":20}},"216":{"start":{"line":668,"column":2},"end":{"line":668,"column":26}},"217":{"start":{"line":669,"column":2},"end":{"line":669,"column":20}},"218":{"start":{"line":671,"column":2},"end":{"line":671,"column":34}},"219":{"start":{"line":672,"column":2},"end":{"line":674,"column":5}},"220":{"start":{"line":673,"column":4},"end":{"line":673,"column":33}},"221":{"start":{"line":676,"column":2},"end":{"line":686,"column":3}},"222":{"start":{"line":677,"column":4},"end":{"line":681,"column":5}},"223":{"start":{"line":678,"column":6},"end":{"line":678,"column":70}},"224":{"start":{"line":680,"column":6},"end":{"line":680,"column":49}},"225":{"start":{"line":683,"column":4},"end":{"line":685,"column":5}},"226":{"start":{"line":684,"column":6},"end":{"line":684,"column":42}},"227":{"start":{"line":688,"column":2},"end":{"line":690,"column":3}},"228":{"start":{"line":689,"column":4},"end":{"line":689,"column":68}},"229":{"start":{"line":692,"column":2},"end":{"line":694,"column":5}},"230":{"start":{"line":693,"column":4},"end":{"line":693,"column":38}},"231":{"start":{"line":696,"column":2},"end":{"line":696,"column":18}},"232":{"start":{"line":700,"column":0},"end":{"line":702,"column":2}},"233":{"start":{"line":701,"column":2},"end":{"line":701,"column":30}}},"branchMap":{"1":{"line":5,"type":"cond-expr","locations":[{"start":{"line":5,"column":40},"end":{"line":5,"column":57}},{"start":{"line":5,"column":60},"end":{"line":5,"column":78}}]},"2":{"line":44,"type":"if","locations":[{"start":{"line":44,"column":4},"end":{"line":44,"column":4}},{"start":{"line":44,"column":4},"end":{"line":44,"column":4}}]},"3":{"line":80,"type":"if","locations":[{"start":{"line":80,"column":2},"end":{"line":80,"column":2}},{"start":{"line":80,"column":2},"end":{"line":80,"column":2}}]},"4":{"line":90,"type":"if","locations":[{"start":{"line":90,"column":2},"end":{"line":90,"column":2}},{"start":{"line":90,"column":2},"end":{"line":90,"column":2}}]},"5":{"line":107,"type":"if","locations":[{"start":{"line":107,"column":4},"end":{"line":107,"column":4}},{"start":{"line":107,"column":4},"end":{"line":107,"column":4}}]},"6":{"line":107,"type":"binary-expr","locations":[{"start":{"line":107,"column":9},"end":{"line":107,"column":45}},{"start":{"line":107,"column":50},"end":{"line":107,"column":72}}]},"7":{"line":117,"type":"if","locations":[{"start":{"line":117,"column":4},"end":{"line":117,"column":4}},{"start":{"line":117,"column":4},"end":{"line":117,"column":4}}]},"8":{"line":117,"type":"binary-expr","locations":[{"start":{"line":117,"column":9},"end":{"line":117,"column":45}},{"start":{"line":117,"column":50},"end":{"line":117,"column":73}}]},"9":{"line":118,"type":"if","locations":[{"start":{"line":118,"column":6},"end":{"line":118,"column":6}},{"start":{"line":118,"column":6},"end":{"line":118,"column":6}}]},"10":{"line":120,"type":"if","locations":[{"start":{"line":120,"column":8},"end":{"line":120,"column":8}},{"start":{"line":120,"column":8},"end":{"line":120,"column":8}}]},"11":{"line":210,"type":"if","locations":[{"start":{"line":210,"column":4},"end":{"line":210,"column":4}},{"start":{"line":210,"column":4},"end":{"line":210,"column":4}}]},"12":{"line":217,"type":"binary-expr","locations":[{"start":{"line":217,"column":29},"end":{"line":217,"column":41}},{"start":{"line":217,"column":45},"end":{"line":217,"column":46}}]},"13":{"line":311,"type":"if","locations":[{"start":{"line":311,"column":2},"end":{"line":311,"column":2}},{"start":{"line":311,"column":2},"end":{"line":311,"column":2}}]},"14":{"line":313,"type":"binary-expr","locations":[{"start":{"line":313,"column":12},"end":{"line":313,"column":31}},{"start":{"line":313,"column":37},"end":{"line":313,"column":65}}]},"15":{"line":321,"type":"if","locations":[{"start":{"line":321,"column":2},"end":{"line":321,"column":2}},{"start":{"line":321,"column":2},"end":{"line":321,"column":2}}]},"16":{"line":385,"type":"binary-expr","locations":[{"start":{"line":385,"column":10},"end":{"line":385,"column":19}},{"start":{"line":385,"column":25},"end":{"line":385,"column":43}}]},"17":{"line":429,"type":"if","locations":[{"start":{"line":429,"column":4},"end":{"line":429,"column":4}},{"start":{"line":429,"column":4},"end":{"line":429,"column":4}}]},"18":{"line":432,"type":"cond-expr","locations":[{"start":{"line":432,"column":52},"end":{"line":432,"column":66}},{"start":{"line":432,"column":69},"end":{"line":432,"column":74}}]},"19":{"line":449,"type":"if","locations":[{"start":{"line":449,"column":2},"end":{"line":449,"column":2}},{"start":{"line":449,"column":2},"end":{"line":449,"column":2}}]},"20":{"line":456,"type":"if","locations":[{"start":{"line":456,"column":4},"end":{"line":456,"column":4}},{"start":{"line":456,"column":4},"end":{"line":456,"column":4}}]},"21":{"line":456,"type":"binary-expr","locations":[{"start":{"line":456,"column":8},"end":{"line":456,"column":16}},{"start":{"line":456,"column":21},"end":{"line":456,"column":51}}]},"22":{"line":459,"type":"cond-expr","locations":[{"start":{"line":459,"column":50},"end":{"line":459,"column":70}},{"start":{"line":459,"column":73},"end":{"line":459,"column":78}}]},"23":{"line":512,"type":"binary-expr","locations":[{"start":{"line":512,"column":10},"end":{"line":512,"column":36}},{"start":{"line":512,"column":42},"end":{"line":512,"column":77}}]},"24":{"line":543,"type":"binary-expr","locations":[{"start":{"line":543,"column":10},"end":{"line":543,"column":25}},{"start":{"line":543,"column":31},"end":{"line":543,"column":54}}]},"25":{"line":548,"type":"if","locations":[{"start":{"line":548,"column":2},"end":{"line":548,"column":2}},{"start":{"line":548,"column":2},"end":{"line":548,"column":2}}]},"26":{"line":585,"type":"binary-expr","locations":[{"start":{"line":585,"column":10},"end":{"line":585,"column":32}},{"start":{"line":585,"column":38},"end":{"line":585,"column":69}}]},"27":{"line":589,"type":"binary-expr","locations":[{"start":{"line":589,"column":10},"end":{"line":589,"column":19}},{"start":{"line":589,"column":25},"end":{"line":589,"column":43}}]},"28":{"line":624,"type":"binary-expr","locations":[{"start":{"line":624,"column":10},"end":{"line":624,"column":32}},{"start":{"line":624,"column":38},"end":{"line":624,"column":69}}]},"29":{"line":660,"type":"if","locations":[{"start":{"line":660,"column":2},"end":{"line":660,"column":2}},{"start":{"line":660,"column":2},"end":{"line":660,"column":2}}]},"30":{"line":664,"type":"if","locations":[{"start":{"line":664,"column":2},"end":{"line":664,"column":2}},{"start":{"line":664,"column":2},"end":{"line":664,"column":2}}]},"31":{"line":676,"type":"if","locations":[{"start":{"line":676,"column":2},"end":{"line":676,"column":2}},{"start":{"line":676,"column":2},"end":{"line":676,"column":2}}]},"32":{"line":677,"type":"if","locations":[{"start":{"line":677,"column":4},"end":{"line":677,"column":4}},{"start":{"line":677,"column":4},"end":{"line":677,"column":4}}]},"33":{"line":683,"type":"if","locations":[{"start":{"line":683,"column":4},"end":{"line":683,"column":4}},{"start":{"line":683,"column":4},"end":{"line":683,"column":4}}]},"34":{"line":688,"type":"if","locations":[{"start":{"line":688,"column":2},"end":{"line":688,"column":2}},{"start":{"line":688,"column":2},"end":{"line":688,"column":2}}]},"35":{"line":692,"type":"binary-expr","locations":[{"start":{"line":692,"column":31},"end":{"line":692,"column":42}},{"start":{"line":692,"column":46},"end":{"line":692,"column":48}}]}}},"/data/upstream/node-http2/lib/http.js":{"path":"/data/upstream/node-http2/lib/http.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":3,"18":1,"19":1,"20":1,"21":6,"22":1,"23":23,"24":23,"25":23,"26":23,"27":23,"28":23,"29":23,"30":23,"31":1,"32":1,"33":1,"34":25,"35":25,"36":25,"37":25,"38":1,"39":1,"40":12,"41":11,"42":1,"43":1,"44":28,"45":21,"46":7,"47":1,"48":2,"49":0,"50":2,"51":1,"52":1,"53":0,"54":1,"55":1,"56":3,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":12,"65":12,"66":12,"67":12,"68":12,"69":12,"70":9,"71":9,"72":9,"73":9,"74":9,"75":9,"76":9,"77":8,"78":8,"79":0,"80":9,"81":3,"82":1,"83":1,"84":1,"85":2,"86":2,"87":10,"88":1,"89":1,"90":9,"91":9,"92":9,"93":9,"94":9,"95":9,"96":9,"97":9,"98":9,"99":9,"100":1,"101":0,"102":0,"103":0,"104":0,"105":1,"106":8,"107":8,"108":1,"109":4,"110":4,"111":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":0,"118":1,"119":1,"120":1,"121":8,"122":0,"123":8,"124":1,"125":9,"126":1,"127":1,"128":9,"129":8,"130":8,"131":8,"132":1,"133":11,"134":1,"135":1,"136":11,"137":11,"138":77,"139":77,"140":0,"141":0,"142":0,"143":11,"144":11,"145":11,"146":45,"147":44,"148":44,"149":0,"150":0,"151":0,"152":44,"153":1,"154":11,"155":11,"156":11,"157":1,"158":11,"159":11,"160":11,"161":11,"162":11,"163":11,"164":1,"165":1,"166":11,"167":1,"168":10,"169":11,"170":11,"171":1,"172":11,"173":10,"174":11,"175":11,"176":11,"177":11,"178":1,"179":21,"180":10,"181":1,"182":10,"183":10,"184":1,"185":11,"186":11,"187":1,"188":9,"189":1,"190":2,"191":1,"192":2,"193":0,"194":2,"195":2,"196":2,"197":2,"198":1,"199":11,"200":0,"201":11,"202":1,"203":1,"204":1,"205":1,"206":1,"207":1,"208":3,"209":1,"210":7,"211":1,"212":4,"213":4,"214":4,"215":4,"216":4,"217":4,"218":4,"219":4,"220":1,"221":1,"222":11,"223":7,"224":11,"225":11,"226":11,"227":11,"228":11,"229":11,"230":1,"231":1,"232":10,"233":10,"234":7,"235":10,"236":10,"237":1,"238":1,"239":9,"240":1,"241":1,"242":1,"243":1,"244":8,"245":8,"246":8,"247":8,"248":8,"249":8,"250":0,"251":8,"252":8,"253":1,"254":8,"255":8,"256":8,"257":8,"258":8,"259":8,"260":8,"261":8,"262":1,"263":1,"264":0,"265":7,"266":7,"267":7,"268":7,"269":0,"270":8,"271":8,"272":8,"273":8,"274":0,"275":10,"276":1,"277":7,"278":7,"279":7,"280":1,"281":8,"282":8,"283":8,"284":8,"285":8,"286":8,"287":8,"288":8,"289":1,"290":1,"291":1,"292":1,"293":1,"294":14,"295":14,"296":14,"297":14,"298":1,"299":1,"300":10,"301":10,"302":10,"303":10,"304":1,"305":10,"306":10,"307":0,"308":10,"309":10,"310":10,"311":10,"312":10,"313":10,"314":10,"315":10,"316":10,"317":10,"318":1,"319":4,"320":4,"321":4,"322":1,"323":0,"324":0,"325":0,"326":1,"327":37,"328":0,"329":37,"330":1,"331":3,"332":1,"333":2,"334":1,"335":1,"336":3,"337":1,"338":2,"339":1,"340":1,"341":3,"342":1,"343":2,"344":1,"345":1,"346":3,"347":1,"348":2,"349":1,"350":1,"351":1,"352":2,"353":2,"354":2,"355":2,"356":0,"357":1,"358":12,"359":1,"360":1,"361":11,"362":11,"363":11,"364":0,"365":0,"366":0,"367":11,"368":11,"369":11,"370":11,"371":1,"372":2,"373":2,"374":2,"375":2,"376":2,"377":2,"378":2,"379":2,"380":2,"381":2,"382":1,"383":1,"384":0,"385":1,"386":0,"387":1},"b":{"1":[11,1],"2":[21,7],"3":[0,2],"4":[0,1],"5":[12,2],"6":[12,2],"7":[9,3],"8":[12,9,3],"9":[8,0],"10":[1,2],"11":[0,8],"12":[1,0],"13":[1,0],"14":[1,0],"15":[0,8],"16":[8,8],"17":[1,8],"18":[8,0],"19":[0,77],"20":[44,1],"21":[0,44],"22":[44,44],"23":[1,10],"24":[11,10],"25":[10,1],"26":[11,10],"27":[10,11],"28":[1,1],"29":[0,2],"30":[2,2],"31":[2,1,1],"32":[2,2,2],"33":[0,11],"34":[11,0],"35":[3,3],"36":[7,7],"37":[4,1],"38":[4,1],"39":[7,4],"40":[11,11],"41":[11,3],"42":[11,4,1],"43":[11,1],"44":[11,1],"45":[1,10],"46":[7,3],"47":[1,9],"48":[1,8],"49":[0,8],"50":[8,0],"51":[1,7],"52":[1,0],"53":[7,0],"54":[8,0],"55":[0,10],"56":[10,9],"57":[0,0],"58":[0,37],"59":[37,0],"60":[1,2],"61":[1,1],"62":[1,2],"63":[1,1],"64":[1,2],"65":[1,1],"66":[1,2],"67":[1,1],"68":[2,0],"69":[0,11],"70":[11,11]},"f":{"1":2,"2":3,"3":6,"4":23,"5":25,"6":12,"7":28,"8":2,"9":1,"10":3,"11":12,"12":8,"13":9,"14":9,"15":0,"16":8,"17":4,"18":1,"19":1,"20":1,"21":8,"22":9,"23":11,"24":11,"25":11,"26":11,"27":21,"28":10,"29":11,"30":9,"31":2,"32":11,"33":3,"34":7,"35":4,"36":11,"37":8,"38":8,"39":8,"40":7,"41":8,"42":1,"43":1,"44":14,"45":10,"46":4,"47":0,"48":37,"49":3,"50":3,"51":3,"52":3,"53":2,"54":12,"55":11,"56":2,"57":0,"58":0},"fnMap":{"1":{"name":"noop","line":152,"loc":{"start":{"line":152,"column":0},"end":{"line":152,"column":16}}},"2":{"name":"(anonymous_2)","line":161,"loc":{"start":{"line":161,"column":9},"end":{"line":161,"column":20}}},"3":{"name":"(anonymous_3)","line":167,"loc":{"start":{"line":167,"column":16},"end":{"line":167,"column":33}}},"4":{"name":"IncomingMessage","line":174,"loc":{"start":{"line":174,"column":0},"end":{"line":174,"column":33}}},"5":{"name":"OutgoingMessage","line":198,"loc":{"start":{"line":198,"column":0},"end":{"line":198,"column":27}}},"6":{"name":"_write","line":209,"loc":{"start":{"line":209,"column":35},"end":{"line":209,"column":78}}},"7":{"name":"_finish","line":217,"loc":{"start":{"line":217,"column":36},"end":{"line":217,"column":55}}},"8":{"name":"setHeader","line":225,"loc":{"start":{"line":225,"column":38},"end":{"line":225,"column":70}}},"9":{"name":"removeHeader","line":233,"loc":{"start":{"line":233,"column":41},"end":{"line":233,"column":69}}},"10":{"name":"getHeader","line":241,"loc":{"start":{"line":241,"column":38},"end":{"line":241,"column":63}}},"11":{"name":"Server","line":259,"loc":{"start":{"line":259,"column":0},"end":{"line":259,"column":25}}},"12":{"name":"(anonymous_12)","line":276,"loc":{"start":{"line":276,"column":40},"end":{"line":276,"column":57}}},"13":{"name":"_start","line":304,"loc":{"start":{"line":304,"column":26},"end":{"line":304,"column":50}}},"14":{"name":"_onStream","line":313,"loc":{"start":{"line":313,"column":24},"end":{"line":313,"column":51}}},"15":{"name":"_fallback","line":325,"loc":{"start":{"line":325,"column":29},"end":{"line":325,"column":56}}},"16":{"name":"listen","line":339,"loc":{"start":{"line":339,"column":26},"end":{"line":339,"column":58}}},"17":{"name":"close","line":345,"loc":{"start":{"line":345,"column":25},"end":{"line":345,"column":50}}},"18":{"name":"setTimeout","line":350,"loc":{"start":{"line":350,"column":30},"end":{"line":350,"column":69}}},"19":{"name":"getTimeout","line":357,"loc":{"start":{"line":357,"column":7},"end":{"line":357,"column":29}}},"20":{"name":"setTimeout","line":364,"loc":{"start":{"line":364,"column":7},"end":{"line":364,"column":36}}},"21":{"name":"on","line":375,"loc":{"start":{"line":375,"column":22},"end":{"line":375,"column":51}}},"22":{"name":"createServer","line":383,"loc":{"start":{"line":383,"column":0},"end":{"line":383,"column":48}}},"23":{"name":"IncomingRequest","line":401,"loc":{"start":{"line":401,"column":0},"end":{"line":401,"column":33}}},"24":{"name":"_onHeaders","line":410,"loc":{"start":{"line":410,"column":39},"end":{"line":410,"column":68}}},"25":{"name":"OutgoingResponse","line":477,"loc":{"start":{"line":477,"column":0},"end":{"line":477,"column":34}}},"26":{"name":"writeHead","line":490,"loc":{"start":{"line":490,"column":39},"end":{"line":490,"column":93}}},"27":{"name":"_implicitHeaders","line":516,"loc":{"start":{"line":516,"column":46},"end":{"line":516,"column":74}}},"28":{"name":"write","line":522,"loc":{"start":{"line":522,"column":35},"end":{"line":522,"column":52}}},"29":{"name":"end","line":527,"loc":{"start":{"line":527,"column":33},"end":{"line":527,"column":48}}},"30":{"name":"_onRequestHeaders","line":532,"loc":{"start":{"line":532,"column":47},"end":{"line":532,"column":83}}},"31":{"name":"push","line":536,"loc":{"start":{"line":536,"column":34},"end":{"line":536,"column":57}}},"32":{"name":"on","line":562,"loc":{"start":{"line":562,"column":32},"end":{"line":562,"column":61}}},"33":{"name":"request","line":578,"loc":{"start":{"line":578,"column":18},"end":{"line":578,"column":54}}},"34":{"name":"get","line":581,"loc":{"start":{"line":581,"column":14},"end":{"line":581,"column":46}}},"35":{"name":"Agent","line":588,"loc":{"start":{"line":588,"column":0},"end":{"line":588,"column":24}}},"36":{"name":"request","line":610,"loc":{"start":{"line":610,"column":26},"end":{"line":610,"column":62}}},"37":{"name":"(anonymous_37)","line":663,"loc":{"start":{"line":663,"column":30},"end":{"line":663,"column":47}}},"38":{"name":"negotiated","line":672,"loc":{"start":{"line":672,"column":4},"end":{"line":672,"column":26}}},"39":{"name":"(anonymous_39)","line":699,"loc":{"start":{"line":699,"column":19},"end":{"line":699,"column":38}}},"40":{"name":"get","line":712,"loc":{"start":{"line":712,"column":22},"end":{"line":712,"column":54}}},"41":{"name":"unbundleSocket","line":718,"loc":{"start":{"line":718,"column":0},"end":{"line":718,"column":32}}},"42":{"name":"getMaxSockets","line":730,"loc":{"start":{"line":730,"column":7},"end":{"line":730,"column":32}}},"43":{"name":"setMaxSockets","line":733,"loc":{"start":{"line":733,"column":7},"end":{"line":733,"column":37}}},"44":{"name":"OutgoingRequest","line":743,"loc":{"start":{"line":743,"column":0},"end":{"line":743,"column":27}}},"45":{"name":"_start","line":753,"loc":{"start":{"line":753,"column":35},"end":{"line":753,"column":68}}},"46":{"name":"_fallback","line":785,"loc":{"start":{"line":785,"column":38},"end":{"line":785,"column":66}}},"47":{"name":"setPriority","line":791,"loc":{"start":{"line":791,"column":40},"end":{"line":791,"column":71}}},"48":{"name":"on","line":801,"loc":{"start":{"line":801,"column":31},"end":{"line":801,"column":60}}},"49":{"name":"setNoDelay","line":810,"loc":{"start":{"line":810,"column":39},"end":{"line":810,"column":68}}},"50":{"name":"setSocketKeepAlive","line":818,"loc":{"start":{"line":818,"column":47},"end":{"line":818,"column":97}}},"51":{"name":"setTimeout","line":826,"loc":{"start":{"line":826,"column":39},"end":{"line":826,"column":78}}},"52":{"name":"abort","line":835,"loc":{"start":{"line":835,"column":34},"end":{"line":835,"column":51}}},"53":{"name":"_onPromise","line":846,"loc":{"start":{"line":846,"column":39},"end":{"line":846,"column":76}}},"54":{"name":"IncomingResponse","line":861,"loc":{"start":{"line":861,"column":0},"end":{"line":861,"column":34}}},"55":{"name":"_onHeaders","line":867,"loc":{"start":{"line":867,"column":40},"end":{"line":867,"column":69}}},"56":{"name":"IncomingPromise","line":896,"loc":{"start":{"line":896,"column":0},"end":{"line":896,"column":57}}},"57":{"name":"cancel","line":915,"loc":{"start":{"line":915,"column":35},"end":{"line":915,"column":53}}},"58":{"name":"setPriority","line":919,"loc":{"start":{"line":919,"column":40},"end":{"line":919,"column":71}}}},"statementMap":{"1":{"start":{"line":129,"column":0},"end":{"line":129,"column":25}},"2":{"start":{"line":130,"column":0},"end":{"line":130,"column":25}},"3":{"start":{"line":131,"column":0},"end":{"line":131,"column":27}},"4":{"start":{"line":132,"column":0},"end":{"line":132,"column":50}},"5":{"start":{"line":133,"column":0},"end":{"line":133,"column":48}},"6":{"start":{"line":134,"column":0},"end":{"line":134,"column":42}},"7":{"start":{"line":135,"column":0},"end":{"line":135,"column":42}},"8":{"start":{"line":136,"column":0},"end":{"line":136,"column":46}},"9":{"start":{"line":137,"column":0},"end":{"line":137,"column":27}},"10":{"start":{"line":138,"column":0},"end":{"line":138,"column":29}},"11":{"start":{"line":140,"column":0},"end":{"line":140,"column":41}},"12":{"start":{"line":141,"column":0},"end":{"line":141,"column":42}},"13":{"start":{"line":142,"column":0},"end":{"line":142,"column":42}},"14":{"start":{"line":146,"column":0},"end":{"line":146,"column":45}},"15":{"start":{"line":152,"column":0},"end":{"line":152,"column":18}},"16":{"start":{"line":153,"column":0},"end":{"line":162,"column":2}},"17":{"start":{"line":161,"column":22},"end":{"line":161,"column":34}},"18":{"start":{"line":165,"column":0},"end":{"line":165,"column":25}},"19":{"start":{"line":166,"column":0},"end":{"line":166,"column":95}},"20":{"start":{"line":167,"column":0},"end":{"line":169,"column":3}},"21":{"start":{"line":168,"column":2},"end":{"line":168,"column":65}},"22":{"start":{"line":174,"column":0},"end":{"line":190,"column":1}},"23":{"start":{"line":176,"column":2},"end":{"line":176,"column":25}},"24":{"start":{"line":177,"column":2},"end":{"line":177,"column":20}},"25":{"start":{"line":178,"column":2},"end":{"line":178,"column":37}},"26":{"start":{"line":180,"column":2},"end":{"line":180,"column":55}},"27":{"start":{"line":184,"column":2},"end":{"line":184,"column":27}},"28":{"start":{"line":185,"column":2},"end":{"line":185,"column":28}},"29":{"start":{"line":186,"column":2},"end":{"line":186,"column":28}},"30":{"start":{"line":189,"column":2},"end":{"line":189,"column":53}},"31":{"start":{"line":191,"column":0},"end":{"line":191,"column":110}},"32":{"start":{"line":193,"column":0},"end":{"line":193,"column":44}},"33":{"start":{"line":198,"column":0},"end":{"line":206,"column":1}},"34":{"start":{"line":200,"column":2},"end":{"line":200,"column":22}},"35":{"start":{"line":202,"column":2},"end":{"line":202,"column":21}},"36":{"start":{"line":203,"column":2},"end":{"line":203,"column":27}},"37":{"start":{"line":205,"column":2},"end":{"line":205,"column":45}},"38":{"start":{"line":207,"column":0},"end":{"line":207,"column":107}},"39":{"start":{"line":209,"column":0},"end":{"line":215,"column":2}},"40":{"start":{"line":210,"column":2},"end":{"line":214,"column":3}},"41":{"start":{"line":211,"column":4},"end":{"line":211,"column":49}},"42":{"start":{"line":213,"column":4},"end":{"line":213,"column":75}},"43":{"start":{"line":217,"column":0},"end":{"line":223,"column":2}},"44":{"start":{"line":218,"column":2},"end":{"line":222,"column":3}},"45":{"start":{"line":219,"column":4},"end":{"line":219,"column":22}},"46":{"start":{"line":221,"column":4},"end":{"line":221,"column":49}},"47":{"start":{"line":225,"column":0},"end":{"line":231,"column":2}},"48":{"start":{"line":226,"column":2},"end":{"line":230,"column":3}},"49":{"start":{"line":227,"column":4},"end":{"line":227,"column":63}},"50":{"start":{"line":229,"column":4},"end":{"line":229,"column":46}},"51":{"start":{"line":233,"column":0},"end":{"line":239,"column":2}},"52":{"start":{"line":234,"column":2},"end":{"line":238,"column":3}},"53":{"start":{"line":235,"column":4},"end":{"line":235,"column":66}},"54":{"start":{"line":237,"column":4},"end":{"line":237,"column":45}},"55":{"start":{"line":241,"column":0},"end":{"line":243,"column":2}},"56":{"start":{"line":242,"column":2},"end":{"line":242,"column":43}},"57":{"start":{"line":245,"column":0},"end":{"line":245,"column":44}},"58":{"start":{"line":250,"column":0},"end":{"line":250,"column":36}},"59":{"start":{"line":251,"column":0},"end":{"line":251,"column":24}},"60":{"start":{"line":252,"column":0},"end":{"line":252,"column":42}},"61":{"start":{"line":253,"column":0},"end":{"line":253,"column":44}},"62":{"start":{"line":254,"column":0},"end":{"line":254,"column":42}},"63":{"start":{"line":259,"column":0},"end":{"line":300,"column":1}},"64":{"start":{"line":260,"column":2},"end":{"line":260,"column":26}},"65":{"start":{"line":262,"column":2},"end":{"line":262,"column":74}},"66":{"start":{"line":263,"column":2},"end":{"line":263,"column":36}},"67":{"start":{"line":265,"column":2},"end":{"line":265,"column":37}},"68":{"start":{"line":266,"column":2},"end":{"line":266,"column":43}},"69":{"start":{"line":269,"column":2},"end":{"line":297,"column":3}},"70":{"start":{"line":270,"column":4},"end":{"line":270,"column":58}},"71":{"start":{"line":271,"column":4},"end":{"line":271,"column":23}},"72":{"start":{"line":272,"column":4},"end":{"line":272,"column":72}},"73":{"start":{"line":273,"column":4},"end":{"line":273,"column":47}},"74":{"start":{"line":274,"column":4},"end":{"line":274,"column":79}},"75":{"start":{"line":275,"column":4},"end":{"line":275,"column":56}},"76":{"start":{"line":276,"column":4},"end":{"line":282,"column":7}},"77":{"start":{"line":277,"column":6},"end":{"line":281,"column":7}},"78":{"start":{"line":278,"column":8},"end":{"line":278,"column":22}},"79":{"start":{"line":280,"column":8},"end":{"line":280,"column":25}},"80":{"start":{"line":283,"column":4},"end":{"line":283,"column":64}},"81":{"start":{"line":287,"column":7},"end":{"line":297,"column":3}},"82":{"start":{"line":288,"column":4},"end":{"line":288,"column":60}},"83":{"start":{"line":289,"column":4},"end":{"line":289,"column":25}},"84":{"start":{"line":290,"column":4},"end":{"line":290,"column":43}},"85":{"start":{"line":295,"column":4},"end":{"line":295,"column":81}},"86":{"start":{"line":296,"column":4},"end":{"line":296,"column":95}},"87":{"start":{"line":299,"column":2},"end":{"line":299,"column":58}},"88":{"start":{"line":301,"column":0},"end":{"line":301,"column":93}},"89":{"start":{"line":304,"column":0},"end":{"line":323,"column":2}},"90":{"start":{"line":305,"column":2},"end":{"line":305,"column":67}},"91":{"start":{"line":307,"column":2},"end":{"line":308,"column":50}},"92":{"start":{"line":310,"column":2},"end":{"line":310,"column":39}},"93":{"start":{"line":312,"column":2},"end":{"line":312,"column":18}},"94":{"start":{"line":313,"column":2},"end":{"line":318,"column":5}},"95":{"start":{"line":314,"column":4},"end":{"line":314,"column":48}},"96":{"start":{"line":315,"column":4},"end":{"line":315,"column":46}},"97":{"start":{"line":317,"column":4},"end":{"line":317,"column":78}},"98":{"start":{"line":320,"column":2},"end":{"line":320,"column":60}},"99":{"start":{"line":322,"column":2},"end":{"line":322,"column":44}},"100":{"start":{"line":325,"column":0},"end":{"line":334,"column":2}},"101":{"start":{"line":326,"column":2},"end":{"line":327,"column":49}},"102":{"start":{"line":329,"column":2},"end":{"line":331,"column":3}},"103":{"start":{"line":330,"column":4},"end":{"line":330,"column":64}},"104":{"start":{"line":333,"column":2},"end":{"line":333,"column":34}},"105":{"start":{"line":339,"column":0},"end":{"line":343,"column":2}},"106":{"start":{"line":340,"column":2},"end":{"line":341,"column":55}},"107":{"start":{"line":342,"column":2},"end":{"line":342,"column":53}},"108":{"start":{"line":345,"column":0},"end":{"line":348,"column":2}},"109":{"start":{"line":346,"column":2},"end":{"line":346,"column":35}},"110":{"start":{"line":347,"column":2},"end":{"line":347,"column":31}},"111":{"start":{"line":350,"column":0},"end":{"line":354,"column":2}},"112":{"start":{"line":351,"column":2},"end":{"line":353,"column":3}},"113":{"start":{"line":352,"column":4},"end":{"line":352,"column":47}},"114":{"start":{"line":356,"column":0},"end":{"line":369,"column":3}},"115":{"start":{"line":358,"column":4},"end":{"line":362,"column":5}},"116":{"start":{"line":359,"column":6},"end":{"line":359,"column":34}},"117":{"start":{"line":361,"column":6},"end":{"line":361,"column":23}},"118":{"start":{"line":365,"column":4},"end":{"line":367,"column":5}},"119":{"start":{"line":366,"column":6},"end":{"line":366,"column":37}},"120":{"start":{"line":375,"column":0},"end":{"line":381,"column":2}},"121":{"start":{"line":376,"column":2},"end":{"line":380,"column":3}},"122":{"start":{"line":377,"column":4},"end":{"line":377,"column":48}},"123":{"start":{"line":379,"column":4},"end":{"line":379,"column":58}},"124":{"start":{"line":383,"column":0},"end":{"line":396,"column":1}},"125":{"start":{"line":384,"column":2},"end":{"line":387,"column":3}},"126":{"start":{"line":385,"column":4},"end":{"line":385,"column":30}},"127":{"start":{"line":386,"column":4},"end":{"line":386,"column":24}},"128":{"start":{"line":389,"column":2},"end":{"line":389,"column":35}},"129":{"start":{"line":391,"column":2},"end":{"line":393,"column":3}},"130":{"start":{"line":392,"column":4},"end":{"line":392,"column":42}},"131":{"start":{"line":395,"column":2},"end":{"line":395,"column":16}},"132":{"start":{"line":401,"column":0},"end":{"line":403,"column":1}},"133":{"start":{"line":402,"column":2},"end":{"line":402,"column":37}},"134":{"start":{"line":404,"column":0},"end":{"line":404,"column":114}},"135":{"start":{"line":410,"column":0},"end":{"line":472,"column":2}},"136":{"start":{"line":414,"column":2},"end":{"line":422,"column":4}},"137":{"start":{"line":423,"column":2},"end":{"line":430,"column":3}},"138":{"start":{"line":424,"column":4},"end":{"line":424,"column":35}},"139":{"start":{"line":425,"column":4},"end":{"line":429,"column":5}},"140":{"start":{"line":426,"column":6},"end":{"line":426,"column":84}},"141":{"start":{"line":427,"column":6},"end":{"line":427,"column":50}},"142":{"start":{"line":428,"column":6},"end":{"line":428,"column":13}},"143":{"start":{"line":433,"column":2},"end":{"line":433,"column":20}},"144":{"start":{"line":445,"column":2},"end":{"line":450,"column":4}},"145":{"start":{"line":451,"column":2},"end":{"line":463,"column":3}},"146":{"start":{"line":452,"column":4},"end":{"line":462,"column":5}},"147":{"start":{"line":453,"column":6},"end":{"line":453,"column":32}},"148":{"start":{"line":454,"column":6},"end":{"line":458,"column":7}},"149":{"start":{"line":455,"column":8},"end":{"line":455,"column":77}},"150":{"start":{"line":456,"column":8},"end":{"line":456,"column":52}},"151":{"start":{"line":457,"column":8},"end":{"line":457,"column":15}},"152":{"start":{"line":459,"column":6},"end":{"line":459,"column":34}},"153":{"start":{"line":461,"column":6},"end":{"line":461,"column":41}},"154":{"start":{"line":466,"column":2},"end":{"line":466,"column":32}},"155":{"start":{"line":469,"column":2},"end":{"line":470,"column":80}},"156":{"start":{"line":471,"column":2},"end":{"line":471,"column":21}},"157":{"start":{"line":477,"column":0},"end":{"line":487,"column":1}},"158":{"start":{"line":478,"column":2},"end":{"line":478,"column":29}},"159":{"start":{"line":480,"column":2},"end":{"line":480,"column":55}},"160":{"start":{"line":482,"column":2},"end":{"line":482,"column":23}},"161":{"start":{"line":483,"column":2},"end":{"line":483,"column":24}},"162":{"start":{"line":484,"column":2},"end":{"line":484,"column":23}},"163":{"start":{"line":486,"column":2},"end":{"line":486,"column":65}},"164":{"start":{"line":488,"column":0},"end":{"line":488,"column":116}},"165":{"start":{"line":490,"column":0},"end":{"line":514,"column":2}},"166":{"start":{"line":491,"column":2},"end":{"line":495,"column":3}},"167":{"start":{"line":492,"column":4},"end":{"line":492,"column":93}},"168":{"start":{"line":494,"column":4},"end":{"line":494,"column":27}},"169":{"start":{"line":497,"column":2},"end":{"line":497,"column":26}},"170":{"start":{"line":499,"column":2},"end":{"line":501,"column":3}},"171":{"start":{"line":500,"column":4},"end":{"line":500,"column":54}},"172":{"start":{"line":503,"column":2},"end":{"line":505,"column":3}},"173":{"start":{"line":504,"column":4},"end":{"line":504,"column":52}},"174":{"start":{"line":507,"column":2},"end":{"line":507,"column":92}},"175":{"start":{"line":509,"column":2},"end":{"line":509,"column":58}},"176":{"start":{"line":511,"column":2},"end":{"line":511,"column":37}},"177":{"start":{"line":513,"column":2},"end":{"line":513,"column":26}},"178":{"start":{"line":516,"column":0},"end":{"line":520,"column":2}},"179":{"start":{"line":517,"column":2},"end":{"line":519,"column":3}},"180":{"start":{"line":518,"column":4},"end":{"line":518,"column":36}},"181":{"start":{"line":522,"column":0},"end":{"line":525,"column":2}},"182":{"start":{"line":523,"column":2},"end":{"line":523,"column":26}},"183":{"start":{"line":524,"column":2},"end":{"line":524,"column":64}},"184":{"start":{"line":527,"column":0},"end":{"line":530,"column":2}},"185":{"start":{"line":528,"column":2},"end":{"line":528,"column":26}},"186":{"start":{"line":529,"column":2},"end":{"line":529,"column":62}},"187":{"start":{"line":532,"column":0},"end":{"line":534,"column":2}},"188":{"start":{"line":533,"column":2},"end":{"line":533,"column":33}},"189":{"start":{"line":536,"column":0},"end":{"line":558,"column":2}},"190":{"start":{"line":537,"column":2},"end":{"line":539,"column":3}},"191":{"start":{"line":538,"column":4},"end":{"line":538,"column":33}},"192":{"start":{"line":541,"column":2},"end":{"line":543,"column":3}},"193":{"start":{"line":542,"column":4},"end":{"line":542,"column":51}},"194":{"start":{"line":545,"column":2},"end":{"line":550,"column":22}},"195":{"start":{"line":552,"column":2},"end":{"line":553,"column":96}},"196":{"start":{"line":555,"column":2},"end":{"line":555,"column":48}},"197":{"start":{"line":557,"column":2},"end":{"line":557,"column":42}},"198":{"start":{"line":562,"column":0},"end":{"line":568,"column":2}},"199":{"start":{"line":563,"column":2},"end":{"line":567,"column":3}},"200":{"start":{"line":564,"column":4},"end":{"line":564,"column":48}},"201":{"start":{"line":566,"column":4},"end":{"line":566,"column":61}},"202":{"start":{"line":573,"column":0},"end":{"line":573,"column":40}},"203":{"start":{"line":574,"column":0},"end":{"line":574,"column":42}},"204":{"start":{"line":575,"column":0},"end":{"line":575,"column":44}},"205":{"start":{"line":576,"column":0},"end":{"line":576,"column":22}},"206":{"start":{"line":577,"column":0},"end":{"line":577,"column":32}},"207":{"start":{"line":578,"column":0},"end":{"line":580,"column":2}},"208":{"start":{"line":579,"column":2},"end":{"line":579,"column":75}},"209":{"start":{"line":581,"column":0},"end":{"line":583,"column":2}},"210":{"start":{"line":582,"column":2},"end":{"line":582,"column":71}},"211":{"start":{"line":588,"column":0},"end":{"line":607,"column":1}},"212":{"start":{"line":589,"column":2},"end":{"line":589,"column":26}},"213":{"start":{"line":591,"column":2},"end":{"line":591,"column":26}},"214":{"start":{"line":593,"column":2},"end":{"line":593,"column":36}},"215":{"start":{"line":594,"column":2},"end":{"line":594,"column":74}},"216":{"start":{"line":595,"column":2},"end":{"line":595,"column":22}},"217":{"start":{"line":601,"column":2},"end":{"line":603,"column":5}},"218":{"start":{"line":605,"column":2},"end":{"line":605,"column":42}},"219":{"start":{"line":606,"column":2},"end":{"line":606,"column":44}},"220":{"start":{"line":608,"column":0},"end":{"line":608,"column":91}},"221":{"start":{"line":610,"column":0},"end":{"line":710,"column":2}},"222":{"start":{"line":611,"column":2},"end":{"line":613,"column":3}},"223":{"start":{"line":612,"column":4},"end":{"line":612,"column":33}},"224":{"start":{"line":615,"column":2},"end":{"line":615,"column":59}},"225":{"start":{"line":616,"column":2},"end":{"line":616,"column":50}},"226":{"start":{"line":617,"column":2},"end":{"line":617,"column":65}},"227":{"start":{"line":618,"column":2},"end":{"line":618,"column":37}},"228":{"start":{"line":619,"column":2},"end":{"line":619,"column":37}},"229":{"start":{"line":621,"column":2},"end":{"line":624,"column":3}},"230":{"start":{"line":622,"column":4},"end":{"line":622,"column":85}},"231":{"start":{"line":623,"column":4},"end":{"line":623,"column":70}},"232":{"start":{"line":626,"column":2},"end":{"line":626,"column":47}},"233":{"start":{"line":628,"column":2},"end":{"line":630,"column":3}},"234":{"start":{"line":629,"column":4},"end":{"line":629,"column":37}},"235":{"start":{"line":632,"column":2},"end":{"line":636,"column":14}},"236":{"start":{"line":639,"column":2},"end":{"line":707,"column":3}},"237":{"start":{"line":640,"column":4},"end":{"line":640,"column":39}},"238":{"start":{"line":641,"column":4},"end":{"line":641,"column":53}},"239":{"start":{"line":645,"column":7},"end":{"line":707,"column":3}},"240":{"start":{"line":646,"column":4},"end":{"line":646,"column":65}},"241":{"start":{"line":647,"column":4},"end":{"line":651,"column":7}},"242":{"start":{"line":652,"column":4},"end":{"line":652,"column":50}},"243":{"start":{"line":653,"column":4},"end":{"line":653,"column":53}},"244":{"start":{"line":658,"column":4},"end":{"line":658,"column":24}},"245":{"start":{"line":659,"column":4},"end":{"line":659,"column":72}},"246":{"start":{"line":660,"column":4},"end":{"line":660,"column":37}},"247":{"start":{"line":661,"column":4},"end":{"line":661,"column":46}},"248":{"start":{"line":663,"column":4},"end":{"line":669,"column":7}},"249":{"start":{"line":664,"column":6},"end":{"line":668,"column":7}},"250":{"start":{"line":665,"column":8},"end":{"line":665,"column":21}},"251":{"start":{"line":667,"column":8},"end":{"line":667,"column":47}},"252":{"start":{"line":671,"column":4},"end":{"line":671,"column":20}},"253":{"start":{"line":672,"column":4},"end":{"line":697,"column":5}},"254":{"start":{"line":673,"column":6},"end":{"line":673,"column":19}},"255":{"start":{"line":674,"column":6},"end":{"line":680,"column":7}},"256":{"start":{"line":675,"column":8},"end":{"line":675,"column":48}},"257":{"start":{"line":676,"column":8},"end":{"line":676,"column":44}},"258":{"start":{"line":677,"column":8},"end":{"line":677,"column":69}},"259":{"start":{"line":678,"column":8},"end":{"line":678,"column":46}},"260":{"start":{"line":679,"column":8},"end":{"line":679,"column":54}},"261":{"start":{"line":681,"column":6},"end":{"line":696,"column":7}},"262":{"start":{"line":682,"column":8},"end":{"line":686,"column":9}},"263":{"start":{"line":683,"column":10},"end":{"line":683,"column":27}},"264":{"start":{"line":685,"column":10},"end":{"line":685,"column":31}},"265":{"start":{"line":688,"column":8},"end":{"line":695,"column":9}},"266":{"start":{"line":689,"column":10},"end":{"line":690,"column":59}},"267":{"start":{"line":691,"column":10},"end":{"line":691,"column":41}},"268":{"start":{"line":692,"column":10},"end":{"line":692,"column":35}},"269":{"start":{"line":694,"column":10},"end":{"line":694,"column":36}},"270":{"start":{"line":699,"column":4},"end":{"line":706,"column":7}},"271":{"start":{"line":700,"column":6},"end":{"line":700,"column":21}},"272":{"start":{"line":701,"column":6},"end":{"line":705,"column":7}},"273":{"start":{"line":702,"column":8},"end":{"line":702,"column":57}},"274":{"start":{"line":704,"column":8},"end":{"line":704,"column":40}},"275":{"start":{"line":709,"column":2},"end":{"line":709,"column":17}},"276":{"start":{"line":712,"column":0},"end":{"line":716,"column":2}},"277":{"start":{"line":713,"column":2},"end":{"line":713,"column":48}},"278":{"start":{"line":714,"column":2},"end":{"line":714,"column":16}},"279":{"start":{"line":715,"column":2},"end":{"line":715,"column":17}},"280":{"start":{"line":718,"column":0},"end":{"line":727,"column":1}},"281":{"start":{"line":719,"column":2},"end":{"line":719,"column":36}},"282":{"start":{"line":720,"column":2},"end":{"line":720,"column":35}},"283":{"start":{"line":721,"column":2},"end":{"line":721,"column":40}},"284":{"start":{"line":722,"column":2},"end":{"line":722,"column":37}},"285":{"start":{"line":723,"column":2},"end":{"line":723,"column":37}},"286":{"start":{"line":724,"column":2},"end":{"line":724,"column":18}},"287":{"start":{"line":725,"column":2},"end":{"line":725,"column":23}},"288":{"start":{"line":726,"column":2},"end":{"line":726,"column":22}},"289":{"start":{"line":729,"column":0},"end":{"line":736,"column":3}},"290":{"start":{"line":731,"column":4},"end":{"line":731,"column":39}},"291":{"start":{"line":734,"column":4},"end":{"line":734,"column":40}},"292":{"start":{"line":738,"column":0},"end":{"line":738,"column":34}},"293":{"start":{"line":743,"column":0},"end":{"line":750,"column":1}},"294":{"start":{"line":744,"column":2},"end":{"line":744,"column":29}},"295":{"start":{"line":746,"column":2},"end":{"line":746,"column":24}},"296":{"start":{"line":748,"column":2},"end":{"line":748,"column":26}},"297":{"start":{"line":749,"column":2},"end":{"line":749,"column":26}},"298":{"start":{"line":751,"column":0},"end":{"line":751,"column":114}},"299":{"start":{"line":753,"column":0},"end":{"line":783,"column":2}},"300":{"start":{"line":754,"column":2},"end":{"line":754,"column":23}},"301":{"start":{"line":756,"column":2},"end":{"line":756,"column":55}},"302":{"start":{"line":758,"column":2},"end":{"line":758,"column":19}},"303":{"start":{"line":759,"column":2},"end":{"line":761,"column":3}},"304":{"start":{"line":760,"column":4},"end":{"line":760,"column":40}},"305":{"start":{"line":762,"column":2},"end":{"line":762,"column":22}},"306":{"start":{"line":764,"column":2},"end":{"line":766,"column":3}},"307":{"start":{"line":765,"column":4},"end":{"line":765,"column":83}},"308":{"start":{"line":768,"column":2},"end":{"line":768,"column":53}},"309":{"start":{"line":769,"column":2},"end":{"line":769,"column":38}},"310":{"start":{"line":770,"column":2},"end":{"line":770,"column":34}},"311":{"start":{"line":771,"column":2},"end":{"line":771,"column":34}},"312":{"start":{"line":773,"column":2},"end":{"line":774,"column":98}},"313":{"start":{"line":775,"column":2},"end":{"line":775,"column":31}},"314":{"start":{"line":777,"column":2},"end":{"line":777,"column":35}},"315":{"start":{"line":779,"column":2},"end":{"line":779,"column":51}},"316":{"start":{"line":780,"column":2},"end":{"line":780,"column":69}},"317":{"start":{"line":782,"column":2},"end":{"line":782,"column":56}},"318":{"start":{"line":785,"column":0},"end":{"line":789,"column":2}},"319":{"start":{"line":786,"column":2},"end":{"line":786,"column":59}},"320":{"start":{"line":787,"column":2},"end":{"line":787,"column":39}},"321":{"start":{"line":788,"column":2},"end":{"line":788,"column":35}},"322":{"start":{"line":791,"column":0},"end":{"line":797,"column":2}},"323":{"start":{"line":792,"column":2},"end":{"line":796,"column":3}},"324":{"start":{"line":793,"column":4},"end":{"line":793,"column":35}},"325":{"start":{"line":795,"column":4},"end":{"line":795,"column":63}},"326":{"start":{"line":801,"column":0},"end":{"line":807,"column":2}},"327":{"start":{"line":802,"column":2},"end":{"line":806,"column":3}},"328":{"start":{"line":803,"column":4},"end":{"line":803,"column":48}},"329":{"start":{"line":805,"column":4},"end":{"line":805,"column":61}},"330":{"start":{"line":810,"column":0},"end":{"line":816,"column":2}},"331":{"start":{"line":811,"column":2},"end":{"line":815,"column":3}},"332":{"start":{"line":812,"column":4},"end":{"line":812,"column":37}},"333":{"start":{"line":813,"column":9},"end":{"line":815,"column":3}},"334":{"start":{"line":814,"column":4},"end":{"line":814,"column":59}},"335":{"start":{"line":818,"column":0},"end":{"line":824,"column":2}},"336":{"start":{"line":819,"column":2},"end":{"line":823,"column":3}},"337":{"start":{"line":820,"column":4},"end":{"line":820,"column":58}},"338":{"start":{"line":821,"column":9},"end":{"line":823,"column":3}},"339":{"start":{"line":822,"column":4},"end":{"line":822,"column":80}},"340":{"start":{"line":826,"column":0},"end":{"line":832,"column":2}},"341":{"start":{"line":827,"column":2},"end":{"line":831,"column":3}},"342":{"start":{"line":828,"column":4},"end":{"line":828,"column":47}},"343":{"start":{"line":829,"column":9},"end":{"line":831,"column":3}},"344":{"start":{"line":830,"column":4},"end":{"line":830,"column":69}},"345":{"start":{"line":835,"column":0},"end":{"line":843,"column":2}},"346":{"start":{"line":836,"column":2},"end":{"line":842,"column":3}},"347":{"start":{"line":837,"column":4},"end":{"line":837,"column":25}},"348":{"start":{"line":838,"column":9},"end":{"line":842,"column":3}},"349":{"start":{"line":839,"column":4},"end":{"line":839,"column":32}},"350":{"start":{"line":841,"column":4},"end":{"line":841,"column":45}},"351":{"start":{"line":846,"column":0},"end":{"line":856,"column":2}},"352":{"start":{"line":847,"column":2},"end":{"line":847,"column":71}},"353":{"start":{"line":849,"column":2},"end":{"line":849,"column":53}},"354":{"start":{"line":851,"column":2},"end":{"line":855,"column":3}},"355":{"start":{"line":852,"column":4},"end":{"line":852,"column":31}},"356":{"start":{"line":854,"column":4},"end":{"line":854,"column":21}},"357":{"start":{"line":861,"column":0},"end":{"line":863,"column":1}},"358":{"start":{"line":862,"column":2},"end":{"line":862,"column":37}},"359":{"start":{"line":864,"column":0},"end":{"line":864,"column":116}},"360":{"start":{"line":867,"column":0},"end":{"line":891,"column":2}},"361":{"start":{"line":871,"column":2},"end":{"line":871,"column":25}},"362":{"start":{"line":879,"column":2},"end":{"line":879,"column":38}},"363":{"start":{"line":880,"column":2},"end":{"line":884,"column":3}},"364":{"start":{"line":881,"column":4},"end":{"line":881,"column":83}},"365":{"start":{"line":882,"column":4},"end":{"line":882,"column":48}},"366":{"start":{"line":883,"column":4},"end":{"line":883,"column":11}},"367":{"start":{"line":885,"column":2},"end":{"line":885,"column":31}},"368":{"start":{"line":886,"column":2},"end":{"line":886,"column":28}},"369":{"start":{"line":889,"column":2},"end":{"line":889,"column":79}},"370":{"start":{"line":890,"column":2},"end":{"line":890,"column":21}},"371":{"start":{"line":896,"column":0},"end":{"line":912,"column":1}},"372":{"start":{"line":897,"column":2},"end":{"line":897,"column":30}},"373":{"start":{"line":898,"column":2},"end":{"line":898,"column":22}},"374":{"start":{"line":899,"column":2},"end":{"line":899,"column":20}},"375":{"start":{"line":900,"column":2},"end":{"line":900,"column":36}},"376":{"start":{"line":902,"column":2},"end":{"line":902,"column":37}},"377":{"start":{"line":904,"column":2},"end":{"line":904,"column":34}},"378":{"start":{"line":906,"column":2},"end":{"line":906,"column":40}},"379":{"start":{"line":908,"column":2},"end":{"line":908,"column":60}},"380":{"start":{"line":909,"column":2},"end":{"line":909,"column":69}},"381":{"start":{"line":911,"column":2},"end":{"line":911,"column":56}},"382":{"start":{"line":913,"column":0},"end":{"line":913,"column":114}},"383":{"start":{"line":915,"column":0},"end":{"line":917,"column":2}},"384":{"start":{"line":916,"column":2},"end":{"line":916,"column":39}},"385":{"start":{"line":919,"column":0},"end":{"line":921,"column":2}},"386":{"start":{"line":920,"column":2},"end":{"line":920,"column":42}},"387":{"start":{"line":923,"column":0},"end":{"line":923,"column":76}}},"branchMap":{"1":{"line":210,"type":"if","locations":[{"start":{"line":210,"column":2},"end":{"line":210,"column":2}},{"start":{"line":210,"column":2},"end":{"line":210,"column":2}}]},"2":{"line":218,"type":"if","locations":[{"start":{"line":218,"column":2},"end":{"line":218,"column":2}},{"start":{"line":218,"column":2},"end":{"line":218,"column":2}}]},"3":{"line":226,"type":"if","locations":[{"start":{"line":226,"column":2},"end":{"line":226,"column":2}},{"start":{"line":226,"column":2},"end":{"line":226,"column":2}}]},"4":{"line":234,"type":"if","locations":[{"start":{"line":234,"column":2},"end":{"line":234,"column":2}},{"start":{"line":234,"column":2},"end":{"line":234,"column":2}}]},"5":{"line":260,"type":"binary-expr","locations":[{"start":{"line":260,"column":12},"end":{"line":260,"column":19}},{"start":{"line":260,"column":23},"end":{"line":260,"column":25}}]},"6":{"line":262,"type":"binary-expr","locations":[{"start":{"line":262,"column":15},"end":{"line":262,"column":26}},{"start":{"line":262,"column":30},"end":{"line":262,"column":43}}]},"7":{"line":269,"type":"if","locations":[{"start":{"line":269,"column":2},"end":{"line":269,"column":2}},{"start":{"line":269,"column":2},"end":{"line":269,"column":2}}]},"8":{"line":269,"type":"binary-expr","locations":[{"start":{"line":269,"column":7},"end":{"line":269,"column":18}},{"start":{"line":269,"column":22},"end":{"line":269,"column":34}},{"start":{"line":269,"column":39},"end":{"line":269,"column":50}}]},"9":{"line":277,"type":"if","locations":[{"start":{"line":277,"column":6},"end":{"line":277,"column":6}},{"start":{"line":277,"column":6},"end":{"line":277,"column":6}}]},"10":{"line":287,"type":"if","locations":[{"start":{"line":287,"column":7},"end":{"line":287,"column":7}},{"start":{"line":287,"column":7},"end":{"line":287,"column":7}}]},"11":{"line":340,"type":"cond-expr","locations":[{"start":{"line":340,"column":58},"end":{"line":340,"column":79}},{"start":{"line":340,"column":83},"end":{"line":340,"column":87}}]},"12":{"line":351,"type":"if","locations":[{"start":{"line":351,"column":2},"end":{"line":351,"column":2}},{"start":{"line":351,"column":2},"end":{"line":351,"column":2}}]},"13":{"line":358,"type":"if","locations":[{"start":{"line":358,"column":4},"end":{"line":358,"column":4}},{"start":{"line":358,"column":4},"end":{"line":358,"column":4}}]},"14":{"line":365,"type":"if","locations":[{"start":{"line":365,"column":4},"end":{"line":365,"column":4}},{"start":{"line":365,"column":4},"end":{"line":365,"column":4}}]},"15":{"line":376,"type":"if","locations":[{"start":{"line":376,"column":2},"end":{"line":376,"column":2}},{"start":{"line":376,"column":2},"end":{"line":376,"column":2}}]},"16":{"line":376,"type":"binary-expr","locations":[{"start":{"line":376,"column":7},"end":{"line":376,"column":26}},{"start":{"line":376,"column":32},"end":{"line":376,"column":51}}]},"17":{"line":384,"type":"if","locations":[{"start":{"line":384,"column":2},"end":{"line":384,"column":2}},{"start":{"line":384,"column":2},"end":{"line":384,"column":2}}]},"18":{"line":391,"type":"if","locations":[{"start":{"line":391,"column":2},"end":{"line":391,"column":2}},{"start":{"line":391,"column":2},"end":{"line":391,"column":2}}]},"19":{"line":425,"type":"if","locations":[{"start":{"line":425,"column":4},"end":{"line":425,"column":4}},{"start":{"line":425,"column":4},"end":{"line":425,"column":4}}]},"20":{"line":452,"type":"if","locations":[{"start":{"line":452,"column":4},"end":{"line":452,"column":4}},{"start":{"line":452,"column":4},"end":{"line":452,"column":4}}]},"21":{"line":454,"type":"if","locations":[{"start":{"line":454,"column":6},"end":{"line":454,"column":6}},{"start":{"line":454,"column":6},"end":{"line":454,"column":6}}]},"22":{"line":454,"type":"binary-expr","locations":[{"start":{"line":454,"column":11},"end":{"line":454,"column":36}},{"start":{"line":454,"column":42},"end":{"line":454,"column":60}}]},"23":{"line":491,"type":"if","locations":[{"start":{"line":491,"column":2},"end":{"line":491,"column":2}},{"start":{"line":491,"column":2},"end":{"line":491,"column":2}}]},"24":{"line":497,"type":"binary-expr","locations":[{"start":{"line":497,"column":12},"end":{"line":497,"column":19}},{"start":{"line":497,"column":23},"end":{"line":497,"column":25}}]},"25":{"line":503,"type":"if","locations":[{"start":{"line":503,"column":2},"end":{"line":503,"column":2}},{"start":{"line":503,"column":2},"end":{"line":503,"column":2}}]},"26":{"line":503,"type":"binary-expr","locations":[{"start":{"line":503,"column":6},"end":{"line":503,"column":19}},{"start":{"line":503,"column":23},"end":{"line":503,"column":49}}]},"27":{"line":517,"type":"if","locations":[{"start":{"line":517,"column":2},"end":{"line":517,"column":2}},{"start":{"line":517,"column":2},"end":{"line":517,"column":2}}]},"28":{"line":537,"type":"if","locations":[{"start":{"line":537,"column":2},"end":{"line":537,"column":2}},{"start":{"line":537,"column":2},"end":{"line":537,"column":2}}]},"29":{"line":541,"type":"if","locations":[{"start":{"line":541,"column":2},"end":{"line":541,"column":2}},{"start":{"line":541,"column":2},"end":{"line":541,"column":2}}]},"30":{"line":546,"type":"binary-expr","locations":[{"start":{"line":546,"column":16},"end":{"line":546,"column":30}},{"start":{"line":546,"column":34},"end":{"line":546,"column":39}}]},"31":{"line":547,"type":"binary-expr","locations":[{"start":{"line":547,"column":16},"end":{"line":547,"column":32}},{"start":{"line":547,"column":36},"end":{"line":547,"column":65}},{"start":{"line":547,"column":70},"end":{"line":547,"column":101}}]},"32":{"line":548,"type":"binary-expr","locations":[{"start":{"line":548,"column":13},"end":{"line":548,"column":29}},{"start":{"line":548,"column":33},"end":{"line":548,"column":45}},{"start":{"line":548,"column":49},"end":{"line":548,"column":78}}]},"33":{"line":563,"type":"if","locations":[{"start":{"line":563,"column":2},"end":{"line":563,"column":2}},{"start":{"line":563,"column":2},"end":{"line":563,"column":2}}]},"34":{"line":563,"type":"binary-expr","locations":[{"start":{"line":563,"column":6},"end":{"line":563,"column":18}},{"start":{"line":563,"column":23},"end":{"line":563,"column":42}}]},"35":{"line":579,"type":"binary-expr","locations":[{"start":{"line":579,"column":10},"end":{"line":579,"column":23}},{"start":{"line":579,"column":27},"end":{"line":579,"column":46}}]},"36":{"line":582,"type":"binary-expr","locations":[{"start":{"line":582,"column":10},"end":{"line":582,"column":23}},{"start":{"line":582,"column":27},"end":{"line":582,"column":46}}]},"37":{"line":591,"type":"binary-expr","locations":[{"start":{"line":591,"column":12},"end":{"line":591,"column":19}},{"start":{"line":591,"column":23},"end":{"line":591,"column":25}}]},"38":{"line":594,"type":"binary-expr","locations":[{"start":{"line":594,"column":15},"end":{"line":594,"column":26}},{"start":{"line":594,"column":30},"end":{"line":594,"column":43}}]},"39":{"line":611,"type":"if","locations":[{"start":{"line":611,"column":2},"end":{"line":611,"column":2}},{"start":{"line":611,"column":2},"end":{"line":611,"column":2}}]},"40":{"line":615,"type":"binary-expr","locations":[{"start":{"line":615,"column":20},"end":{"line":615,"column":34}},{"start":{"line":615,"column":38},"end":{"line":615,"column":43}}]},"41":{"line":616,"type":"binary-expr","locations":[{"start":{"line":616,"column":21},"end":{"line":616,"column":37}},{"start":{"line":616,"column":41},"end":{"line":616,"column":49}}]},"42":{"line":617,"type":"binary-expr","locations":[{"start":{"line":617,"column":17},"end":{"line":617,"column":33}},{"start":{"line":617,"column":37},"end":{"line":617,"column":49}},{"start":{"line":617,"column":53},"end":{"line":617,"column":64}}]},"43":{"line":618,"type":"binary-expr","locations":[{"start":{"line":618,"column":17},"end":{"line":618,"column":29}},{"start":{"line":618,"column":33},"end":{"line":618,"column":36}}]},"44":{"line":619,"type":"binary-expr","locations":[{"start":{"line":619,"column":17},"end":{"line":619,"column":29}},{"start":{"line":619,"column":33},"end":{"line":619,"column":36}}]},"45":{"line":621,"type":"if","locations":[{"start":{"line":621,"column":2},"end":{"line":621,"column":2}},{"start":{"line":621,"column":2},"end":{"line":621,"column":2}}]},"46":{"line":628,"type":"if","locations":[{"start":{"line":628,"column":2},"end":{"line":628,"column":2}},{"start":{"line":628,"column":2},"end":{"line":628,"column":2}}]},"47":{"line":639,"type":"if","locations":[{"start":{"line":639,"column":2},"end":{"line":639,"column":2}},{"start":{"line":639,"column":2},"end":{"line":639,"column":2}}]},"48":{"line":645,"type":"if","locations":[{"start":{"line":645,"column":7},"end":{"line":645,"column":7}},{"start":{"line":645,"column":7},"end":{"line":645,"column":7}}]},"49":{"line":664,"type":"if","locations":[{"start":{"line":664,"column":6},"end":{"line":664,"column":6}},{"start":{"line":664,"column":6},"end":{"line":664,"column":6}}]},"50":{"line":674,"type":"if","locations":[{"start":{"line":674,"column":6},"end":{"line":674,"column":6}},{"start":{"line":674,"column":6},"end":{"line":674,"column":6}}]},"51":{"line":681,"type":"if","locations":[{"start":{"line":681,"column":6},"end":{"line":681,"column":6}},{"start":{"line":681,"column":6},"end":{"line":681,"column":6}}]},"52":{"line":682,"type":"if","locations":[{"start":{"line":682,"column":8},"end":{"line":682,"column":8}},{"start":{"line":682,"column":8},"end":{"line":682,"column":8}}]},"53":{"line":688,"type":"if","locations":[{"start":{"line":688,"column":8},"end":{"line":688,"column":8}},{"start":{"line":688,"column":8},"end":{"line":688,"column":8}}]},"54":{"line":701,"type":"if","locations":[{"start":{"line":701,"column":6},"end":{"line":701,"column":6}},{"start":{"line":701,"column":6},"end":{"line":701,"column":6}}]},"55":{"line":764,"type":"if","locations":[{"start":{"line":764,"column":2},"end":{"line":764,"column":2}},{"start":{"line":764,"column":2},"end":{"line":764,"column":2}}]},"56":{"line":774,"type":"binary-expr","locations":[{"start":{"line":774,"column":53},"end":{"line":774,"column":68}},{"start":{"line":774,"column":72},"end":{"line":774,"column":74}}]},"57":{"line":792,"type":"if","locations":[{"start":{"line":792,"column":2},"end":{"line":792,"column":2}},{"start":{"line":792,"column":2},"end":{"line":792,"column":2}}]},"58":{"line":802,"type":"if","locations":[{"start":{"line":802,"column":2},"end":{"line":802,"column":2}},{"start":{"line":802,"column":2},"end":{"line":802,"column":2}}]},"59":{"line":802,"type":"binary-expr","locations":[{"start":{"line":802,"column":6},"end":{"line":802,"column":18}},{"start":{"line":802,"column":23},"end":{"line":802,"column":42}}]},"60":{"line":811,"type":"if","locations":[{"start":{"line":811,"column":2},"end":{"line":811,"column":2}},{"start":{"line":811,"column":2},"end":{"line":811,"column":2}}]},"61":{"line":813,"type":"if","locations":[{"start":{"line":813,"column":9},"end":{"line":813,"column":9}},{"start":{"line":813,"column":9},"end":{"line":813,"column":9}}]},"62":{"line":819,"type":"if","locations":[{"start":{"line":819,"column":2},"end":{"line":819,"column":2}},{"start":{"line":819,"column":2},"end":{"line":819,"column":2}}]},"63":{"line":821,"type":"if","locations":[{"start":{"line":821,"column":9},"end":{"line":821,"column":9}},{"start":{"line":821,"column":9},"end":{"line":821,"column":9}}]},"64":{"line":827,"type":"if","locations":[{"start":{"line":827,"column":2},"end":{"line":827,"column":2}},{"start":{"line":827,"column":2},"end":{"line":827,"column":2}}]},"65":{"line":829,"type":"if","locations":[{"start":{"line":829,"column":9},"end":{"line":829,"column":9}},{"start":{"line":829,"column":9},"end":{"line":829,"column":9}}]},"66":{"line":836,"type":"if","locations":[{"start":{"line":836,"column":2},"end":{"line":836,"column":2}},{"start":{"line":836,"column":2},"end":{"line":836,"column":2}}]},"67":{"line":838,"type":"if","locations":[{"start":{"line":838,"column":9},"end":{"line":838,"column":9}},{"start":{"line":838,"column":9},"end":{"line":838,"column":9}}]},"68":{"line":851,"type":"if","locations":[{"start":{"line":851,"column":2},"end":{"line":851,"column":2}},{"start":{"line":851,"column":2},"end":{"line":851,"column":2}}]},"69":{"line":880,"type":"if","locations":[{"start":{"line":880,"column":2},"end":{"line":880,"column":2}},{"start":{"line":880,"column":2},"end":{"line":880,"column":2}}]},"70":{"line":880,"type":"binary-expr","locations":[{"start":{"line":880,"column":7},"end":{"line":880,"column":37}},{"start":{"line":880,"column":43},"end":{"line":880,"column":66}}]}}}} \ No newline at end of file +{"/data/upstream/node-http2/lib/compressor.js":{"path":"/data/upstream/node-http2/lib/compressor.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":54,"11":54,"12":54,"13":54,"14":54,"15":54,"16":1,"17":1806,"18":1806,"19":1806,"20":1806,"21":1806,"22":1806,"23":1,"24":1,"25":1806,"26":1,"27":54,"28":54,"29":1620,"30":54,"31":1,"32":182,"33":182,"34":182,"35":0,"36":0,"37":0,"38":182,"39":182,"40":182,"41":0,"42":182,"43":182,"44":182,"45":1,"46":1,"47":1,"48":1,"49":49,"50":49,"51":49,"52":49,"53":1,"54":49,"55":49,"56":1,"57":163,"58":163,"59":163,"60":66,"61":66,"62":66,"63":38,"64":28,"65":28,"66":28,"67":28,"68":97,"69":78,"70":19,"71":97,"72":97,"73":92,"74":92,"75":92,"76":92,"77":97,"78":1,"79":49,"80":49,"81":49,"82":163,"83":49,"84":1559,"85":1559,"86":40,"87":1559,"88":49,"89":1,"90":1,"91":47,"92":47,"93":47,"94":47,"95":1,"96":159,"97":159,"98":155,"99":159,"100":1,"101":159,"102":159,"103":159,"104":159,"105":159,"106":3760,"107":3760,"108":152,"109":65,"110":65,"111":87,"112":87,"113":159,"114":65,"115":65,"116":25,"117":25,"118":25,"119":40,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":40,"127":4,"128":4,"129":36,"130":94,"131":94,"132":94,"133":94,"134":4,"135":90,"136":76,"137":14,"138":94,"139":90,"140":90,"141":90,"142":0,"143":0,"144":0,"145":0,"146":0,"147":94,"148":159,"149":1,"150":47,"151":1488,"152":1488,"153":32,"154":32,"155":1488,"156":1488,"157":47,"158":1,"159":363,"160":363,"161":161,"162":202,"163":202,"164":2,"165":202,"166":202,"167":202,"168":210,"169":210,"170":210,"171":8,"172":210,"173":210,"174":202,"175":1,"176":375,"177":375,"178":375,"179":173,"180":375,"181":207,"182":207,"183":217,"184":217,"185":217,"186":375,"187":1,"188":123,"189":123,"190":123,"191":1,"192":125,"193":125,"194":125,"195":125,"196":1,"197":1,"198":163,"199":163,"200":63,"201":100,"202":5,"203":95,"204":18,"205":77,"206":163,"207":63,"208":100,"209":81,"210":19,"211":19,"212":100,"213":77,"214":100,"215":163,"216":163,"217":1,"218":171,"219":171,"220":171,"221":68,"222":103,"223":28,"224":6,"225":22,"226":75,"227":171,"228":68,"229":68,"230":103,"231":103,"232":20,"233":103,"234":75,"235":28,"236":22,"237":6,"238":103,"239":171,"240":1,"241":1,"242":1,"243":26,"244":26,"245":26,"246":26,"247":26,"248":1,"249":47,"250":47,"251":143,"252":143,"253":8,"254":24,"255":135,"256":47,"257":47,"258":47,"259":459,"260":47,"261":1,"262":98,"263":37,"264":37,"265":37,"266":39,"267":39,"268":39,"269":39,"270":37,"271":37,"272":37,"273":2,"274":39,"275":32,"276":39,"277":39,"278":61,"279":98,"280":1,"281":1,"282":28,"283":28,"284":28,"285":28,"286":28,"287":28,"288":28,"289":1,"290":49,"291":49,"292":49,"293":49,"294":49,"295":165,"296":165,"297":165,"298":17,"299":8,"300":9,"301":148,"302":49,"303":1,"304":95,"305":3,"306":1,"307":1,"308":1,"309":2,"310":92,"311":37,"312":37,"313":37,"314":55,"315":94,"316":36,"317":38,"318":36,"319":36,"320":0,"321":0,"322":0,"323":36,"324":36,"325":94,"326":1,"327":132,"328":132,"329":546,"330":132,"331":132,"332":546,"333":132,"334":1,"335":37,"336":37,"337":37,"338":39,"339":39,"340":39,"341":37},"b":{"1":[1,0],"2":[54,54],"3":[182,0],"4":[182,0],"5":[0,182],"6":[66,97],"7":[38,28],"8":[78,19],"9":[92,5],"10":[40,1519],"11":[1559,144],"12":[155,4],"13":[152,3608],"14":[65,87],"15":[87,0],"16":[65,94],"17":[25,40],"18":[0,40],"19":[4,36],"20":[4,90],"21":[76,14],"22":[90,4],"23":[0,0],"24":[76,18],"25":[32,1456],"26":[1488,171,135],"27":[161,202],"28":[2,200],"29":[8,202],"30":[173,202],"31":[207,168],"32":[63,100],"33":[5,95],"34":[18,77],"35":[63,100],"36":[81,19],"37":[77,23],"38":[68,103],"39":[28,75],"40":[6,22],"41":[68,103],"42":[20,83],"43":[75,28],"44":[22,6],"45":[26,13],"46":[13,13],"47":[8,135],"48":[37,61],"49":[98,68],"50":[37,2],"51":[32,7],"52":[32,30],"53":[28,13],"54":[15,13],"55":[17,148],"56":[8,9],"57":[3,92],"58":[1,2],"59":[3,2],"60":[37,55],"61":[92,62],"62":[36,58],"63":[94,39,10]},"f":{"1":0,"2":54,"3":1806,"4":1806,"5":54,"6":182,"7":49,"8":49,"9":163,"10":49,"11":47,"12":159,"13":159,"14":47,"15":363,"16":375,"17":123,"18":125,"19":163,"20":171,"21":26,"22":47,"23":98,"24":28,"25":49,"26":95,"27":38,"28":132,"29":37},"fnMap":{"1":{"name":"noop","line":25,"loc":{"start":{"line":25,"column":60},"end":{"line":25,"column":76}}},"2":{"name":"HeaderTable","line":37,"loc":{"start":{"line":37,"column":0},"end":{"line":37,"column":40}}},"3":{"name":"entryFromPair","line":57,"loc":{"start":{"line":57,"column":0},"end":{"line":57,"column":29}}},"4":{"name":"size","line":76,"loc":{"start":{"line":76,"column":0},"end":{"line":76,"column":21}}},"5":{"name":"tableSize","line":80,"loc":{"start":{"line":80,"column":0},"end":{"line":80,"column":26}}},"6":{"name":"(anonymous_6)","line":96,"loc":{"start":{"line":96,"column":28},"end":{"line":96,"column":51}}},"7":{"name":"HeaderSetDecompressor","line":203,"loc":{"start":{"line":203,"column":0},"end":{"line":203,"column":43}}},"8":{"name":"_transform","line":214,"loc":{"start":{"line":214,"column":45},"end":{"line":214,"column":92}}},"9":{"name":"_execute","line":240,"loc":{"start":{"line":240,"column":43},"end":{"line":240,"column":66}}},"10":{"name":"_flush","line":297,"loc":{"start":{"line":297,"column":41},"end":{"line":297,"column":67}}},"11":{"name":"HeaderSetCompressor","line":331,"loc":{"start":{"line":331,"column":0},"end":{"line":331,"column":41}}},"12":{"name":"send","line":339,"loc":{"start":{"line":339,"column":37},"end":{"line":339,"column":56}}},"13":{"name":"_transform","line":352,"loc":{"start":{"line":352,"column":43},"end":{"line":352,"column":89}}},"14":{"name":"_flush","line":437,"loc":{"start":{"line":437,"column":39},"end":{"line":437,"column":65}}},"15":{"name":"writeInteger","line":468,"loc":{"start":{"line":468,"column":30},"end":{"line":468,"column":58}}},"16":{"name":"readInteger","line":509,"loc":{"start":{"line":509,"column":32},"end":{"line":509,"column":64}}},"17":{"name":"writeString","line":538,"loc":{"start":{"line":538,"column":29},"end":{"line":538,"column":55}}},"18":{"name":"readString","line":544,"loc":{"start":{"line":544,"column":31},"end":{"line":544,"column":59}}},"19":{"name":"writeHeader","line":596,"loc":{"start":{"line":596,"column":29},"end":{"line":596,"column":58}}},"20":{"name":"readHeader","line":632,"loc":{"start":{"line":632,"column":31},"end":{"line":632,"column":59}}},"21":{"name":"Compressor","line":701,"loc":{"start":{"line":701,"column":0},"end":{"line":701,"column":31}}},"22":{"name":"compress","line":715,"loc":{"start":{"line":715,"column":32},"end":{"line":715,"column":59}}},"23":{"name":"_transform","line":737,"loc":{"start":{"line":737,"column":34},"end":{"line":737,"column":77}}},"24":{"name":"Decompressor","line":793,"loc":{"start":{"line":793,"column":0},"end":{"line":793,"column":33}}},"25":{"name":"decompress","line":810,"loc":{"start":{"line":810,"column":36},"end":{"line":810,"column":63}}},"26":{"name":"_transform","line":834,"loc":{"start":{"line":834,"column":36},"end":{"line":834,"column":79}}},"27":{"name":"(anonymous_27)","line":863,"loc":{"start":{"line":863,"column":41},"end":{"line":863,"column":57}}},"28":{"name":"concat","line":884,"loc":{"start":{"line":884,"column":0},"end":{"line":884,"column":25}}},"29":{"name":"cut","line":899,"loc":{"start":{"line":899,"column":0},"end":{"line":899,"column":27}}}},"statementMap":{"1":{"start":{"line":18,"column":0},"end":{"line":18,"column":34}},"2":{"start":{"line":19,"column":0},"end":{"line":19,"column":50}},"3":{"start":{"line":20,"column":0},"end":{"line":20,"column":54}},"4":{"start":{"line":21,"column":0},"end":{"line":21,"column":32}},"5":{"start":{"line":22,"column":0},"end":{"line":22,"column":36}},"6":{"start":{"line":24,"column":0},"end":{"line":24,"column":50}},"7":{"start":{"line":25,"column":0},"end":{"line":25,"column":79}},"8":{"start":{"line":26,"column":0},"end":{"line":26,"column":27}},"9":{"start":{"line":37,"column":0},"end":{"line":44,"column":1}},"10":{"start":{"line":38,"column":2},"end":{"line":38,"column":38}},"11":{"start":{"line":39,"column":2},"end":{"line":39,"column":18}},"12":{"start":{"line":40,"column":2},"end":{"line":40,"column":52}},"13":{"start":{"line":41,"column":2},"end":{"line":41,"column":31}},"14":{"start":{"line":42,"column":2},"end":{"line":42,"column":39}},"15":{"start":{"line":43,"column":2},"end":{"line":43,"column":14}},"16":{"start":{"line":57,"column":0},"end":{"line":64,"column":1}},"17":{"start":{"line":58,"column":2},"end":{"line":58,"column":27}},"18":{"start":{"line":59,"column":2},"end":{"line":59,"column":26}},"19":{"start":{"line":60,"column":2},"end":{"line":60,"column":24}},"20":{"start":{"line":61,"column":2},"end":{"line":61,"column":21}},"21":{"start":{"line":62,"column":2},"end":{"line":62,"column":28}},"22":{"start":{"line":63,"column":2},"end":{"line":63,"column":15}},"23":{"start":{"line":74,"column":0},"end":{"line":74,"column":38}},"24":{"start":{"line":76,"column":0},"end":{"line":78,"column":1}},"25":{"start":{"line":77,"column":2},"end":{"line":77,"column":61}},"26":{"start":{"line":80,"column":0},"end":{"line":86,"column":1}},"27":{"start":{"line":81,"column":2},"end":{"line":81,"column":15}},"28":{"start":{"line":82,"column":2},"end":{"line":84,"column":3}},"29":{"start":{"line":83,"column":4},"end":{"line":83,"column":27}},"30":{"start":{"line":85,"column":2},"end":{"line":85,"column":14}},"31":{"start":{"line":96,"column":0},"end":{"line":117,"column":2}},"32":{"start":{"line":97,"column":2},"end":{"line":97,"column":40}},"33":{"start":{"line":98,"column":2},"end":{"line":98,"column":26}},"34":{"start":{"line":100,"column":2},"end":{"line":104,"column":3}},"35":{"start":{"line":101,"column":4},"end":{"line":101,"column":31}},"36":{"start":{"line":102,"column":4},"end":{"line":102,"column":32}},"37":{"start":{"line":103,"column":4},"end":{"line":103,"column":33}},"38":{"start":{"line":106,"column":2},"end":{"line":114,"column":3}},"39":{"start":{"line":107,"column":4},"end":{"line":107,"column":35}},"40":{"start":{"line":108,"column":4},"end":{"line":112,"column":5}},"41":{"start":{"line":109,"column":6},"end":{"line":109,"column":26}},"42":{"start":{"line":111,"column":6},"end":{"line":111,"column":35}},"43":{"start":{"line":113,"column":4},"end":{"line":113,"column":30}},"44":{"start":{"line":116,"column":2},"end":{"line":116,"column":24}},"45":{"start":{"line":124,"column":0},"end":{"line":155,"column":2}},"46":{"start":{"line":159,"column":0},"end":{"line":190,"column":2}},"47":{"start":{"line":202,"column":0},"end":{"line":202,"column":54}},"48":{"start":{"line":203,"column":0},"end":{"line":209,"column":1}},"49":{"start":{"line":204,"column":2},"end":{"line":204,"column":51}},"50":{"start":{"line":206,"column":2},"end":{"line":206,"column":53}},"51":{"start":{"line":207,"column":2},"end":{"line":207,"column":22}},"52":{"start":{"line":208,"column":2},"end":{"line":208,"column":20}},"53":{"start":{"line":214,"column":0},"end":{"line":217,"column":2}},"54":{"start":{"line":215,"column":2},"end":{"line":215,"column":27}},"55":{"start":{"line":216,"column":2},"end":{"line":216,"column":13}},"56":{"start":{"line":240,"column":0},"end":{"line":291,"column":2}},"57":{"start":{"line":241,"column":2},"end":{"line":242,"column":53}},"58":{"start":{"line":244,"column":2},"end":{"line":244,"column":25}},"59":{"start":{"line":253,"column":2},"end":{"line":290,"column":3}},"60":{"start":{"line":254,"column":4},"end":{"line":254,"column":22}},"61":{"start":{"line":255,"column":4},"end":{"line":255,"column":31}},"62":{"start":{"line":257,"column":4},"end":{"line":264,"column":5}},"63":{"start":{"line":258,"column":6},"end":{"line":258,"column":30}},"64":{"start":{"line":260,"column":6},"end":{"line":260,"column":29}},"65":{"start":{"line":261,"column":6},"end":{"line":261,"column":27}},"66":{"start":{"line":262,"column":6},"end":{"line":262,"column":27}},"67":{"start":{"line":263,"column":6},"end":{"line":263,"column":22}},"68":{"start":{"line":275,"column":4},"end":{"line":279,"column":5}},"69":{"start":{"line":276,"column":6},"end":{"line":276,"column":51}},"70":{"start":{"line":278,"column":6},"end":{"line":278,"column":35}},"71":{"start":{"line":281,"column":4},"end":{"line":281,"column":22}},"72":{"start":{"line":282,"column":4},"end":{"line":287,"column":5}},"73":{"start":{"line":283,"column":6},"end":{"line":283,"column":34}},"74":{"start":{"line":284,"column":6},"end":{"line":284,"column":29}},"75":{"start":{"line":285,"column":6},"end":{"line":285,"column":27}},"76":{"start":{"line":286,"column":6},"end":{"line":286,"column":36}},"77":{"start":{"line":289,"column":4},"end":{"line":289,"column":20}},"78":{"start":{"line":297,"column":0},"end":{"line":316,"column":2}},"79":{"start":{"line":298,"column":2},"end":{"line":298,"column":36}},"80":{"start":{"line":301,"column":2},"end":{"line":301,"column":20}},"81":{"start":{"line":302,"column":2},"end":{"line":304,"column":3}},"82":{"start":{"line":303,"column":4},"end":{"line":303,"column":56}},"83":{"start":{"line":307,"column":2},"end":{"line":313,"column":3}},"84":{"start":{"line":308,"column":4},"end":{"line":308,"column":35}},"85":{"start":{"line":309,"column":4},"end":{"line":311,"column":5}},"86":{"start":{"line":310,"column":6},"end":{"line":310,"column":31}},"87":{"start":{"line":312,"column":4},"end":{"line":312,"column":26}},"88":{"start":{"line":315,"column":2},"end":{"line":315,"column":13}},"89":{"start":{"line":330,"column":0},"end":{"line":330,"column":52}},"90":{"start":{"line":331,"column":0},"end":{"line":337,"column":1}},"91":{"start":{"line":332,"column":2},"end":{"line":332,"column":51}},"92":{"start":{"line":334,"column":2},"end":{"line":334,"column":53}},"93":{"start":{"line":335,"column":2},"end":{"line":335,"column":22}},"94":{"start":{"line":336,"column":2},"end":{"line":336,"column":56}},"95":{"start":{"line":339,"column":0},"end":{"line":347,"column":2}},"96":{"start":{"line":340,"column":2},"end":{"line":341,"column":52}},"97":{"start":{"line":343,"column":2},"end":{"line":345,"column":3}},"98":{"start":{"line":344,"column":4},"end":{"line":344,"column":49}},"99":{"start":{"line":346,"column":2},"end":{"line":346,"column":32}},"100":{"start":{"line":352,"column":0},"end":{"line":432,"column":2}},"101":{"start":{"line":353,"column":2},"end":{"line":353,"column":35}},"102":{"start":{"line":354,"column":2},"end":{"line":354,"column":22}},"103":{"start":{"line":355,"column":2},"end":{"line":355,"column":17}},"104":{"start":{"line":358,"column":2},"end":{"line":358,"column":37}},"105":{"start":{"line":359,"column":2},"end":{"line":369,"column":3}},"106":{"start":{"line":360,"column":4},"end":{"line":360,"column":31}},"107":{"start":{"line":361,"column":4},"end":{"line":368,"column":5}},"108":{"start":{"line":362,"column":6},"end":{"line":367,"column":7}},"109":{"start":{"line":363,"column":8},"end":{"line":363,"column":26}},"110":{"start":{"line":364,"column":8},"end":{"line":364,"column":14}},"111":{"start":{"line":365,"column":13},"end":{"line":367,"column":7}},"112":{"start":{"line":366,"column":8},"end":{"line":366,"column":26}},"113":{"start":{"line":373,"column":2},"end":{"line":429,"column":3}},"114":{"start":{"line":374,"column":4},"end":{"line":374,"column":59}},"115":{"start":{"line":376,"column":4},"end":{"line":398,"column":5}},"116":{"start":{"line":377,"column":6},"end":{"line":377,"column":21}},"117":{"start":{"line":378,"column":6},"end":{"line":378,"column":29}},"118":{"start":{"line":379,"column":6},"end":{"line":379,"column":27}},"119":{"start":{"line":382,"column":9},"end":{"line":398,"column":5}},"120":{"start":{"line":383,"column":6},"end":{"line":383,"column":21}},"121":{"start":{"line":384,"column":6},"end":{"line":384,"column":21}},"122":{"start":{"line":385,"column":6},"end":{"line":385,"column":21}},"123":{"start":{"line":386,"column":6},"end":{"line":386,"column":21}},"124":{"start":{"line":387,"column":6},"end":{"line":387,"column":25}},"125":{"start":{"line":388,"column":6},"end":{"line":388,"column":27}},"126":{"start":{"line":391,"column":9},"end":{"line":398,"column":5}},"127":{"start":{"line":392,"column":6},"end":{"line":392,"column":21}},"128":{"start":{"line":393,"column":6},"end":{"line":393,"column":21}},"129":{"start":{"line":397,"column":6},"end":{"line":397,"column":24}},"130":{"start":{"line":403,"column":4},"end":{"line":403,"column":32}},"131":{"start":{"line":404,"column":4},"end":{"line":404,"column":25}},"132":{"start":{"line":406,"column":4},"end":{"line":406,"column":20}},"133":{"start":{"line":407,"column":4},"end":{"line":413,"column":5}},"134":{"start":{"line":408,"column":6},"end":{"line":408,"column":23}},"135":{"start":{"line":409,"column":11},"end":{"line":413,"column":5}},"136":{"start":{"line":410,"column":6},"end":{"line":410,"column":30}},"137":{"start":{"line":412,"column":6},"end":{"line":412,"column":29}},"138":{"start":{"line":415,"column":4},"end":{"line":426,"column":5}},"139":{"start":{"line":416,"column":6},"end":{"line":416,"column":29}},"140":{"start":{"line":417,"column":6},"end":{"line":417,"column":63}},"141":{"start":{"line":418,"column":6},"end":{"line":425,"column":7}},"142":{"start":{"line":419,"column":8},"end":{"line":419,"column":44}},"143":{"start":{"line":420,"column":8},"end":{"line":424,"column":9}},"144":{"start":{"line":421,"column":10},"end":{"line":421,"column":57}},"145":{"start":{"line":422,"column":10},"end":{"line":422,"column":25}},"146":{"start":{"line":423,"column":10},"end":{"line":423,"column":25}},"147":{"start":{"line":428,"column":4},"end":{"line":428,"column":97}},"148":{"start":{"line":431,"column":2},"end":{"line":431,"column":13}},"149":{"start":{"line":437,"column":0},"end":{"line":450,"column":2}},"150":{"start":{"line":439,"column":2},"end":{"line":447,"column":3}},"151":{"start":{"line":440,"column":4},"end":{"line":440,"column":35}},"152":{"start":{"line":441,"column":4},"end":{"line":444,"column":5}},"153":{"start":{"line":442,"column":6},"end":{"line":442,"column":58}},"154":{"start":{"line":443,"column":6},"end":{"line":443,"column":30}},"155":{"start":{"line":445,"column":4},"end":{"line":445,"column":23}},"156":{"start":{"line":446,"column":4},"end":{"line":446,"column":26}},"157":{"start":{"line":449,"column":2},"end":{"line":449,"column":13}},"158":{"start":{"line":468,"column":0},"end":{"line":494,"column":2}},"159":{"start":{"line":469,"column":2},"end":{"line":469,"column":32}},"160":{"start":{"line":470,"column":2},"end":{"line":472,"column":3}},"161":{"start":{"line":471,"column":4},"end":{"line":471,"column":29}},"162":{"start":{"line":474,"column":2},"end":{"line":474,"column":17}},"163":{"start":{"line":475,"column":2},"end":{"line":477,"column":3}},"164":{"start":{"line":476,"column":4},"end":{"line":476,"column":22}},"165":{"start":{"line":478,"column":2},"end":{"line":478,"column":13}},"166":{"start":{"line":480,"column":2},"end":{"line":480,"column":15}},"167":{"start":{"line":481,"column":2},"end":{"line":491,"column":3}},"168":{"start":{"line":482,"column":4},"end":{"line":482,"column":28}},"169":{"start":{"line":483,"column":4},"end":{"line":483,"column":16}},"170":{"start":{"line":485,"column":4},"end":{"line":487,"column":5}},"171":{"start":{"line":486,"column":6},"end":{"line":486,"column":15}},"172":{"start":{"line":488,"column":4},"end":{"line":488,"column":18}},"173":{"start":{"line":490,"column":4},"end":{"line":490,"column":10}},"174":{"start":{"line":493,"column":2},"end":{"line":493,"column":29}},"175":{"start":{"line":509,"column":0},"end":{"line":527,"column":2}},"176":{"start":{"line":510,"column":2},"end":{"line":510,"column":32}},"177":{"start":{"line":512,"column":2},"end":{"line":512,"column":40}},"178":{"start":{"line":513,"column":2},"end":{"line":515,"column":3}},"179":{"start":{"line":514,"column":4},"end":{"line":514,"column":23}},"180":{"start":{"line":517,"column":2},"end":{"line":524,"column":3}},"181":{"start":{"line":518,"column":4},"end":{"line":518,"column":14}},"182":{"start":{"line":519,"column":4},"end":{"line":523,"column":46}},"183":{"start":{"line":520,"column":6},"end":{"line":520,"column":46}},"184":{"start":{"line":521,"column":6},"end":{"line":521,"column":13}},"185":{"start":{"line":522,"column":6},"end":{"line":522,"column":25}},"186":{"start":{"line":526,"column":2},"end":{"line":526,"column":11}},"187":{"start":{"line":538,"column":0},"end":{"line":542,"column":2}},"188":{"start":{"line":539,"column":2},"end":{"line":539,"column":46}},"189":{"start":{"line":540,"column":2},"end":{"line":540,"column":75}},"190":{"start":{"line":541,"column":2},"end":{"line":541,"column":45}},"191":{"start":{"line":544,"column":0},"end":{"line":549,"column":2}},"192":{"start":{"line":545,"column":2},"end":{"line":545,"column":56}},"193":{"start":{"line":546,"column":2},"end":{"line":546,"column":75}},"194":{"start":{"line":547,"column":2},"end":{"line":547,"column":26}},"195":{"start":{"line":548,"column":2},"end":{"line":548,"column":13}},"196":{"start":{"line":589,"column":0},"end":{"line":594,"column":2}},"197":{"start":{"line":596,"column":0},"end":{"line":630,"column":2}},"198":{"start":{"line":597,"column":2},"end":{"line":597,"column":35}},"199":{"start":{"line":599,"column":2},"end":{"line":607,"column":3}},"200":{"start":{"line":600,"column":4},"end":{"line":600,"column":45}},"201":{"start":{"line":601,"column":9},"end":{"line":607,"column":3}},"202":{"start":{"line":602,"column":4},"end":{"line":602,"column":45}},"203":{"start":{"line":603,"column":9},"end":{"line":607,"column":3}},"204":{"start":{"line":604,"column":4},"end":{"line":604,"column":56}},"205":{"start":{"line":606,"column":4},"end":{"line":606,"column":57}},"206":{"start":{"line":609,"column":2},"end":{"line":625,"column":3}},"207":{"start":{"line":610,"column":4},"end":{"line":610,"column":83}},"208":{"start":{"line":613,"column":4},"end":{"line":618,"column":5}},"209":{"start":{"line":614,"column":6},"end":{"line":614,"column":88}},"210":{"start":{"line":616,"column":6},"end":{"line":616,"column":74}},"211":{"start":{"line":617,"column":6},"end":{"line":617,"column":60}},"212":{"start":{"line":620,"column":4},"end":{"line":622,"column":5}},"213":{"start":{"line":621,"column":6},"end":{"line":621,"column":65}},"214":{"start":{"line":624,"column":4},"end":{"line":624,"column":59}},"215":{"start":{"line":627,"column":2},"end":{"line":627,"column":45}},"216":{"start":{"line":629,"column":2},"end":{"line":629,"column":51}},"217":{"start":{"line":632,"column":0},"end":{"line":670,"column":2}},"218":{"start":{"line":633,"column":2},"end":{"line":633,"column":34}},"219":{"start":{"line":635,"column":2},"end":{"line":635,"column":40}},"220":{"start":{"line":636,"column":2},"end":{"line":646,"column":3}},"221":{"start":{"line":637,"column":4},"end":{"line":637,"column":45}},"222":{"start":{"line":638,"column":9},"end":{"line":646,"column":3}},"223":{"start":{"line":639,"column":4},"end":{"line":643,"column":5}},"224":{"start":{"line":640,"column":6},"end":{"line":640,"column":47}},"225":{"start":{"line":642,"column":6},"end":{"line":642,"column":58}},"226":{"start":{"line":645,"column":4},"end":{"line":645,"column":57}},"227":{"start":{"line":648,"column":2},"end":{"line":667,"column":3}},"228":{"start":{"line":649,"column":4},"end":{"line":649,"column":94}},"229":{"start":{"line":650,"column":4},"end":{"line":650,"column":22}},"230":{"start":{"line":653,"column":4},"end":{"line":653,"column":83}},"231":{"start":{"line":654,"column":4},"end":{"line":656,"column":5}},"232":{"start":{"line":655,"column":6},"end":{"line":655,"column":57}},"233":{"start":{"line":658,"column":4},"end":{"line":664,"column":5}},"234":{"start":{"line":659,"column":6},"end":{"line":659,"column":62}},"235":{"start":{"line":660,"column":11},"end":{"line":664,"column":5}},"236":{"start":{"line":661,"column":6},"end":{"line":661,"column":30}},"237":{"start":{"line":663,"column":6},"end":{"line":663,"column":24}},"238":{"start":{"line":666,"column":4},"end":{"line":666,"column":56}},"239":{"start":{"line":669,"column":2},"end":{"line":669,"column":16}},"240":{"start":{"line":694,"column":0},"end":{"line":694,"column":34}},"241":{"start":{"line":700,"column":0},"end":{"line":700,"column":43}},"242":{"start":{"line":701,"column":0},"end":{"line":710,"column":1}},"243":{"start":{"line":702,"column":2},"end":{"line":702,"column":51}},"244":{"start":{"line":704,"column":2},"end":{"line":704,"column":53}},"245":{"start":{"line":706,"column":2},"end":{"line":706,"column":56}},"246":{"start":{"line":707,"column":2},"end":{"line":708,"column":77}},"247":{"start":{"line":709,"column":2},"end":{"line":709,"column":57}},"248":{"start":{"line":715,"column":0},"end":{"line":734,"column":2}},"249":{"start":{"line":716,"column":2},"end":{"line":716,"column":67}},"250":{"start":{"line":717,"column":2},"end":{"line":726,"column":3}},"251":{"start":{"line":718,"column":4},"end":{"line":718,"column":30}},"252":{"start":{"line":719,"column":4},"end":{"line":725,"column":5}},"253":{"start":{"line":720,"column":6},"end":{"line":722,"column":7}},"254":{"start":{"line":721,"column":8},"end":{"line":721,"column":59}},"255":{"start":{"line":724,"column":6},"end":{"line":724,"column":54}},"256":{"start":{"line":727,"column":2},"end":{"line":727,"column":19}},"257":{"start":{"line":729,"column":2},"end":{"line":729,"column":25}},"258":{"start":{"line":730,"column":2},"end":{"line":732,"column":3}},"259":{"start":{"line":731,"column":4},"end":{"line":731,"column":23}},"260":{"start":{"line":733,"column":2},"end":{"line":733,"column":24}},"261":{"start":{"line":737,"column":0},"end":{"line":781,"column":2}},"262":{"start":{"line":745,"column":2},"end":{"line":778,"column":3}},"263":{"start":{"line":746,"column":4},"end":{"line":746,"column":46}},"264":{"start":{"line":748,"column":4},"end":{"line":748,"column":52}},"265":{"start":{"line":750,"column":4},"end":{"line":772,"column":5}},"266":{"start":{"line":751,"column":6},"end":{"line":751,"column":21}},"267":{"start":{"line":752,"column":6},"end":{"line":752,"column":28}},"268":{"start":{"line":753,"column":6},"end":{"line":753,"column":43}},"269":{"start":{"line":755,"column":6},"end":{"line":765,"column":7}},"270":{"start":{"line":756,"column":8},"end":{"line":756,"column":45}},"271":{"start":{"line":757,"column":8},"end":{"line":757,"column":57}},"272":{"start":{"line":758,"column":8},"end":{"line":758,"column":53}},"273":{"start":{"line":760,"column":8},"end":{"line":764,"column":10}},"274":{"start":{"line":766,"column":6},"end":{"line":768,"column":7}},"275":{"start":{"line":767,"column":8},"end":{"line":767,"column":63}},"276":{"start":{"line":769,"column":6},"end":{"line":769,"column":34}},"277":{"start":{"line":771,"column":6},"end":{"line":771,"column":28}},"278":{"start":{"line":777,"column":4},"end":{"line":777,"column":21}},"279":{"start":{"line":780,"column":2},"end":{"line":780,"column":9}},"280":{"start":{"line":792,"column":0},"end":{"line":792,"column":45}},"281":{"start":{"line":793,"column":0},"end":{"line":805,"column":1}},"282":{"start":{"line":794,"column":2},"end":{"line":794,"column":51}},"283":{"start":{"line":796,"column":2},"end":{"line":796,"column":53}},"284":{"start":{"line":798,"column":2},"end":{"line":798,"column":56}},"285":{"start":{"line":799,"column":2},"end":{"line":800,"column":77}},"286":{"start":{"line":801,"column":2},"end":{"line":801,"column":57}},"287":{"start":{"line":803,"column":2},"end":{"line":803,"column":27}},"288":{"start":{"line":804,"column":2},"end":{"line":804,"column":25}},"289":{"start":{"line":810,"column":0},"end":{"line":831,"column":2}},"290":{"start":{"line":811,"column":2},"end":{"line":811,"column":71}},"291":{"start":{"line":812,"column":2},"end":{"line":812,"column":26}},"292":{"start":{"line":814,"column":2},"end":{"line":814,"column":19}},"293":{"start":{"line":815,"column":2},"end":{"line":815,"column":11}},"294":{"start":{"line":816,"column":2},"end":{"line":828,"column":3}},"295":{"start":{"line":817,"column":4},"end":{"line":817,"column":23}},"296":{"start":{"line":818,"column":4},"end":{"line":818,"column":24}},"297":{"start":{"line":819,"column":4},"end":{"line":827,"column":5}},"298":{"start":{"line":820,"column":6},"end":{"line":824,"column":7}},"299":{"start":{"line":821,"column":8},"end":{"line":821,"column":34}},"300":{"start":{"line":823,"column":8},"end":{"line":823,"column":47}},"301":{"start":{"line":826,"column":6},"end":{"line":826,"column":28}},"302":{"start":{"line":830,"column":2},"end":{"line":830,"column":17}},"303":{"start":{"line":834,"column":0},"end":{"line":878,"column":2}},"304":{"start":{"line":837,"column":2},"end":{"line":857,"column":3}},"305":{"start":{"line":838,"column":4},"end":{"line":842,"column":5}},"306":{"start":{"line":839,"column":6},"end":{"line":839,"column":71}},"307":{"start":{"line":840,"column":6},"end":{"line":840,"column":43}},"308":{"start":{"line":841,"column":6},"end":{"line":841,"column":13}},"309":{"start":{"line":843,"column":4},"end":{"line":843,"column":29}},"310":{"start":{"line":848,"column":7},"end":{"line":857,"column":3}},"311":{"start":{"line":849,"column":4},"end":{"line":849,"column":28}},"312":{"start":{"line":850,"column":4},"end":{"line":850,"column":23}},"313":{"start":{"line":851,"column":4},"end":{"line":851,"column":27}},"314":{"start":{"line":856,"column":4},"end":{"line":856,"column":21}},"315":{"start":{"line":862,"column":2},"end":{"line":875,"column":3}},"316":{"start":{"line":863,"column":4},"end":{"line":865,"column":8}},"317":{"start":{"line":864,"column":6},"end":{"line":864,"column":24}},"318":{"start":{"line":866,"column":4},"end":{"line":872,"column":5}},"319":{"start":{"line":867,"column":6},"end":{"line":867,"column":44}},"320":{"start":{"line":869,"column":6},"end":{"line":869,"column":68}},"321":{"start":{"line":870,"column":6},"end":{"line":870,"column":46}},"322":{"start":{"line":871,"column":6},"end":{"line":871,"column":13}},"323":{"start":{"line":873,"column":4},"end":{"line":873,"column":62}},"324":{"start":{"line":874,"column":4},"end":{"line":874,"column":29}},"325":{"start":{"line":877,"column":2},"end":{"line":877,"column":9}},"326":{"start":{"line":884,"column":0},"end":{"line":896,"column":1}},"327":{"start":{"line":885,"column":2},"end":{"line":885,"column":15}},"328":{"start":{"line":886,"column":2},"end":{"line":888,"column":3}},"329":{"start":{"line":887,"column":4},"end":{"line":887,"column":30}},"330":{"start":{"line":890,"column":2},"end":{"line":890,"column":38}},"331":{"start":{"line":891,"column":2},"end":{"line":893,"column":3}},"332":{"start":{"line":892,"column":4},"end":{"line":892,"column":42}},"333":{"start":{"line":895,"column":2},"end":{"line":895,"column":22}},"334":{"start":{"line":899,"column":0},"end":{"line":908,"column":1}},"335":{"start":{"line":900,"column":2},"end":{"line":900,"column":18}},"336":{"start":{"line":901,"column":2},"end":{"line":901,"column":17}},"337":{"start":{"line":902,"column":2},"end":{"line":906,"column":34}},"338":{"start":{"line":903,"column":4},"end":{"line":903,"column":59}},"339":{"start":{"line":904,"column":4},"end":{"line":904,"column":58}},"340":{"start":{"line":905,"column":4},"end":{"line":905,"column":24}},"341":{"start":{"line":907,"column":2},"end":{"line":907,"column":16}}},"branchMap":{"1":{"line":25,"type":"cond-expr","locations":[{"start":{"line":25,"column":40},"end":{"line":25,"column":57}},{"start":{"line":25,"column":60},"end":{"line":25,"column":78}}]},"2":{"line":40,"type":"binary-expr","locations":[{"start":{"line":40,"column":16},"end":{"line":40,"column":21}},{"start":{"line":40,"column":25},"end":{"line":40,"column":51}}]},"3":{"line":100,"type":"binary-expr","locations":[{"start":{"line":100,"column":10},"end":{"line":100,"column":28}},{"start":{"line":100,"column":34},"end":{"line":100,"column":49}}]},"4":{"line":106,"type":"if","locations":[{"start":{"line":106,"column":2},"end":{"line":106,"column":2}},{"start":{"line":106,"column":2},"end":{"line":106,"column":2}}]},"5":{"line":108,"type":"if","locations":[{"start":{"line":108,"column":4},"end":{"line":108,"column":4}},{"start":{"line":108,"column":4},"end":{"line":108,"column":4}}]},"6":{"line":253,"type":"if","locations":[{"start":{"line":253,"column":2},"end":{"line":253,"column":2}},{"start":{"line":253,"column":2},"end":{"line":253,"column":2}}]},"7":{"line":257,"type":"if","locations":[{"start":{"line":257,"column":4},"end":{"line":257,"column":4}},{"start":{"line":257,"column":4},"end":{"line":257,"column":4}}]},"8":{"line":275,"type":"if","locations":[{"start":{"line":275,"column":4},"end":{"line":275,"column":4}},{"start":{"line":275,"column":4},"end":{"line":275,"column":4}}]},"9":{"line":282,"type":"if","locations":[{"start":{"line":282,"column":4},"end":{"line":282,"column":4}},{"start":{"line":282,"column":4},"end":{"line":282,"column":4}}]},"10":{"line":309,"type":"if","locations":[{"start":{"line":309,"column":4},"end":{"line":309,"column":4}},{"start":{"line":309,"column":4},"end":{"line":309,"column":4}}]},"11":{"line":309,"type":"binary-expr","locations":[{"start":{"line":309,"column":8},"end":{"line":309,"column":23}},{"start":{"line":309,"column":27},"end":{"line":309,"column":41}}]},"12":{"line":343,"type":"if","locations":[{"start":{"line":343,"column":2},"end":{"line":343,"column":2}},{"start":{"line":343,"column":2},"end":{"line":343,"column":2}}]},"13":{"line":361,"type":"if","locations":[{"start":{"line":361,"column":4},"end":{"line":361,"column":4}},{"start":{"line":361,"column":4},"end":{"line":361,"column":4}}]},"14":{"line":362,"type":"if","locations":[{"start":{"line":362,"column":6},"end":{"line":362,"column":6}},{"start":{"line":362,"column":6},"end":{"line":362,"column":6}}]},"15":{"line":365,"type":"if","locations":[{"start":{"line":365,"column":13},"end":{"line":365,"column":13}},{"start":{"line":365,"column":13},"end":{"line":365,"column":13}}]},"16":{"line":373,"type":"if","locations":[{"start":{"line":373,"column":2},"end":{"line":373,"column":2}},{"start":{"line":373,"column":2},"end":{"line":373,"column":2}}]},"17":{"line":376,"type":"if","locations":[{"start":{"line":376,"column":4},"end":{"line":376,"column":4}},{"start":{"line":376,"column":4},"end":{"line":376,"column":4}}]},"18":{"line":382,"type":"if","locations":[{"start":{"line":382,"column":9},"end":{"line":382,"column":9}},{"start":{"line":382,"column":9},"end":{"line":382,"column":9}}]},"19":{"line":391,"type":"if","locations":[{"start":{"line":391,"column":9},"end":{"line":391,"column":9}},{"start":{"line":391,"column":9},"end":{"line":391,"column":9}}]},"20":{"line":407,"type":"if","locations":[{"start":{"line":407,"column":4},"end":{"line":407,"column":4}},{"start":{"line":407,"column":4},"end":{"line":407,"column":4}}]},"21":{"line":409,"type":"if","locations":[{"start":{"line":409,"column":11},"end":{"line":409,"column":11}},{"start":{"line":409,"column":11},"end":{"line":409,"column":11}}]},"22":{"line":415,"type":"if","locations":[{"start":{"line":415,"column":4},"end":{"line":415,"column":4}},{"start":{"line":415,"column":4},"end":{"line":415,"column":4}}]},"23":{"line":420,"type":"if","locations":[{"start":{"line":420,"column":8},"end":{"line":420,"column":8}},{"start":{"line":420,"column":8},"end":{"line":420,"column":8}}]},"24":{"line":428,"type":"cond-expr","locations":[{"start":{"line":428,"column":43},"end":{"line":428,"column":52}},{"start":{"line":428,"column":55},"end":{"line":428,"column":59}}]},"25":{"line":441,"type":"if","locations":[{"start":{"line":441,"column":4},"end":{"line":441,"column":4}},{"start":{"line":441,"column":4},"end":{"line":441,"column":4}}]},"26":{"line":441,"type":"binary-expr","locations":[{"start":{"line":441,"column":8},"end":{"line":441,"column":23}},{"start":{"line":441,"column":27},"end":{"line":441,"column":38}},{"start":{"line":441,"column":42},"end":{"line":441,"column":56}}]},"27":{"line":470,"type":"if","locations":[{"start":{"line":470,"column":2},"end":{"line":470,"column":2}},{"start":{"line":470,"column":2},"end":{"line":470,"column":2}}]},"28":{"line":475,"type":"if","locations":[{"start":{"line":475,"column":2},"end":{"line":475,"column":2}},{"start":{"line":475,"column":2},"end":{"line":475,"column":2}}]},"29":{"line":485,"type":"if","locations":[{"start":{"line":485,"column":4},"end":{"line":485,"column":4}},{"start":{"line":485,"column":4},"end":{"line":485,"column":4}}]},"30":{"line":513,"type":"if","locations":[{"start":{"line":513,"column":2},"end":{"line":513,"column":2}},{"start":{"line":513,"column":2},"end":{"line":513,"column":2}}]},"31":{"line":517,"type":"if","locations":[{"start":{"line":517,"column":2},"end":{"line":517,"column":2}},{"start":{"line":517,"column":2},"end":{"line":517,"column":2}}]},"32":{"line":599,"type":"if","locations":[{"start":{"line":599,"column":2},"end":{"line":599,"column":2}},{"start":{"line":599,"column":2},"end":{"line":599,"column":2}}]},"33":{"line":601,"type":"if","locations":[{"start":{"line":601,"column":9},"end":{"line":601,"column":9}},{"start":{"line":601,"column":9},"end":{"line":601,"column":9}}]},"34":{"line":603,"type":"if","locations":[{"start":{"line":603,"column":9},"end":{"line":603,"column":9}},{"start":{"line":603,"column":9},"end":{"line":603,"column":9}}]},"35":{"line":609,"type":"if","locations":[{"start":{"line":609,"column":2},"end":{"line":609,"column":2}},{"start":{"line":609,"column":2},"end":{"line":609,"column":2}}]},"36":{"line":613,"type":"if","locations":[{"start":{"line":613,"column":4},"end":{"line":613,"column":4}},{"start":{"line":613,"column":4},"end":{"line":613,"column":4}}]},"37":{"line":620,"type":"if","locations":[{"start":{"line":620,"column":4},"end":{"line":620,"column":4}},{"start":{"line":620,"column":4},"end":{"line":620,"column":4}}]},"38":{"line":636,"type":"if","locations":[{"start":{"line":636,"column":2},"end":{"line":636,"column":2}},{"start":{"line":636,"column":2},"end":{"line":636,"column":2}}]},"39":{"line":638,"type":"if","locations":[{"start":{"line":638,"column":9},"end":{"line":638,"column":9}},{"start":{"line":638,"column":9},"end":{"line":638,"column":9}}]},"40":{"line":639,"type":"if","locations":[{"start":{"line":639,"column":4},"end":{"line":639,"column":4}},{"start":{"line":639,"column":4},"end":{"line":639,"column":4}}]},"41":{"line":648,"type":"if","locations":[{"start":{"line":648,"column":2},"end":{"line":648,"column":2}},{"start":{"line":648,"column":2},"end":{"line":648,"column":2}}]},"42":{"line":654,"type":"if","locations":[{"start":{"line":654,"column":4},"end":{"line":654,"column":4}},{"start":{"line":654,"column":4},"end":{"line":654,"column":4}}]},"43":{"line":658,"type":"if","locations":[{"start":{"line":658,"column":4},"end":{"line":658,"column":4}},{"start":{"line":658,"column":4},"end":{"line":658,"column":4}}]},"44":{"line":660,"type":"if","locations":[{"start":{"line":660,"column":11},"end":{"line":660,"column":11}},{"start":{"line":660,"column":11},"end":{"line":660,"column":11}}]},"45":{"line":706,"type":"binary-expr","locations":[{"start":{"line":706,"column":10},"end":{"line":706,"column":28}},{"start":{"line":706,"column":34},"end":{"line":706,"column":53}}]},"46":{"line":707,"type":"cond-expr","locations":[{"start":{"line":707,"column":44},"end":{"line":707,"column":75}},{"start":{"line":708,"column":44},"end":{"line":708,"column":76}}]},"47":{"line":719,"type":"if","locations":[{"start":{"line":719,"column":4},"end":{"line":719,"column":4}},{"start":{"line":719,"column":4},"end":{"line":719,"column":4}}]},"48":{"line":745,"type":"if","locations":[{"start":{"line":745,"column":2},"end":{"line":745,"column":2}},{"start":{"line":745,"column":2},"end":{"line":745,"column":2}}]},"49":{"line":745,"type":"binary-expr","locations":[{"start":{"line":745,"column":6},"end":{"line":745,"column":30}},{"start":{"line":745,"column":34},"end":{"line":745,"column":63}}]},"50":{"line":755,"type":"if","locations":[{"start":{"line":755,"column":6},"end":{"line":755,"column":6}},{"start":{"line":755,"column":6},"end":{"line":755,"column":6}}]},"51":{"line":766,"type":"if","locations":[{"start":{"line":766,"column":6},"end":{"line":766,"column":6}},{"start":{"line":766,"column":6},"end":{"line":766,"column":6}}]},"52":{"line":767,"type":"binary-expr","locations":[{"start":{"line":767,"column":38},"end":{"line":767,"column":42}},{"start":{"line":767,"column":46},"end":{"line":767,"column":62}}]},"53":{"line":798,"type":"binary-expr","locations":[{"start":{"line":798,"column":10},"end":{"line":798,"column":28}},{"start":{"line":798,"column":34},"end":{"line":798,"column":53}}]},"54":{"line":799,"type":"cond-expr","locations":[{"start":{"line":799,"column":44},"end":{"line":799,"column":75}},{"start":{"line":800,"column":44},"end":{"line":800,"column":76}}]},"55":{"line":819,"type":"if","locations":[{"start":{"line":819,"column":4},"end":{"line":819,"column":4}},{"start":{"line":819,"column":4},"end":{"line":819,"column":4}}]},"56":{"line":820,"type":"if","locations":[{"start":{"line":820,"column":6},"end":{"line":820,"column":6}},{"start":{"line":820,"column":6},"end":{"line":820,"column":6}}]},"57":{"line":837,"type":"if","locations":[{"start":{"line":837,"column":2},"end":{"line":837,"column":2}},{"start":{"line":837,"column":2},"end":{"line":837,"column":2}}]},"58":{"line":838,"type":"if","locations":[{"start":{"line":838,"column":4},"end":{"line":838,"column":4}},{"start":{"line":838,"column":4},"end":{"line":838,"column":4}}]},"59":{"line":838,"type":"binary-expr","locations":[{"start":{"line":838,"column":9},"end":{"line":838,"column":38}},{"start":{"line":838,"column":44},"end":{"line":838,"column":78}}]},"60":{"line":848,"type":"if","locations":[{"start":{"line":848,"column":7},"end":{"line":848,"column":7}},{"start":{"line":848,"column":7},"end":{"line":848,"column":7}}]},"61":{"line":848,"type":"binary-expr","locations":[{"start":{"line":848,"column":12},"end":{"line":848,"column":36}},{"start":{"line":848,"column":42},"end":{"line":848,"column":71}}]},"62":{"line":862,"type":"if","locations":[{"start":{"line":862,"column":2},"end":{"line":862,"column":2}},{"start":{"line":862,"column":2},"end":{"line":862,"column":2}}]},"63":{"line":862,"type":"binary-expr","locations":[{"start":{"line":862,"column":6},"end":{"line":862,"column":22}},{"start":{"line":862,"column":27},"end":{"line":862,"column":50}},{"start":{"line":862,"column":54},"end":{"line":862,"column":82}}]}}},"/data/upstream/node-http2/lib/connection.js":{"path":"/data/upstream/node-http2/lib/connection.js","s":{"1":1,"2":1,"3":1,"4":1,"5":45,"6":45,"7":45,"8":45,"9":45,"10":45,"11":1,"12":1,"13":1,"14":45,"15":45,"16":45,"17":45,"18":45,"19":45,"20":45,"21":45,"22":1,"23":42,"24":42,"25":42,"26":0,"27":0,"28":1,"29":18,"30":18,"31":1,"32":130,"33":39,"34":39,"35":39,"36":1,"37":45,"38":23,"39":23,"40":22,"41":22,"42":0,"43":0,"44":0,"45":45,"46":45,"47":45,"48":45,"49":45,"50":1,"51":45,"52":45,"53":45,"54":45,"55":45,"56":1,"57":75,"58":27,"59":48,"60":1,"61":10,"62":10,"63":10,"64":10,"65":10,"66":8,"67":10,"68":1,"69":22,"70":22,"71":22,"72":22,"73":22,"74":22,"75":1,"76":18,"77":18,"78":18,"79":18,"80":1,"81":448,"82":448,"83":448,"84":388,"85":388,"86":388,"87":622,"88":622,"89":622,"90":622,"91":537,"92":85,"93":0,"94":0,"95":85,"96":85,"97":18,"98":67,"99":85,"100":5,"101":5,"102":85,"103":85,"104":85,"105":0,"106":85,"107":85,"108":85,"109":0,"110":85,"111":0,"112":85,"113":448,"114":1,"115":125,"116":125,"117":125,"118":17,"119":125,"120":5,"121":125,"122":125,"123":125,"124":1,"125":1,"126":45,"127":45,"128":45,"129":36,"130":36,"131":0,"132":0,"133":45,"134":1,"135":36,"136":54,"137":1,"138":45,"139":45,"140":70,"141":1,"142":45,"143":45,"144":45,"145":1,"146":2,"147":2,"148":2,"149":32,"150":2,"151":1,"152":2,"153":2,"154":2,"155":2,"156":2,"157":1,"158":5,"159":3,"160":3,"161":2,"162":2,"163":2,"164":1,"165":2,"166":2,"167":1,"168":3,"169":3,"170":3,"171":1,"172":2,"173":2,"174":1,"175":45,"176":45,"177":45,"178":45,"179":25,"180":45,"181":45,"182":45,"183":45,"184":45,"185":1,"186":1,"187":41,"188":1,"189":1,"190":40,"191":40,"192":40,"193":54,"194":1,"195":24,"196":22,"197":22,"198":2,"199":1,"200":1,"201":1,"202":20,"203":20,"204":20,"205":20,"206":0,"207":0,"208":0},"b":{"1":[1,0],"2":[42,0],"3":[42,6,2,0],"4":[39,91],"5":[23,22],"6":[22,0],"7":[22,22],"8":[27,48],"9":[8,2],"10":[537,85],"11":[0,85],"12":[18,67],"13":[5,80],"14":[85,0],"15":[0,85],"16":[0,85],"17":[17,108],"18":[5,120],"19":[45,20],"20":[36,0],"21":[36,36],"22":[3,2],"23":[2,1],"24":[3,2],"25":[25,20],"26":[1,40],"27":[41,2],"28":[22,2],"29":[1,1],"30":[20,0],"31":[0,0]},"f":{"1":0,"2":45,"3":45,"4":42,"5":18,"6":130,"7":45,"8":45,"9":75,"10":10,"11":22,"12":18,"13":448,"14":0,"15":125,"16":45,"17":36,"18":36,"19":45,"20":45,"21":2,"22":2,"23":5,"24":3,"25":2,"26":45,"27":45,"28":40,"29":20,"30":41,"31":54,"32":24,"33":20,"34":20},"fnMap":{"1":{"name":"noop","line":1,"loc":{"start":{"line":1,"column":45},"end":{"line":1,"column":76}}},"2":{"name":"Connection","line":36,"loc":{"start":{"line":36,"column":0},"end":{"line":36,"column":50}}},"3":{"name":"_initializeStreamManagement","line":96,"loc":{"start":{"line":96,"column":51},"end":{"line":96,"column":103}}},"4":{"name":"_writeControlFrame","line":119,"loc":{"start":{"line":119,"column":42},"end":{"line":119,"column":77}}},"5":{"name":"_updateStreamLimit","line":131,"loc":{"start":{"line":131,"column":42},"end":{"line":131,"column":86}}},"6":{"name":"_changeStreamCount","line":136,"loc":{"start":{"line":136,"column":42},"end":{"line":136,"column":78}}},"7":{"name":"_allocateId","line":152,"loc":{"start":{"line":152,"column":35},"end":{"line":152,"column":68}}},"8":{"name":"_allocatePriority","line":183,"loc":{"start":{"line":183,"column":41},"end":{"line":183,"column":76}}},"9":{"name":"_insert","line":191,"loc":{"start":{"line":191,"column":31},"end":{"line":191,"column":66}}},"10":{"name":"_reprioritize","line":199,"loc":{"start":{"line":199,"column":37},"end":{"line":199,"column":78}}},"11":{"name":"_createIncomingStream","line":213,"loc":{"start":{"line":213,"column":45},"end":{"line":213,"column":80}}},"12":{"name":"createStream","line":225,"loc":{"start":{"line":225,"column":36},"end":{"line":225,"column":60}}},"13":{"name":"_send","line":240,"loc":{"start":{"line":240,"column":29},"end":{"line":240,"column":46}}},"14":{"name":"(anonymous_14)","line":287,"loc":{"start":{"line":287,"column":43},"end":{"line":287,"column":68}}},"15":{"name":"_receive","line":310,"loc":{"start":{"line":310,"column":32},"end":{"line":310,"column":63}}},"16":{"name":"_initializeSettingsManagement","line":342,"loc":{"start":{"line":342,"column":53},"end":{"line":342,"column":102}}},"17":{"name":"(anonymous_17)","line":348,"loc":{"start":{"line":348,"column":25},"end":{"line":348,"column":41}}},"18":{"name":"_receiveSettings","line":362,"loc":{"start":{"line":362,"column":40},"end":{"line":362,"column":73}}},"19":{"name":"set","line":369,"loc":{"start":{"line":369,"column":27},"end":{"line":369,"column":50}}},"20":{"name":"_initializeLifecycleManagement","line":390,"loc":{"start":{"line":390,"column":54},"end":{"line":390,"column":96}}},"21":{"name":"_generatePingId","line":397,"loc":{"start":{"line":397,"column":39},"end":{"line":397,"column":66}}},"22":{"name":"ping","line":408,"loc":{"start":{"line":408,"column":28},"end":{"line":408,"column":52}}},"23":{"name":"_receivePing","line":425,"loc":{"start":{"line":425,"column":36},"end":{"line":425,"column":65}}},"24":{"name":"close","line":450,"loc":{"start":{"line":450,"column":29},"end":{"line":450,"column":51}}},"25":{"name":"_receiveGoaway","line":461,"loc":{"start":{"line":461,"column":38},"end":{"line":461,"column":69}}},"26":{"name":"_initializeFlowControl","line":469,"loc":{"start":{"line":469,"column":46},"end":{"line":469,"column":80}}},"27":{"name":"(anonymous_27)","line":472,"loc":{"start":{"line":472,"column":24},"end":{"line":472,"column":41}}},"28":{"name":"noop","line":481,"loc":{"start":{"line":481,"column":49},"end":{"line":481,"column":65}}},"29":{"name":"noop","line":482,"loc":{"start":{"line":482,"column":57},"end":{"line":482,"column":73}}},"30":{"name":"_setInitialStreamWindowSize","line":492,"loc":{"start":{"line":492,"column":51},"end":{"line":492,"column":94}}},"31":{"name":"(anonymous_31)","line":499,"loc":{"start":{"line":499,"column":28},"end":{"line":499,"column":45}}},"32":{"name":"_setLocalFlowControl","line":507,"loc":{"start":{"line":507,"column":44},"end":{"line":507,"column":83}}},"33":{"name":"_setRemoteFlowControl","line":517,"loc":{"start":{"line":517,"column":45},"end":{"line":517,"column":85}}},"34":{"name":"(anonymous_34)","line":520,"loc":{"start":{"line":520,"column":28},"end":{"line":520,"column":45}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":79}},"2":{"start":{"line":10,"column":0},"end":{"line":10,"column":34}},"3":{"start":{"line":12,"column":0},"end":{"line":12,"column":32}},"4":{"start":{"line":36,"column":0},"end":{"line":56,"column":1}},"5":{"start":{"line":38,"column":2},"end":{"line":38,"column":21}},"6":{"start":{"line":41,"column":2},"end":{"line":41,"column":53}},"7":{"start":{"line":44,"column":2},"end":{"line":44,"column":50}},"8":{"start":{"line":47,"column":2},"end":{"line":47,"column":40}},"9":{"start":{"line":50,"column":2},"end":{"line":50,"column":32}},"10":{"start":{"line":53,"column":2},"end":{"line":53,"column":47}},"11":{"start":{"line":57,"column":0},"end":{"line":57,"column":93}},"12":{"start":{"line":93,"column":0},"end":{"line":93,"column":41}},"13":{"start":{"line":96,"column":0},"end":{"line":115,"column":2}},"14":{"start":{"line":100,"column":2},"end":{"line":100,"column":23}},"15":{"start":{"line":101,"column":2},"end":{"line":101,"column":30}},"16":{"start":{"line":104,"column":2},"end":{"line":104,"column":37}},"17":{"start":{"line":105,"column":2},"end":{"line":105,"column":31}},"18":{"start":{"line":108,"column":2},"end":{"line":108,"column":83}},"19":{"start":{"line":112,"column":2},"end":{"line":112,"column":24}},"20":{"start":{"line":113,"column":2},"end":{"line":113,"column":31}},"21":{"start":{"line":114,"column":2},"end":{"line":114,"column":80}},"22":{"start":{"line":119,"column":0},"end":{"line":128,"column":2}},"23":{"start":{"line":120,"column":2},"end":{"line":127,"column":3}},"24":{"start":{"line":122,"column":4},"end":{"line":122,"column":74}},"25":{"start":{"line":123,"column":4},"end":{"line":123,"column":33}},"26":{"start":{"line":125,"column":4},"end":{"line":125,"column":72}},"27":{"start":{"line":126,"column":4},"end":{"line":126,"column":41}},"28":{"start":{"line":131,"column":0},"end":{"line":134,"column":2}},"29":{"start":{"line":132,"column":2},"end":{"line":132,"column":37}},"30":{"start":{"line":133,"column":2},"end":{"line":133,"column":15}},"31":{"start":{"line":136,"column":0},"end":{"line":142,"column":2}},"32":{"start":{"line":137,"column":2},"end":{"line":141,"column":3}},"33":{"start":{"line":138,"column":4},"end":{"line":138,"column":99}},"34":{"start":{"line":139,"column":4},"end":{"line":139,"column":32}},"35":{"start":{"line":140,"column":4},"end":{"line":140,"column":17}},"36":{"start":{"line":152,"column":0},"end":{"line":180,"column":2}},"37":{"start":{"line":154,"column":2},"end":{"line":170,"column":3}},"38":{"start":{"line":155,"column":4},"end":{"line":155,"column":28}},"39":{"start":{"line":156,"column":4},"end":{"line":156,"column":28}},"40":{"start":{"line":160,"column":7},"end":{"line":170,"column":3}},"41":{"start":{"line":161,"column":4},"end":{"line":161,"column":34}},"42":{"start":{"line":166,"column":4},"end":{"line":167,"column":51}},"43":{"start":{"line":168,"column":4},"end":{"line":168,"column":41}},"44":{"start":{"line":169,"column":4},"end":{"line":169,"column":21}},"45":{"start":{"line":172,"column":2},"end":{"line":172,"column":35}},"46":{"start":{"line":175,"column":2},"end":{"line":175,"column":77}},"47":{"start":{"line":176,"column":2},"end":{"line":176,"column":31}},"48":{"start":{"line":177,"column":2},"end":{"line":177,"column":38}},"49":{"start":{"line":179,"column":2},"end":{"line":179,"column":12}},"50":{"start":{"line":183,"column":0},"end":{"line":189,"column":2}},"51":{"start":{"line":184,"column":2},"end":{"line":184,"column":68}},"52":{"start":{"line":185,"column":2},"end":{"line":185,"column":41}},"53":{"start":{"line":186,"column":2},"end":{"line":186,"column":63}},"54":{"start":{"line":187,"column":2},"end":{"line":187,"column":58}},"55":{"start":{"line":188,"column":2},"end":{"line":188,"column":15}},"56":{"start":{"line":191,"column":0},"end":{"line":197,"column":2}},"57":{"start":{"line":192,"column":2},"end":{"line":196,"column":3}},"58":{"start":{"line":193,"column":4},"end":{"line":193,"column":50}},"59":{"start":{"line":195,"column":4},"end":{"line":195,"column":48}},"60":{"start":{"line":199,"column":0},"end":{"line":209,"column":2}},"61":{"start":{"line":200,"column":2},"end":{"line":200,"column":56}},"62":{"start":{"line":201,"column":2},"end":{"line":201,"column":37}},"63":{"start":{"line":202,"column":2},"end":{"line":202,"column":23}},"64":{"start":{"line":203,"column":2},"end":{"line":203,"column":26}},"65":{"start":{"line":204,"column":2},"end":{"line":206,"column":3}},"66":{"start":{"line":205,"column":4},"end":{"line":205,"column":52}},"67":{"start":{"line":208,"column":2},"end":{"line":208,"column":33}},"68":{"start":{"line":213,"column":0},"end":{"line":222,"column":2}},"69":{"start":{"line":214,"column":2},"end":{"line":214,"column":61}},"70":{"start":{"line":216,"column":2},"end":{"line":216,"column":37}},"71":{"start":{"line":217,"column":2},"end":{"line":217,"column":31}},"72":{"start":{"line":218,"column":2},"end":{"line":218,"column":33}},"73":{"start":{"line":219,"column":2},"end":{"line":219,"column":34}},"74":{"start":{"line":221,"column":2},"end":{"line":221,"column":16}},"75":{"start":{"line":225,"column":0},"end":{"line":233,"column":2}},"76":{"start":{"line":226,"column":2},"end":{"line":226,"column":51}},"77":{"start":{"line":229,"column":2},"end":{"line":229,"column":37}},"78":{"start":{"line":230,"column":2},"end":{"line":230,"column":33}},"79":{"start":{"line":232,"column":2},"end":{"line":232,"column":16}},"80":{"start":{"line":240,"column":0},"end":{"line":306,"column":2}},"81":{"start":{"line":241,"column":2},"end":{"line":241,"column":62}},"82":{"start":{"line":244,"column":0},"end":{"line":303,"column":3}},"83":{"start":{"line":245,"column":2},"end":{"line":303,"column":3}},"84":{"start":{"line":246,"column":4},"end":{"line":246,"column":58}},"85":{"start":{"line":257,"column":4},"end":{"line":257,"column":18}},"86":{"start":{"line":258,"column":4},"end":{"line":302,"column":5}},"87":{"start":{"line":259,"column":6},"end":{"line":259,"column":36}},"88":{"start":{"line":260,"column":6},"end":{"line":260,"column":33}},"89":{"start":{"line":261,"column":6},"end":{"line":261,"column":41}},"90":{"start":{"line":263,"column":6},"end":{"line":301,"column":7}},"91":{"start":{"line":264,"column":8},"end":{"line":264,"column":32}},"92":{"start":{"line":267,"column":11},"end":{"line":301,"column":7}},"93":{"start":{"line":268,"column":8},"end":{"line":268,"column":39}},"94":{"start":{"line":269,"column":8},"end":{"line":269,"column":32}},"95":{"start":{"line":273,"column":8},"end":{"line":273,"column":49}},"96":{"start":{"line":274,"column":8},"end":{"line":278,"column":9}},"97":{"start":{"line":275,"column":10},"end":{"line":275,"column":50}},"98":{"start":{"line":277,"column":10},"end":{"line":277,"column":28}},"99":{"start":{"line":280,"column":8},"end":{"line":283,"column":9}},"100":{"start":{"line":281,"column":10},"end":{"line":281,"column":56}},"101":{"start":{"line":282,"column":10},"end":{"line":282,"column":74}},"102":{"start":{"line":285,"column":8},"end":{"line":285,"column":89}},"103":{"start":{"line":286,"column":8},"end":{"line":286,"column":29}},"104":{"start":{"line":287,"column":8},"end":{"line":289,"column":11}},"105":{"start":{"line":288,"column":10},"end":{"line":288,"column":62}},"106":{"start":{"line":290,"column":8},"end":{"line":292,"column":9}},"107":{"start":{"line":291,"column":10},"end":{"line":291,"column":54}},"108":{"start":{"line":294,"column":8},"end":{"line":300,"column":9}},"109":{"start":{"line":295,"column":10},"end":{"line":295,"column":34}},"110":{"start":{"line":296,"column":15},"end":{"line":300,"column":9}},"111":{"start":{"line":297,"column":10},"end":{"line":297,"column":30}},"112":{"start":{"line":299,"column":10},"end":{"line":299,"column":21}},"113":{"start":{"line":305,"column":2},"end":{"line":305,"column":90}},"114":{"start":{"line":310,"column":0},"end":{"line":332,"column":2}},"115":{"start":{"line":311,"column":2},"end":{"line":311,"column":65}},"116":{"start":{"line":314,"column":2},"end":{"line":314,"column":45}},"117":{"start":{"line":317,"column":2},"end":{"line":319,"column":3}},"118":{"start":{"line":318,"column":4},"end":{"line":318,"column":54}},"119":{"start":{"line":322,"column":2},"end":{"line":324,"column":3}},"120":{"start":{"line":323,"column":4},"end":{"line":323,"column":78}},"121":{"start":{"line":326,"column":2},"end":{"line":326,"column":58}},"122":{"start":{"line":329,"column":2},"end":{"line":329,"column":31}},"123":{"start":{"line":331,"column":2},"end":{"line":331,"column":9}},"124":{"start":{"line":337,"column":0},"end":{"line":339,"column":2}},"125":{"start":{"line":342,"column":0},"end":{"line":359,"column":2}},"126":{"start":{"line":344,"column":2},"end":{"line":344,"column":88}},"127":{"start":{"line":345,"column":2},"end":{"line":345,"column":40}},"128":{"start":{"line":348,"column":2},"end":{"line":355,"column":5}},"129":{"start":{"line":349,"column":4},"end":{"line":354,"column":5}},"130":{"start":{"line":350,"column":6},"end":{"line":350,"column":94}},"131":{"start":{"line":352,"column":6},"end":{"line":352,"column":99}},"132":{"start":{"line":353,"column":6},"end":{"line":353,"column":25}},"133":{"start":{"line":358,"column":2},"end":{"line":358,"column":45}},"134":{"start":{"line":362,"column":0},"end":{"line":366,"column":2}},"135":{"start":{"line":363,"column":2},"end":{"line":365,"column":3}},"136":{"start":{"line":364,"column":4},"end":{"line":364,"column":57}},"137":{"start":{"line":369,"column":0},"end":{"line":378,"column":2}},"138":{"start":{"line":370,"column":2},"end":{"line":374,"column":5}},"139":{"start":{"line":375,"column":2},"end":{"line":377,"column":3}},"140":{"start":{"line":376,"column":4},"end":{"line":376,"column":49}},"141":{"start":{"line":390,"column":0},"end":{"line":394,"column":2}},"142":{"start":{"line":391,"column":2},"end":{"line":391,"column":19}},"143":{"start":{"line":392,"column":2},"end":{"line":392,"column":37}},"144":{"start":{"line":393,"column":2},"end":{"line":393,"column":41}},"145":{"start":{"line":397,"column":0},"end":{"line":405,"column":2}},"146":{"start":{"line":398,"column":2},"end":{"line":403,"column":29}},"147":{"start":{"line":399,"column":4},"end":{"line":399,"column":16}},"148":{"start":{"line":400,"column":4},"end":{"line":402,"column":5}},"149":{"start":{"line":401,"column":6},"end":{"line":401,"column":54}},"150":{"start":{"line":404,"column":2},"end":{"line":404,"column":12}},"151":{"start":{"line":408,"column":0},"end":{"line":422,"column":2}},"152":{"start":{"line":409,"column":2},"end":{"line":409,"column":34}},"153":{"start":{"line":410,"column":2},"end":{"line":410,"column":35}},"154":{"start":{"line":411,"column":2},"end":{"line":411,"column":29}},"155":{"start":{"line":413,"column":2},"end":{"line":413,"column":51}},"156":{"start":{"line":414,"column":2},"end":{"line":421,"column":5}},"157":{"start":{"line":425,"column":0},"end":{"line":447,"column":2}},"158":{"start":{"line":426,"column":2},"end":{"line":446,"column":3}},"159":{"start":{"line":427,"column":4},"end":{"line":427,"column":40}},"160":{"start":{"line":428,"column":4},"end":{"line":434,"column":5}},"161":{"start":{"line":429,"column":6},"end":{"line":429,"column":76}},"162":{"start":{"line":430,"column":6},"end":{"line":430,"column":24}},"163":{"start":{"line":431,"column":6},"end":{"line":431,"column":29}},"164":{"start":{"line":433,"column":6},"end":{"line":433,"column":71}},"165":{"start":{"line":437,"column":4},"end":{"line":437,"column":61}},"166":{"start":{"line":438,"column":4},"end":{"line":445,"column":7}},"167":{"start":{"line":450,"column":0},"end":{"line":459,"column":2}},"168":{"start":{"line":451,"column":2},"end":{"line":451,"column":61}},"169":{"start":{"line":452,"column":2},"end":{"line":457,"column":5}},"170":{"start":{"line":458,"column":2},"end":{"line":458,"column":18}},"171":{"start":{"line":461,"column":0},"end":{"line":464,"column":2}},"172":{"start":{"line":462,"column":2},"end":{"line":462,"column":76}},"173":{"start":{"line":463,"column":2},"end":{"line":463,"column":18}},"174":{"start":{"line":469,"column":0},"end":{"line":483,"column":2}},"175":{"start":{"line":471,"column":2},"end":{"line":471,"column":61}},"176":{"start":{"line":472,"column":2},"end":{"line":477,"column":5}},"177":{"start":{"line":473,"column":4},"end":{"line":473,"column":68}},"178":{"start":{"line":474,"column":4},"end":{"line":476,"column":5}},"179":{"start":{"line":475,"column":6},"end":{"line":475,"column":49}},"180":{"start":{"line":478,"column":2},"end":{"line":478,"column":86}},"181":{"start":{"line":479,"column":2},"end":{"line":479,"column":80}},"182":{"start":{"line":480,"column":2},"end":{"line":480,"column":79}},"183":{"start":{"line":481,"column":2},"end":{"line":481,"column":68}},"184":{"start":{"line":482,"column":2},"end":{"line":482,"column":76}},"185":{"start":{"line":486,"column":0},"end":{"line":486,"column":39}},"186":{"start":{"line":492,"column":0},"end":{"line":503,"column":2}},"187":{"start":{"line":493,"column":2},"end":{"line":502,"column":3}},"188":{"start":{"line":494,"column":4},"end":{"line":494,"column":112}},"189":{"start":{"line":495,"column":4},"end":{"line":495,"column":45}},"190":{"start":{"line":497,"column":4},"end":{"line":497,"column":76}},"191":{"start":{"line":498,"column":4},"end":{"line":498,"column":41}},"192":{"start":{"line":499,"column":4},"end":{"line":501,"column":7}},"193":{"start":{"line":500,"column":6},"end":{"line":500,"column":45}},"194":{"start":{"line":507,"column":0},"end":{"line":515,"column":2}},"195":{"start":{"line":508,"column":2},"end":{"line":514,"column":3}},"196":{"start":{"line":509,"column":4},"end":{"line":509,"column":35}},"197":{"start":{"line":510,"column":4},"end":{"line":510,"column":47}},"198":{"start":{"line":511,"column":9},"end":{"line":514,"column":3}},"199":{"start":{"line":512,"column":4},"end":{"line":512,"column":81}},"200":{"start":{"line":513,"column":4},"end":{"line":513,"column":45}},"201":{"start":{"line":517,"column":0},"end":{"line":527,"column":2}},"202":{"start":{"line":518,"column":2},"end":{"line":526,"column":3}},"203":{"start":{"line":519,"column":4},"end":{"line":519,"column":36}},"204":{"start":{"line":520,"column":4},"end":{"line":522,"column":7}},"205":{"start":{"line":521,"column":6},"end":{"line":521,"column":49}},"206":{"start":{"line":523,"column":9},"end":{"line":526,"column":3}},"207":{"start":{"line":524,"column":4},"end":{"line":524,"column":81}},"208":{"start":{"line":525,"column":4},"end":{"line":525,"column":81}}},"branchMap":{"1":{"line":1,"type":"cond-expr","locations":[{"start":{"line":1,"column":40},"end":{"line":1,"column":57}},{"start":{"line":1,"column":45},"end":{"line":1,"column":78}}]},"2":{"line":120,"type":"if","locations":[{"start":{"line":120,"column":2},"end":{"line":120,"column":2}},{"start":{"line":120,"column":2},"end":{"line":120,"column":2}}]},"3":{"line":120,"type":"binary-expr","locations":[{"start":{"line":120,"column":7},"end":{"line":120,"column":32}},{"start":{"line":120,"column":38},"end":{"line":120,"column":59}},{"start":{"line":121,"column":7},"end":{"line":121,"column":30}},{"start":{"line":121,"column":36},"end":{"line":121,"column":66}}]},"4":{"line":137,"type":"if","locations":[{"start":{"line":137,"column":2},"end":{"line":137,"column":2}},{"start":{"line":137,"column":2},"end":{"line":137,"column":2}}]},"5":{"line":154,"type":"if","locations":[{"start":{"line":154,"column":2},"end":{"line":154,"column":2}},{"start":{"line":154,"column":2},"end":{"line":154,"column":2}}]},"6":{"line":160,"type":"if","locations":[{"start":{"line":160,"column":7},"end":{"line":160,"column":7}},{"start":{"line":160,"column":7},"end":{"line":160,"column":7}}]},"7":{"line":160,"type":"binary-expr","locations":[{"start":{"line":160,"column":12},"end":{"line":160,"column":41}},{"start":{"line":160,"column":47},"end":{"line":160,"column":82}}]},"8":{"line":192,"type":"if","locations":[{"start":{"line":192,"column":2},"end":{"line":192,"column":2}},{"start":{"line":192,"column":2},"end":{"line":192,"column":2}}]},"9":{"line":204,"type":"if","locations":[{"start":{"line":204,"column":2},"end":{"line":204,"column":2}},{"start":{"line":204,"column":2},"end":{"line":204,"column":2}}]},"10":{"line":263,"type":"if","locations":[{"start":{"line":263,"column":6},"end":{"line":263,"column":6}},{"start":{"line":263,"column":6},"end":{"line":263,"column":6}}]},"11":{"line":267,"type":"if","locations":[{"start":{"line":267,"column":11},"end":{"line":267,"column":11}},{"start":{"line":267,"column":11},"end":{"line":267,"column":11}}]},"12":{"line":274,"type":"if","locations":[{"start":{"line":274,"column":8},"end":{"line":274,"column":8}},{"start":{"line":274,"column":8},"end":{"line":274,"column":8}}]},"13":{"line":280,"type":"if","locations":[{"start":{"line":280,"column":8},"end":{"line":280,"column":8}},{"start":{"line":280,"column":8},"end":{"line":280,"column":8}}]},"14":{"line":290,"type":"if","locations":[{"start":{"line":290,"column":8},"end":{"line":290,"column":8}},{"start":{"line":290,"column":8},"end":{"line":290,"column":8}}]},"15":{"line":294,"type":"if","locations":[{"start":{"line":294,"column":8},"end":{"line":294,"column":8}},{"start":{"line":294,"column":8},"end":{"line":294,"column":8}}]},"16":{"line":296,"type":"if","locations":[{"start":{"line":296,"column":15},"end":{"line":296,"column":15}},{"start":{"line":296,"column":15},"end":{"line":296,"column":15}}]},"17":{"line":317,"type":"if","locations":[{"start":{"line":317,"column":2},"end":{"line":317,"column":2}},{"start":{"line":317,"column":2},"end":{"line":317,"column":2}}]},"18":{"line":322,"type":"if","locations":[{"start":{"line":322,"column":2},"end":{"line":322,"column":2}},{"start":{"line":322,"column":2},"end":{"line":322,"column":2}}]},"19":{"line":345,"type":"binary-expr","locations":[{"start":{"line":345,"column":11},"end":{"line":345,"column":19}},{"start":{"line":345,"column":23},"end":{"line":345,"column":38}}]},"20":{"line":349,"type":"if","locations":[{"start":{"line":349,"column":4},"end":{"line":349,"column":4}},{"start":{"line":349,"column":4},"end":{"line":349,"column":4}}]},"21":{"line":349,"type":"binary-expr","locations":[{"start":{"line":349,"column":9},"end":{"line":349,"column":27}},{"start":{"line":349,"column":33},"end":{"line":349,"column":58}}]},"22":{"line":426,"type":"if","locations":[{"start":{"line":426,"column":2},"end":{"line":426,"column":2}},{"start":{"line":426,"column":2},"end":{"line":426,"column":2}}]},"23":{"line":428,"type":"if","locations":[{"start":{"line":428,"column":4},"end":{"line":428,"column":4}},{"start":{"line":428,"column":4},"end":{"line":428,"column":4}}]},"24":{"line":456,"type":"binary-expr","locations":[{"start":{"line":456,"column":11},"end":{"line":456,"column":16}},{"start":{"line":456,"column":20},"end":{"line":456,"column":30}}]},"25":{"line":474,"type":"if","locations":[{"start":{"line":474,"column":4},"end":{"line":474,"column":4}},{"start":{"line":474,"column":4},"end":{"line":474,"column":4}}]},"26":{"line":493,"type":"if","locations":[{"start":{"line":493,"column":2},"end":{"line":493,"column":2}},{"start":{"line":493,"column":2},"end":{"line":493,"column":2}}]},"27":{"line":493,"type":"binary-expr","locations":[{"start":{"line":493,"column":7},"end":{"line":493,"column":49}},{"start":{"line":493,"column":55},"end":{"line":493,"column":72}}]},"28":{"line":508,"type":"if","locations":[{"start":{"line":508,"column":2},"end":{"line":508,"column":2}},{"start":{"line":508,"column":2},"end":{"line":508,"column":2}}]},"29":{"line":511,"type":"if","locations":[{"start":{"line":511,"column":9},"end":{"line":511,"column":9}},{"start":{"line":511,"column":9},"end":{"line":511,"column":9}}]},"30":{"line":518,"type":"if","locations":[{"start":{"line":518,"column":2},"end":{"line":518,"column":2}},{"start":{"line":518,"column":2},"end":{"line":518,"column":2}}]},"31":{"line":523,"type":"if","locations":[{"start":{"line":523,"column":9},"end":{"line":523,"column":9}},{"start":{"line":523,"column":9},"end":{"line":523,"column":9}}]}}},"/data/upstream/node-http2/lib/flow.js":{"path":"/data/upstream/node-http2/lib/flow.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":164,"7":164,"8":164,"9":164,"10":164,"11":164,"12":164,"13":1,"14":1,"15":1,"16":1,"17":329,"18":329,"19":63,"20":329,"21":106,"22":106,"23":106,"24":12,"25":106,"26":223,"27":329,"28":5,"29":1,"30":12,"31":12,"32":6,"33":6,"34":1,"35":45,"36":45,"37":1,"38":1,"39":1,"40":1392,"41":1291,"42":101,"43":7,"44":7,"45":7,"46":7,"47":8,"48":7,"49":1392,"50":1,"51":1,"52":285,"53":378,"54":378,"55":278,"56":100,"57":7,"58":93,"59":93,"60":93,"61":93,"62":93,"63":378,"64":378,"65":371,"66":371,"67":144,"68":144,"69":144,"70":371,"71":378,"72":285,"73":7,"74":285,"75":1,"76":193,"77":6,"78":187,"79":187,"80":187,"81":193,"82":192,"83":1,"84":1,"85":1,"86":36,"87":36,"88":1,"89":1,"90":94,"91":1,"92":1,"93":93,"94":93,"95":93,"96":1,"97":1,"98":92,"99":1,"100":5,"101":1,"102":59,"103":59,"104":1,"105":1},"b":{"1":[1,0],"2":[63,266],"3":[106,223],"4":[329,192,135],"5":[12,94],"6":[5,324],"7":[329,5,5],"8":[6,6],"9":[12,6,6],"10":[1291,101],"11":[7,94],"12":[15,14],"13":[7,7,1,1],"14":[378,100],"15":[278,100],"16":[378,372,202,154],"17":[7,93],"18":[371,7],"19":[144,227],"20":[371,365,195],"21":[7,278],"22":[6,187],"23":[187,142],"24":[192,1],"25":[36,36],"26":[1,93],"27":[94,2],"28":[1,92],"29":[93,44],"30":[0,5]},"f":{"1":0,"2":164,"3":1,"4":329,"5":106,"6":12,"7":45,"8":1,"9":1392,"10":285,"11":193,"12":36,"13":94,"14":5,"15":59,"16":1},"fnMap":{"1":{"name":"noop","line":1,"loc":{"start":{"line":1,"column":45},"end":{"line":1,"column":76}}},"2":{"name":"Flow","line":72,"loc":{"start":{"line":72,"column":0},"end":{"line":72,"column":29}}},"3":{"name":"_receive","line":89,"loc":{"start":{"line":89,"column":26},"end":{"line":89,"column":61}}},"4":{"name":"_write","line":97,"loc":{"start":{"line":97,"column":24},"end":{"line":97,"column":67}}},"5":{"name":"(anonymous_5)","line":105,"loc":{"start":{"line":105,"column":25},"end":{"line":105,"column":36}}},"6":{"name":"_restoreWindow","line":126,"loc":{"start":{"line":126,"column":32},"end":{"line":126,"column":58}}},"7":{"name":"disableRemoteFlowControl","line":139,"loc":{"start":{"line":139,"column":42},"end":{"line":139,"column":78}}},"8":{"name":"_send","line":163,"loc":{"start":{"line":163,"column":23},"end":{"line":163,"column":40}}},"9":{"name":"_read","line":170,"loc":{"start":{"line":170,"column":23},"end":{"line":170,"column":40}}},"10":{"name":"_push","line":204,"loc":{"start":{"line":204,"column":23},"end":{"line":204,"column":64}}},"11":{"name":"push","line":254,"loc":{"start":{"line":254,"column":22},"end":{"line":254,"column":43}}},"12":{"name":"getLastQueuedFrame","line":273,"loc":{"start":{"line":273,"column":36},"end":{"line":273,"column":66}}},"13":{"name":"_increaseWindow","line":291,"loc":{"start":{"line":291,"column":33},"end":{"line":291,"column":64}}},"14":{"name":"_updateWindow","line":315,"loc":{"start":{"line":315,"column":31},"end":{"line":315,"column":61}}},"15":{"name":"setInitialWindow","line":323,"loc":{"start":{"line":323,"column":34},"end":{"line":323,"column":75}}},"16":{"name":"disableLocalFlowControl","line":329,"loc":{"start":{"line":329,"column":41},"end":{"line":329,"column":76}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":79}},"2":{"start":{"line":10,"column":0},"end":{"line":10,"column":39}},"3":{"start":{"line":12,"column":0},"end":{"line":12,"column":20}},"4":{"start":{"line":69,"column":0},"end":{"line":69,"column":32}},"5":{"start":{"line":72,"column":0},"end":{"line":82,"column":1}},"6":{"start":{"line":73,"column":2},"end":{"line":73,"column":42}},"7":{"start":{"line":75,"column":2},"end":{"line":75,"column":59}},"8":{"start":{"line":76,"column":2},"end":{"line":76,"column":38}},"9":{"start":{"line":77,"column":2},"end":{"line":77,"column":19}},"10":{"start":{"line":79,"column":2},"end":{"line":79,"column":22}},"11":{"start":{"line":80,"column":2},"end":{"line":80,"column":21}},"12":{"start":{"line":81,"column":2},"end":{"line":81,"column":42}},"13":{"start":{"line":83,"column":0},"end":{"line":83,"column":83}},"14":{"start":{"line":89,"column":0},"end":{"line":91,"column":2}},"15":{"start":{"line":90,"column":2},"end":{"line":90,"column":99}},"16":{"start":{"line":97,"column":0},"end":{"line":122,"column":2}},"17":{"start":{"line":98,"column":2},"end":{"line":98,"column":32}},"18":{"start":{"line":100,"column":2},"end":{"line":102,"column":3}},"19":{"start":{"line":101,"column":4},"end":{"line":101,"column":23}},"20":{"start":{"line":104,"column":2},"end":{"line":116,"column":3}},"21":{"start":{"line":105,"column":4},"end":{"line":111,"column":18}},"22":{"start":{"line":106,"column":6},"end":{"line":106,"column":42}},"23":{"start":{"line":107,"column":6},"end":{"line":109,"column":7}},"24":{"start":{"line":108,"column":8},"end":{"line":108,"column":80}},"25":{"start":{"line":110,"column":6},"end":{"line":110,"column":17}},"26":{"start":{"line":115,"column":4},"end":{"line":115,"column":35}},"27":{"start":{"line":118,"column":2},"end":{"line":121,"column":3}},"28":{"start":{"line":120,"column":4},"end":{"line":120,"column":30}},"29":{"start":{"line":126,"column":0},"end":{"line":136,"column":2}},"30":{"start":{"line":127,"column":2},"end":{"line":127,"column":34}},"31":{"start":{"line":128,"column":2},"end":{"line":135,"column":3}},"32":{"start":{"line":129,"column":4},"end":{"line":133,"column":7}},"33":{"start":{"line":134,"column":4},"end":{"line":134,"column":23}},"34":{"start":{"line":139,"column":0},"end":{"line":142,"column":2}},"35":{"start":{"line":140,"column":2},"end":{"line":140,"column":53}},"36":{"start":{"line":141,"column":2},"end":{"line":141,"column":41}},"37":{"start":{"line":163,"column":0},"end":{"line":165,"column":2}},"38":{"start":{"line":164,"column":2},"end":{"line":164,"column":81}},"39":{"start":{"line":170,"column":0},"end":{"line":192,"column":2}},"40":{"start":{"line":172,"column":2},"end":{"line":189,"column":3}},"41":{"start":{"line":173,"column":4},"end":{"line":173,"column":17}},"42":{"start":{"line":178,"column":7},"end":{"line":189,"column":3}},"43":{"start":{"line":179,"column":4},"end":{"line":179,"column":14}},"44":{"start":{"line":180,"column":4},"end":{"line":180,"column":26}},"45":{"start":{"line":181,"column":4},"end":{"line":181,"column":65}},"46":{"start":{"line":182,"column":4},"end":{"line":184,"column":5}},"47":{"start":{"line":183,"column":6},"end":{"line":183,"column":55}},"48":{"start":{"line":186,"column":4},"end":{"line":188,"column":71}},"49":{"start":{"line":191,"column":2},"end":{"line":191,"column":38}},"50":{"start":{"line":202,"column":0},"end":{"line":202,"column":28}},"51":{"start":{"line":204,"column":0},"end":{"line":251,"column":2}},"52":{"start":{"line":205,"column":2},"end":{"line":244,"column":36}},"53":{"start":{"line":206,"column":4},"end":{"line":206,"column":55}},"54":{"start":{"line":207,"column":4},"end":{"line":229,"column":5}},"55":{"start":{"line":209,"column":6},"end":{"line":209,"column":26}},"56":{"start":{"line":212,"column":9},"end":{"line":229,"column":5}},"57":{"start":{"line":213,"column":6},"end":{"line":213,"column":24}},"58":{"start":{"line":217,"column":6},"end":{"line":217,"column":63}},"59":{"start":{"line":218,"column":6},"end":{"line":223,"column":8}},"60":{"start":{"line":225,"column":6},"end":{"line":226,"column":73}},"61":{"start":{"line":227,"column":6},"end":{"line":227,"column":47}},"62":{"start":{"line":228,"column":6},"end":{"line":228,"column":24}},"63":{"start":{"line":231,"column":4},"end":{"line":231,"column":26}},"64":{"start":{"line":232,"column":4},"end":{"line":241,"column":5}},"65":{"start":{"line":233,"column":6},"end":{"line":233,"column":85}},"66":{"start":{"line":234,"column":6},"end":{"line":239,"column":7}},"67":{"start":{"line":235,"column":8},"end":{"line":236,"column":65}},"68":{"start":{"line":237,"column":8},"end":{"line":237,"column":48}},"69":{"start":{"line":238,"column":8},"end":{"line":238,"column":34}},"70":{"start":{"line":240,"column":6},"end":{"line":240,"column":65}},"71":{"start":{"line":243,"column":4},"end":{"line":243,"column":22}},"72":{"start":{"line":246,"column":2},"end":{"line":248,"column":3}},"73":{"start":{"line":247,"column":4},"end":{"line":247,"column":33}},"74":{"start":{"line":250,"column":2},"end":{"line":250,"column":20}},"75":{"start":{"line":254,"column":0},"end":{"line":269,"column":2}},"76":{"start":{"line":255,"column":2},"end":{"line":261,"column":3}},"77":{"start":{"line":256,"column":4},"end":{"line":256,"column":57}},"78":{"start":{"line":258,"column":4},"end":{"line":258,"column":36}},"79":{"start":{"line":259,"column":4},"end":{"line":259,"column":67}},"80":{"start":{"line":260,"column":4},"end":{"line":260,"column":32}},"81":{"start":{"line":263,"column":2},"end":{"line":268,"column":3}},"82":{"start":{"line":264,"column":4},"end":{"line":264,"column":65}},"83":{"start":{"line":266,"column":4},"end":{"line":266,"column":28}},"84":{"start":{"line":267,"column":4},"end":{"line":267,"column":16}},"85":{"start":{"line":273,"column":0},"end":{"line":276,"column":2}},"86":{"start":{"line":274,"column":2},"end":{"line":274,"column":49}},"87":{"start":{"line":275,"column":2},"end":{"line":275,"column":88}},"88":{"start":{"line":289,"column":0},"end":{"line":289,"column":44}},"89":{"start":{"line":291,"column":0},"end":{"line":305,"column":2}},"90":{"start":{"line":292,"column":2},"end":{"line":304,"column":3}},"91":{"start":{"line":293,"column":4},"end":{"line":293,"column":97}},"92":{"start":{"line":294,"column":4},"end":{"line":294,"column":45}},"93":{"start":{"line":296,"column":4},"end":{"line":296,"column":96}},"94":{"start":{"line":297,"column":4},"end":{"line":297,"column":25}},"95":{"start":{"line":298,"column":4},"end":{"line":303,"column":5}},"96":{"start":{"line":299,"column":6},"end":{"line":299,"column":61}},"97":{"start":{"line":300,"column":6},"end":{"line":300,"column":47}},"98":{"start":{"line":302,"column":6},"end":{"line":302,"column":19}},"99":{"start":{"line":315,"column":0},"end":{"line":317,"column":2}},"100":{"start":{"line":316,"column":2},"end":{"line":316,"column":84}},"101":{"start":{"line":323,"column":0},"end":{"line":326,"column":2}},"102":{"start":{"line":324,"column":2},"end":{"line":324,"column":60}},"103":{"start":{"line":325,"column":2},"end":{"line":325,"column":38}},"104":{"start":{"line":329,"column":0},"end":{"line":331,"column":2}},"105":{"start":{"line":330,"column":2},"end":{"line":330,"column":33}}},"branchMap":{"1":{"line":1,"type":"cond-expr","locations":[{"start":{"line":1,"column":40},"end":{"line":1,"column":57}},{"start":{"line":1,"column":45},"end":{"line":1,"column":78}}]},"2":{"line":100,"type":"if","locations":[{"start":{"line":100,"column":2},"end":{"line":100,"column":2}},{"start":{"line":100,"column":2},"end":{"line":100,"column":2}}]},"3":{"line":104,"type":"if","locations":[{"start":{"line":104,"column":2},"end":{"line":104,"column":2}},{"start":{"line":104,"column":2},"end":{"line":104,"column":2}}]},"4":{"line":104,"type":"binary-expr","locations":[{"start":{"line":104,"column":7},"end":{"line":104,"column":28}},{"start":{"line":104,"column":34},"end":{"line":104,"column":55}},{"start":{"line":104,"column":60},"end":{"line":104,"column":92}}]},"5":{"line":107,"type":"if","locations":[{"start":{"line":107,"column":6},"end":{"line":107,"column":6}},{"start":{"line":107,"column":6},"end":{"line":107,"column":6}}]},"6":{"line":118,"type":"if","locations":[{"start":{"line":118,"column":2},"end":{"line":118,"column":2}},{"start":{"line":118,"column":2},"end":{"line":118,"column":2}}]},"7":{"line":118,"type":"binary-expr","locations":[{"start":{"line":118,"column":7},"end":{"line":118,"column":37}},{"start":{"line":119,"column":8},"end":{"line":119,"column":41}},{"start":{"line":119,"column":47},"end":{"line":119,"column":83}}]},"8":{"line":128,"type":"if","locations":[{"start":{"line":128,"column":2},"end":{"line":128,"column":2}},{"start":{"line":128,"column":2},"end":{"line":128,"column":2}}]},"9":{"line":128,"type":"binary-expr","locations":[{"start":{"line":128,"column":6},"end":{"line":128,"column":18}},{"start":{"line":128,"column":22},"end":{"line":128,"column":54}},{"start":{"line":128,"column":59},"end":{"line":128,"column":77}}]},"10":{"line":172,"type":"if","locations":[{"start":{"line":172,"column":2},"end":{"line":172,"column":2}},{"start":{"line":172,"column":2},"end":{"line":172,"column":2}}]},"11":{"line":178,"type":"if","locations":[{"start":{"line":178,"column":7},"end":{"line":178,"column":7}},{"start":{"line":178,"column":7},"end":{"line":178,"column":7}}]},"12":{"line":182,"type":"binary-expr","locations":[{"start":{"line":182,"column":11},"end":{"line":182,"column":21}},{"start":{"line":182,"column":26},"end":{"line":182,"column":53}}]},"13":{"line":186,"type":"binary-expr","locations":[{"start":{"line":186,"column":12},"end":{"line":186,"column":31}},{"start":{"line":187,"column":12},"end":{"line":187,"column":36}},{"start":{"line":188,"column":13},"end":{"line":188,"column":31}},{"start":{"line":188,"column":37},"end":{"line":188,"column":67}}]},"14":{"line":244,"type":"binary-expr","locations":[{"start":{"line":244,"column":11},"end":{"line":244,"column":20}},{"start":{"line":244,"column":24},"end":{"line":244,"column":34}}]},"15":{"line":207,"type":"if","locations":[{"start":{"line":207,"column":4},"end":{"line":207,"column":4}},{"start":{"line":207,"column":4},"end":{"line":207,"column":4}}]},"16":{"line":207,"type":"binary-expr","locations":[{"start":{"line":207,"column":9},"end":{"line":207,"column":23}},{"start":{"line":207,"column":29},"end":{"line":207,"column":50}},{"start":{"line":208,"column":10},"end":{"line":208,"column":43}},{"start":{"line":208,"column":49},"end":{"line":208,"column":86}}]},"17":{"line":212,"type":"if","locations":[{"start":{"line":212,"column":9},"end":{"line":212,"column":9}},{"start":{"line":212,"column":9},"end":{"line":212,"column":9}}]},"18":{"line":232,"type":"if","locations":[{"start":{"line":232,"column":4},"end":{"line":232,"column":4}},{"start":{"line":232,"column":4},"end":{"line":232,"column":4}}]},"19":{"line":234,"type":"if","locations":[{"start":{"line":234,"column":6},"end":{"line":234,"column":6}},{"start":{"line":234,"column":6},"end":{"line":234,"column":6}}]},"20":{"line":234,"type":"binary-expr","locations":[{"start":{"line":234,"column":10},"end":{"line":234,"column":21}},{"start":{"line":234,"column":26},"end":{"line":234,"column":53}},{"start":{"line":234,"column":59},"end":{"line":234,"column":84}}]},"21":{"line":246,"type":"if","locations":[{"start":{"line":246,"column":2},"end":{"line":246,"column":2}},{"start":{"line":246,"column":2},"end":{"line":246,"column":2}}]},"22":{"line":255,"type":"if","locations":[{"start":{"line":255,"column":2},"end":{"line":255,"column":2}},{"start":{"line":255,"column":2},"end":{"line":255,"column":2}}]},"23":{"line":258,"type":"binary-expr","locations":[{"start":{"line":258,"column":18},"end":{"line":258,"column":29}},{"start":{"line":258,"column":33},"end":{"line":258,"column":35}}]},"24":{"line":263,"type":"if","locations":[{"start":{"line":263,"column":2},"end":{"line":263,"column":2}},{"start":{"line":263,"column":2},"end":{"line":263,"column":2}}]},"25":{"line":275,"type":"binary-expr","locations":[{"start":{"line":275,"column":9},"end":{"line":275,"column":44}},{"start":{"line":275,"column":48},"end":{"line":275,"column":87}}]},"26":{"line":292,"type":"if","locations":[{"start":{"line":292,"column":2},"end":{"line":292,"column":2}},{"start":{"line":292,"column":2},"end":{"line":292,"column":2}}]},"27":{"line":292,"type":"binary-expr","locations":[{"start":{"line":292,"column":7},"end":{"line":292,"column":32}},{"start":{"line":292,"column":38},"end":{"line":292,"column":55}}]},"28":{"line":298,"type":"if","locations":[{"start":{"line":298,"column":4},"end":{"line":298,"column":4}},{"start":{"line":298,"column":4},"end":{"line":298,"column":4}}]},"29":{"line":298,"type":"binary-expr","locations":[{"start":{"line":298,"column":9},"end":{"line":298,"column":34}},{"start":{"line":298,"column":40},"end":{"line":298,"column":72}}]},"30":{"line":316,"type":"cond-expr","locations":[{"start":{"line":316,"column":54},"end":{"line":316,"column":62}},{"start":{"line":316,"column":65},"end":{"line":316,"column":82}}]}}},"/data/upstream/node-http2/lib/stream.js":{"path":"/data/upstream/node-http2/lib/stream.js","s":{"1":1,"2":1,"3":1,"4":1,"5":105,"6":105,"7":105,"8":105,"9":105,"10":1,"11":1,"12":1,"13":1,"14":105,"15":105,"16":105,"17":105,"18":6,"19":105,"20":43,"21":0,"22":43,"23":105,"24":0,"25":1,"26":6,"27":6,"28":6,"29":6,"30":1,"31":44,"32":1,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":1,"44":26,"45":19,"46":19,"47":1,"48":1,"49":105,"50":105,"51":105,"52":105,"53":105,"54":105,"55":105,"56":105,"57":1,"58":97,"59":97,"60":97,"61":48,"62":48,"63":0,"64":0,"65":49,"66":97,"67":35,"68":97,"69":97,"70":1,"71":38,"72":0,"73":0,"74":0,"75":1,"76":19,"77":19,"78":19,"79":0,"80":1,"81":809,"82":0,"83":0,"84":0,"85":1,"86":36,"87":36,"88":36,"89":7,"90":7,"91":7,"92":7,"93":29,"94":1,"95":105,"96":105,"97":105,"98":105,"99":105,"100":105,"101":1,"102":161,"103":161,"104":161,"105":161,"106":1,"107":234,"108":1,"109":285,"110":285,"111":285,"112":285,"113":285,"114":115,"115":115,"116":95,"117":95,"118":8,"119":8,"120":33,"121":33,"122":24,"123":24,"124":10,"125":10,"126":285,"127":285,"128":57,"129":42,"130":42,"131":3,"132":42,"133":15,"134":6,"135":9,"136":57,"137":18,"138":4,"139":14,"140":6,"141":8,"142":8,"143":18,"144":18,"145":6,"146":12,"147":4,"148":8,"149":8,"150":18,"151":65,"152":29,"153":36,"154":2,"155":65,"156":62,"157":24,"158":38,"159":3,"160":62,"161":40,"162":22,"163":18,"164":3,"165":40,"166":25,"167":14,"168":25,"169":285,"170":66,"171":66,"172":285,"173":13,"174":13,"175":13,"176":285,"177":117,"178":117,"179":60,"180":57,"181":168,"182":89,"183":285,"184":45,"185":45,"186":20,"187":20,"188":25,"189":25,"190":25,"191":1,"192":1,"193":1,"194":6,"195":2,"196":2,"197":6},"b":{"1":[1,0],"2":[0,43],"3":[0,0],"4":[0,0,0],"5":[0,0],"6":[0,0],"7":[0,0,0],"8":[19,7],"9":[48,49],"10":[0,48],"11":[35,62],"12":[97,0],"13":[0,38],"14":[19,0],"15":[0,809],"16":[7,29],"17":[36,7,4],"18":[7,0],"19":[234,139,123],"20":[115,95,8,33,24,10],"21":[57,18,18,65,62,40,25],"22":[42,15],"23":[3,39],"24":[0,3],"25":[6,9],"26":[15,10],"27":[4,14],"28":[18,13],"29":[6,8],"30":[0,8],"31":[8,4],"32":[6,12],"33":[4,8],"34":[12,8],"35":[0,8],"36":[8,4],"37":[29,36],"38":[19,10],"39":[2,34],"40":[24,38],"41":[62,60,57],"42":[35,3],"43":[38,3,3,3],"44":[22,18],"45":[40,35,32],"46":[15,3],"47":[18,3,3,3],"48":[11,14],"49":[25,7,23,18,12,6,5,4],"50":[66,219],"51":[285,91],"52":[13,272],"53":[285,24],"54":[6,7],"55":[117,168],"56":[60,57],"57":[89,79],"58":[45,240],"59":[20,25],"60":[2,4]},"f":{"1":0,"2":105,"3":105,"4":6,"5":43,"6":0,"7":6,"8":44,"9":0,"10":26,"11":105,"12":97,"13":38,"14":19,"15":809,"16":36,"17":105,"18":161,"19":234,"20":285,"21":6},"fnMap":{"1":{"name":"noop","line":1,"loc":{"start":{"line":1,"column":45},"end":{"line":1,"column":76}}},"2":{"name":"Stream","line":47,"loc":{"start":{"line":47,"column":0},"end":{"line":47,"column":21}}},"3":{"name":"_initializeManagement","line":73,"loc":{"start":{"line":73,"column":41},"end":{"line":73,"column":74}}},"4":{"name":"(anonymous_4)","line":77,"loc":{"start":{"line":77,"column":26},"end":{"line":77,"column":42}}},"5":{"name":"(anonymous_5)","line":80,"loc":{"start":{"line":80,"column":21},"end":{"line":80,"column":37}}},"6":{"name":"(anonymous_6)","line":86,"loc":{"start":{"line":86,"column":22},"end":{"line":86,"column":38}}},"7":{"name":"promise","line":91,"loc":{"start":{"line":91,"column":27},"end":{"line":91,"column":53}}},"8":{"name":"headers","line":102,"loc":{"start":{"line":102,"column":27},"end":{"line":102,"column":53}}},"9":{"name":"priority","line":109,"loc":{"start":{"line":109,"column":28},"end":{"line":109,"column":62}}},"10":{"name":"reset","line":133,"loc":{"start":{"line":133,"column":25},"end":{"line":133,"column":47}}},"11":{"name":"_initializeDataFlow","line":178,"loc":{"start":{"line":178,"column":39},"end":{"line":178,"column":70}}},"12":{"name":"_receive","line":191,"loc":{"start":{"line":191,"column":28},"end":{"line":191,"column":60}}},"13":{"name":"_read","line":223,"loc":{"start":{"line":223,"column":25},"end":{"line":223,"column":42}}},"14":{"name":"_write","line":232,"loc":{"start":{"line":232,"column":26},"end":{"line":232,"column":67}}},"15":{"name":"_send","line":250,"loc":{"start":{"line":250,"column":25},"end":{"line":250,"column":42}}},"16":{"name":"_finishing","line":262,"loc":{"start":{"line":262,"column":30},"end":{"line":262,"column":52}}},"17":{"name":"_initializeState","line":309,"loc":{"start":{"line":309,"column":36},"end":{"line":309,"column":64}}},"18":{"name":"transition","line":320,"loc":{"start":{"line":320,"column":29},"end":{"line":320,"column":56}}},"19":{"name":"activeState","line":329,"loc":{"start":{"line":329,"column":0},"end":{"line":329,"column":28}}},"20":{"name":"transition","line":336,"loc":{"start":{"line":336,"column":31},"end":{"line":336,"column":67}}},"21":{"name":"(anonymous_21)","line":564,"loc":{"start":{"line":564,"column":24},"end":{"line":564,"column":41}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":79}},"2":{"start":{"line":12,"column":0},"end":{"line":12,"column":38}},"3":{"start":{"line":14,"column":0},"end":{"line":14,"column":24}},"4":{"start":{"line":47,"column":0},"end":{"line":61,"column":1}},"5":{"start":{"line":48,"column":2},"end":{"line":48,"column":20}},"6":{"start":{"line":51,"column":2},"end":{"line":51,"column":58}},"7":{"start":{"line":54,"column":2},"end":{"line":54,"column":31}},"8":{"start":{"line":57,"column":2},"end":{"line":57,"column":29}},"9":{"start":{"line":60,"column":2},"end":{"line":60,"column":26}},"10":{"start":{"line":63,"column":0},"end":{"line":63,"column":87}},"11":{"start":{"line":69,"column":0},"end":{"line":69,"column":39}},"12":{"start":{"line":70,"column":0},"end":{"line":70,"column":39}},"13":{"start":{"line":73,"column":0},"end":{"line":89,"column":2}},"14":{"start":{"line":74,"column":2},"end":{"line":74,"column":26}},"15":{"start":{"line":75,"column":2},"end":{"line":75,"column":36}},"16":{"start":{"line":76,"column":2},"end":{"line":76,"column":33}},"17":{"start":{"line":77,"column":2},"end":{"line":79,"column":5}},"18":{"start":{"line":78,"column":4},"end":{"line":78,"column":63}},"19":{"start":{"line":80,"column":2},"end":{"line":85,"column":5}},"20":{"start":{"line":81,"column":4},"end":{"line":83,"column":5}},"21":{"start":{"line":82,"column":6},"end":{"line":82,"column":42}},"22":{"start":{"line":84,"column":4},"end":{"line":84,"column":40}},"23":{"start":{"line":86,"column":2},"end":{"line":88,"column":5}},"24":{"start":{"line":87,"column":4},"end":{"line":87,"column":40}},"25":{"start":{"line":91,"column":0},"end":{"line":100,"column":2}},"26":{"start":{"line":92,"column":2},"end":{"line":92,"column":37}},"27":{"start":{"line":93,"column":2},"end":{"line":93,"column":64}},"28":{"start":{"line":94,"column":2},"end":{"line":98,"column":5}},"29":{"start":{"line":99,"column":2},"end":{"line":99,"column":16}},"30":{"start":{"line":102,"column":0},"end":{"line":107,"column":2}},"31":{"start":{"line":103,"column":2},"end":{"line":106,"column":5}},"32":{"start":{"line":109,"column":0},"end":{"line":129,"column":2}},"33":{"start":{"line":110,"column":2},"end":{"line":128,"column":3}},"34":{"start":{"line":111,"column":4},"end":{"line":123,"column":5}},"35":{"start":{"line":112,"column":6},"end":{"line":112,"column":38}},"36":{"start":{"line":114,"column":6},"end":{"line":114,"column":57}},"37":{"start":{"line":115,"column":6},"end":{"line":122,"column":7}},"38":{"start":{"line":116,"column":8},"end":{"line":116,"column":38}},"39":{"start":{"line":118,"column":8},"end":{"line":121,"column":11}},"40":{"start":{"line":125,"column":4},"end":{"line":125,"column":65}},"41":{"start":{"line":126,"column":4},"end":{"line":126,"column":36}},"42":{"start":{"line":127,"column":4},"end":{"line":127,"column":30}},"43":{"start":{"line":133,"column":0},"end":{"line":141,"column":2}},"44":{"start":{"line":134,"column":2},"end":{"line":140,"column":3}},"45":{"start":{"line":135,"column":4},"end":{"line":135,"column":27}},"46":{"start":{"line":136,"column":4},"end":{"line":139,"column":7}},"47":{"start":{"line":176,"column":0},"end":{"line":176,"column":34}},"48":{"start":{"line":178,"column":0},"end":{"line":188,"column":2}},"49":{"start":{"line":179,"column":2},"end":{"line":179,"column":29}},"50":{"start":{"line":180,"column":2},"end":{"line":180,"column":33}},"51":{"start":{"line":181,"column":2},"end":{"line":181,"column":46}},"52":{"start":{"line":182,"column":2},"end":{"line":182,"column":52}},"53":{"start":{"line":183,"column":2},"end":{"line":183,"column":63}},"54":{"start":{"line":184,"column":2},"end":{"line":184,"column":67}},"55":{"start":{"line":185,"column":2},"end":{"line":185,"column":59}},"56":{"start":{"line":187,"column":2},"end":{"line":187,"column":37}},"57":{"start":{"line":191,"column":0},"end":{"line":219,"column":2}},"58":{"start":{"line":192,"column":2},"end":{"line":192,"column":55}},"59":{"start":{"line":194,"column":2},"end":{"line":194,"column":23}},"60":{"start":{"line":198,"column":2},"end":{"line":209,"column":3}},"61":{"start":{"line":199,"column":4},"end":{"line":199,"column":43}},"62":{"start":{"line":200,"column":4},"end":{"line":203,"column":5}},"63":{"start":{"line":201,"column":6},"end":{"line":201,"column":32}},"64":{"start":{"line":202,"column":6},"end":{"line":202,"column":24}},"65":{"start":{"line":208,"column":4},"end":{"line":208,"column":33}},"66":{"start":{"line":212,"column":2},"end":{"line":214,"column":3}},"67":{"start":{"line":213,"column":4},"end":{"line":213,"column":20}},"68":{"start":{"line":216,"column":2},"end":{"line":218,"column":3}},"69":{"start":{"line":217,"column":4},"end":{"line":217,"column":12}},"70":{"start":{"line":223,"column":0},"end":{"line":229,"column":2}},"71":{"start":{"line":224,"column":2},"end":{"line":228,"column":3}},"72":{"start":{"line":225,"column":4},"end":{"line":225,"column":40}},"73":{"start":{"line":226,"column":4},"end":{"line":226,"column":29}},"74":{"start":{"line":227,"column":4},"end":{"line":227,"column":18}},"75":{"start":{"line":232,"column":0},"end":{"line":245,"column":2}},"76":{"start":{"line":234,"column":2},"end":{"line":237,"column":5}},"77":{"start":{"line":240,"column":2},"end":{"line":244,"column":3}},"78":{"start":{"line":241,"column":4},"end":{"line":241,"column":12}},"79":{"start":{"line":243,"column":4},"end":{"line":243,"column":27}},"80":{"start":{"line":250,"column":0},"end":{"line":256,"column":2}},"81":{"start":{"line":251,"column":2},"end":{"line":255,"column":3}},"82":{"start":{"line":252,"column":4},"end":{"line":252,"column":34}},"83":{"start":{"line":253,"column":4},"end":{"line":253,"column":26}},"84":{"start":{"line":254,"column":4},"end":{"line":254,"column":15}},"85":{"start":{"line":262,"column":0},"end":{"line":277,"column":2}},"86":{"start":{"line":263,"column":2},"end":{"line":267,"column":4}},"87":{"start":{"line":268,"column":2},"end":{"line":268,"column":53}},"88":{"start":{"line":269,"column":2},"end":{"line":276,"column":3}},"89":{"start":{"line":270,"column":4},"end":{"line":270,"column":86}},"90":{"start":{"line":271,"column":4},"end":{"line":271,"column":44}},"91":{"start":{"line":272,"column":4},"end":{"line":272,"column":38}},"92":{"start":{"line":273,"column":4},"end":{"line":273,"column":37}},"93":{"start":{"line":275,"column":4},"end":{"line":275,"column":33}},"94":{"start":{"line":309,"column":0},"end":{"line":316,"column":2}},"95":{"start":{"line":310,"column":2},"end":{"line":310,"column":22}},"96":{"start":{"line":311,"column":2},"end":{"line":311,"column":30}},"97":{"start":{"line":312,"column":2},"end":{"line":312,"column":31}},"98":{"start":{"line":313,"column":2},"end":{"line":313,"column":34}},"99":{"start":{"line":314,"column":2},"end":{"line":314,"column":56}},"100":{"start":{"line":315,"column":2},"end":{"line":315,"column":59}},"101":{"start":{"line":320,"column":0},"end":{"line":325,"column":2}},"102":{"start":{"line":321,"column":2},"end":{"line":321,"column":31}},"103":{"start":{"line":322,"column":2},"end":{"line":322,"column":71}},"104":{"start":{"line":323,"column":2},"end":{"line":323,"column":21}},"105":{"start":{"line":324,"column":2},"end":{"line":324,"column":28}},"106":{"start":{"line":329,"column":0},"end":{"line":331,"column":1}},"107":{"start":{"line":330,"column":2},"end":{"line":330,"column":101}},"108":{"start":{"line":336,"column":0},"end":{"line":556,"column":2}},"109":{"start":{"line":337,"column":2},"end":{"line":337,"column":27}},"110":{"start":{"line":338,"column":2},"end":{"line":338,"column":24}},"111":{"start":{"line":340,"column":2},"end":{"line":340,"column":54}},"112":{"start":{"line":341,"column":2},"end":{"line":341,"column":70}},"113":{"start":{"line":342,"column":2},"end":{"line":349,"column":3}},"114":{"start":{"line":343,"column":26},"end":{"line":343,"column":47}},"115":{"start":{"line":343,"column":48},"end":{"line":343,"column":54}},"116":{"start":{"line":344,"column":26},"end":{"line":344,"column":47}},"117":{"start":{"line":344,"column":48},"end":{"line":344,"column":54}},"118":{"start":{"line":345,"column":26},"end":{"line":345,"column":47}},"119":{"start":{"line":345,"column":48},"end":{"line":345,"column":54}},"120":{"start":{"line":346,"column":26},"end":{"line":346,"column":47}},"121":{"start":{"line":346,"column":48},"end":{"line":346,"column":54}},"122":{"start":{"line":347,"column":26},"end":{"line":347,"column":47}},"123":{"start":{"line":347,"column":48},"end":{"line":347,"column":54}},"124":{"start":{"line":348,"column":26},"end":{"line":348,"column":47}},"125":{"start":{"line":348,"column":48},"end":{"line":348,"column":54}},"126":{"start":{"line":351,"column":2},"end":{"line":351,"column":33}},"127":{"start":{"line":353,"column":2},"end":{"line":497,"column":3}},"128":{"start":{"line":360,"column":6},"end":{"line":370,"column":7}},"129":{"start":{"line":361,"column":8},"end":{"line":361,"column":31}},"130":{"start":{"line":362,"column":8},"end":{"line":364,"column":9}},"131":{"start":{"line":363,"column":10},"end":{"line":363,"column":79}},"132":{"start":{"line":365,"column":8},"end":{"line":365,"column":34}},"133":{"start":{"line":366,"column":13},"end":{"line":370,"column":7}},"134":{"start":{"line":367,"column":8},"end":{"line":367,"column":33}},"135":{"start":{"line":369,"column":8},"end":{"line":369,"column":33}},"136":{"start":{"line":371,"column":6},"end":{"line":371,"column":12}},"137":{"start":{"line":383,"column":6},"end":{"line":391,"column":7}},"138":{"start":{"line":384,"column":8},"end":{"line":384,"column":45}},"139":{"start":{"line":385,"column":13},"end":{"line":391,"column":7}},"140":{"start":{"line":386,"column":8},"end":{"line":386,"column":33}},"141":{"start":{"line":387,"column":13},"end":{"line":391,"column":7}},"142":{"start":{"line":390,"column":8},"end":{"line":390,"column":33}},"143":{"start":{"line":392,"column":6},"end":{"line":392,"column":12}},"144":{"start":{"line":402,"column":6},"end":{"line":410,"column":7}},"145":{"start":{"line":403,"column":8},"end":{"line":403,"column":33}},"146":{"start":{"line":404,"column":13},"end":{"line":410,"column":7}},"147":{"start":{"line":405,"column":8},"end":{"line":405,"column":44}},"148":{"start":{"line":406,"column":13},"end":{"line":410,"column":7}},"149":{"start":{"line":409,"column":8},"end":{"line":409,"column":33}},"150":{"start":{"line":411,"column":6},"end":{"line":411,"column":12}},"151":{"start":{"line":423,"column":6},"end":{"line":429,"column":7}},"152":{"start":{"line":424,"column":8},"end":{"line":424,"column":77}},"153":{"start":{"line":425,"column":13},"end":{"line":429,"column":7}},"154":{"start":{"line":426,"column":8},"end":{"line":426,"column":33}},"155":{"start":{"line":430,"column":6},"end":{"line":430,"column":12}},"156":{"start":{"line":439,"column":6},"end":{"line":445,"column":7}},"157":{"start":{"line":440,"column":8},"end":{"line":440,"column":33}},"158":{"start":{"line":441,"column":13},"end":{"line":445,"column":7}},"159":{"start":{"line":444,"column":8},"end":{"line":444,"column":33}},"160":{"start":{"line":446,"column":6},"end":{"line":446,"column":12}},"161":{"start":{"line":459,"column":6},"end":{"line":465,"column":7}},"162":{"start":{"line":460,"column":8},"end":{"line":460,"column":33}},"163":{"start":{"line":461,"column":13},"end":{"line":465,"column":7}},"164":{"start":{"line":464,"column":8},"end":{"line":464,"column":33}},"165":{"start":{"line":466,"column":6},"end":{"line":466,"column":12}},"166":{"start":{"line":489,"column":6},"end":{"line":495,"column":7}},"167":{"start":{"line":494,"column":8},"end":{"line":494,"column":32}},"168":{"start":{"line":496,"column":6},"end":{"line":496,"column":12}},"169":{"start":{"line":502,"column":2},"end":{"line":505,"column":3}},"170":{"start":{"line":503,"column":4},"end":{"line":503,"column":31}},"171":{"start":{"line":504,"column":4},"end":{"line":504,"column":37}},"172":{"start":{"line":513,"column":2},"end":{"line":518,"column":3}},"173":{"start":{"line":514,"column":4},"end":{"line":515,"column":86}},"174":{"start":{"line":516,"column":4},"end":{"line":516,"column":84}},"175":{"start":{"line":517,"column":4},"end":{"line":517,"column":47}},"176":{"start":{"line":521,"column":2},"end":{"line":530,"column":3}},"177":{"start":{"line":522,"column":4},"end":{"line":522,"column":72}},"178":{"start":{"line":523,"column":4},"end":{"line":527,"column":5}},"179":{"start":{"line":524,"column":6},"end":{"line":524,"column":34}},"180":{"start":{"line":526,"column":6},"end":{"line":526,"column":33}},"181":{"start":{"line":528,"column":9},"end":{"line":530,"column":3}},"182":{"start":{"line":529,"column":4},"end":{"line":529,"column":27}},"183":{"start":{"line":533,"column":2},"end":{"line":555,"column":3}},"184":{"start":{"line":534,"column":4},"end":{"line":540,"column":6}},"185":{"start":{"line":543,"column":4},"end":{"line":554,"column":5}},"186":{"start":{"line":544,"column":6},"end":{"line":544,"column":68}},"187":{"start":{"line":545,"column":6},"end":{"line":545,"column":97}},"188":{"start":{"line":551,"column":6},"end":{"line":551,"column":69}},"189":{"start":{"line":552,"column":6},"end":{"line":552,"column":24}},"190":{"start":{"line":553,"column":6},"end":{"line":553,"column":32}},"191":{"start":{"line":561,"column":0},"end":{"line":561,"column":25}},"192":{"start":{"line":563,"column":0},"end":{"line":563,"column":15}},"193":{"start":{"line":564,"column":0},"end":{"line":570,"column":2}},"194":{"start":{"line":565,"column":2},"end":{"line":568,"column":3}},"195":{"start":{"line":566,"column":4},"end":{"line":566,"column":23}},"196":{"start":{"line":567,"column":4},"end":{"line":567,"column":16}},"197":{"start":{"line":569,"column":2},"end":{"line":569,"column":19}}},"branchMap":{"1":{"line":1,"type":"cond-expr","locations":[{"start":{"line":1,"column":40},"end":{"line":1,"column":57}},{"start":{"line":1,"column":45},"end":{"line":1,"column":78}}]},"2":{"line":81,"type":"if","locations":[{"start":{"line":81,"column":4},"end":{"line":81,"column":4}},{"start":{"line":81,"column":4},"end":{"line":81,"column":4}}]},"3":{"line":110,"type":"if","locations":[{"start":{"line":110,"column":2},"end":{"line":110,"column":2}},{"start":{"line":110,"column":2},"end":{"line":110,"column":2}}]},"4":{"line":110,"type":"binary-expr","locations":[{"start":{"line":110,"column":7},"end":{"line":110,"column":11}},{"start":{"line":110,"column":15},"end":{"line":110,"column":38}},{"start":{"line":110,"column":43},"end":{"line":110,"column":48}}]},"5":{"line":111,"type":"if","locations":[{"start":{"line":111,"column":4},"end":{"line":111,"column":4}},{"start":{"line":111,"column":4},"end":{"line":111,"column":4}}]},"6":{"line":115,"type":"if","locations":[{"start":{"line":115,"column":6},"end":{"line":115,"column":6}},{"start":{"line":115,"column":6},"end":{"line":115,"column":6}}]},"7":{"line":115,"type":"binary-expr","locations":[{"start":{"line":115,"column":10},"end":{"line":115,"column":19}},{"start":{"line":115,"column":25},"end":{"line":115,"column":53}},{"start":{"line":115,"column":59},"end":{"line":115,"column":88}}]},"8":{"line":134,"type":"if","locations":[{"start":{"line":134,"column":2},"end":{"line":134,"column":2}},{"start":{"line":134,"column":2},"end":{"line":134,"column":2}}]},"9":{"line":198,"type":"if","locations":[{"start":{"line":198,"column":2},"end":{"line":198,"column":2}},{"start":{"line":198,"column":2},"end":{"line":198,"column":2}}]},"10":{"line":200,"type":"if","locations":[{"start":{"line":200,"column":4},"end":{"line":200,"column":4}},{"start":{"line":200,"column":4},"end":{"line":200,"column":4}}]},"11":{"line":212,"type":"if","locations":[{"start":{"line":212,"column":2},"end":{"line":212,"column":2}},{"start":{"line":212,"column":2},"end":{"line":212,"column":2}}]},"12":{"line":216,"type":"if","locations":[{"start":{"line":216,"column":2},"end":{"line":216,"column":2}},{"start":{"line":216,"column":2},"end":{"line":216,"column":2}}]},"13":{"line":224,"type":"if","locations":[{"start":{"line":224,"column":2},"end":{"line":224,"column":2}},{"start":{"line":224,"column":2},"end":{"line":224,"column":2}}]},"14":{"line":240,"type":"if","locations":[{"start":{"line":240,"column":2},"end":{"line":240,"column":2}},{"start":{"line":240,"column":2},"end":{"line":240,"column":2}}]},"15":{"line":251,"type":"if","locations":[{"start":{"line":251,"column":2},"end":{"line":251,"column":2}},{"start":{"line":251,"column":2},"end":{"line":251,"column":2}}]},"16":{"line":269,"type":"if","locations":[{"start":{"line":269,"column":2},"end":{"line":269,"column":2}},{"start":{"line":269,"column":2},"end":{"line":269,"column":2}}]},"17":{"line":269,"type":"binary-expr","locations":[{"start":{"line":269,"column":6},"end":{"line":269,"column":15}},{"start":{"line":269,"column":21},"end":{"line":269,"column":46}},{"start":{"line":269,"column":52},"end":{"line":269,"column":80}}]},"18":{"line":271,"type":"binary-expr","locations":[{"start":{"line":271,"column":22},"end":{"line":271,"column":37}},{"start":{"line":271,"column":41},"end":{"line":271,"column":43}}]},"19":{"line":330,"type":"binary-expr","locations":[{"start":{"line":330,"column":11},"end":{"line":330,"column":40}},{"start":{"line":330,"column":46},"end":{"line":330,"column":76}},{"start":{"line":330,"column":82},"end":{"line":330,"column":98}}]},"20":{"line":342,"type":"switch","locations":[{"start":{"line":343,"column":4},"end":{"line":343,"column":54}},{"start":{"line":344,"column":4},"end":{"line":344,"column":54}},{"start":{"line":345,"column":4},"end":{"line":345,"column":54}},{"start":{"line":346,"column":4},"end":{"line":346,"column":54}},{"start":{"line":347,"column":4},"end":{"line":347,"column":54}},{"start":{"line":348,"column":4},"end":{"line":348,"column":54}}]},"21":{"line":353,"type":"switch","locations":[{"start":{"line":359,"column":4},"end":{"line":371,"column":12}},{"start":{"line":382,"column":4},"end":{"line":392,"column":12}},{"start":{"line":401,"column":4},"end":{"line":411,"column":12}},{"start":{"line":422,"column":4},"end":{"line":430,"column":12}},{"start":{"line":438,"column":4},"end":{"line":446,"column":12}},{"start":{"line":458,"column":4},"end":{"line":466,"column":12}},{"start":{"line":488,"column":4},"end":{"line":496,"column":12}}]},"22":{"line":360,"type":"if","locations":[{"start":{"line":360,"column":6},"end":{"line":360,"column":6}},{"start":{"line":360,"column":6},"end":{"line":360,"column":6}}]},"23":{"line":362,"type":"if","locations":[{"start":{"line":362,"column":8},"end":{"line":362,"column":8}},{"start":{"line":362,"column":8},"end":{"line":362,"column":8}}]},"24":{"line":363,"type":"cond-expr","locations":[{"start":{"line":363,"column":35},"end":{"line":363,"column":54}},{"start":{"line":363,"column":57},"end":{"line":363,"column":77}}]},"25":{"line":366,"type":"if","locations":[{"start":{"line":366,"column":13},"end":{"line":366,"column":13}},{"start":{"line":366,"column":13},"end":{"line":366,"column":13}}]},"26":{"line":366,"type":"binary-expr","locations":[{"start":{"line":366,"column":17},"end":{"line":366,"column":24}},{"start":{"line":366,"column":28},"end":{"line":366,"column":38}}]},"27":{"line":383,"type":"if","locations":[{"start":{"line":383,"column":6},"end":{"line":383,"column":6}},{"start":{"line":383,"column":6},"end":{"line":383,"column":6}}]},"28":{"line":383,"type":"binary-expr","locations":[{"start":{"line":383,"column":10},"end":{"line":383,"column":17}},{"start":{"line":383,"column":21},"end":{"line":383,"column":28}}]},"29":{"line":385,"type":"if","locations":[{"start":{"line":385,"column":13},"end":{"line":385,"column":13}},{"start":{"line":385,"column":13},"end":{"line":385,"column":13}}]},"30":{"line":387,"type":"if","locations":[{"start":{"line":387,"column":13},"end":{"line":387,"column":13}},{"start":{"line":387,"column":13},"end":{"line":387,"column":13}}]},"31":{"line":387,"type":"binary-expr","locations":[{"start":{"line":387,"column":17},"end":{"line":387,"column":26}},{"start":{"line":387,"column":30},"end":{"line":387,"column":38}}]},"32":{"line":402,"type":"if","locations":[{"start":{"line":402,"column":6},"end":{"line":402,"column":6}},{"start":{"line":402,"column":6},"end":{"line":402,"column":6}}]},"33":{"line":404,"type":"if","locations":[{"start":{"line":404,"column":13},"end":{"line":404,"column":13}},{"start":{"line":404,"column":13},"end":{"line":404,"column":13}}]},"34":{"line":404,"type":"binary-expr","locations":[{"start":{"line":404,"column":17},"end":{"line":404,"column":26}},{"start":{"line":404,"column":30},"end":{"line":404,"column":37}}]},"35":{"line":406,"type":"if","locations":[{"start":{"line":406,"column":13},"end":{"line":406,"column":13}},{"start":{"line":406,"column":13},"end":{"line":406,"column":13}}]},"36":{"line":406,"type":"binary-expr","locations":[{"start":{"line":406,"column":17},"end":{"line":406,"column":24}},{"start":{"line":406,"column":28},"end":{"line":406,"column":36}}]},"37":{"line":423,"type":"if","locations":[{"start":{"line":423,"column":6},"end":{"line":423,"column":6}},{"start":{"line":423,"column":6},"end":{"line":423,"column":6}}]},"38":{"line":424,"type":"cond-expr","locations":[{"start":{"line":424,"column":33},"end":{"line":424,"column":52}},{"start":{"line":424,"column":55},"end":{"line":424,"column":75}}]},"39":{"line":425,"type":"if","locations":[{"start":{"line":425,"column":13},"end":{"line":425,"column":13}},{"start":{"line":425,"column":13},"end":{"line":425,"column":13}}]},"40":{"line":439,"type":"if","locations":[{"start":{"line":439,"column":6},"end":{"line":439,"column":6}},{"start":{"line":439,"column":6},"end":{"line":439,"column":6}}]},"41":{"line":439,"type":"binary-expr","locations":[{"start":{"line":439,"column":10},"end":{"line":439,"column":20}},{"start":{"line":439,"column":25},"end":{"line":439,"column":34}},{"start":{"line":439,"column":38},"end":{"line":439,"column":60}}]},"42":{"line":441,"type":"if","locations":[{"start":{"line":441,"column":13},"end":{"line":441,"column":13}},{"start":{"line":441,"column":13},"end":{"line":441,"column":13}}]},"43":{"line":441,"type":"binary-expr","locations":[{"start":{"line":441,"column":17},"end":{"line":441,"column":26}},{"start":{"line":441,"column":31},"end":{"line":441,"column":38}},{"start":{"line":441,"column":43},"end":{"line":441,"column":51}},{"start":{"line":441,"column":55},"end":{"line":441,"column":68}}]},"44":{"line":459,"type":"if","locations":[{"start":{"line":459,"column":6},"end":{"line":459,"column":6}},{"start":{"line":459,"column":6},"end":{"line":459,"column":6}}]},"45":{"line":459,"type":"binary-expr","locations":[{"start":{"line":459,"column":10},"end":{"line":459,"column":20}},{"start":{"line":459,"column":25},"end":{"line":459,"column":32}},{"start":{"line":459,"column":36},"end":{"line":459,"column":58}}]},"46":{"line":461,"type":"if","locations":[{"start":{"line":461,"column":13},"end":{"line":461,"column":13}},{"start":{"line":461,"column":13},"end":{"line":461,"column":13}}]},"47":{"line":461,"type":"binary-expr","locations":[{"start":{"line":461,"column":17},"end":{"line":461,"column":24}},{"start":{"line":461,"column":29},"end":{"line":461,"column":38}},{"start":{"line":461,"column":43},"end":{"line":461,"column":56}},{"start":{"line":461,"column":60},"end":{"line":461,"column":68}}]},"48":{"line":489,"type":"if","locations":[{"start":{"line":489,"column":6},"end":{"line":489,"column":6}},{"start":{"line":489,"column":6},"end":{"line":489,"column":6}}]},"49":{"line":489,"type":"binary-expr","locations":[{"start":{"line":489,"column":11},"end":{"line":489,"column":18}},{"start":{"line":489,"column":22},"end":{"line":489,"column":32}},{"start":{"line":490,"column":11},"end":{"line":490,"column":20}},{"start":{"line":490,"column":24},"end":{"line":490,"column":40}},{"start":{"line":491,"column":12},"end":{"line":491,"column":31}},{"start":{"line":491,"column":35},"end":{"line":491,"column":48}},{"start":{"line":491,"column":52},"end":{"line":491,"column":60}},{"start":{"line":491,"column":64},"end":{"line":491,"column":74}}]},"50":{"line":502,"type":"if","locations":[{"start":{"line":502,"column":2},"end":{"line":502,"column":2}},{"start":{"line":502,"column":2},"end":{"line":502,"column":2}}]},"51":{"line":502,"type":"binary-expr","locations":[{"start":{"line":502,"column":7},"end":{"line":502,"column":30}},{"start":{"line":502,"column":36},"end":{"line":502,"column":62}}]},"52":{"line":513,"type":"if","locations":[{"start":{"line":513,"column":2},"end":{"line":513,"column":2}},{"start":{"line":513,"column":2},"end":{"line":513,"column":2}}]},"53":{"line":513,"type":"binary-expr","locations":[{"start":{"line":513,"column":6},"end":{"line":513,"column":18}},{"start":{"line":513,"column":22},"end":{"line":513,"column":28}}]},"54":{"line":516,"type":"cond-expr","locations":[{"start":{"line":516,"column":46},"end":{"line":516,"column":62}},{"start":{"line":516,"column":65},"end":{"line":516,"column":82}}]},"55":{"line":521,"type":"if","locations":[{"start":{"line":521,"column":2},"end":{"line":521,"column":2}},{"start":{"line":521,"column":2},"end":{"line":521,"column":2}}]},"56":{"line":523,"type":"if","locations":[{"start":{"line":523,"column":4},"end":{"line":523,"column":4}},{"start":{"line":523,"column":4},"end":{"line":523,"column":4}}]},"57":{"line":528,"type":"if","locations":[{"start":{"line":528,"column":9},"end":{"line":528,"column":9}},{"start":{"line":528,"column":9},"end":{"line":528,"column":9}}]},"58":{"line":533,"type":"if","locations":[{"start":{"line":533,"column":2},"end":{"line":533,"column":2}},{"start":{"line":533,"column":2},"end":{"line":533,"column":2}}]},"59":{"line":543,"type":"if","locations":[{"start":{"line":543,"column":4},"end":{"line":543,"column":4}},{"start":{"line":543,"column":4},"end":{"line":543,"column":4}}]},"60":{"line":565,"type":"if","locations":[{"start":{"line":565,"column":2},"end":{"line":565,"column":2}},{"start":{"line":565,"column":2},"end":{"line":565,"column":2}}]}}},"/data/upstream/node-http2/lib/endpoint.js":{"path":"/data/upstream/node-http2/lib/endpoint.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":24,"11":24,"12":24,"13":24,"14":12,"15":12,"16":24,"17":24,"18":24,"19":1,"20":1,"21":1,"22":12,"23":12,"24":1,"25":12,"26":12,"27":11,"28":11,"29":241,"30":1,"31":1,"32":1,"33":240,"34":10,"35":10,"36":10,"37":10,"38":10,"39":1,"40":1,"41":24,"42":24,"43":12,"44":12,"45":12,"46":12,"47":12,"48":12,"49":24,"50":24,"51":24,"52":24,"53":24,"54":24,"55":24,"56":24,"57":1,"58":293,"59":293,"60":178,"61":1,"62":51,"63":1,"64":24,"65":1,"66":11,"67":1,"68":24,"69":24,"70":24,"71":24,"72":24,"73":1,"74":1,"75":1,"76":1,"77":2,"78":1,"79":1,"80":1,"81":6,"82":2,"83":2,"84":6},"b":{"1":[1,0],"2":[24,12],"3":[12,12],"4":[251,241],"5":[1,240],"6":[10,0],"7":[12,12],"8":[471,471],"9":[2,4]},"f":{"1":0,"2":24,"3":12,"4":12,"5":11,"6":24,"7":293,"8":51,"9":24,"10":11,"11":24,"12":1,"13":2,"14":6},"fnMap":{"1":{"name":"noop","line":1,"loc":{"start":{"line":1,"column":45},"end":{"line":1,"column":76}}},"2":{"name":"Endpoint","line":16,"loc":{"start":{"line":16,"column":0},"end":{"line":16,"column":39}}},"3":{"name":"_writePrelude","line":50,"loc":{"start":{"line":50,"column":35},"end":{"line":50,"column":60}}},"4":{"name":"_readPrelude","line":56,"loc":{"start":{"line":56,"column":34},"end":{"line":56,"column":58}}},"5":{"name":"_temporalWrite","line":61,"loc":{"start":{"line":61,"column":16},"end":{"line":61,"column":63}}},"6":{"name":"_initializeDataFlow","line":121,"loc":{"start":{"line":121,"column":41},"end":{"line":121,"column":86}}},"7":{"name":"_read","line":145,"loc":{"start":{"line":145,"column":27},"end":{"line":145,"column":44}}},"8":{"name":"_write","line":152,"loc":{"start":{"line":152,"column":28},"end":{"line":152,"column":67}}},"9":{"name":"_initializeManagement","line":159,"loc":{"start":{"line":159,"column":43},"end":{"line":159,"column":76}}},"10":{"name":"createStream","line":163,"loc":{"start":{"line":163,"column":34},"end":{"line":163,"column":58}}},"11":{"name":"_initializeErrorHandling","line":170,"loc":{"start":{"line":170,"column":46},"end":{"line":170,"column":82}}},"12":{"name":"_error","line":178,"loc":{"start":{"line":178,"column":28},"end":{"line":178,"column":62}}},"13":{"name":"close","line":183,"loc":{"start":{"line":183,"column":27},"end":{"line":183,"column":49}}},"14":{"name":"(anonymous_14)","line":193,"loc":{"start":{"line":193,"column":24},"end":{"line":193,"column":43}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":79}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":50}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":52}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":54}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":56}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":54}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":44}},"8":{"start":{"line":10,"column":0},"end":{"line":10,"column":28}},"9":{"start":{"line":16,"column":0},"end":{"line":41,"column":1}},"10":{"start":{"line":17,"column":2},"end":{"line":17,"column":20}},"11":{"start":{"line":20,"column":2},"end":{"line":20,"column":60}},"12":{"start":{"line":24,"column":2},"end":{"line":24,"column":51}},"13":{"start":{"line":25,"column":2},"end":{"line":29,"column":3}},"14":{"start":{"line":26,"column":4},"end":{"line":26,"column":25}},"15":{"start":{"line":28,"column":4},"end":{"line":28,"column":24}},"16":{"start":{"line":34,"column":2},"end":{"line":34,"column":43}},"17":{"start":{"line":37,"column":2},"end":{"line":37,"column":31}},"18":{"start":{"line":40,"column":2},"end":{"line":40,"column":34}},"19":{"start":{"line":42,"column":0},"end":{"line":42,"column":91}},"20":{"start":{"line":47,"column":0},"end":{"line":47,"column":68}},"21":{"start":{"line":50,"column":0},"end":{"line":53,"column":2}},"22":{"start":{"line":51,"column":2},"end":{"line":51,"column":67}},"23":{"start":{"line":52,"column":2},"end":{"line":52,"column":28}},"24":{"start":{"line":56,"column":0},"end":{"line":84,"column":2}},"25":{"start":{"line":58,"column":2},"end":{"line":58,"column":17}},"26":{"start":{"line":61,"column":2},"end":{"line":83,"column":4}},"27":{"start":{"line":64,"column":4},"end":{"line":64,"column":24}},"28":{"start":{"line":65,"column":4},"end":{"line":73,"column":5}},"29":{"start":{"line":66,"column":6},"end":{"line":71,"column":7}},"30":{"start":{"line":67,"column":8},"end":{"line":68,"column":76}},"31":{"start":{"line":69,"column":8},"end":{"line":69,"column":51}},"32":{"start":{"line":70,"column":8},"end":{"line":70,"column":15}},"33":{"start":{"line":72,"column":6},"end":{"line":72,"column":18}},"34":{"start":{"line":77,"column":4},"end":{"line":82,"column":5}},"35":{"start":{"line":78,"column":6},"end":{"line":78,"column":85}},"36":{"start":{"line":79,"column":6},"end":{"line":79,"column":25}},"37":{"start":{"line":80,"column":6},"end":{"line":80,"column":43}},"38":{"start":{"line":81,"column":6},"end":{"line":81,"column":41}},"39":{"start":{"line":119,"column":0},"end":{"line":119,"column":34}},"40":{"start":{"line":121,"column":0},"end":{"line":143,"column":2}},"41":{"start":{"line":122,"column":2},"end":{"line":122,"column":54}},"42":{"start":{"line":123,"column":2},"end":{"line":131,"column":3}},"43":{"start":{"line":124,"column":4},"end":{"line":124,"column":22}},"44":{"start":{"line":125,"column":4},"end":{"line":125,"column":31}},"45":{"start":{"line":126,"column":4},"end":{"line":126,"column":34}},"46":{"start":{"line":128,"column":4},"end":{"line":128,"column":22}},"47":{"start":{"line":129,"column":4},"end":{"line":129,"column":32}},"48":{"start":{"line":130,"column":4},"end":{"line":130,"column":33}},"49":{"start":{"line":133,"column":2},"end":{"line":133,"column":72}},"50":{"start":{"line":134,"column":2},"end":{"line":134,"column":74}},"51":{"start":{"line":135,"column":2},"end":{"line":135,"column":65}},"52":{"start":{"line":136,"column":2},"end":{"line":136,"column":69}},"53":{"start":{"line":137,"column":2},"end":{"line":137,"column":74}},"54":{"start":{"line":139,"column":2},"end":{"line":139,"column":65}},"55":{"start":{"line":140,"column":2},"end":{"line":140,"column":69}},"56":{"start":{"line":142,"column":2},"end":{"line":142,"column":57}},"57":{"start":{"line":145,"column":0},"end":{"line":150,"column":2}},"58":{"start":{"line":146,"column":2},"end":{"line":146,"column":31}},"59":{"start":{"line":147,"column":2},"end":{"line":149,"column":3}},"60":{"start":{"line":148,"column":4},"end":{"line":148,"column":34}},"61":{"start":{"line":152,"column":0},"end":{"line":154,"column":2}},"62":{"start":{"line":153,"column":2},"end":{"line":153,"column":50}},"63":{"start":{"line":159,"column":0},"end":{"line":161,"column":2}},"64":{"start":{"line":160,"column":2},"end":{"line":160,"column":64}},"65":{"start":{"line":163,"column":0},"end":{"line":165,"column":2}},"66":{"start":{"line":164,"column":2},"end":{"line":164,"column":41}},"67":{"start":{"line":170,"column":0},"end":{"line":176,"column":2}},"68":{"start":{"line":171,"column":2},"end":{"line":171,"column":69}},"69":{"start":{"line":172,"column":2},"end":{"line":172,"column":73}},"70":{"start":{"line":173,"column":2},"end":{"line":173,"column":69}},"71":{"start":{"line":174,"column":2},"end":{"line":174,"column":73}},"72":{"start":{"line":175,"column":2},"end":{"line":175,"column":69}},"73":{"start":{"line":178,"column":0},"end":{"line":181,"column":2}},"74":{"start":{"line":179,"column":2},"end":{"line":179,"column":95}},"75":{"start":{"line":180,"column":2},"end":{"line":180,"column":20}},"76":{"start":{"line":183,"column":0},"end":{"line":185,"column":2}},"77":{"start":{"line":184,"column":2},"end":{"line":184,"column":32}},"78":{"start":{"line":190,"column":0},"end":{"line":190,"column":25}},"79":{"start":{"line":192,"column":0},"end":{"line":192,"column":15}},"80":{"start":{"line":193,"column":0},"end":{"line":199,"column":2}},"81":{"start":{"line":194,"column":2},"end":{"line":197,"column":3}},"82":{"start":{"line":195,"column":4},"end":{"line":195,"column":25}},"83":{"start":{"line":196,"column":4},"end":{"line":196,"column":16}},"84":{"start":{"line":198,"column":2},"end":{"line":198,"column":21}}},"branchMap":{"1":{"line":1,"type":"cond-expr","locations":[{"start":{"line":1,"column":40},"end":{"line":1,"column":57}},{"start":{"line":1,"column":45},"end":{"line":1,"column":78}}]},"2":{"line":24,"type":"binary-expr","locations":[{"start":{"line":24,"column":10},"end":{"line":24,"column":27}},{"start":{"line":24,"column":32},"end":{"line":24,"column":49}}]},"3":{"line":25,"type":"if","locations":[{"start":{"line":25,"column":2},"end":{"line":25,"column":2}},{"start":{"line":25,"column":2},"end":{"line":25,"column":2}}]},"4":{"line":65,"type":"binary-expr","locations":[{"start":{"line":65,"column":10},"end":{"line":65,"column":40}},{"start":{"line":65,"column":44},"end":{"line":65,"column":76}}]},"5":{"line":66,"type":"if","locations":[{"start":{"line":66,"column":6},"end":{"line":66,"column":6}},{"start":{"line":66,"column":6},"end":{"line":66,"column":6}}]},"6":{"line":77,"type":"if","locations":[{"start":{"line":77,"column":4},"end":{"line":77,"column":4}},{"start":{"line":77,"column":4},"end":{"line":77,"column":4}}]},"7":{"line":123,"type":"if","locations":[{"start":{"line":123,"column":2},"end":{"line":123,"column":2}},{"start":{"line":123,"column":2},"end":{"line":123,"column":2}}]},"8":{"line":147,"type":"binary-expr","locations":[{"start":{"line":147,"column":9},"end":{"line":147,"column":19}},{"start":{"line":147,"column":24},"end":{"line":147,"column":55}}]},"9":{"line":194,"type":"if","locations":[{"start":{"line":194,"column":2},"end":{"line":194,"column":2}},{"start":{"line":194,"column":2},"end":{"line":194,"column":2}}]}}},"/data/upstream/node-http2/lib/framer.js":{"path":"/data/upstream/node-http2/lib/framer.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":25,"8":25,"9":25,"10":1,"11":1,"12":99,"13":99,"14":99,"15":99,"16":99,"17":99,"18":99,"19":202,"20":0,"21":202,"22":99,"23":1,"24":25,"25":25,"26":25,"27":25,"28":1,"29":1,"30":209,"31":209,"32":209,"33":209,"34":117,"35":1,"36":68,"37":68,"38":0,"39":68,"40":171,"41":171,"42":171,"43":171,"44":171,"45":92,"46":92,"47":92,"48":0,"49":171,"50":92,"51":92,"52":92,"53":0,"54":0,"55":92,"56":92,"57":0,"58":92,"59":68,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":110,"68":110,"69":110,"70":114,"71":110,"72":110,"73":110,"74":110,"75":110,"76":110,"77":105,"78":105,"79":105,"80":54,"81":110,"82":110,"83":110,"84":110,"85":1,"86":103,"87":103,"88":103,"89":103,"90":103,"91":103,"92":196,"93":103,"94":1,"95":1,"96":1,"97":1,"98":37,"99":1,"100":36,"101":1,"102":1,"103":1,"104":1,"105":29,"106":2,"107":2,"108":2,"109":2,"110":29,"111":1,"112":28,"113":2,"114":2,"115":26,"116":1,"117":1,"118":1,"119":1,"120":2,"121":2,"122":2,"123":1,"124":2,"125":1,"126":1,"127":1,"128":1,"129":2,"130":2,"131":2,"132":2,"133":2,"134":1,"135":2,"136":1,"137":1,"138":1,"139":1,"140":26,"141":26,"142":78,"143":34,"144":34,"145":34,"146":26,"147":26,"148":26,"149":34,"150":34,"151":26,"152":1,"153":22,"154":22,"155":0,"156":22,"157":28,"158":28,"159":28,"160":28,"161":28,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":4,"171":4,"172":4,"173":4,"174":4,"175":1,"176":4,"177":4,"178":1,"179":1,"180":1,"181":1,"182":2,"183":2,"184":1,"185":2,"186":0,"187":2,"188":1,"189":1,"190":1,"191":1,"192":4,"193":4,"194":4,"195":4,"196":4,"197":4,"198":4,"199":1,"200":3,"201":3,"202":1,"203":1,"204":1,"205":1,"206":2,"207":2,"208":2,"209":2,"210":1,"211":2,"212":1,"213":1,"214":1,"215":1,"216":2,"217":1,"218":2,"219":1,"220":1,"221":1,"222":1,"223":6,"224":0,"225":6,"226":4,"227":2,"228":2,"229":2,"230":2,"231":10,"232":2,"233":1,"234":0,"235":1,"236":1,"237":0,"238":2,"239":0,"240":2,"241":0,"242":2,"243":1,"244":0},"b":{"1":[1,0],"2":[25,1],"3":[0,202],"4":[25,1],"5":[117,92],"6":[0,68],"7":[92,79],"8":[171,157],"9":[92,0],"10":[92,79],"11":[171,92],"12":[92,0],"13":[0,92],"14":[54,51],"15":[110,26],"16":[2,27],"17":[2,2],"18":[2,26],"19":[2,2],"20":[34,44],"21":[22,12],"22":[0,22],"23":[28,0],"24":[20,8],"25":[4,4],"26":[2,2],"27":[0,2],"28":[4,4],"29":[4,4],"30":[2,2],"31":[0,6],"32":[4,2],"33":[1,1],"34":[0,1],"35":[0,1],"36":[0,2],"37":[2,2]},"f":{"1":0,"2":25,"3":99,"4":25,"5":209,"6":68,"7":110,"8":103,"9":37,"10":36,"11":29,"12":28,"13":2,"14":2,"15":2,"16":2,"17":26,"18":78,"19":22,"20":4,"21":4,"22":2,"23":2,"24":4,"25":3,"26":2,"27":2,"28":2,"29":2,"30":6,"31":10,"32":0,"33":0},"fnMap":{"1":{"name":"noop","line":5,"loc":{"start":{"line":5,"column":60},"end":{"line":5,"column":76}}},"2":{"name":"Serializer","line":25,"loc":{"start":{"line":25,"column":0},"end":{"line":25,"column":36}}},"3":{"name":"_transform","line":35,"loc":{"start":{"line":35,"column":34},"end":{"line":35,"column":77}}},"4":{"name":"Deserializer","line":67,"loc":{"start":{"line":67,"column":0},"end":{"line":67,"column":38}}},"5":{"name":"(anonymous_5)","line":80,"loc":{"start":{"line":80,"column":31},"end":{"line":80,"column":46}}},"6":{"name":"_transform","line":91,"loc":{"start":{"line":91,"column":36},"end":{"line":91,"column":79}}},"7":{"name":"writeCommonHeader","line":201,"loc":{"start":{"line":201,"column":26},"end":{"line":201,"column":69}}},"8":{"name":"readCommonHeader","line":230,"loc":{"start":{"line":230,"column":28},"end":{"line":230,"column":69}}},"9":{"name":"writeData","line":275,"loc":{"start":{"line":275,"column":18},"end":{"line":275,"column":53}}},"10":{"name":"readData","line":279,"loc":{"start":{"line":279,"column":20},"end":{"line":279,"column":53}}},"11":{"name":"writeHeadersPriority","line":318,"loc":{"start":{"line":318,"column":21},"end":{"line":318,"column":67}}},"12":{"name":"readHeadersPriority","line":328,"loc":{"start":{"line":328,"column":23},"end":{"line":328,"column":67}}},"13":{"name":"writePriority","line":358,"loc":{"start":{"line":358,"column":22},"end":{"line":358,"column":61}}},"14":{"name":"readPriority","line":364,"loc":{"start":{"line":364,"column":24},"end":{"line":364,"column":61}}},"15":{"name":"writeRstStream","line":390,"loc":{"start":{"line":390,"column":24},"end":{"line":390,"column":64}}},"16":{"name":"readRstStream","line":398,"loc":{"start":{"line":398,"column":26},"end":{"line":398,"column":64}}},"17":{"name":"writeSettings","line":434,"loc":{"start":{"line":434,"column":22},"end":{"line":434,"column":61}}},"18":{"name":"(anonymous_18)","line":436,"loc":{"start":{"line":436,"column":26},"end":{"line":436,"column":48}}},"19":{"name":"readSettings","line":454,"loc":{"start":{"line":454,"column":24},"end":{"line":454,"column":61}}},"20":{"name":"writePushPromise","line":519,"loc":{"start":{"line":519,"column":26},"end":{"line":519,"column":68}}},"21":{"name":"readPushPromise","line":527,"loc":{"start":{"line":527,"column":28},"end":{"line":527,"column":68}}},"22":{"name":"writePing","line":551,"loc":{"start":{"line":551,"column":18},"end":{"line":551,"column":53}}},"23":{"name":"readPing","line":556,"loc":{"start":{"line":556,"column":20},"end":{"line":556,"column":53}}},"24":{"name":"writeGoaway","line":591,"loc":{"start":{"line":591,"column":20},"end":{"line":591,"column":57}}},"25":{"name":"readGoaway","line":604,"loc":{"start":{"line":604,"column":22},"end":{"line":604,"column":57}}},"26":{"name":"writeWindowUpdate","line":627,"loc":{"start":{"line":627,"column":27},"end":{"line":627,"column":70}}},"27":{"name":"readWindowUpdate","line":634,"loc":{"start":{"line":634,"column":29},"end":{"line":634,"column":70}}},"28":{"name":"writeContinuation","line":660,"loc":{"start":{"line":660,"column":26},"end":{"line":660,"column":69}}},"29":{"name":"readContinuation","line":664,"loc":{"start":{"line":664,"column":28},"end":{"line":664,"column":69}}},"30":{"name":"(anonymous_30)","line":694,"loc":{"start":{"line":694,"column":28},"end":{"line":694,"column":44}}},"31":{"name":"(anonymous_31)","line":707,"loc":{"start":{"line":707,"column":71},"end":{"line":707,"column":86}}},"32":{"name":"(anonymous_32)","line":727,"loc":{"start":{"line":727,"column":57},"end":{"line":727,"column":72}}},"33":{"name":"(anonymous_33)","line":735,"loc":{"start":{"line":735,"column":27},"end":{"line":735,"column":42}}}},"statementMap":{"1":{"start":{"line":5,"column":0},"end":{"line":5,"column":79}},"2":{"start":{"line":7,"column":0},"end":{"line":7,"column":44}},"3":{"start":{"line":9,"column":0},"end":{"line":9,"column":32}},"4":{"start":{"line":10,"column":0},"end":{"line":10,"column":36}},"5":{"start":{"line":12,"column":0},"end":{"line":12,"column":50}},"6":{"start":{"line":25,"column":0},"end":{"line":29,"column":1}},"7":{"start":{"line":26,"column":2},"end":{"line":26,"column":53}},"8":{"start":{"line":27,"column":2},"end":{"line":27,"column":50}},"9":{"start":{"line":28,"column":2},"end":{"line":28,"column":45}},"10":{"start":{"line":30,"column":0},"end":{"line":30,"column":98}},"11":{"start":{"line":35,"column":0},"end":{"line":54,"column":2}},"12":{"start":{"line":36,"column":2},"end":{"line":36,"column":54}},"13":{"start":{"line":38,"column":2},"end":{"line":38,"column":72}},"14":{"start":{"line":40,"column":2},"end":{"line":40,"column":19}},"15":{"start":{"line":41,"column":2},"end":{"line":41,"column":41}},"16":{"start":{"line":42,"column":2},"end":{"line":42,"column":42}},"17":{"start":{"line":44,"column":2},"end":{"line":44,"column":76}},"18":{"start":{"line":46,"column":2},"end":{"line":51,"column":3}},"19":{"start":{"line":47,"column":4},"end":{"line":49,"column":5}},"20":{"start":{"line":48,"column":6},"end":{"line":48,"column":61}},"21":{"start":{"line":50,"column":4},"end":{"line":50,"column":26}},"22":{"start":{"line":53,"column":2},"end":{"line":53,"column":9}},"23":{"start":{"line":67,"column":0},"end":{"line":72,"column":1}},"24":{"start":{"line":68,"column":2},"end":{"line":68,"column":55}},"25":{"start":{"line":69,"column":2},"end":{"line":69,"column":50}},"26":{"start":{"line":70,"column":2},"end":{"line":70,"column":45}},"27":{"start":{"line":71,"column":2},"end":{"line":71,"column":33}},"28":{"start":{"line":73,"column":0},"end":{"line":73,"column":102}},"29":{"start":{"line":80,"column":0},"end":{"line":87,"column":2}},"30":{"start":{"line":81,"column":2},"end":{"line":81,"column":19}},"31":{"start":{"line":82,"column":2},"end":{"line":82,"column":34}},"32":{"start":{"line":83,"column":2},"end":{"line":83,"column":51}},"33":{"start":{"line":84,"column":2},"end":{"line":86,"column":3}},"34":{"start":{"line":85,"column":4},"end":{"line":85,"column":21}},"35":{"start":{"line":91,"column":0},"end":{"line":143,"column":2}},"36":{"start":{"line":92,"column":2},"end":{"line":92,"column":17}},"37":{"start":{"line":94,"column":2},"end":{"line":96,"column":3}},"38":{"start":{"line":95,"column":4},"end":{"line":95,"column":54}},"39":{"start":{"line":98,"column":2},"end":{"line":140,"column":3}},"40":{"start":{"line":101,"column":4},"end":{"line":101,"column":85}},"41":{"start":{"line":102,"column":4},"end":{"line":102,"column":68}},"42":{"start":{"line":103,"column":4},"end":{"line":103,"column":27}},"43":{"start":{"line":104,"column":4},"end":{"line":104,"column":21}},"44":{"start":{"line":111,"column":4},"end":{"line":118,"column":5}},"45":{"start":{"line":112,"column":6},"end":{"line":112,"column":59}},"46":{"start":{"line":113,"column":6},"end":{"line":117,"column":7}},"47":{"start":{"line":114,"column":8},"end":{"line":114,"column":39}},"48":{"start":{"line":116,"column":8},"end":{"line":116,"column":46}},"49":{"start":{"line":125,"column":4},"end":{"line":139,"column":5}},"50":{"start":{"line":126,"column":6},"end":{"line":137,"column":7}},"51":{"start":{"line":127,"column":8},"end":{"line":127,"column":78}},"52":{"start":{"line":128,"column":8},"end":{"line":134,"column":9}},"53":{"start":{"line":129,"column":10},"end":{"line":129,"column":58}},"54":{"start":{"line":130,"column":10},"end":{"line":130,"column":47}},"55":{"start":{"line":132,"column":10},"end":{"line":132,"column":68}},"56":{"start":{"line":133,"column":10},"end":{"line":133,"column":33}},"57":{"start":{"line":136,"column":8},"end":{"line":136,"column":78}},"58":{"start":{"line":138,"column":6},"end":{"line":138,"column":37}},"59":{"start":{"line":142,"column":2},"end":{"line":142,"column":9}},"60":{"start":{"line":190,"column":0},"end":{"line":190,"column":27}},"61":{"start":{"line":191,"column":0},"end":{"line":191,"column":29}},"62":{"start":{"line":193,"column":0},"end":{"line":193,"column":20}},"63":{"start":{"line":195,"column":0},"end":{"line":195,"column":20}},"64":{"start":{"line":197,"column":0},"end":{"line":197,"column":62}},"65":{"start":{"line":199,"column":0},"end":{"line":199,"column":32}},"66":{"start":{"line":201,"column":0},"end":{"line":228,"column":2}},"67":{"start":{"line":202,"column":2},"end":{"line":202,"column":52}},"68":{"start":{"line":204,"column":2},"end":{"line":204,"column":15}},"69":{"start":{"line":205,"column":2},"end":{"line":207,"column":3}},"70":{"start":{"line":206,"column":4},"end":{"line":206,"column":30}},"71":{"start":{"line":208,"column":2},"end":{"line":208,"column":55}},"72":{"start":{"line":209,"column":2},"end":{"line":209,"column":38}},"73":{"start":{"line":211,"column":2},"end":{"line":211,"column":46}},"74":{"start":{"line":212,"column":2},"end":{"line":212,"column":37}},"75":{"start":{"line":214,"column":2},"end":{"line":214,"column":19}},"76":{"start":{"line":215,"column":2},"end":{"line":221,"column":3}},"77":{"start":{"line":216,"column":4},"end":{"line":216,"column":56}},"78":{"start":{"line":217,"column":4},"end":{"line":217,"column":87}},"79":{"start":{"line":218,"column":4},"end":{"line":220,"column":5}},"80":{"start":{"line":219,"column":6},"end":{"line":219,"column":34}},"81":{"start":{"line":222,"column":2},"end":{"line":222,"column":39}},"82":{"start":{"line":224,"column":2},"end":{"line":224,"column":76}},"83":{"start":{"line":225,"column":2},"end":{"line":225,"column":51}},"84":{"start":{"line":227,"column":2},"end":{"line":227,"column":32}},"85":{"start":{"line":230,"column":0},"end":{"line":243,"column":2}},"86":{"start":{"line":231,"column":2},"end":{"line":231,"column":40}},"87":{"start":{"line":233,"column":2},"end":{"line":233,"column":47}},"88":{"start":{"line":235,"column":2},"end":{"line":235,"column":19}},"89":{"start":{"line":236,"column":2},"end":{"line":236,"column":37}},"90":{"start":{"line":237,"column":2},"end":{"line":237,"column":44}},"91":{"start":{"line":238,"column":2},"end":{"line":240,"column":3}},"92":{"start":{"line":239,"column":4},"end":{"line":239,"column":64}},"93":{"start":{"line":242,"column":2},"end":{"line":242,"column":53}},"94":{"start":{"line":269,"column":0},"end":{"line":269,"column":25}},"95":{"start":{"line":271,"column":0},"end":{"line":271,"column":45}},"96":{"start":{"line":273,"column":0},"end":{"line":273,"column":39}},"97":{"start":{"line":275,"column":0},"end":{"line":277,"column":2}},"98":{"start":{"line":276,"column":2},"end":{"line":276,"column":27}},"99":{"start":{"line":279,"column":0},"end":{"line":281,"column":2}},"100":{"start":{"line":280,"column":2},"end":{"line":280,"column":22}},"101":{"start":{"line":302,"column":0},"end":{"line":302,"column":28}},"102":{"start":{"line":304,"column":0},"end":{"line":304,"column":75}},"103":{"start":{"line":306,"column":0},"end":{"line":306,"column":65}},"104":{"start":{"line":318,"column":0},"end":{"line":326,"column":2}},"105":{"start":{"line":319,"column":2},"end":{"line":324,"column":3}},"106":{"start":{"line":320,"column":4},"end":{"line":320,"column":31}},"107":{"start":{"line":321,"column":4},"end":{"line":321,"column":68}},"108":{"start":{"line":322,"column":4},"end":{"line":322,"column":44}},"109":{"start":{"line":323,"column":4},"end":{"line":323,"column":25}},"110":{"start":{"line":325,"column":2},"end":{"line":325,"column":27}},"111":{"start":{"line":328,"column":0},"end":{"line":335,"column":2}},"112":{"start":{"line":329,"column":2},"end":{"line":334,"column":3}},"113":{"start":{"line":330,"column":4},"end":{"line":330,"column":57}},"114":{"start":{"line":331,"column":4},"end":{"line":331,"column":33}},"115":{"start":{"line":333,"column":4},"end":{"line":333,"column":24}},"116":{"start":{"line":344,"column":0},"end":{"line":344,"column":29}},"117":{"start":{"line":346,"column":0},"end":{"line":346,"column":25}},"118":{"start":{"line":348,"column":0},"end":{"line":348,"column":47}},"119":{"start":{"line":358,"column":0},"end":{"line":362,"column":2}},"120":{"start":{"line":359,"column":2},"end":{"line":359,"column":29}},"121":{"start":{"line":360,"column":2},"end":{"line":360,"column":42}},"122":{"start":{"line":361,"column":2},"end":{"line":361,"column":23}},"123":{"start":{"line":364,"column":0},"end":{"line":366,"column":2}},"124":{"start":{"line":365,"column":2},"end":{"line":365,"column":42}},"125":{"start":{"line":375,"column":0},"end":{"line":375,"column":31}},"126":{"start":{"line":377,"column":0},"end":{"line":377,"column":27}},"127":{"start":{"line":379,"column":0},"end":{"line":379,"column":46}},"128":{"start":{"line":390,"column":0},"end":{"line":396,"column":2}},"129":{"start":{"line":391,"column":2},"end":{"line":391,"column":29}},"130":{"start":{"line":392,"column":2},"end":{"line":392,"column":45}},"131":{"start":{"line":393,"column":2},"end":{"line":393,"column":46}},"132":{"start":{"line":394,"column":2},"end":{"line":394,"column":32}},"133":{"start":{"line":395,"column":2},"end":{"line":395,"column":23}},"134":{"start":{"line":398,"column":0},"end":{"line":400,"column":2}},"135":{"start":{"line":399,"column":2},"end":{"line":399,"column":51}},"136":{"start":{"line":410,"column":0},"end":{"line":410,"column":29}},"137":{"start":{"line":412,"column":0},"end":{"line":412,"column":25}},"138":{"start":{"line":414,"column":0},"end":{"line":414,"column":47}},"139":{"start":{"line":434,"column":0},"end":{"line":452,"column":2}},"140":{"start":{"line":435,"column":2},"end":{"line":435,"column":64}},"141":{"start":{"line":436,"column":2},"end":{"line":442,"column":5}},"142":{"start":{"line":437,"column":4},"end":{"line":441,"column":5}},"143":{"start":{"line":438,"column":6},"end":{"line":438,"column":65}},"144":{"start":{"line":439,"column":6},"end":{"line":439,"column":47}},"145":{"start":{"line":440,"column":6},"end":{"line":440,"column":78}},"146":{"start":{"line":443,"column":2},"end":{"line":443,"column":84}},"147":{"start":{"line":445,"column":2},"end":{"line":445,"column":47}},"148":{"start":{"line":446,"column":2},"end":{"line":449,"column":3}},"149":{"start":{"line":447,"column":4},"end":{"line":447,"column":57}},"150":{"start":{"line":448,"column":4},"end":{"line":448,"column":53}},"151":{"start":{"line":451,"column":2},"end":{"line":451,"column":23}},"152":{"start":{"line":454,"column":0},"end":{"line":470,"column":2}},"153":{"start":{"line":455,"column":2},"end":{"line":455,"column":22}},"154":{"start":{"line":457,"column":2},"end":{"line":459,"column":3}},"155":{"start":{"line":458,"column":4},"end":{"line":458,"column":36}},"156":{"start":{"line":460,"column":2},"end":{"line":469,"column":3}},"157":{"start":{"line":461,"column":4},"end":{"line":461,"column":49}},"158":{"start":{"line":462,"column":4},"end":{"line":462,"column":38}},"159":{"start":{"line":463,"column":4},"end":{"line":468,"column":5}},"160":{"start":{"line":464,"column":6},"end":{"line":464,"column":47}},"161":{"start":{"line":465,"column":6},"end":{"line":465,"column":81}},"162":{"start":{"line":473,"column":0},"end":{"line":473,"column":25}},"163":{"start":{"line":477,"column":0},"end":{"line":477,"column":78}},"164":{"start":{"line":481,"column":0},"end":{"line":481,"column":75}},"165":{"start":{"line":487,"column":0},"end":{"line":487,"column":76}},"166":{"start":{"line":501,"column":0},"end":{"line":501,"column":33}},"167":{"start":{"line":503,"column":0},"end":{"line":503,"column":47}},"168":{"start":{"line":505,"column":0},"end":{"line":505,"column":77}},"169":{"start":{"line":519,"column":0},"end":{"line":525,"column":2}},"170":{"start":{"line":520,"column":2},"end":{"line":520,"column":29}},"171":{"start":{"line":521,"column":2},"end":{"line":521,"column":80}},"172":{"start":{"line":522,"column":2},"end":{"line":522,"column":49}},"173":{"start":{"line":523,"column":2},"end":{"line":523,"column":23}},"174":{"start":{"line":524,"column":2},"end":{"line":524,"column":27}},"175":{"start":{"line":527,"column":0},"end":{"line":530,"column":2}},"176":{"start":{"line":528,"column":2},"end":{"line":528,"column":62}},"177":{"start":{"line":529,"column":2},"end":{"line":529,"column":31}},"178":{"start":{"line":543,"column":0},"end":{"line":543,"column":25}},"179":{"start":{"line":545,"column":0},"end":{"line":545,"column":27}},"180":{"start":{"line":547,"column":0},"end":{"line":547,"column":39}},"181":{"start":{"line":551,"column":0},"end":{"line":554,"column":2}},"182":{"start":{"line":552,"column":2},"end":{"line":552,"column":101}},"183":{"start":{"line":553,"column":2},"end":{"line":553,"column":27}},"184":{"start":{"line":556,"column":0},"end":{"line":561,"column":2}},"185":{"start":{"line":557,"column":2},"end":{"line":559,"column":3}},"186":{"start":{"line":558,"column":4},"end":{"line":558,"column":37}},"187":{"start":{"line":560,"column":2},"end":{"line":560,"column":22}},"188":{"start":{"line":570,"column":0},"end":{"line":570,"column":27}},"189":{"start":{"line":572,"column":0},"end":{"line":572,"column":23}},"190":{"start":{"line":574,"column":0},"end":{"line":574,"column":57}},"191":{"start":{"line":591,"column":0},"end":{"line":602,"column":2}},"192":{"start":{"line":592,"column":2},"end":{"line":592,"column":29}},"193":{"start":{"line":594,"column":2},"end":{"line":594,"column":72}},"194":{"start":{"line":595,"column":2},"end":{"line":595,"column":45}},"195":{"start":{"line":597,"column":2},"end":{"line":597,"column":45}},"196":{"start":{"line":598,"column":2},"end":{"line":598,"column":46}},"197":{"start":{"line":599,"column":2},"end":{"line":599,"column":32}},"198":{"start":{"line":601,"column":2},"end":{"line":601,"column":23}},"199":{"start":{"line":604,"column":0},"end":{"line":607,"column":2}},"200":{"start":{"line":605,"column":2},"end":{"line":605,"column":58}},"201":{"start":{"line":606,"column":2},"end":{"line":606,"column":51}},"202":{"start":{"line":616,"column":0},"end":{"line":616,"column":34}},"203":{"start":{"line":618,"column":0},"end":{"line":618,"column":30}},"204":{"start":{"line":620,"column":0},"end":{"line":620,"column":55}},"205":{"start":{"line":627,"column":0},"end":{"line":632,"column":2}},"206":{"start":{"line":628,"column":2},"end":{"line":628,"column":29}},"207":{"start":{"line":629,"column":2},"end":{"line":629,"column":72}},"208":{"start":{"line":630,"column":2},"end":{"line":630,"column":45}},"209":{"start":{"line":631,"column":2},"end":{"line":631,"column":23}},"210":{"start":{"line":634,"column":0},"end":{"line":636,"column":2}},"211":{"start":{"line":635,"column":2},"end":{"line":635,"column":58}},"212":{"start":{"line":654,"column":0},"end":{"line":654,"column":33}},"213":{"start":{"line":656,"column":0},"end":{"line":656,"column":68}},"214":{"start":{"line":658,"column":0},"end":{"line":658,"column":58}},"215":{"start":{"line":660,"column":0},"end":{"line":662,"column":2}},"216":{"start":{"line":661,"column":2},"end":{"line":661,"column":27}},"217":{"start":{"line":664,"column":0},"end":{"line":666,"column":2}},"218":{"start":{"line":665,"column":2},"end":{"line":665,"column":22}},"219":{"start":{"line":671,"column":0},"end":{"line":682,"column":2}},"220":{"start":{"line":689,"column":0},"end":{"line":689,"column":25}},"221":{"start":{"line":693,"column":0},"end":{"line":693,"column":21}},"222":{"start":{"line":694,"column":0},"end":{"line":732,"column":2}},"223":{"start":{"line":695,"column":2},"end":{"line":697,"column":3}},"224":{"start":{"line":696,"column":4},"end":{"line":696,"column":16}},"225":{"start":{"line":699,"column":2},"end":{"line":701,"column":3}},"226":{"start":{"line":700,"column":4},"end":{"line":700,"column":20}},"227":{"start":{"line":703,"column":2},"end":{"line":703,"column":26}},"228":{"start":{"line":704,"column":2},"end":{"line":704,"column":20}},"229":{"start":{"line":706,"column":2},"end":{"line":706,"column":34}},"230":{"start":{"line":707,"column":2},"end":{"line":709,"column":5}},"231":{"start":{"line":708,"column":4},"end":{"line":708,"column":33}},"232":{"start":{"line":711,"column":2},"end":{"line":721,"column":3}},"233":{"start":{"line":712,"column":4},"end":{"line":716,"column":5}},"234":{"start":{"line":713,"column":6},"end":{"line":713,"column":70}},"235":{"start":{"line":715,"column":6},"end":{"line":715,"column":49}},"236":{"start":{"line":718,"column":4},"end":{"line":720,"column":5}},"237":{"start":{"line":719,"column":6},"end":{"line":719,"column":42}},"238":{"start":{"line":723,"column":2},"end":{"line":725,"column":3}},"239":{"start":{"line":724,"column":4},"end":{"line":724,"column":68}},"240":{"start":{"line":727,"column":2},"end":{"line":729,"column":5}},"241":{"start":{"line":728,"column":4},"end":{"line":728,"column":38}},"242":{"start":{"line":731,"column":2},"end":{"line":731,"column":18}},"243":{"start":{"line":735,"column":0},"end":{"line":737,"column":2}},"244":{"start":{"line":736,"column":2},"end":{"line":736,"column":30}}},"branchMap":{"1":{"line":5,"type":"cond-expr","locations":[{"start":{"line":5,"column":40},"end":{"line":5,"column":57}},{"start":{"line":5,"column":60},"end":{"line":5,"column":78}}]},"2":{"line":27,"type":"binary-expr","locations":[{"start":{"line":27,"column":20},"end":{"line":27,"column":29}},{"start":{"line":27,"column":33},"end":{"line":27,"column":49}}]},"3":{"line":47,"type":"if","locations":[{"start":{"line":47,"column":4},"end":{"line":47,"column":4}},{"start":{"line":47,"column":4},"end":{"line":47,"column":4}}]},"4":{"line":69,"type":"binary-expr","locations":[{"start":{"line":69,"column":20},"end":{"line":69,"column":29}},{"start":{"line":69,"column":33},"end":{"line":69,"column":49}}]},"5":{"line":84,"type":"if","locations":[{"start":{"line":84,"column":2},"end":{"line":84,"column":2}},{"start":{"line":84,"column":2},"end":{"line":84,"column":2}}]},"6":{"line":94,"type":"if","locations":[{"start":{"line":94,"column":2},"end":{"line":94,"column":2}},{"start":{"line":94,"column":2},"end":{"line":94,"column":2}}]},"7":{"line":111,"type":"if","locations":[{"start":{"line":111,"column":4},"end":{"line":111,"column":4}},{"start":{"line":111,"column":4},"end":{"line":111,"column":4}}]},"8":{"line":111,"type":"binary-expr","locations":[{"start":{"line":111,"column":9},"end":{"line":111,"column":45}},{"start":{"line":111,"column":50},"end":{"line":111,"column":72}}]},"9":{"line":113,"type":"if","locations":[{"start":{"line":113,"column":6},"end":{"line":113,"column":6}},{"start":{"line":113,"column":6},"end":{"line":113,"column":6}}]},"10":{"line":125,"type":"if","locations":[{"start":{"line":125,"column":4},"end":{"line":125,"column":4}},{"start":{"line":125,"column":4},"end":{"line":125,"column":4}}]},"11":{"line":125,"type":"binary-expr","locations":[{"start":{"line":125,"column":9},"end":{"line":125,"column":45}},{"start":{"line":125,"column":50},"end":{"line":125,"column":73}}]},"12":{"line":126,"type":"if","locations":[{"start":{"line":126,"column":6},"end":{"line":126,"column":6}},{"start":{"line":126,"column":6},"end":{"line":126,"column":6}}]},"13":{"line":128,"type":"if","locations":[{"start":{"line":128,"column":8},"end":{"line":128,"column":8}},{"start":{"line":128,"column":8},"end":{"line":128,"column":8}}]},"14":{"line":218,"type":"if","locations":[{"start":{"line":218,"column":4},"end":{"line":218,"column":4}},{"start":{"line":218,"column":4},"end":{"line":218,"column":4}}]},"15":{"line":225,"type":"binary-expr","locations":[{"start":{"line":225,"column":29},"end":{"line":225,"column":41}},{"start":{"line":225,"column":45},"end":{"line":225,"column":46}}]},"16":{"line":319,"type":"if","locations":[{"start":{"line":319,"column":2},"end":{"line":319,"column":2}},{"start":{"line":319,"column":2},"end":{"line":319,"column":2}}]},"17":{"line":321,"type":"binary-expr","locations":[{"start":{"line":321,"column":12},"end":{"line":321,"column":31}},{"start":{"line":321,"column":37},"end":{"line":321,"column":65}}]},"18":{"line":329,"type":"if","locations":[{"start":{"line":329,"column":2},"end":{"line":329,"column":2}},{"start":{"line":329,"column":2},"end":{"line":329,"column":2}}]},"19":{"line":393,"type":"binary-expr","locations":[{"start":{"line":393,"column":10},"end":{"line":393,"column":19}},{"start":{"line":393,"column":25},"end":{"line":393,"column":43}}]},"20":{"line":437,"type":"if","locations":[{"start":{"line":437,"column":4},"end":{"line":437,"column":4}},{"start":{"line":437,"column":4},"end":{"line":437,"column":4}}]},"21":{"line":440,"type":"cond-expr","locations":[{"start":{"line":440,"column":52},"end":{"line":440,"column":66}},{"start":{"line":440,"column":69},"end":{"line":440,"column":74}}]},"22":{"line":457,"type":"if","locations":[{"start":{"line":457,"column":2},"end":{"line":457,"column":2}},{"start":{"line":457,"column":2},"end":{"line":457,"column":2}}]},"23":{"line":463,"type":"if","locations":[{"start":{"line":463,"column":4},"end":{"line":463,"column":4}},{"start":{"line":463,"column":4},"end":{"line":463,"column":4}}]},"24":{"line":465,"type":"cond-expr","locations":[{"start":{"line":465,"column":52},"end":{"line":465,"column":72}},{"start":{"line":465,"column":75},"end":{"line":465,"column":80}}]},"25":{"line":521,"type":"binary-expr","locations":[{"start":{"line":521,"column":10},"end":{"line":521,"column":36}},{"start":{"line":521,"column":42},"end":{"line":521,"column":77}}]},"26":{"line":552,"type":"binary-expr","locations":[{"start":{"line":552,"column":10},"end":{"line":552,"column":25}},{"start":{"line":552,"column":31},"end":{"line":552,"column":54}}]},"27":{"line":557,"type":"if","locations":[{"start":{"line":557,"column":2},"end":{"line":557,"column":2}},{"start":{"line":557,"column":2},"end":{"line":557,"column":2}}]},"28":{"line":594,"type":"binary-expr","locations":[{"start":{"line":594,"column":10},"end":{"line":594,"column":32}},{"start":{"line":594,"column":38},"end":{"line":594,"column":69}}]},"29":{"line":598,"type":"binary-expr","locations":[{"start":{"line":598,"column":10},"end":{"line":598,"column":19}},{"start":{"line":598,"column":25},"end":{"line":598,"column":43}}]},"30":{"line":629,"type":"binary-expr","locations":[{"start":{"line":629,"column":10},"end":{"line":629,"column":32}},{"start":{"line":629,"column":38},"end":{"line":629,"column":69}}]},"31":{"line":695,"type":"if","locations":[{"start":{"line":695,"column":2},"end":{"line":695,"column":2}},{"start":{"line":695,"column":2},"end":{"line":695,"column":2}}]},"32":{"line":699,"type":"if","locations":[{"start":{"line":699,"column":2},"end":{"line":699,"column":2}},{"start":{"line":699,"column":2},"end":{"line":699,"column":2}}]},"33":{"line":711,"type":"if","locations":[{"start":{"line":711,"column":2},"end":{"line":711,"column":2}},{"start":{"line":711,"column":2},"end":{"line":711,"column":2}}]},"34":{"line":712,"type":"if","locations":[{"start":{"line":712,"column":4},"end":{"line":712,"column":4}},{"start":{"line":712,"column":4},"end":{"line":712,"column":4}}]},"35":{"line":718,"type":"if","locations":[{"start":{"line":718,"column":4},"end":{"line":718,"column":4}},{"start":{"line":718,"column":4},"end":{"line":718,"column":4}}]},"36":{"line":723,"type":"if","locations":[{"start":{"line":723,"column":2},"end":{"line":723,"column":2}},{"start":{"line":723,"column":2},"end":{"line":723,"column":2}}]},"37":{"line":727,"type":"binary-expr","locations":[{"start":{"line":727,"column":31},"end":{"line":727,"column":42}},{"start":{"line":727,"column":46},"end":{"line":727,"column":48}}]}}},"/data/upstream/node-http2/lib/http.js":{"path":"/data/upstream/node-http2/lib/http.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":3,"19":1,"20":1,"21":1,"22":6,"23":1,"24":25,"25":25,"26":25,"27":25,"28":25,"29":25,"30":25,"31":25,"32":25,"33":25,"34":1,"35":1,"36":24,"37":168,"38":168,"39":0,"40":0,"41":0,"42":24,"43":73,"44":13,"45":24,"46":1,"47":2,"48":1,"49":1,"50":27,"51":27,"52":27,"53":27,"54":27,"55":1,"56":1,"57":13,"58":12,"59":1,"60":1,"61":31,"62":23,"63":2,"64":0,"65":2,"66":23,"67":8,"68":1,"69":4,"70":0,"71":4,"72":4,"73":0,"74":4,"75":1,"76":1,"77":0,"78":1,"79":1,"80":3,"81":1,"82":2,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":13,"91":13,"92":13,"93":13,"94":13,"95":13,"96":10,"97":10,"98":10,"99":10,"100":10,"101":10,"102":10,"103":9,"104":9,"105":0,"106":10,"107":3,"108":1,"109":1,"110":1,"111":2,"112":2,"113":11,"114":1,"115":1,"116":10,"117":10,"118":10,"119":10,"120":10,"121":10,"122":10,"123":10,"124":10,"125":10,"126":1,"127":0,"128":0,"129":0,"130":0,"131":1,"132":9,"133":9,"134":1,"135":4,"136":4,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":0,"144":1,"145":1,"146":1,"147":9,"148":0,"149":9,"150":1,"151":0,"152":0,"153":1,"154":10,"155":1,"156":1,"157":10,"158":9,"159":9,"160":9,"161":1,"162":12,"163":1,"164":1,"165":12,"166":12,"167":48,"168":48,"169":0,"170":0,"171":0,"172":48,"173":12,"174":12,"175":12,"176":12,"177":1,"178":12,"179":12,"180":12,"181":12,"182":12,"183":12,"184":1,"185":1,"186":12,"187":1,"188":11,"189":12,"190":1,"191":12,"192":12,"193":11,"194":12,"195":12,"196":12,"197":12,"198":1,"199":23,"200":11,"201":1,"202":11,"203":11,"204":1,"205":12,"206":12,"207":1,"208":10,"209":1,"210":2,"211":1,"212":2,"213":0,"214":2,"215":2,"216":2,"217":2,"218":1,"219":12,"220":0,"221":12,"222":1,"223":1,"224":1,"225":1,"226":1,"227":1,"228":4,"229":1,"230":7,"231":1,"232":4,"233":4,"234":4,"235":4,"236":4,"237":4,"238":4,"239":4,"240":1,"241":1,"242":12,"243":8,"244":12,"245":12,"246":12,"247":12,"248":12,"249":12,"250":1,"251":1,"252":11,"253":11,"254":7,"255":11,"256":11,"257":1,"258":1,"259":10,"260":1,"261":1,"262":1,"263":1,"264":9,"265":9,"266":9,"267":9,"268":9,"269":9,"270":9,"271":0,"272":9,"273":9,"274":1,"275":9,"276":9,"277":9,"278":9,"279":9,"280":9,"281":9,"282":9,"283":1,"284":1,"285":0,"286":8,"287":8,"288":8,"289":8,"290":0,"291":9,"292":9,"293":9,"294":9,"295":0,"296":11,"297":1,"298":7,"299":7,"300":7,"301":1,"302":9,"303":9,"304":9,"305":9,"306":9,"307":9,"308":9,"309":9,"310":1,"311":1,"312":1,"313":1,"314":1,"315":15,"316":15,"317":15,"318":1,"319":1,"320":11,"321":11,"322":11,"323":1,"324":11,"325":11,"326":11,"327":0,"328":11,"329":11,"330":11,"331":11,"332":11,"333":11,"334":11,"335":11,"336":11,"337":11,"338":11,"339":1,"340":4,"341":4,"342":4,"343":1,"344":0,"345":0,"346":0,"347":1,"348":40,"349":0,"350":40,"351":1,"352":3,"353":1,"354":2,"355":1,"356":1,"357":3,"358":1,"359":2,"360":1,"361":1,"362":3,"363":1,"364":2,"365":1,"366":1,"367":3,"368":1,"369":2,"370":1,"371":1,"372":1,"373":2,"374":2,"375":2,"376":2,"377":0,"378":1,"379":13,"380":1,"381":1,"382":12,"383":12,"384":0,"385":0,"386":0,"387":12,"388":12,"389":12,"390":12,"391":1,"392":2,"393":2,"394":2,"395":2,"396":2,"397":2,"398":2,"399":2,"400":2,"401":2,"402":1,"403":1,"404":0,"405":1,"406":0,"407":1},"b":{"1":[0,168],"2":[13,60],"3":[12,1],"4":[23,8],"5":[2,21],"6":[0,2],"7":[0,4],"8":[0,4],"9":[0,1],"10":[13,2],"11":[13,2],"12":[10,3],"13":[13,10,3],"14":[9,0],"15":[9,9],"16":[1,2],"17":[0,9],"18":[1,0],"19":[1,0],"20":[1,0],"21":[0,9],"22":[9,9],"23":[0,0],"24":[1,9],"25":[9,0],"26":[0,48],"27":[48,48],"28":[1,11],"29":[11,1],"30":[12,11],"31":[11,12],"32":[1,1],"33":[0,2],"34":[2,2],"35":[2,1,1],"36":[2,2,2],"37":[0,12],"38":[12,0],"39":[4,4],"40":[7,7],"41":[4,1],"42":[4,1],"43":[8,4],"44":[12,12],"45":[12,3],"46":[12,4,1],"47":[12,1],"48":[12,1],"49":[1,11],"50":[7,4],"51":[1,10],"52":[1,9],"53":[0,9],"54":[9,0],"55":[1,8],"56":[1,0],"57":[8,0],"58":[9,0],"59":[0,11],"60":[11,10],"61":[0,0],"62":[0,40],"63":[40,0],"64":[1,2],"65":[1,1],"66":[1,2],"67":[1,1],"68":[1,2],"69":[1,1],"70":[1,2],"71":[1,1],"72":[2,0],"73":[0,12],"74":[12,12]},"f":{"1":2,"2":3,"3":6,"4":25,"5":24,"6":2,"7":27,"8":13,"9":31,"10":4,"11":1,"12":3,"13":2,"14":13,"15":9,"16":10,"17":10,"18":0,"19":9,"20":4,"21":1,"22":1,"23":1,"24":9,"25":0,"26":10,"27":12,"28":12,"29":12,"30":12,"31":23,"32":11,"33":12,"34":10,"35":2,"36":12,"37":4,"38":7,"39":4,"40":12,"41":9,"42":9,"43":9,"44":7,"45":9,"46":1,"47":1,"48":15,"49":11,"50":4,"51":0,"52":40,"53":3,"54":3,"55":3,"56":3,"57":2,"58":13,"59":12,"60":2,"61":0,"62":0},"fnMap":{"1":{"name":"noop","line":161,"loc":{"start":{"line":161,"column":0},"end":{"line":161,"column":16}}},"2":{"name":"(anonymous_2)","line":170,"loc":{"start":{"line":170,"column":9},"end":{"line":170,"column":20}}},"3":{"name":"(anonymous_3)","line":176,"loc":{"start":{"line":176,"column":16},"end":{"line":176,"column":33}}},"4":{"name":"IncomingMessage","line":183,"loc":{"start":{"line":183,"column":0},"end":{"line":183,"column":33}}},"5":{"name":"_onHeaders","line":210,"loc":{"start":{"line":210,"column":39},"end":{"line":210,"column":68}}},"6":{"name":"_onTrailers","line":235,"loc":{"start":{"line":235,"column":40},"end":{"line":235,"column":71}}},"7":{"name":"OutgoingMessage","line":244,"loc":{"start":{"line":244,"column":0},"end":{"line":244,"column":27}}},"8":{"name":"_write","line":256,"loc":{"start":{"line":256,"column":35},"end":{"line":256,"column":78}}},"9":{"name":"_finish","line":264,"loc":{"start":{"line":264,"column":36},"end":{"line":264,"column":55}}},"10":{"name":"setHeader","line":279,"loc":{"start":{"line":279,"column":38},"end":{"line":279,"column":70}}},"11":{"name":"removeHeader","line":291,"loc":{"start":{"line":291,"column":41},"end":{"line":291,"column":69}}},"12":{"name":"getHeader","line":299,"loc":{"start":{"line":299,"column":38},"end":{"line":299,"column":63}}},"13":{"name":"addTrailers","line":303,"loc":{"start":{"line":303,"column":40},"end":{"line":303,"column":71}}},"14":{"name":"Server","line":321,"loc":{"start":{"line":321,"column":0},"end":{"line":321,"column":25}}},"15":{"name":"(anonymous_15)","line":338,"loc":{"start":{"line":338,"column":40},"end":{"line":338,"column":57}}},"16":{"name":"_start","line":366,"loc":{"start":{"line":366,"column":26},"end":{"line":366,"column":50}}},"17":{"name":"_onStream","line":377,"loc":{"start":{"line":377,"column":24},"end":{"line":377,"column":51}}},"18":{"name":"_fallback","line":389,"loc":{"start":{"line":389,"column":29},"end":{"line":389,"column":56}}},"19":{"name":"listen","line":405,"loc":{"start":{"line":405,"column":26},"end":{"line":405,"column":58}}},"20":{"name":"close","line":411,"loc":{"start":{"line":411,"column":25},"end":{"line":411,"column":50}}},"21":{"name":"setTimeout","line":416,"loc":{"start":{"line":416,"column":30},"end":{"line":416,"column":69}}},"22":{"name":"getTimeout","line":423,"loc":{"start":{"line":423,"column":7},"end":{"line":423,"column":29}}},"23":{"name":"setTimeout","line":430,"loc":{"start":{"line":430,"column":7},"end":{"line":430,"column":36}}},"24":{"name":"on","line":441,"loc":{"start":{"line":441,"column":22},"end":{"line":441,"column":51}}},"25":{"name":"addContext","line":450,"loc":{"start":{"line":450,"column":30},"end":{"line":450,"column":73}}},"26":{"name":"createServer","line":456,"loc":{"start":{"line":456,"column":0},"end":{"line":456,"column":48}}},"27":{"name":"IncomingRequest","line":474,"loc":{"start":{"line":474,"column":0},"end":{"line":474,"column":33}}},"28":{"name":"_onHeaders","line":483,"loc":{"start":{"line":483,"column":39},"end":{"line":483,"column":68}}},"29":{"name":"OutgoingResponse","line":525,"loc":{"start":{"line":525,"column":0},"end":{"line":525,"column":34}}},"30":{"name":"writeHead","line":538,"loc":{"start":{"line":538,"column":39},"end":{"line":538,"column":93}}},"31":{"name":"_implicitHeaders","line":562,"loc":{"start":{"line":562,"column":46},"end":{"line":562,"column":74}}},"32":{"name":"write","line":568,"loc":{"start":{"line":568,"column":35},"end":{"line":568,"column":52}}},"33":{"name":"end","line":573,"loc":{"start":{"line":573,"column":33},"end":{"line":573,"column":48}}},"34":{"name":"_onRequestHeaders","line":578,"loc":{"start":{"line":578,"column":47},"end":{"line":578,"column":83}}},"35":{"name":"push","line":582,"loc":{"start":{"line":582,"column":34},"end":{"line":582,"column":57}}},"36":{"name":"on","line":608,"loc":{"start":{"line":608,"column":32},"end":{"line":608,"column":61}}},"37":{"name":"request","line":624,"loc":{"start":{"line":624,"column":18},"end":{"line":624,"column":54}}},"38":{"name":"get","line":627,"loc":{"start":{"line":627,"column":14},"end":{"line":627,"column":46}}},"39":{"name":"Agent","line":634,"loc":{"start":{"line":634,"column":0},"end":{"line":634,"column":24}}},"40":{"name":"request","line":656,"loc":{"start":{"line":656,"column":26},"end":{"line":656,"column":62}}},"41":{"name":"(anonymous_41)","line":710,"loc":{"start":{"line":710,"column":30},"end":{"line":710,"column":47}}},"42":{"name":"negotiated","line":719,"loc":{"start":{"line":719,"column":4},"end":{"line":719,"column":26}}},"43":{"name":"(anonymous_43)","line":746,"loc":{"start":{"line":746,"column":19},"end":{"line":746,"column":38}}},"44":{"name":"get","line":759,"loc":{"start":{"line":759,"column":22},"end":{"line":759,"column":54}}},"45":{"name":"unbundleSocket","line":765,"loc":{"start":{"line":765,"column":0},"end":{"line":765,"column":32}}},"46":{"name":"getMaxSockets","line":777,"loc":{"start":{"line":777,"column":7},"end":{"line":777,"column":32}}},"47":{"name":"setMaxSockets","line":780,"loc":{"start":{"line":780,"column":7},"end":{"line":780,"column":37}}},"48":{"name":"OutgoingRequest","line":790,"loc":{"start":{"line":790,"column":0},"end":{"line":790,"column":27}}},"49":{"name":"_start","line":799,"loc":{"start":{"line":799,"column":35},"end":{"line":799,"column":68}}},"50":{"name":"_fallback","line":832,"loc":{"start":{"line":832,"column":38},"end":{"line":832,"column":66}}},"51":{"name":"setPriority","line":838,"loc":{"start":{"line":838,"column":40},"end":{"line":838,"column":71}}},"52":{"name":"on","line":848,"loc":{"start":{"line":848,"column":31},"end":{"line":848,"column":60}}},"53":{"name":"setNoDelay","line":857,"loc":{"start":{"line":857,"column":39},"end":{"line":857,"column":68}}},"54":{"name":"setSocketKeepAlive","line":865,"loc":{"start":{"line":865,"column":47},"end":{"line":865,"column":97}}},"55":{"name":"setTimeout","line":873,"loc":{"start":{"line":873,"column":39},"end":{"line":873,"column":78}}},"56":{"name":"abort","line":882,"loc":{"start":{"line":882,"column":34},"end":{"line":882,"column":51}}},"57":{"name":"_onPromise","line":893,"loc":{"start":{"line":893,"column":39},"end":{"line":893,"column":76}}},"58":{"name":"IncomingResponse","line":908,"loc":{"start":{"line":908,"column":0},"end":{"line":908,"column":34}}},"59":{"name":"_onHeaders","line":917,"loc":{"start":{"line":917,"column":40},"end":{"line":917,"column":69}}},"60":{"name":"IncomingPromise","line":943,"loc":{"start":{"line":943,"column":0},"end":{"line":943,"column":57}}},"61":{"name":"cancel","line":962,"loc":{"start":{"line":962,"column":35},"end":{"line":962,"column":53}}},"62":{"name":"setPriority","line":966,"loc":{"start":{"line":966,"column":40},"end":{"line":966,"column":71}}}},"statementMap":{"1":{"start":{"line":128,"column":0},"end":{"line":128,"column":25}},"2":{"start":{"line":129,"column":0},"end":{"line":129,"column":25}},"3":{"start":{"line":130,"column":0},"end":{"line":130,"column":27}},"4":{"start":{"line":131,"column":0},"end":{"line":131,"column":50}},"5":{"start":{"line":132,"column":0},"end":{"line":132,"column":48}},"6":{"start":{"line":133,"column":0},"end":{"line":133,"column":42}},"7":{"start":{"line":134,"column":0},"end":{"line":134,"column":42}},"8":{"start":{"line":135,"column":0},"end":{"line":135,"column":46}},"9":{"start":{"line":136,"column":0},"end":{"line":136,"column":27}},"10":{"start":{"line":137,"column":0},"end":{"line":137,"column":29}},"11":{"start":{"line":139,"column":0},"end":{"line":139,"column":41}},"12":{"start":{"line":140,"column":0},"end":{"line":140,"column":42}},"13":{"start":{"line":141,"column":0},"end":{"line":141,"column":42}},"14":{"start":{"line":143,"column":0},"end":{"line":151,"column":2}},"15":{"start":{"line":155,"column":0},"end":{"line":155,"column":45}},"16":{"start":{"line":161,"column":0},"end":{"line":161,"column":18}},"17":{"start":{"line":162,"column":0},"end":{"line":171,"column":2}},"18":{"start":{"line":170,"column":22},"end":{"line":170,"column":34}},"19":{"start":{"line":174,"column":0},"end":{"line":174,"column":25}},"20":{"start":{"line":175,"column":0},"end":{"line":175,"column":95}},"21":{"start":{"line":176,"column":0},"end":{"line":178,"column":3}},"22":{"start":{"line":177,"column":2},"end":{"line":177,"column":65}},"23":{"start":{"line":183,"column":0},"end":{"line":203,"column":1}},"24":{"start":{"line":185,"column":2},"end":{"line":185,"column":25}},"25":{"start":{"line":186,"column":2},"end":{"line":186,"column":20}},"26":{"start":{"line":187,"column":2},"end":{"line":187,"column":37}},"27":{"start":{"line":189,"column":2},"end":{"line":189,"column":55}},"28":{"start":{"line":193,"column":2},"end":{"line":193,"column":27}},"29":{"start":{"line":194,"column":2},"end":{"line":194,"column":28}},"30":{"start":{"line":195,"column":2},"end":{"line":195,"column":28}},"31":{"start":{"line":198,"column":2},"end":{"line":198,"column":20}},"32":{"start":{"line":199,"column":2},"end":{"line":199,"column":28}},"33":{"start":{"line":202,"column":2},"end":{"line":202,"column":53}},"34":{"start":{"line":204,"column":0},"end":{"line":204,"column":110}},"35":{"start":{"line":210,"column":0},"end":{"line":233,"column":2}},"36":{"start":{"line":215,"column":2},"end":{"line":222,"column":3}},"37":{"start":{"line":216,"column":4},"end":{"line":216,"column":35}},"38":{"start":{"line":217,"column":4},"end":{"line":221,"column":5}},"39":{"start":{"line":218,"column":6},"end":{"line":218,"column":84}},"40":{"start":{"line":219,"column":6},"end":{"line":219,"column":50}},"41":{"start":{"line":220,"column":6},"end":{"line":220,"column":13}},"42":{"start":{"line":225,"column":2},"end":{"line":229,"column":3}},"43":{"start":{"line":226,"column":4},"end":{"line":228,"column":5}},"44":{"start":{"line":227,"column":6},"end":{"line":227,"column":41}},"45":{"start":{"line":232,"column":2},"end":{"line":232,"column":59}},"46":{"start":{"line":235,"column":0},"end":{"line":237,"column":2}},"47":{"start":{"line":236,"column":2},"end":{"line":236,"column":27}},"48":{"start":{"line":239,"column":0},"end":{"line":239,"column":44}},"49":{"start":{"line":244,"column":0},"end":{"line":253,"column":1}},"50":{"start":{"line":246,"column":2},"end":{"line":246,"column":22}},"51":{"start":{"line":248,"column":2},"end":{"line":248,"column":21}},"52":{"start":{"line":249,"column":2},"end":{"line":249,"column":29}},"53":{"start":{"line":250,"column":2},"end":{"line":250,"column":27}},"54":{"start":{"line":252,"column":2},"end":{"line":252,"column":45}},"55":{"start":{"line":254,"column":0},"end":{"line":254,"column":107}},"56":{"start":{"line":256,"column":0},"end":{"line":262,"column":2}},"57":{"start":{"line":257,"column":2},"end":{"line":261,"column":3}},"58":{"start":{"line":258,"column":4},"end":{"line":258,"column":49}},"59":{"start":{"line":260,"column":4},"end":{"line":260,"column":75}},"60":{"start":{"line":264,"column":0},"end":{"line":277,"column":2}},"61":{"start":{"line":265,"column":2},"end":{"line":276,"column":3}},"62":{"start":{"line":266,"column":4},"end":{"line":272,"column":5}},"63":{"start":{"line":267,"column":6},"end":{"line":271,"column":7}},"64":{"start":{"line":268,"column":8},"end":{"line":268,"column":49}},"65":{"start":{"line":270,"column":8},"end":{"line":270,"column":44}},"66":{"start":{"line":273,"column":4},"end":{"line":273,"column":22}},"67":{"start":{"line":275,"column":4},"end":{"line":275,"column":49}},"68":{"start":{"line":279,"column":0},"end":{"line":289,"column":2}},"69":{"start":{"line":280,"column":2},"end":{"line":288,"column":3}},"70":{"start":{"line":281,"column":4},"end":{"line":281,"column":63}},"71":{"start":{"line":283,"column":4},"end":{"line":283,"column":30}},"72":{"start":{"line":284,"column":4},"end":{"line":286,"column":5}},"73":{"start":{"line":285,"column":6},"end":{"line":285,"column":63}},"74":{"start":{"line":287,"column":4},"end":{"line":287,"column":32}},"75":{"start":{"line":291,"column":0},"end":{"line":297,"column":2}},"76":{"start":{"line":292,"column":2},"end":{"line":296,"column":3}},"77":{"start":{"line":293,"column":4},"end":{"line":293,"column":66}},"78":{"start":{"line":295,"column":4},"end":{"line":295,"column":45}},"79":{"start":{"line":299,"column":0},"end":{"line":301,"column":2}},"80":{"start":{"line":300,"column":2},"end":{"line":300,"column":43}},"81":{"start":{"line":303,"column":0},"end":{"line":305,"column":2}},"82":{"start":{"line":304,"column":2},"end":{"line":304,"column":28}},"83":{"start":{"line":307,"column":0},"end":{"line":307,"column":44}},"84":{"start":{"line":312,"column":0},"end":{"line":312,"column":36}},"85":{"start":{"line":313,"column":0},"end":{"line":313,"column":24}},"86":{"start":{"line":314,"column":0},"end":{"line":314,"column":42}},"87":{"start":{"line":315,"column":0},"end":{"line":315,"column":44}},"88":{"start":{"line":316,"column":0},"end":{"line":316,"column":42}},"89":{"start":{"line":321,"column":0},"end":{"line":362,"column":1}},"90":{"start":{"line":322,"column":2},"end":{"line":322,"column":26}},"91":{"start":{"line":324,"column":2},"end":{"line":324,"column":74}},"92":{"start":{"line":325,"column":2},"end":{"line":325,"column":36}},"93":{"start":{"line":327,"column":2},"end":{"line":327,"column":37}},"94":{"start":{"line":328,"column":2},"end":{"line":328,"column":43}},"95":{"start":{"line":331,"column":2},"end":{"line":359,"column":3}},"96":{"start":{"line":332,"column":4},"end":{"line":332,"column":58}},"97":{"start":{"line":333,"column":4},"end":{"line":333,"column":23}},"98":{"start":{"line":334,"column":4},"end":{"line":334,"column":72}},"99":{"start":{"line":335,"column":4},"end":{"line":335,"column":47}},"100":{"start":{"line":336,"column":4},"end":{"line":336,"column":79}},"101":{"start":{"line":337,"column":4},"end":{"line":337,"column":56}},"102":{"start":{"line":338,"column":4},"end":{"line":344,"column":7}},"103":{"start":{"line":339,"column":6},"end":{"line":343,"column":7}},"104":{"start":{"line":340,"column":8},"end":{"line":340,"column":22}},"105":{"start":{"line":342,"column":8},"end":{"line":342,"column":25}},"106":{"start":{"line":345,"column":4},"end":{"line":345,"column":64}},"107":{"start":{"line":349,"column":7},"end":{"line":359,"column":3}},"108":{"start":{"line":350,"column":4},"end":{"line":350,"column":60}},"109":{"start":{"line":351,"column":4},"end":{"line":351,"column":25}},"110":{"start":{"line":352,"column":4},"end":{"line":352,"column":43}},"111":{"start":{"line":357,"column":4},"end":{"line":357,"column":81}},"112":{"start":{"line":358,"column":4},"end":{"line":358,"column":95}},"113":{"start":{"line":361,"column":2},"end":{"line":361,"column":58}},"114":{"start":{"line":363,"column":0},"end":{"line":363,"column":93}},"115":{"start":{"line":366,"column":0},"end":{"line":387,"column":2}},"116":{"start":{"line":367,"column":2},"end":{"line":367,"column":67}},"117":{"start":{"line":369,"column":2},"end":{"line":372,"column":54}},"118":{"start":{"line":374,"column":2},"end":{"line":374,"column":39}},"119":{"start":{"line":376,"column":2},"end":{"line":376,"column":18}},"120":{"start":{"line":377,"column":2},"end":{"line":382,"column":5}},"121":{"start":{"line":378,"column":4},"end":{"line":378,"column":48}},"122":{"start":{"line":379,"column":4},"end":{"line":379,"column":46}},"123":{"start":{"line":381,"column":4},"end":{"line":381,"column":78}},"124":{"start":{"line":384,"column":2},"end":{"line":384,"column":60}},"125":{"start":{"line":386,"column":2},"end":{"line":386,"column":44}},"126":{"start":{"line":389,"column":0},"end":{"line":400,"column":2}},"127":{"start":{"line":390,"column":2},"end":{"line":393,"column":52}},"128":{"start":{"line":395,"column":2},"end":{"line":397,"column":3}},"129":{"start":{"line":396,"column":4},"end":{"line":396,"column":64}},"130":{"start":{"line":399,"column":2},"end":{"line":399,"column":34}},"131":{"start":{"line":405,"column":0},"end":{"line":409,"column":2}},"132":{"start":{"line":406,"column":2},"end":{"line":407,"column":55}},"133":{"start":{"line":408,"column":2},"end":{"line":408,"column":53}},"134":{"start":{"line":411,"column":0},"end":{"line":414,"column":2}},"135":{"start":{"line":412,"column":2},"end":{"line":412,"column":35}},"136":{"start":{"line":413,"column":2},"end":{"line":413,"column":31}},"137":{"start":{"line":416,"column":0},"end":{"line":420,"column":2}},"138":{"start":{"line":417,"column":2},"end":{"line":419,"column":3}},"139":{"start":{"line":418,"column":4},"end":{"line":418,"column":47}},"140":{"start":{"line":422,"column":0},"end":{"line":435,"column":3}},"141":{"start":{"line":424,"column":4},"end":{"line":428,"column":5}},"142":{"start":{"line":425,"column":6},"end":{"line":425,"column":34}},"143":{"start":{"line":427,"column":6},"end":{"line":427,"column":23}},"144":{"start":{"line":431,"column":4},"end":{"line":433,"column":5}},"145":{"start":{"line":432,"column":6},"end":{"line":432,"column":37}},"146":{"start":{"line":441,"column":0},"end":{"line":447,"column":2}},"147":{"start":{"line":442,"column":2},"end":{"line":446,"column":3}},"148":{"start":{"line":443,"column":4},"end":{"line":443,"column":48}},"149":{"start":{"line":445,"column":4},"end":{"line":445,"column":58}},"150":{"start":{"line":450,"column":0},"end":{"line":454,"column":2}},"151":{"start":{"line":451,"column":2},"end":{"line":453,"column":3}},"152":{"start":{"line":452,"column":4},"end":{"line":452,"column":51}},"153":{"start":{"line":456,"column":0},"end":{"line":469,"column":1}},"154":{"start":{"line":457,"column":2},"end":{"line":460,"column":3}},"155":{"start":{"line":458,"column":4},"end":{"line":458,"column":30}},"156":{"start":{"line":459,"column":4},"end":{"line":459,"column":24}},"157":{"start":{"line":462,"column":2},"end":{"line":462,"column":35}},"158":{"start":{"line":464,"column":2},"end":{"line":466,"column":3}},"159":{"start":{"line":465,"column":4},"end":{"line":465,"column":42}},"160":{"start":{"line":468,"column":2},"end":{"line":468,"column":16}},"161":{"start":{"line":474,"column":0},"end":{"line":476,"column":1}},"162":{"start":{"line":475,"column":2},"end":{"line":475,"column":37}},"163":{"start":{"line":477,"column":0},"end":{"line":477,"column":114}},"164":{"start":{"line":483,"column":0},"end":{"line":520,"column":2}},"165":{"start":{"line":494,"column":2},"end":{"line":499,"column":4}},"166":{"start":{"line":500,"column":2},"end":{"line":508,"column":3}},"167":{"start":{"line":501,"column":4},"end":{"line":501,"column":30}},"168":{"start":{"line":502,"column":4},"end":{"line":506,"column":5}},"169":{"start":{"line":503,"column":6},"end":{"line":503,"column":94}},"170":{"start":{"line":504,"column":6},"end":{"line":504,"column":50}},"171":{"start":{"line":505,"column":6},"end":{"line":505,"column":13}},"172":{"start":{"line":507,"column":4},"end":{"line":507,"column":32}},"173":{"start":{"line":511,"column":2},"end":{"line":511,"column":32}},"174":{"start":{"line":514,"column":2},"end":{"line":514,"column":59}},"175":{"start":{"line":517,"column":2},"end":{"line":518,"column":80}},"176":{"start":{"line":519,"column":2},"end":{"line":519,"column":21}},"177":{"start":{"line":525,"column":0},"end":{"line":535,"column":1}},"178":{"start":{"line":526,"column":2},"end":{"line":526,"column":29}},"179":{"start":{"line":528,"column":2},"end":{"line":528,"column":55}},"180":{"start":{"line":530,"column":2},"end":{"line":530,"column":23}},"181":{"start":{"line":531,"column":2},"end":{"line":531,"column":24}},"182":{"start":{"line":532,"column":2},"end":{"line":532,"column":23}},"183":{"start":{"line":534,"column":2},"end":{"line":534,"column":65}},"184":{"start":{"line":536,"column":0},"end":{"line":536,"column":116}},"185":{"start":{"line":538,"column":0},"end":{"line":560,"column":2}},"186":{"start":{"line":539,"column":2},"end":{"line":543,"column":3}},"187":{"start":{"line":540,"column":4},"end":{"line":540,"column":93}},"188":{"start":{"line":542,"column":4},"end":{"line":542,"column":27}},"189":{"start":{"line":545,"column":2},"end":{"line":547,"column":3}},"190":{"start":{"line":546,"column":4},"end":{"line":546,"column":40}},"191":{"start":{"line":548,"column":2},"end":{"line":548,"column":26}},"192":{"start":{"line":550,"column":2},"end":{"line":552,"column":3}},"193":{"start":{"line":551,"column":4},"end":{"line":551,"column":46}},"194":{"start":{"line":554,"column":2},"end":{"line":554,"column":92}},"195":{"start":{"line":556,"column":2},"end":{"line":556,"column":52}},"196":{"start":{"line":558,"column":2},"end":{"line":558,"column":31}},"197":{"start":{"line":559,"column":2},"end":{"line":559,"column":26}},"198":{"start":{"line":562,"column":0},"end":{"line":566,"column":2}},"199":{"start":{"line":563,"column":2},"end":{"line":565,"column":3}},"200":{"start":{"line":564,"column":4},"end":{"line":564,"column":36}},"201":{"start":{"line":568,"column":0},"end":{"line":571,"column":2}},"202":{"start":{"line":569,"column":2},"end":{"line":569,"column":26}},"203":{"start":{"line":570,"column":2},"end":{"line":570,"column":64}},"204":{"start":{"line":573,"column":0},"end":{"line":576,"column":2}},"205":{"start":{"line":574,"column":2},"end":{"line":574,"column":26}},"206":{"start":{"line":575,"column":2},"end":{"line":575,"column":62}},"207":{"start":{"line":578,"column":0},"end":{"line":580,"column":2}},"208":{"start":{"line":579,"column":2},"end":{"line":579,"column":33}},"209":{"start":{"line":582,"column":0},"end":{"line":604,"column":2}},"210":{"start":{"line":583,"column":2},"end":{"line":585,"column":3}},"211":{"start":{"line":584,"column":4},"end":{"line":584,"column":33}},"212":{"start":{"line":587,"column":2},"end":{"line":589,"column":3}},"213":{"start":{"line":588,"column":4},"end":{"line":588,"column":51}},"214":{"start":{"line":591,"column":2},"end":{"line":596,"column":22}},"215":{"start":{"line":598,"column":2},"end":{"line":599,"column":96}},"216":{"start":{"line":601,"column":2},"end":{"line":601,"column":48}},"217":{"start":{"line":603,"column":2},"end":{"line":603,"column":42}},"218":{"start":{"line":608,"column":0},"end":{"line":614,"column":2}},"219":{"start":{"line":609,"column":2},"end":{"line":613,"column":3}},"220":{"start":{"line":610,"column":4},"end":{"line":610,"column":48}},"221":{"start":{"line":612,"column":4},"end":{"line":612,"column":61}},"222":{"start":{"line":619,"column":0},"end":{"line":619,"column":40}},"223":{"start":{"line":620,"column":0},"end":{"line":620,"column":42}},"224":{"start":{"line":621,"column":0},"end":{"line":621,"column":44}},"225":{"start":{"line":622,"column":0},"end":{"line":622,"column":22}},"226":{"start":{"line":623,"column":0},"end":{"line":623,"column":32}},"227":{"start":{"line":624,"column":0},"end":{"line":626,"column":2}},"228":{"start":{"line":625,"column":2},"end":{"line":625,"column":75}},"229":{"start":{"line":627,"column":0},"end":{"line":629,"column":2}},"230":{"start":{"line":628,"column":2},"end":{"line":628,"column":71}},"231":{"start":{"line":634,"column":0},"end":{"line":653,"column":1}},"232":{"start":{"line":635,"column":2},"end":{"line":635,"column":26}},"233":{"start":{"line":637,"column":2},"end":{"line":637,"column":26}},"234":{"start":{"line":639,"column":2},"end":{"line":639,"column":36}},"235":{"start":{"line":640,"column":2},"end":{"line":640,"column":74}},"236":{"start":{"line":641,"column":2},"end":{"line":641,"column":22}},"237":{"start":{"line":647,"column":2},"end":{"line":649,"column":5}},"238":{"start":{"line":651,"column":2},"end":{"line":651,"column":42}},"239":{"start":{"line":652,"column":2},"end":{"line":652,"column":44}},"240":{"start":{"line":654,"column":0},"end":{"line":654,"column":91}},"241":{"start":{"line":656,"column":0},"end":{"line":757,"column":2}},"242":{"start":{"line":657,"column":2},"end":{"line":659,"column":3}},"243":{"start":{"line":658,"column":4},"end":{"line":658,"column":33}},"244":{"start":{"line":661,"column":2},"end":{"line":661,"column":59}},"245":{"start":{"line":662,"column":2},"end":{"line":662,"column":50}},"246":{"start":{"line":663,"column":2},"end":{"line":663,"column":65}},"247":{"start":{"line":664,"column":2},"end":{"line":664,"column":37}},"248":{"start":{"line":665,"column":2},"end":{"line":665,"column":37}},"249":{"start":{"line":667,"column":2},"end":{"line":670,"column":3}},"250":{"start":{"line":668,"column":4},"end":{"line":668,"column":85}},"251":{"start":{"line":669,"column":4},"end":{"line":669,"column":70}},"252":{"start":{"line":672,"column":2},"end":{"line":672,"column":47}},"253":{"start":{"line":674,"column":2},"end":{"line":676,"column":3}},"254":{"start":{"line":675,"column":4},"end":{"line":675,"column":37}},"255":{"start":{"line":678,"column":2},"end":{"line":682,"column":14}},"256":{"start":{"line":685,"column":2},"end":{"line":754,"column":3}},"257":{"start":{"line":686,"column":4},"end":{"line":686,"column":39}},"258":{"start":{"line":687,"column":4},"end":{"line":687,"column":53}},"259":{"start":{"line":691,"column":7},"end":{"line":754,"column":3}},"260":{"start":{"line":692,"column":4},"end":{"line":692,"column":65}},"261":{"start":{"line":693,"column":4},"end":{"line":697,"column":7}},"262":{"start":{"line":698,"column":4},"end":{"line":698,"column":50}},"263":{"start":{"line":699,"column":4},"end":{"line":699,"column":53}},"264":{"start":{"line":704,"column":4},"end":{"line":704,"column":24}},"265":{"start":{"line":705,"column":4},"end":{"line":705,"column":72}},"266":{"start":{"line":706,"column":4},"end":{"line":706,"column":38}},"267":{"start":{"line":707,"column":4},"end":{"line":707,"column":37}},"268":{"start":{"line":708,"column":4},"end":{"line":708,"column":46}},"269":{"start":{"line":710,"column":4},"end":{"line":716,"column":7}},"270":{"start":{"line":711,"column":6},"end":{"line":715,"column":7}},"271":{"start":{"line":712,"column":8},"end":{"line":712,"column":21}},"272":{"start":{"line":714,"column":8},"end":{"line":714,"column":47}},"273":{"start":{"line":718,"column":4},"end":{"line":718,"column":20}},"274":{"start":{"line":719,"column":4},"end":{"line":744,"column":5}},"275":{"start":{"line":720,"column":6},"end":{"line":720,"column":19}},"276":{"start":{"line":721,"column":6},"end":{"line":727,"column":7}},"277":{"start":{"line":722,"column":8},"end":{"line":722,"column":48}},"278":{"start":{"line":723,"column":8},"end":{"line":723,"column":44}},"279":{"start":{"line":724,"column":8},"end":{"line":724,"column":69}},"280":{"start":{"line":725,"column":8},"end":{"line":725,"column":46}},"281":{"start":{"line":726,"column":8},"end":{"line":726,"column":54}},"282":{"start":{"line":728,"column":6},"end":{"line":743,"column":7}},"283":{"start":{"line":729,"column":8},"end":{"line":733,"column":9}},"284":{"start":{"line":730,"column":10},"end":{"line":730,"column":27}},"285":{"start":{"line":732,"column":10},"end":{"line":732,"column":31}},"286":{"start":{"line":735,"column":8},"end":{"line":742,"column":9}},"287":{"start":{"line":736,"column":10},"end":{"line":737,"column":59}},"288":{"start":{"line":738,"column":10},"end":{"line":738,"column":41}},"289":{"start":{"line":739,"column":10},"end":{"line":739,"column":35}},"290":{"start":{"line":741,"column":10},"end":{"line":741,"column":36}},"291":{"start":{"line":746,"column":4},"end":{"line":753,"column":7}},"292":{"start":{"line":747,"column":6},"end":{"line":747,"column":21}},"293":{"start":{"line":748,"column":6},"end":{"line":752,"column":7}},"294":{"start":{"line":749,"column":8},"end":{"line":749,"column":57}},"295":{"start":{"line":751,"column":8},"end":{"line":751,"column":40}},"296":{"start":{"line":756,"column":2},"end":{"line":756,"column":17}},"297":{"start":{"line":759,"column":0},"end":{"line":763,"column":2}},"298":{"start":{"line":760,"column":2},"end":{"line":760,"column":48}},"299":{"start":{"line":761,"column":2},"end":{"line":761,"column":16}},"300":{"start":{"line":762,"column":2},"end":{"line":762,"column":17}},"301":{"start":{"line":765,"column":0},"end":{"line":774,"column":1}},"302":{"start":{"line":766,"column":2},"end":{"line":766,"column":36}},"303":{"start":{"line":767,"column":2},"end":{"line":767,"column":35}},"304":{"start":{"line":768,"column":2},"end":{"line":768,"column":40}},"305":{"start":{"line":769,"column":2},"end":{"line":769,"column":37}},"306":{"start":{"line":770,"column":2},"end":{"line":770,"column":37}},"307":{"start":{"line":771,"column":2},"end":{"line":771,"column":18}},"308":{"start":{"line":772,"column":2},"end":{"line":772,"column":23}},"309":{"start":{"line":773,"column":2},"end":{"line":773,"column":22}},"310":{"start":{"line":776,"column":0},"end":{"line":783,"column":3}},"311":{"start":{"line":778,"column":4},"end":{"line":778,"column":39}},"312":{"start":{"line":781,"column":4},"end":{"line":781,"column":40}},"313":{"start":{"line":785,"column":0},"end":{"line":785,"column":34}},"314":{"start":{"line":790,"column":0},"end":{"line":796,"column":1}},"315":{"start":{"line":791,"column":2},"end":{"line":791,"column":29}},"316":{"start":{"line":793,"column":2},"end":{"line":793,"column":24}},"317":{"start":{"line":795,"column":2},"end":{"line":795,"column":26}},"318":{"start":{"line":797,"column":0},"end":{"line":797,"column":114}},"319":{"start":{"line":799,"column":0},"end":{"line":830,"column":2}},"320":{"start":{"line":800,"column":2},"end":{"line":800,"column":23}},"321":{"start":{"line":802,"column":2},"end":{"line":802,"column":55}},"322":{"start":{"line":804,"column":2},"end":{"line":806,"column":3}},"323":{"start":{"line":805,"column":4},"end":{"line":805,"column":46}},"324":{"start":{"line":807,"column":2},"end":{"line":807,"column":30}},"325":{"start":{"line":808,"column":2},"end":{"line":808,"column":22}},"326":{"start":{"line":810,"column":2},"end":{"line":812,"column":3}},"327":{"start":{"line":811,"column":4},"end":{"line":811,"column":83}},"328":{"start":{"line":814,"column":2},"end":{"line":814,"column":53}},"329":{"start":{"line":815,"column":2},"end":{"line":815,"column":38}},"330":{"start":{"line":816,"column":2},"end":{"line":816,"column":34}},"331":{"start":{"line":817,"column":2},"end":{"line":817,"column":34}},"332":{"start":{"line":819,"column":2},"end":{"line":820,"column":98}},"333":{"start":{"line":821,"column":2},"end":{"line":821,"column":31}},"334":{"start":{"line":822,"column":2},"end":{"line":822,"column":26}},"335":{"start":{"line":824,"column":2},"end":{"line":824,"column":35}},"336":{"start":{"line":826,"column":2},"end":{"line":826,"column":51}},"337":{"start":{"line":827,"column":2},"end":{"line":827,"column":69}},"338":{"start":{"line":829,"column":2},"end":{"line":829,"column":56}},"339":{"start":{"line":832,"column":0},"end":{"line":836,"column":2}},"340":{"start":{"line":833,"column":2},"end":{"line":833,"column":59}},"341":{"start":{"line":834,"column":2},"end":{"line":834,"column":39}},"342":{"start":{"line":835,"column":2},"end":{"line":835,"column":35}},"343":{"start":{"line":838,"column":0},"end":{"line":844,"column":2}},"344":{"start":{"line":839,"column":2},"end":{"line":843,"column":3}},"345":{"start":{"line":840,"column":4},"end":{"line":840,"column":35}},"346":{"start":{"line":842,"column":4},"end":{"line":842,"column":63}},"347":{"start":{"line":848,"column":0},"end":{"line":854,"column":2}},"348":{"start":{"line":849,"column":2},"end":{"line":853,"column":3}},"349":{"start":{"line":850,"column":4},"end":{"line":850,"column":48}},"350":{"start":{"line":852,"column":4},"end":{"line":852,"column":61}},"351":{"start":{"line":857,"column":0},"end":{"line":863,"column":2}},"352":{"start":{"line":858,"column":2},"end":{"line":862,"column":3}},"353":{"start":{"line":859,"column":4},"end":{"line":859,"column":37}},"354":{"start":{"line":860,"column":9},"end":{"line":862,"column":3}},"355":{"start":{"line":861,"column":4},"end":{"line":861,"column":59}},"356":{"start":{"line":865,"column":0},"end":{"line":871,"column":2}},"357":{"start":{"line":866,"column":2},"end":{"line":870,"column":3}},"358":{"start":{"line":867,"column":4},"end":{"line":867,"column":58}},"359":{"start":{"line":868,"column":9},"end":{"line":870,"column":3}},"360":{"start":{"line":869,"column":4},"end":{"line":869,"column":80}},"361":{"start":{"line":873,"column":0},"end":{"line":879,"column":2}},"362":{"start":{"line":874,"column":2},"end":{"line":878,"column":3}},"363":{"start":{"line":875,"column":4},"end":{"line":875,"column":47}},"364":{"start":{"line":876,"column":9},"end":{"line":878,"column":3}},"365":{"start":{"line":877,"column":4},"end":{"line":877,"column":69}},"366":{"start":{"line":882,"column":0},"end":{"line":890,"column":2}},"367":{"start":{"line":883,"column":2},"end":{"line":889,"column":3}},"368":{"start":{"line":884,"column":4},"end":{"line":884,"column":25}},"369":{"start":{"line":885,"column":9},"end":{"line":889,"column":3}},"370":{"start":{"line":886,"column":4},"end":{"line":886,"column":32}},"371":{"start":{"line":888,"column":4},"end":{"line":888,"column":45}},"372":{"start":{"line":893,"column":0},"end":{"line":903,"column":2}},"373":{"start":{"line":894,"column":2},"end":{"line":894,"column":71}},"374":{"start":{"line":896,"column":2},"end":{"line":896,"column":53}},"375":{"start":{"line":898,"column":2},"end":{"line":902,"column":3}},"376":{"start":{"line":899,"column":4},"end":{"line":899,"column":31}},"377":{"start":{"line":901,"column":4},"end":{"line":901,"column":21}},"378":{"start":{"line":908,"column":0},"end":{"line":910,"column":1}},"379":{"start":{"line":909,"column":2},"end":{"line":909,"column":37}},"380":{"start":{"line":911,"column":0},"end":{"line":911,"column":116}},"381":{"start":{"line":917,"column":0},"end":{"line":938,"column":2}},"382":{"start":{"line":924,"column":2},"end":{"line":924,"column":38}},"383":{"start":{"line":925,"column":2},"end":{"line":929,"column":3}},"384":{"start":{"line":926,"column":4},"end":{"line":926,"column":83}},"385":{"start":{"line":927,"column":4},"end":{"line":927,"column":48}},"386":{"start":{"line":928,"column":4},"end":{"line":928,"column":11}},"387":{"start":{"line":930,"column":2},"end":{"line":930,"column":31}},"388":{"start":{"line":933,"column":2},"end":{"line":933,"column":59}},"389":{"start":{"line":936,"column":2},"end":{"line":936,"column":89}},"390":{"start":{"line":937,"column":2},"end":{"line":937,"column":21}},"391":{"start":{"line":943,"column":0},"end":{"line":959,"column":1}},"392":{"start":{"line":944,"column":2},"end":{"line":944,"column":30}},"393":{"start":{"line":945,"column":2},"end":{"line":945,"column":22}},"394":{"start":{"line":946,"column":2},"end":{"line":946,"column":20}},"395":{"start":{"line":947,"column":2},"end":{"line":947,"column":36}},"396":{"start":{"line":949,"column":2},"end":{"line":949,"column":37}},"397":{"start":{"line":951,"column":2},"end":{"line":951,"column":34}},"398":{"start":{"line":953,"column":2},"end":{"line":953,"column":40}},"399":{"start":{"line":955,"column":2},"end":{"line":955,"column":60}},"400":{"start":{"line":956,"column":2},"end":{"line":956,"column":69}},"401":{"start":{"line":958,"column":2},"end":{"line":958,"column":56}},"402":{"start":{"line":960,"column":0},"end":{"line":960,"column":114}},"403":{"start":{"line":962,"column":0},"end":{"line":964,"column":2}},"404":{"start":{"line":963,"column":2},"end":{"line":963,"column":39}},"405":{"start":{"line":966,"column":0},"end":{"line":968,"column":2}},"406":{"start":{"line":967,"column":2},"end":{"line":967,"column":42}},"407":{"start":{"line":970,"column":0},"end":{"line":970,"column":76}}},"branchMap":{"1":{"line":217,"type":"if","locations":[{"start":{"line":217,"column":4},"end":{"line":217,"column":4}},{"start":{"line":217,"column":4},"end":{"line":217,"column":4}}]},"2":{"line":226,"type":"if","locations":[{"start":{"line":226,"column":4},"end":{"line":226,"column":4}},{"start":{"line":226,"column":4},"end":{"line":226,"column":4}}]},"3":{"line":257,"type":"if","locations":[{"start":{"line":257,"column":2},"end":{"line":257,"column":2}},{"start":{"line":257,"column":2},"end":{"line":257,"column":2}}]},"4":{"line":265,"type":"if","locations":[{"start":{"line":265,"column":2},"end":{"line":265,"column":2}},{"start":{"line":265,"column":2},"end":{"line":265,"column":2}}]},"5":{"line":266,"type":"if","locations":[{"start":{"line":266,"column":4},"end":{"line":266,"column":4}},{"start":{"line":266,"column":4},"end":{"line":266,"column":4}}]},"6":{"line":267,"type":"if","locations":[{"start":{"line":267,"column":6},"end":{"line":267,"column":6}},{"start":{"line":267,"column":6},"end":{"line":267,"column":6}}]},"7":{"line":280,"type":"if","locations":[{"start":{"line":280,"column":2},"end":{"line":280,"column":2}},{"start":{"line":280,"column":2},"end":{"line":280,"column":2}}]},"8":{"line":284,"type":"if","locations":[{"start":{"line":284,"column":4},"end":{"line":284,"column":4}},{"start":{"line":284,"column":4},"end":{"line":284,"column":4}}]},"9":{"line":292,"type":"if","locations":[{"start":{"line":292,"column":2},"end":{"line":292,"column":2}},{"start":{"line":292,"column":2},"end":{"line":292,"column":2}}]},"10":{"line":322,"type":"binary-expr","locations":[{"start":{"line":322,"column":12},"end":{"line":322,"column":19}},{"start":{"line":322,"column":23},"end":{"line":322,"column":25}}]},"11":{"line":324,"type":"binary-expr","locations":[{"start":{"line":324,"column":15},"end":{"line":324,"column":26}},{"start":{"line":324,"column":30},"end":{"line":324,"column":43}}]},"12":{"line":331,"type":"if","locations":[{"start":{"line":331,"column":2},"end":{"line":331,"column":2}},{"start":{"line":331,"column":2},"end":{"line":331,"column":2}}]},"13":{"line":331,"type":"binary-expr","locations":[{"start":{"line":331,"column":7},"end":{"line":331,"column":18}},{"start":{"line":331,"column":22},"end":{"line":331,"column":34}},{"start":{"line":331,"column":39},"end":{"line":331,"column":50}}]},"14":{"line":339,"type":"if","locations":[{"start":{"line":339,"column":6},"end":{"line":339,"column":6}},{"start":{"line":339,"column":6},"end":{"line":339,"column":6}}]},"15":{"line":339,"type":"binary-expr","locations":[{"start":{"line":339,"column":10},"end":{"line":339,"column":51}},{"start":{"line":339,"column":55},"end":{"line":339,"column":72}}]},"16":{"line":349,"type":"if","locations":[{"start":{"line":349,"column":7},"end":{"line":349,"column":7}},{"start":{"line":349,"column":7},"end":{"line":349,"column":7}}]},"17":{"line":406,"type":"cond-expr","locations":[{"start":{"line":406,"column":58},"end":{"line":406,"column":79}},{"start":{"line":406,"column":83},"end":{"line":406,"column":87}}]},"18":{"line":417,"type":"if","locations":[{"start":{"line":417,"column":2},"end":{"line":417,"column":2}},{"start":{"line":417,"column":2},"end":{"line":417,"column":2}}]},"19":{"line":424,"type":"if","locations":[{"start":{"line":424,"column":4},"end":{"line":424,"column":4}},{"start":{"line":424,"column":4},"end":{"line":424,"column":4}}]},"20":{"line":431,"type":"if","locations":[{"start":{"line":431,"column":4},"end":{"line":431,"column":4}},{"start":{"line":431,"column":4},"end":{"line":431,"column":4}}]},"21":{"line":442,"type":"if","locations":[{"start":{"line":442,"column":2},"end":{"line":442,"column":2}},{"start":{"line":442,"column":2},"end":{"line":442,"column":2}}]},"22":{"line":442,"type":"binary-expr","locations":[{"start":{"line":442,"column":7},"end":{"line":442,"column":26}},{"start":{"line":442,"column":32},"end":{"line":442,"column":51}}]},"23":{"line":451,"type":"if","locations":[{"start":{"line":451,"column":2},"end":{"line":451,"column":2}},{"start":{"line":451,"column":2},"end":{"line":451,"column":2}}]},"24":{"line":457,"type":"if","locations":[{"start":{"line":457,"column":2},"end":{"line":457,"column":2}},{"start":{"line":457,"column":2},"end":{"line":457,"column":2}}]},"25":{"line":464,"type":"if","locations":[{"start":{"line":464,"column":2},"end":{"line":464,"column":2}},{"start":{"line":464,"column":2},"end":{"line":464,"column":2}}]},"26":{"line":502,"type":"if","locations":[{"start":{"line":502,"column":4},"end":{"line":502,"column":4}},{"start":{"line":502,"column":4},"end":{"line":502,"column":4}}]},"27":{"line":502,"type":"binary-expr","locations":[{"start":{"line":502,"column":9},"end":{"line":502,"column":34}},{"start":{"line":502,"column":40},"end":{"line":502,"column":58}}]},"28":{"line":539,"type":"if","locations":[{"start":{"line":539,"column":2},"end":{"line":539,"column":2}},{"start":{"line":539,"column":2},"end":{"line":539,"column":2}}]},"29":{"line":550,"type":"if","locations":[{"start":{"line":550,"column":2},"end":{"line":550,"column":2}},{"start":{"line":550,"column":2},"end":{"line":550,"column":2}}]},"30":{"line":550,"type":"binary-expr","locations":[{"start":{"line":550,"column":6},"end":{"line":550,"column":19}},{"start":{"line":550,"column":23},"end":{"line":550,"column":49}}]},"31":{"line":563,"type":"if","locations":[{"start":{"line":563,"column":2},"end":{"line":563,"column":2}},{"start":{"line":563,"column":2},"end":{"line":563,"column":2}}]},"32":{"line":583,"type":"if","locations":[{"start":{"line":583,"column":2},"end":{"line":583,"column":2}},{"start":{"line":583,"column":2},"end":{"line":583,"column":2}}]},"33":{"line":587,"type":"if","locations":[{"start":{"line":587,"column":2},"end":{"line":587,"column":2}},{"start":{"line":587,"column":2},"end":{"line":587,"column":2}}]},"34":{"line":592,"type":"binary-expr","locations":[{"start":{"line":592,"column":16},"end":{"line":592,"column":30}},{"start":{"line":592,"column":34},"end":{"line":592,"column":39}}]},"35":{"line":593,"type":"binary-expr","locations":[{"start":{"line":593,"column":16},"end":{"line":593,"column":32}},{"start":{"line":593,"column":36},"end":{"line":593,"column":65}},{"start":{"line":593,"column":70},"end":{"line":593,"column":101}}]},"36":{"line":594,"type":"binary-expr","locations":[{"start":{"line":594,"column":13},"end":{"line":594,"column":29}},{"start":{"line":594,"column":33},"end":{"line":594,"column":45}},{"start":{"line":594,"column":49},"end":{"line":594,"column":78}}]},"37":{"line":609,"type":"if","locations":[{"start":{"line":609,"column":2},"end":{"line":609,"column":2}},{"start":{"line":609,"column":2},"end":{"line":609,"column":2}}]},"38":{"line":609,"type":"binary-expr","locations":[{"start":{"line":609,"column":6},"end":{"line":609,"column":18}},{"start":{"line":609,"column":23},"end":{"line":609,"column":42}}]},"39":{"line":625,"type":"binary-expr","locations":[{"start":{"line":625,"column":10},"end":{"line":625,"column":23}},{"start":{"line":625,"column":27},"end":{"line":625,"column":46}}]},"40":{"line":628,"type":"binary-expr","locations":[{"start":{"line":628,"column":10},"end":{"line":628,"column":23}},{"start":{"line":628,"column":27},"end":{"line":628,"column":46}}]},"41":{"line":637,"type":"binary-expr","locations":[{"start":{"line":637,"column":12},"end":{"line":637,"column":19}},{"start":{"line":637,"column":23},"end":{"line":637,"column":25}}]},"42":{"line":640,"type":"binary-expr","locations":[{"start":{"line":640,"column":15},"end":{"line":640,"column":26}},{"start":{"line":640,"column":30},"end":{"line":640,"column":43}}]},"43":{"line":657,"type":"if","locations":[{"start":{"line":657,"column":2},"end":{"line":657,"column":2}},{"start":{"line":657,"column":2},"end":{"line":657,"column":2}}]},"44":{"line":661,"type":"binary-expr","locations":[{"start":{"line":661,"column":20},"end":{"line":661,"column":34}},{"start":{"line":661,"column":38},"end":{"line":661,"column":43}}]},"45":{"line":662,"type":"binary-expr","locations":[{"start":{"line":662,"column":21},"end":{"line":662,"column":37}},{"start":{"line":662,"column":41},"end":{"line":662,"column":49}}]},"46":{"line":663,"type":"binary-expr","locations":[{"start":{"line":663,"column":17},"end":{"line":663,"column":33}},{"start":{"line":663,"column":37},"end":{"line":663,"column":49}},{"start":{"line":663,"column":53},"end":{"line":663,"column":64}}]},"47":{"line":664,"type":"binary-expr","locations":[{"start":{"line":664,"column":17},"end":{"line":664,"column":29}},{"start":{"line":664,"column":33},"end":{"line":664,"column":36}}]},"48":{"line":665,"type":"binary-expr","locations":[{"start":{"line":665,"column":17},"end":{"line":665,"column":29}},{"start":{"line":665,"column":33},"end":{"line":665,"column":36}}]},"49":{"line":667,"type":"if","locations":[{"start":{"line":667,"column":2},"end":{"line":667,"column":2}},{"start":{"line":667,"column":2},"end":{"line":667,"column":2}}]},"50":{"line":674,"type":"if","locations":[{"start":{"line":674,"column":2},"end":{"line":674,"column":2}},{"start":{"line":674,"column":2},"end":{"line":674,"column":2}}]},"51":{"line":685,"type":"if","locations":[{"start":{"line":685,"column":2},"end":{"line":685,"column":2}},{"start":{"line":685,"column":2},"end":{"line":685,"column":2}}]},"52":{"line":691,"type":"if","locations":[{"start":{"line":691,"column":7},"end":{"line":691,"column":7}},{"start":{"line":691,"column":7},"end":{"line":691,"column":7}}]},"53":{"line":711,"type":"if","locations":[{"start":{"line":711,"column":6},"end":{"line":711,"column":6}},{"start":{"line":711,"column":6},"end":{"line":711,"column":6}}]},"54":{"line":721,"type":"if","locations":[{"start":{"line":721,"column":6},"end":{"line":721,"column":6}},{"start":{"line":721,"column":6},"end":{"line":721,"column":6}}]},"55":{"line":728,"type":"if","locations":[{"start":{"line":728,"column":6},"end":{"line":728,"column":6}},{"start":{"line":728,"column":6},"end":{"line":728,"column":6}}]},"56":{"line":729,"type":"if","locations":[{"start":{"line":729,"column":8},"end":{"line":729,"column":8}},{"start":{"line":729,"column":8},"end":{"line":729,"column":8}}]},"57":{"line":735,"type":"if","locations":[{"start":{"line":735,"column":8},"end":{"line":735,"column":8}},{"start":{"line":735,"column":8},"end":{"line":735,"column":8}}]},"58":{"line":748,"type":"if","locations":[{"start":{"line":748,"column":6},"end":{"line":748,"column":6}},{"start":{"line":748,"column":6},"end":{"line":748,"column":6}}]},"59":{"line":810,"type":"if","locations":[{"start":{"line":810,"column":2},"end":{"line":810,"column":2}},{"start":{"line":810,"column":2},"end":{"line":810,"column":2}}]},"60":{"line":820,"type":"binary-expr","locations":[{"start":{"line":820,"column":53},"end":{"line":820,"column":68}},{"start":{"line":820,"column":72},"end":{"line":820,"column":74}}]},"61":{"line":839,"type":"if","locations":[{"start":{"line":839,"column":2},"end":{"line":839,"column":2}},{"start":{"line":839,"column":2},"end":{"line":839,"column":2}}]},"62":{"line":849,"type":"if","locations":[{"start":{"line":849,"column":2},"end":{"line":849,"column":2}},{"start":{"line":849,"column":2},"end":{"line":849,"column":2}}]},"63":{"line":849,"type":"binary-expr","locations":[{"start":{"line":849,"column":6},"end":{"line":849,"column":18}},{"start":{"line":849,"column":23},"end":{"line":849,"column":42}}]},"64":{"line":858,"type":"if","locations":[{"start":{"line":858,"column":2},"end":{"line":858,"column":2}},{"start":{"line":858,"column":2},"end":{"line":858,"column":2}}]},"65":{"line":860,"type":"if","locations":[{"start":{"line":860,"column":9},"end":{"line":860,"column":9}},{"start":{"line":860,"column":9},"end":{"line":860,"column":9}}]},"66":{"line":866,"type":"if","locations":[{"start":{"line":866,"column":2},"end":{"line":866,"column":2}},{"start":{"line":866,"column":2},"end":{"line":866,"column":2}}]},"67":{"line":868,"type":"if","locations":[{"start":{"line":868,"column":9},"end":{"line":868,"column":9}},{"start":{"line":868,"column":9},"end":{"line":868,"column":9}}]},"68":{"line":874,"type":"if","locations":[{"start":{"line":874,"column":2},"end":{"line":874,"column":2}},{"start":{"line":874,"column":2},"end":{"line":874,"column":2}}]},"69":{"line":876,"type":"if","locations":[{"start":{"line":876,"column":9},"end":{"line":876,"column":9}},{"start":{"line":876,"column":9},"end":{"line":876,"column":9}}]},"70":{"line":883,"type":"if","locations":[{"start":{"line":883,"column":2},"end":{"line":883,"column":2}},{"start":{"line":883,"column":2},"end":{"line":883,"column":2}}]},"71":{"line":885,"type":"if","locations":[{"start":{"line":885,"column":9},"end":{"line":885,"column":9}},{"start":{"line":885,"column":9},"end":{"line":885,"column":9}}]},"72":{"line":898,"type":"if","locations":[{"start":{"line":898,"column":2},"end":{"line":898,"column":2}},{"start":{"line":898,"column":2},"end":{"line":898,"column":2}}]},"73":{"line":925,"type":"if","locations":[{"start":{"line":925,"column":2},"end":{"line":925,"column":2}},{"start":{"line":925,"column":2},"end":{"line":925,"column":2}}]},"74":{"line":925,"type":"binary-expr","locations":[{"start":{"line":925,"column":7},"end":{"line":925,"column":37}},{"start":{"line":925,"column":43},"end":{"line":925,"column":66}}]}}}} \ No newline at end of file diff --git a/coverage/lcov-report/index.html b/coverage/lcov-report/index.html index 9d5d2a06..19ae3fb3 100644 --- a/coverage/lcov-report/index.html +++ b/coverage/lcov-report/index.html @@ -183,16 +183,16 @@

Code coverage report for All files

- Statements: 94.4% (1400 / 1483)      + Statements: 93.44% (1482 / 1586)      - Branches: 87.75% (523 / 596)      + Branches: 86.13% (559 / 649)      - Functions: 93.2% (192 / 206)      + Functions: 92.34% (193 / 209)      - Lines: 94.38% (1394 / 1477)      + Lines: 93.42% (1476 / 1580)     

@@ -216,15 +216,15 @@

lib/ - - 94.4% - (1400 / 1483) - 87.75% - (523 / 596) - 93.2% - (192 / 206) - 94.38% - (1394 / 1477) + + 93.44% + (1482 / 1586) + 86.13% + (559 / 649) + 92.34% + (193 / 209) + 93.42% + (1476 / 1580) @@ -232,7 +232,7 @@

diff --git a/coverage/lcov-report/lib/compressor.js.html b/coverage/lcov-report/lib/compressor.js.html index 7202b659..bd2dbdc4 100644 --- a/coverage/lcov-report/lib/compressor.js.html +++ b/coverage/lcov-report/lib/compressor.js.html @@ -183,16 +183,16 @@

Code coverage report for lib/compressor.js

- Statements: 98.62% (285 / 289)      + Statements: 94.72% (323 / 341)      - Branches: 100% (97 / 97)      + Branches: 93.75% (120 / 128)      - Functions: 100% (34 / 34)      + Functions: 96.55% (28 / 29)      - Lines: 98.62% (285 / 289)      + Lines: 94.72% (323 / 341)     

All files » lib/ » compressor.js
@@ -1057,7 +1057,57 @@

856 857 858 -859  +859 +860 +861 +862 +863 +864 +865 +866 +867 +868 +869 +870 +871 +872 +873 +874 +875 +876 +877 +878 +879 +880 +881 +882 +883 +884 +885 +886 +887 +888 +889 +890 +891 +892 +893 +894 +895 +896 +897 +898 +899 +900 +901 +902 +903 +904 +905 +906 +907 +908 +909        @@ -1072,6 +1122,12 @@

      +  +  +1 +1 +1 +1 1   1 @@ -1087,54 +1143,102 @@

      +1 +54 +54 +54 +54 +54 +54 +  +  +  +  +  +  +            -1   1 -50 -50 -50 -50 -50 +1806 +1806 +1806 +1806 +1806 +1806 +  +  +  +  +  +          1 -3424   +1 +1806     1 -88 -227 +54 +54 +1620 +  +54 +  +  +  +  +  +          1 -88 +182 +182 +  +182 +  +  +      +182 +182 +182 +  +  +182 +  +182 +  +  +182     -88 -202   -146 +  +  +  +  +1 +  +              -88 -146 -146       @@ -1162,26 +1266,16 @@

    1 -278     -278             -278 -87 -87 -173   -87 -29 -29   -58       @@ -1190,44 +1284,45 @@

      -191 -94   -97     -191 -190 -100   -90   -190 -190     -191           -1 -81 -149 +  +  +  +  +  +  +            1 -109 +1 +49 +  +49 +49 +49   -109 -109 -19 -19 -15 +  +  +  +  +1 +49 +49       @@ -1235,14 +1330,7 @@

      -94 -94 -2413   -94 -62 -62 -46       @@ -1250,7 +1338,6 @@

      -48       @@ -1260,22 +1347,29 @@

    1 -28 +163   -28 -46 -28 -28 +  +163       -28           +163 +66 +66   +66 +38 +  +28 +28 +28 +28       @@ -1283,156 +1377,185 @@

      -1 -190 -190 -190 -5011 -263   -5011   -190 -218 -218     +97 +78   +19     +97 +97 +92 +92 +92 +92     +97       -1 -26   -26   -26   -26   1 +49     +49 +49 +163       -1 -45 +49 +1559 +1559 +40   +1559     -45 +49         -45 -45 -141         -45       -45 -45 -157 -157 -157 -17 -8   -9     -140 +1 +1 +47   +47 +47 +47   -45 -45   +1 +159     +159 +155   +159           1 -24 +159 +159 +159 +  +  +159 +159 +3760 +3760 +152 +65 +65 +87 +87   -24   -24   -24   -1     +159 +65   +65 +25 +25 +25     -1 -43 -43 +40 +  +  +  +  +  +      +40 +4 +4 +    -43 -43 -135 -135 -8 -24   +36   -127         +94 +94 +  +94 +94 +4 +90 +76   -43 -43 +14 +  +  +94 +90 +90 +90 +  +  +  +  +      -43 -70 -28 -28 -28     +94 +    +159   -43 -151 -109 -109 -109         -43 -43 -137 +1   +47 +1488 +1488 +32 +32   -43 +1488 +1488   -43 -43   +47       @@ -1452,9 +1575,9 @@

    1 -345 -345 -143 +363 +363 +161     202 @@ -1493,14 +1616,14 @@

    1 -353 +375   -353 -353 -151 +375 +375 +173     -353 +375 207 207 217 @@ -1509,8 +1632,7 @@

      -353 -  +375       @@ -1523,17 +1645,16 @@

    1 -153 -153 -153 +123 +123 +123     1 -155 -155 -155 -155 -  +125 +125 +125 +125       @@ -1582,79 +1703,79 @@

    1 -145 +163   -145 -45 +163 +63 100 -1 -99 -52 +5 +95 +18   -47 +77     -145 -45 +163 +63     100 -51 +81   -49 -49 +19 +19     100 -47 +77     100     -145 +163   -145 +163     1 -149 +171   -149 -149 -46 +171 +171 +68 103 -58 -2 +28 +6   -56 +22     -45 +75     -149 -46 -46 +171 +68 +68     103 103 -50 +20     103 -45 -58 -56 +75 +28 +22   -2 +6     103     -149 +171       @@ -1682,199 +1803,187 @@

1     -1 -24 +      1 +1 +26   -87 +26   -33 +26 +26   +26   -33         -33 -35 -35 -33 +1 +47 +47 +143 +143 +8 +24   -2 -2   +135   -35   +47   +47 +47 +459   +47       +1             -54   +98 +37   -87 +37   +37 +39 +39 +39   +39 +37 +37 +37   +2           -1 -26 -26 -26 -26 -26 +39 +32   +39   +39   -1     -84 -3 -1 -1 -1   -2   +61     +98   -81 -33 -33 -33 -33         -48           -83 -32 -34   -32 -32 +1 +1 +28   -  -  -  +28   -32 +28 +28   +28   -  -  -  -  -  -32 -  -  -83 +28 +28           1 +49 +49   +49 +49 +49 +165 +165 +165 +17 +8   +9     +148       -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  +49       1     +95 +3 +1 +1 +1   +2         +92 +37 +37 +37         +55           +94 +36 +38   +36 +36   +  +  +    +36 +36     -  -  -  -  -  -  -  -  -  -  -  -  -  -  +94       @@ -1882,125 +1991,252 @@

    1 -75 -75 -501 -  -  -75 -75 -501 -  -  -75 +132 +132 +546     +132 +132 +546   -1 -33 -33 -33 -35 -35 -35   -33 +132       1 -35 -35 -  -  -35 -  - 
// HTTP/2 compression is implemented by two [Transform Stream][1] subclasses that operate in
-// [object mode][2]: the Compressor and the Decompressor. These provide a layer between the
-// [framer](framer.html) and the [connection handling component](connection.html) that
-// generates/parses binary header data.
+37
+37
+37
+39
+39
+39
+ 
+37
+ 
+ 
// The implementation of the [HTTP/2 Header Compression][http2-compression] spec is separated from
+// the 'integration' part which handles HEADERS and PUSH_PROMISE frames. The compression itself is
+// implemented in the first part of the file, and consists of three classes: `HeaderTable`,
+// `HeaderSetDecompressor` and `HeaderSetCompressor`. The two latter classes are
+// [Transform Stream][node-transform] subclasses that operate in [object mode][node-objectmode].
+// These transform chunks of binary data into `[name, value]` pairs and vice versa, and store their
+// state in `HeaderTable` instances.
 //
-// Compression functionality is separated from the integration part. The latter is implemented in
-// the last part of the file, while the larger part of the file is an implementation of the [HTTP/2
-// Header Compression][3] spec. Both Compressor and Decompressor store their compression related
-// state in CompressionContext objects. It is always accessed using methods that guarantee that
-// it remains in a valid state.
+// The 'integration' part is also implemented by two [Transform Stream][node-transform] subclasses
+// that operate in [object mode][node-objectmode]: the `Compressor` and the `Decompressor`. These
+// provide a layer between the [framer](framer.html) and the
+// [connection handling component](connection.html).
 //
-// [1]: http://nodejs.org/api/stream.html#stream_class_stream_transform
-// [2]: http://nodejs.org/api/stream.html#stream_new_stream_readable_options
-// [3]: http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-00
- 
-var Transform = require('stream').Transform;
+// [node-transform]: http://nodejs.org/api/stream.html#stream_class_stream_transform
+// [node-objectmode]: http://nodejs.org/api/stream.html#stream_new_stream_readable_options
+// [http2-compression]: http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-03
  
-exports.CompressionContext = CompressionContext;
-exports.Decompressor = Decompressor;
+exports.HeaderTable = HeaderTable;
+exports.HeaderSetCompressor = HeaderSetCompressor;
+exports.HeaderSetDecompressor = HeaderSetDecompressor;
 exports.Compressor = Compressor;
+exports.Decompressor = Decompressor;
  
-// Compression Context
-// ===================
+var TransformStream = require('stream').Transform;
+var assert = process.env.HTTP2_ASSERT ? require('assert') : function noop() {};
+var util = require('util');
+ 
+// Header compression
+// ==================
+ 
+// The HeaderTable class
+// ---------------------
+ 
+// The [Header Table][headertable] is a component used to associate headers to index values. It is
+// basically an ordered list of `[name, value]` pairs, so it's implemented as a subclass of `Array`.
+// [headertable]: http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-03#section-3.1.2
+function HeaderTable(log, table, limit) {
+  var self = table.map(entryFromPair);
+  self._log = log;
+  self._limit = limit || DEFAULT_HEADER_TABLE_LIMIT;
+  self._size = tableSize(self);
+  self.add = HeaderTable.prototype.add;
+  return self;
+}
  
-// A `CompressionContext` consists of the following tables:
+// There are few more sets that are needed for the compression/decompression process that are all
+// subsets of the Header Table, and are implemented as flags on header table entries:
 //
-// * Header Table (`this._table`) that is limited in size (`this._limit`)
-// * Reference Set (`this._reference`)
-// * Working Set (`this._working`)
+// * [Reference Set][referenceset]: contains a group of headers used as a reference for the
+//   differential encoding of a new set of headers. (`reference` flag)
+// * Emitted headers: the headers that are already emitted as part of the current decompression
+//   process (not part of the spec, `emitted` flag)
+// * Headers to be kept: headers that should not be removed as the last step of the encoding process
+//   (not part of the spec, `keep` flag)
 //
-// Header Table and Reference Set entries are `[name, value]` pairs (where both are strings), while
-// Working Set entries are objects with two properties: `index` (a number) and `pair` (a pair).
+// [referenceset]: http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-03#section-3.1.3
+function entryFromPair(pair) {
+  var entry = pair.slice();
+  entry.reference = false;
+  entry.emitted = false;
+  entry.keep = false;
+  entry._size = size(entry);
+  return entry;
+}
+ 
+// The encoder decides how to update the header table and as such can control how much memory is
+// used by the header table.  To limit the memory requirements on the decoder side, the header table
+// size is bounded.
 //
-// There are only two methods that modifies the state of the tables: `reinitialize()` and
-// `execute(command)`.
+// * The default header table size limit is 4096 bytes.
+// * The size of an entry is defined as follows: the size of an entry is the sum of its name's
+//   length in bytes, of its value's length in bytes and of 32 bytes.
+// * The size of a header table is the sum of the size of its entries.
 var DEFAULT_HEADER_TABLE_LIMIT = 4096;
  
-function CompressionContext(log, table, limit) {
-  this._log = log;
-  this._table = table.slice();
-  this._limit = limit || DEFAULT_HEADER_TABLE_LIMIT;
-  this._reference = [];
-  this._working = [];
+function size(entry) {
+  return new Buffer(entry[0] + entry[1], 'utf8').length + 32;
 }
  
-// The `equal(pair1, pair2)` static method decides if two headers are considered equal. Name
-// comparison is case insensitive while value comparison is case sensitive.
-CompressionContext.equal = function(pair1, pair2) {
-  return (pair1[0].toLowerCase() === pair2[0].toLowerCase()) && (pair1[1] === pair2[1]);
-};
+function tableSize(table) {
+  var size = 0;
+  for (var i = 0; i < table.length; i++) {
+    size += table[i]._size;
+  }
+  return size;
+}
+ 
+// The `add(index, entry)` can be used to [manage the header table][tablemgmt]:
+// [tablemgmt]: http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-03#section-3.2.4
+//
+// * if `index` is `Infinite` it pushes the new `entry` at the end of the table
+// * otherwise, it replaces the entry with the given `index` with the new `entry`
+// * before doing such a modification, it has to be ensured that the header table size will stay
+//   lower than or equal to the header table size limit. To achieve this, repeatedly, the first
+//   entry of the header table is removed, until enough space is available for the modification.
+HeaderTable.prototype.add = function(index, entry) {
+  var limit = this._limit - entry._size;
+  var droppedEntries = [];
+ 
+  while ((this._size > limit) && (this.length > 0)) {
+    var dropped = this.shift();
+    this._size -= dropped._size;
+    droppedEntries.push(dropped);
+  }
+ 
+  Eif (this._size <= limit) {
+    index -= droppedEntries.length;
+    Iif (index < 0) {
+      this.unshift(entry);
+    } else {
+      this.splice(index, 1, entry); // this is like push() if index is Infinity
+    }
+    this._size += entry._size;
+  }
  
-// `getWorkingSet()` returns the current working set as an array of `[name, value]` pairs.
-CompressionContext.prototype.getWorkingSet = function getWorkingSet() {
-  return this._working.map(function(entry) {
-    return entry.pair;
-  });
+  return droppedEntries;
 };
  
-// `reinitialize()` must be called between parsing/generating header blocks.
-CompressionContext.prototype.reinitialize = function reinitialize() {
-  var self = this;
- 
-  // * It first executes the steps needed to *end the processing of the previous block*.
-  // The new reference set of headers is computed by removing from the working set all the headers
-  // that are not present in the header table.
-  this._reference = this._working.filter(function(entry) {
-    return self._table.indexOf(entry.pair) !== -1;
-  }).map(function(entry) {
-    return entry.pair;
-  });
- 
-  // * Then *prepares the processing of the next block*.
-  // The reference set of headers is interpreted into the working set of headers: for each header
-  // in the reference set, an entry is added to the working set, containing the header name, its
-  // value, and its current index in the header table.
-  this._working = this._reference.map(function(pair) {
-    var index = self._table.indexOf(pair);
-    return { index: index, pair: pair };
-  });
+// Initial header tables
+// ---------------------
+ 
+// ### [Initial request table][requesttable] ###
+// [requesttable]: http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-03#appendix-B.1
+HeaderTable.initialRequestTable  = [
+  [ ':scheme'                     , 'http'  ],
+  [ ':scheme'                     , 'https' ],
+  [ ':host'                       , ''      ],
+  [ ':path'                       , '/'     ],
+  [ ':method'                     , 'get'   ],
+  [ 'accept'                      , ''      ],
+  [ 'accept-charset'              , ''      ],
+  [ 'accept-encoding'             , ''      ],
+  [ 'accept-language'             , ''      ],
+  [ 'cookie'                      , ''      ],
+  [ 'if-modified-since'           , ''      ],
+  [ 'user-agent'                  , ''      ],
+  [ 'referer'                     , ''      ],
+  [ 'authorization'               , ''      ],
+  [ 'allow'                       , ''      ],
+  [ 'cache-control'               , ''      ],
+  [ 'connection'                  , ''      ],
+  [ 'content-length'              , ''      ],
+  [ 'content-type'                , ''      ],
+  [ 'date'                        , ''      ],
+  [ 'expect'                      , ''      ],
+  [ 'from'                        , ''      ],
+  [ 'if-match'                    , ''      ],
+  [ 'if-none-match'               , ''      ],
+  [ 'if-range'                    , ''      ],
+  [ 'if-unmodified-since'         , ''      ],
+  [ 'max-forwards'                , ''      ],
+  [ 'proxy-authorization'         , ''      ],
+  [ 'range'                       , ''      ],
+  [ 'via'                         , ''      ]
+];
+ 
+// ### [Initial response table][responsetable] ###
+// [responsetable]: http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-03#appendix-B.2
+HeaderTable.initialResponseTable = [
+  [ ':status'                     , '200'   ],
+  [ 'age'                         , ''      ],
+  [ 'cache-control'               , ''      ],
+  [ 'content-length'              , ''      ],
+  [ 'content-type'                , ''      ],
+  [ 'date'                        , ''      ],
+  [ 'etag'                        , ''      ],
+  [ 'expires'                     , ''      ],
+  [ 'last-modified'               , ''      ],
+  [ 'server'                      , ''      ],
+  [ 'set-cookie'                  , ''      ],
+  [ 'vary'                        , ''      ],
+  [ 'via'                         , ''      ],
+  [ 'access-control-allow-origin' , ''      ],
+  [ 'accept-ranges'               , ''      ],
+  [ 'allow'                       , ''      ],
+  [ 'connection'                  , ''      ],
+  [ 'content-disposition'         , ''      ],
+  [ 'content-encoding'            , ''      ],
+  [ 'content-language'            , ''      ],
+  [ 'content-location'            , ''      ],
+  [ 'content-range'               , ''      ],
+  [ 'link'                        , ''      ],
+  [ 'location'                    , ''      ],
+  [ 'proxy-authenticate'          , ''      ],
+  [ 'refresh'                     , ''      ],
+  [ 'retry-after'                 , ''      ],
+  [ 'strict-transport-security'   , ''      ],
+  [ 'transfer-encoding'           , ''      ],
+  [ 'www-authenticate'            , ''      ]
+];
+ 
+// The HeaderSetDecompressor class
+// -------------------------------
+ 
+// A `HeaderSetDecompressor` instance is a transform stream that can be used to *decompress a
+// single header set*. Its input is a stream of binary data chunks and its output is a stream of
+// `[name, value]` pairs.
+//
+// Currently, it is not a proper streaming decompressor implementation, since it buffer its input
+// until the end os the stream, and then processes the whole header block at once.
+ 
+util.inherits(HeaderSetDecompressor, TransformStream);
+function HeaderSetDecompressor(log, table) {
+  TransformStream.call(this, { objectMode: true });
+ 
+  this._log = log.child({ component: 'compressor' });
+  this._table = table;
+  this._chunks = [];
+}
+ 
+// `_transform` is the implementation of the [corresponding virtual function][_transform] of the
+// TransformStream class. It collects the data chunks for later processing.
+// [_transform]: http://nodejs.org/api/stream.html#stream_transform_transform_chunk_encoding_callback
+HeaderSetDecompressor.prototype._transform = function _transform(chunk, encoding, callback) {
+  this._chunks.push(chunk);
+  callback();
 };
  
-// `execute(command)` executes the given command ([header representation][1]): updates the Header
-// Table and the Working Set.
-// [1]: http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-00#section-3.3
+// `execute(rep)` executes the given [header representation][representation].
+// [representation]: http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-03#section-3.1.5
  
-// The *JavaScript object representation* of a command:
+// The *JavaScript object representation* of a header representation:
 //
 //     {
 //       name: String || Integer,  // string literal or index
@@ -2018,285 +2254,222 @@ 

// { name: 2 , value: 'X', index: -1 } // without indexing // { name: 2 , value: 'Y', index: Infinity } // incremental indexing // { name: 'A', value: 'Z', index: 123 } // substitution indexing -  -CompressionContext.prototype.execute = function execute(command) { - this._log.trace({ key: command.name, value: command.value, index: command.index }, - 'Executing a header representation'); -  - var index, pair; -  - // * For an indexed representation, it checks whether the index is present in the working set. - // If true, the corresponding entry is removed from the working set. If several entries correspond - // to this encoded index, all these entries are removed from the working set. If the index is not - // present in the working set, it is used to retrieve the corresponding header from the Header - // Table, and a new entry is added to the working set representing this header. - if (typeof command.value === 'number') { - index = command.value; - var filtered = this._working.filter(function(entry) { - return entry.index !== index; - }); - if (filtered.length === this._working.length) { - pair = this._table[index]; - this._working.push({ index: index, pair: pair }); +HeaderSetDecompressor.prototype._execute = function _execute(rep) { + this._log.trace({ key: rep.name, value: rep.value, index: rep.index }, + 'Executing header representation'); +  + var index, entry, pair; +  + // * An _indexed representation_ corresponding to an entry _present_ in the reference set + // entails the following actions: + // * The entry is removed from the reference set. + // * An _indexed representation_ corresponding to an entry _not present_ in the reference set + // entails the following actions: + // * The header corresponding to the entry is emitted. + // * The entry is added to the reference set. + if (typeof rep.value === 'number') { + index = rep.value; + entry = this._table[index]; +  + if (entry.reference) { + entry.reference = false; } else { - this._working = filtered; + entry.reference = true; + entry.emitted = true; + pair = entry.slice(); + this.push(pair); } }   - // * For a literal representation, a new entry is added to the working set representing this - // header. If the literal representation specifies that the header is to be indexed, the header is - // added accordingly to the header table, and its index is included in the entry in the working - // set. Otherwise, the entry in the working set contains an undefined index. + // * A _literal representation_ that is _not added_ to the header table entails the following + // action: + // * The header is emitted. + // * A _literal representation_ that is _added_ to the header table entails the following further + // actions: + // * The header is added to the header table, at the location defined by the representation. + // * The new entry is added to the reference set. else { - if (typeof command.name === 'number') { - pair = [this._table[command.name][0], command.value]; + if (typeof rep.name === 'number') { + pair = [this._table[rep.name][0], rep.value]; } else { - pair = [command.name, command.value]; + pair = [rep.name, rep.value]; }   - if (command.index !== -1) { - if (command.index === Infinity) { - this._table.push(pair); - } else { - this._table.splice(command.index, 1, pair); - } - this._enforceSizeBound(); // TODO: The order of these two - index = this._table.indexOf(pair); // TODO: operation is not well defined! + index = rep.index; + if (index !== -1) { + entry = entryFromPair(pair); + entry.reference = true; + entry.emitted = true; + this._table.add(index, entry); }   - this._working.push({ index: index, pair: pair }); + this.push(pair); } };   -// `_isShadowed` determines the reachability of a given index in the Header Table. An entry in the -// Header Table is shadowed if there's an entry in the Working Set with the same ID. -CompressionContext.prototype._isShadowed = function(index) { - return this._working.some(function(entry) { - return entry.index === index; - }); -}; +// `_flush` is the implementation of the [corresponding virtual function][_flush] of the +// TransformStream class. The whole decompressing process is done in `_flush`. It gets called when +// the input stream is over. +// [_flush]: http://nodejs.org/api/stream.html#stream_transform_flush_callback +HeaderSetDecompressor.prototype._flush = function _flush(callback) { + var buffer = concat(this._chunks);   -// `generateAddCommand` tries to find a compact command (header representation) for the given -// `[name, value]` pair that causes the decoder to add the given pair to the Working Set. -CompressionContext.prototype.generateAddCommand = function(pair) { - var equal = CompressionContext.equal.bind(null, pair); -  - var fullMatch = this._table.filter(equal); - if (fullMatch.length !== 0) { - var fullIndex = this._table.indexOf(fullMatch[0]); - if (!this._isShadowed(fullIndex)) { - return { - name: fullIndex, - value: fullIndex, - index: -1 - }; - } + // * processes the header representations + buffer.cursor = 0; + while (buffer.cursor < buffer.length) { + this._execute(HeaderSetDecompressor.header(buffer)); }   - var name = pair[0].toLowerCase(); - var nameMatch = this._table.filter(function(entry) { - return entry[0].toLowerCase() === name; - }); - if (nameMatch.length !== 0) { - var nameIndex = this._table.indexOf(nameMatch[0]); - if (!this._isShadowed(nameIndex)) { - return { - name: nameIndex, - value: pair[1], - index: nameIndex - }; + // * [emits the reference set](http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-03#section-3.2.2) + for (var index = 0; index < this._table.length; index++) { + var entry = this._table[index]; + if (entry.reference && !entry.emitted) { + this.push(entry.slice()); } + entry.emitted = false; }   - return { - name: name, - value: pair[1], - index: Infinity - }; + callback(); };   -// `generateRemoveCommand` generates a command (an Indexed Header Representation) that causes the -// decoder to drop the given pair from the Working Set. -CompressionContext.prototype.generateRemoveCommand = function(pair) { - var match; -  - for (var i = 0; i < this._working.length; i++) { - if (this._working[i].pair === pair) { - match = this._working[i]; - break; - } - } -  - return { - name: match.index, - value: match.index, - index: -1 - }; -}; +// The HeaderSetCompressor class +// -----------------------------   -// The header table size can be bounded so as to limit the memory requirements. -// The `_enforceSizeBound()` private method drops the entries that are over the limit -// (`this._limit`). +// A `HeaderSetCompressor` instance is a transform stream that can be used to *compress a single +// header set*. Its input is a stream of `[name, value]` pairs and its output is a stream of +// binary data chunks. // -// The header table size is defined as the sum of the size of each entry of the table. The size -// of an entry is the sum of the length in bytes of its name, of value's length in bytes and of -// 32 bytes (for accounting for the entry structure overhead). -CompressionContext.prototype._enforceSizeBound = function() { - var table = this._table; - var size = 0; - for (var i = 0; i < table.length; i++) { - if (table[i].size === undefined) { - table[i].size = new Buffer(table[i][0] + table[i][1], 'utf8').length + 32; - } - size += table[i].size; - } - while (size > this._limit) { - var dropped = table.shift(); - size -= dropped.size; - } -}; -  -// [Decompression process](http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-00#section-3.4) -// ======================= -  -// The decompression process is always done by a `Decompressor` object. +// It is a real streaming compressor, since it does not wait until the header set is complete. // -// The compression related mutable state is stored in a contained `CompressionContext` object. -// The initial value of it's Header Table depends on which side of the connection is it on. -function Decompressor(type, log) { - this._log = log.child({ component: 'decompressor' }); +// The compression algorithm is (intentionally) not specified by the spec. Therefore, the current +// compression algorithm can probably be improved in the future.   - var initialTable = (type === 'REQUEST') ? CompressionContext.initialRequestTable - : CompressionContext.initialResponseTable; - this._context = new CompressionContext(this._log, initialTable); +util.inherits(HeaderSetCompressor, TransformStream); +function HeaderSetCompressor(log, table) { + TransformStream.call(this, { objectMode: true });   - this._initializeStream(); + this._log = log.child({ component: 'compressor' }); + this._table = table; + this.push = TransformStream.prototype.push.bind(this); } -Decompressor.prototype = Object.create(Transform.prototype, { constructor: { value: Decompressor } });   -// The `decompress` method takes a buffer, and returns the decoded header set. -// -// According to the spec, to ensure a correct decoding of a set of headers, the following steps or -// equivalent ones MUST be executed by the decoder. -Decompressor.prototype.decompress = function decompress(buffer) { - this._log.trace({ data: buffer }, 'Starting header decompression'); -  - // * First, upon starting the decoding of a new set of headers, the reference set of headers is - // interpreted into the working set of headers - this._context.reinitialize(); -  - // * Then, the header representations are processed in their order of occurrence in the frame. - // The decoding process of the header representations are defined in the `execute(command)` - // method of the `CompressionContext` class. - buffer.cursor = 0; - while (buffer.cursor < buffer.length) { - this._context.execute(Decompressor.header(buffer)); - } +HeaderSetCompressor.prototype.send = function send(rep) { + this._log.trace({ key: rep.name, value: rep.value, index: rep.index }, + 'Emitting header representation');   - // * When all the header representations have been processed, the working set contains all the - // headers of the set of headers. - var pairs = this._context.getWorkingSet(); + if (!rep.chunks) { + rep.chunks = HeaderSetCompressor.header(rep); + } + rep.chunks.forEach(this.push); +};   - // * The working set entries are `[name, value]` pairs. As a last step, these are converted to the - // usual header set format used in node.js: `{ name1: value1, name2: [value2, value3], ... }` - var headers = {}; - for (var i = 0; i < pairs.length; i++) { - var name = pairs[i][0]; - var value = pairs[i][1]; - if (name in headers) { - if (headers[name] instanceof Array) { - headers[name].push(value); - } else { - headers[name] = [headers[name], value]; +// `_transform` is the implementation of the [corresponding virtual function][_transform] of the +// TransformStream class. It processes the input headers one by one: +// [_transform]: http://nodejs.org/api/stream.html#stream_transform_transform_chunk_encoding_callback +HeaderSetCompressor.prototype._transform = function _transform(pair, encoding, callback) { + var name = pair[0].toLowerCase(); + var value = pair[1]; + var entry, rep; +  + // * tries to find full (name, value) or name match in the header table + var nameMatch = -1, fullMatch = -1; + for (var index = 0; index < this._table.length; index++) { + entry = this._table[index]; + if (entry[0] === name) { + if (entry[1] === value) { + fullMatch = index; + break; + } else Eif (nameMatch === -1) { + nameMatch = index; } - } else { - headers[name] = value; } } - this._log.trace({ headers: headers }, 'Header decompression is done'); - return headers; -};   -// Compression process -// =================== + // * if there's full match, it will be an indexed representation (or more than one) depending + // on its presence in the reference, the emitted and the keep set + if (fullMatch !== -1) { + rep = { name: fullMatch, value: fullMatch, index: -1 };   -// The decompression process is always done by a `Compressor` object. -// -// The compression related mutable state is stored in a contained `CompressionContext` object. -// The initial value of it's Header Table depends on which side of the connection is it on. -function Compressor(type, log) { - this._log = log.child({ component: 'compressor' }); -  - var initialTable = (type === 'REQUEST') ? CompressionContext.initialRequestTable - : CompressionContext.initialResponseTable; - this._context = new CompressionContext(this._log, initialTable); + if (!entry.reference) { + this.send(rep); + entry.reference = true; + entry.emitted = true; + }   - this._initializeStream(); -} -Compressor.prototype = Object.create(Transform.prototype, { constructor: { value: Compressor } }); + else Iif (entry.keep) { + this.send(rep); + this.send(rep); + this.send(rep); + this.send(rep); + entry.keep = false; + entry.emitted = true; + }   -// The `compress` method takes a header set and returns an array of buffers containing the -// encoded binary data. -// -// The inverse of the decoding process goes follows: -Compressor.prototype.compress = function compress(headers) { - this._log.trace({ headers: headers }, 'Starting header compression'); - var i; + else if (entry.emitted) { + this.send(rep); + this.send(rep); + }   - // * First, the usual node.js header set format (`{ name1: value1, name2: [value2, value3], ... }`) - // has to be converted to `[name, value]` pairs. - var pairs = []; - for (var name in headers) { - var value = headers[name]; - if (value instanceof Array) { - for (i = 0; i< value.length; i++) { - pairs.push([String(name), String(value[i])]); - } - } else { - pairs.push([String(name), String(value)]); + else { + entry.keep = true; } }   - // * Before generating commands that make the working set equal to the generated pair set, - // the reference set and the working set has to be reinitialized. - this._context.reinitialize(); - var working = this._context.getWorkingSet(), command, commands = []; -  - // * The first commands remove the unneeded headers from the working set. - for (i = 0; i < working.length; i++) { - if (!pairs.some(CompressionContext.equal.bind(null, working[i]))) { - command = this._context.generateRemoveCommand(working[i]); - this._context.execute(command); - commands.push(command); + // * otherwise, it will be a literal representation (with a name index if there's a name match) + else { + entry = entryFromPair(pair); + entry.emitted = true; +  + var insertIndex; + if (entry._size > this._table._limit / 2) { + insertIndex = -1; + } else if (nameMatch !== -1) { + insertIndex = nameMatch; + } else { + insertIndex = Infinity; } - }   - // * Then the headers that are not present in the working set yet are added. - for (i = 0; i < pairs.length; i++) { - if (!working.some(CompressionContext.equal.bind(null, pairs[i]))) { - command = this._context.generateAddCommand(pairs[i]); - this._context.execute(command); - commands.push(command); + if (insertIndex !== -1) { + entry.reference = true; + var droppedEntries = this._table.add(insertIndex, entry); + for (index = 0; index < droppedEntries.length; index++) { + var dropped = droppedEntries[index]; + if (dropped.keep) { + rep = { name: index, value: index, index: -1 }; + this.send(rep); + this.send(rep); + } + } } - }   - // * The last step is the serialization of the generated commands. - var buffers = []; - for (i = 0; i < commands.length; i++) { - buffers.push(Compressor.header(commands[i])); + this.send({ name: (nameMatch !== -1) ? nameMatch : name, value: value, index: insertIndex }); }   - var buffer = concat(Array.prototype.concat.apply([], buffers)); // [[bufs]] -> [bufs] -> buf + callback(); +}; +  +// `_flush` is the implementation of the [corresponding virtual function][_flush] of the +// TransformStream class. It gets called when there's no more header to compress. The final step: +// [_flush]: http://nodejs.org/api/stream.html#stream_transform_flush_callback +HeaderSetCompressor.prototype._flush = function _flush(callback) { + // * removing entries from the header set that are not marked to be kept or emitted + for (var index = 0; index < this._table.length; index++) { + var entry = this._table[index]; + if (entry.reference && !entry.keep && !entry.emitted) { + this.send({ name: index, value: index, index: -1 }); + entry.reference = false; + } + entry.keep = false; + entry.emitted = false; + }   - this._log.trace({ data: buffer }, 'Header compression is done'); - return buffer; + callback(); };   -// [Detailed Format](http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-00#section-4) -// ================= +// [Detailed Format](http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-03#section-4) +// -----------------   -// Integer representation -// ---------------------- +// ### Integer representation ### // // The algorithm to represent an integer I is as follows: // @@ -2309,7 +2482,7 @@

// 3. Encode R on the next 7 bits // 4. I = Q   -Compressor.integer = function writeInteger(I, N) { +HeaderSetCompressor.integer = function writeInteger(I, N) { var limit = Math.pow(2,N) - 1; if (I < limit) { return [new Buffer([I])]; @@ -2350,7 +2523,7 @@

// 4. Increase M by 7 // 5. Return I if the most significant bit of B is 0   -Decompressor.integer = function readInteger(buffer, N) { +HeaderSetDecompressor.integer = function readInteger(buffer, N) { var limit = Math.pow(2,N) - 1;   var I = buffer[buffer.cursor] & limit; @@ -2370,8 +2543,7 @@

return I; };   -// String literal representation -// ----------------------------- +// ### String literal representation ### // // Literal **strings** can represent header names or header values. They are encoded in two parts: // @@ -2380,24 +2552,23 @@

// than 128, it is represented as one byte. // 2. The string value represented as a list of UTF-8 characters.   -Compressor.string = function writeString(str) { +HeaderSetCompressor.string = function writeString(str) { var encodedString = new Buffer(str, 'utf8'); - var encodedLength = Compressor.integer(encodedString.length, 0); + var encodedLength = HeaderSetCompressor.integer(encodedString.length, 0); return encodedLength.concat(encodedString); };   -Decompressor.string = function readString(buffer) { - var length = Decompressor.integer(buffer, 0); +HeaderSetDecompressor.string = function readString(buffer) { + var length = HeaderSetDecompressor.integer(buffer, 0); var str = buffer.toString('utf8', buffer.cursor, buffer.cursor + length); buffer.cursor += length; return str; };   -// [Header represenations](http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-00#section-4.3) -// ----------------------- +// ### Header represenations ###   // The JavaScript object representation is described near the -// `CompressionContext.prototype.execute()` method definition. +// `HeaderTable.prototype.execute()` method definition. // // **All binary header representations** start with a prefix signaling the representation type and // an index represented using prefix coded integers: @@ -2439,7 +2610,7 @@

literalSubstitution : { prefix: 6, pattern: 0x00 } };   -Compressor.header = function writeHeader(header) { +HeaderSetCompressor.header = function writeHeader(header) { var representation, buffers = [];   if (typeof header.value === 'number') { @@ -2453,21 +2624,21 @@

}   if (representation === representations.indexed) { - buffers.push(Compressor.integer(header.value, representation.prefix)); + buffers.push(HeaderSetCompressor.integer(header.value, representation.prefix));   } else { if (typeof header.name === 'number') { - buffers.push(Compressor.integer(header.name + 1, representation.prefix)); + buffers.push(HeaderSetCompressor.integer(header.name + 1, representation.prefix)); } else { - buffers.push(Compressor.integer(0, representation.prefix)); - buffers.push(Compressor.string(header.name)); + buffers.push(HeaderSetCompressor.integer(0, representation.prefix)); + buffers.push(HeaderSetCompressor.string(header.name)); }   if (representation === representations.literalSubstitution) { - buffers.push(Compressor.integer(header.index, 0)); + buffers.push(HeaderSetCompressor.integer(header.index, 0)); }   - buffers.push(Compressor.string(header.value)); + buffers.push(HeaderSetCompressor.string(header.value)); }   buffers[0][0][0] |= representation.pattern; @@ -2475,7 +2646,7 @@

return Array.prototype.concat.apply([], buffers); // array of arrays of buffers -> array of buffers };   -Decompressor.header = function readHeader(buffer) { +HeaderSetDecompressor.header = function readHeader(buffer) { var representation, header = {};   var firstByte = buffer[buffer.cursor]; @@ -2492,34 +2663,34 @@

}   if (representation === representations.indexed) { - header.value = header.name = Decompressor.integer(buffer, representation.prefix); + header.value = header.name = HeaderSetDecompressor.integer(buffer, representation.prefix); header.index = -1;   } else { - header.name = Decompressor.integer(buffer, representation.prefix) - 1; + header.name = HeaderSetDecompressor.integer(buffer, representation.prefix) - 1; if (header.name === -1) { - header.name = Decompressor.string(buffer); + header.name = HeaderSetDecompressor.string(buffer); }   if (representation === representations.literalSubstitution) { - header.index = Decompressor.integer(buffer, 0); + header.index = HeaderSetDecompressor.integer(buffer, 0); } else if (representation === representations.literalIncremental) { header.index = Infinity; } else { header.index = -1; }   - header.value = Decompressor.string(buffer); + header.value = HeaderSetDecompressor.string(buffer); }   return header; };   -// The compression layer -// ===================== +// Integration with HTTP/2 +// =======================   // This section describes the interaction between the compressor/decompressor and the rest of the -// HTTP/2 implementation. The Compressor and the Decompressor makes up a layer between the +// HTTP/2 implementation. The `Compressor` and the `Decompressor` makes up a layer between the // [framer](framer.html) and the [connection handling component](connection.html). They let most // frames pass through, except HEADERS and PUSH_PROMISE frames. They convert the frames between // these two representations: @@ -2539,44 +2710,86 @@

  var MAX_HTTP_PAYLOAD_SIZE = 16383;   +// The Compressor class +// -------------------- +  // The Compressor transform stream is basically stateless. -Compressor.prototype._initializeStream = function _initializeStream() { - Transform.call(this, { objectMode: true }); +util.inherits(Compressor, TransformStream); +function Compressor(type, log) { + TransformStream.call(this, { objectMode: true }); +  + this._log = log.child({ component: 'compressor' }); +  + assert((type === 'REQUEST') || (type === 'RESPONSE')); + var initialTable = (type === 'REQUEST') ? HeaderTable.initialRequestTable + : HeaderTable.initialResponseTable; + this._table = new HeaderTable(this._log, initialTable); +} +  +// `compress` takes a header set, and compresses it using a new `HeaderSetCompressor` stream +// instance. This means that from now on, the advantages of streaming header encoding are lost, +// but the API becomes simpler. +Compressor.prototype.compress = function compress(headers) { + var compressor = new HeaderSetCompressor(this._log, this._table); + for (var name in headers) { + var value = headers[name]; + if (value instanceof Array) { + for (var i = 0; i< value.length; i++) { + compressor.write([String(name), String(value[i])]); + } + } else { + compressor.write([String(name), String(value)]); + } + } + compressor.end(); +  + var chunk, chunks = []; + while (chunk = compressor.read()) { + chunks.push(chunk); + } + return concat(chunks); };   +// When a `frame` arrives Compressor.prototype._transform = function _transform(frame, encoding, done) { - // When it receives a HEADERS or PUSH_PROMISE frame + // * and it is a HEADERS or PUSH_PROMISE frame + // * it generates a header block using the compress method + // * cuts the header block into `chunks` that are not larger than `MAX_HTTP_PAYLOAD_SIZE` + // * for each chunk, it pushes out a chunk frame that is identical to the original, except + // the `data` property which holds the given chunk, the type of the frame which is always + // CONTINUATION except for the first frame, and the END_HEADERS/END_PUSH_STREAM flag that + // marks the last frame and the END_STREAM flag which is always false before the end if (frame.type === 'HEADERS' || frame.type === 'PUSH_PROMISE') { - // * it generates a header block using the compress method var buffer = this.compress(frame.headers);   - // * cuts the header block into `chunks` that are not larger than `MAX_HTTP_PAYLOAD_SIZE` var chunks = cut(buffer, MAX_HTTP_PAYLOAD_SIZE);   - // * for each chunk, it pushes out a chunk frame that is identical to the original, except - // the `data` property which holds the given chunk, the END_HEADERS/END_PUSH_STREAM flag that - // marks the last frame and the END_STREAM flag which is always false before the end for (var i = 0; i < chunks.length; i++) { - var flags = shallowCopy(frame.flags); - if (i === chunks.length - 1) { - flags['END_' + frame.type] = true; + var chunkFrame; + var first = (i === 0); + var last = (i === chunks.length - 1); +  + if (first) { + chunkFrame = util._extend({}, frame); + chunkFrame.flags = util._extend({}, frame.flags); + chunkFrame.flags['END_' + frame.type] = last; } else { - flags['END_' + frame.type] = false; - flags['END_STREAM'] = false; + chunkFrame = { + type: 'CONTINUATION', + flags: { END_HEADERS: last }, + stream: frame.stream + }; + } + if (chunkFrame.type !== 'PUSH_PROMISE') { + chunkFrame.flags.END_STREAM = last && frame.END_STREAM; } + chunkFrame.data = chunks[i];   - this.push({ - type: frame.type, - flags: flags, - stream: frame.stream, - priority: frame.priority, - promised_stream: frame.promised_stream, - data: chunks[i] - }); + this.push(chunkFrame); } }   - // Otherwise, the frame is forwarded without taking any action + // * otherwise, the frame is forwarded without taking any action else { this.push(frame); } @@ -2584,26 +2797,62 @@

done(); };   +// The Decompressor class +// ---------------------- +  // The Decompressor is a stateful transform stream, since it has to collect multiple frames first, // and the decoding comes after unifying the payload of those frames. // // If there's a frame in progress, `this._inProgress` is `true`. The frames are collected in // `this._frames`, and the type of the frame and the stream identifier is stored in `this._type` // and `this._stream` respectively. -Decompressor.prototype._initializeStream = function _initializeStream() { - Transform.call(this, { objectMode: true }); +util.inherits(Decompressor, TransformStream); +function Decompressor(type, log) { + TransformStream.call(this, { objectMode: true }); +  + this._log = log.child({ component: 'compressor' }); +  + assert((type === 'REQUEST') || (type === 'RESPONSE')); + var initialTable = (type === 'REQUEST') ? HeaderTable.initialRequestTable + : HeaderTable.initialResponseTable; + this._table = new HeaderTable(this._log, initialTable); +  this._inProgress = false; - this._type = undefined; - this._stream = undefined; - this._frames = undefined; + this._base = undefined; +} +  +// `decompress` takes a full header block, and decompresses it using a new `HeaderSetDecompressor` +// stream instance. This means that from now on, the advantages of streaming header decoding are +// lost, but the API becomes simpler. +Decompressor.prototype.decompress = function decompress(block) { + var decompressor = new HeaderSetDecompressor(this._log, this._table); + decompressor.end(block); +  + var headers = {}; + var pair; + while (pair = decompressor.read()) { + var name = pair[0]; + var value = pair[1]; + if (name in headers) { + if (headers[name] instanceof Array) { + headers[name].push(value); + } else { + headers[name] = [headers[name], value]; + } + } else { + headers[name] = value; + } + } +  + return headers; };   // When a `frame` arrives Decompressor.prototype._transform = function _transform(frame, encoding, done) { // * and the collection process is already `_inProgress`, the frame is simply stored, except if - // it's an illegal frame + // it's an illegal frame if (this._inProgress) { - if ((frame.type !== this._type) || (frame.stream !== this._stream)) { + if ((frame.type !== 'CONTINUATION') || (frame.stream !== this._base.stream)) { this._log.error('A series of HEADER frames were not continuous'); this.emit('error', 'PROTOCOL_ERROR'); return; @@ -2612,11 +2861,10 @@

}   // * and the collection process is not `_inProgress`, but the new frame's type is HEADERS or - // PUSH_PROMISE, a new collection process begins + // PUSH_PROMISE, a new collection process begins else if ((frame.type === 'HEADERS') || (frame.type === 'PUSH_PROMISE')) { this._inProgress = true; - this._type = frame.type; - this._stream = frame.stream; + this._base = frame; this._frames = [frame]; }   @@ -2625,9 +2873,9 @@

this.push(frame); }   - // When the frame signals that it's the last in the series, the header block chunks are - // concatenated, the headers are decompressed, and a new frame gets pushed out with the - // decompressed headers. + // * When the frame signals that it's the last in the series, the header block chunks are + // concatenated, the headers are decompressed, and a new frame gets pushed out with the + // decompressed headers. if (this._inProgress && (frame.flags.END_HEADERS || frame.flags.END_PUSH_PROMISE)) { var buffer = concat(this._frames.map(function(frame) { return frame.data; @@ -2639,104 +2887,15 @@

this.emit('error', 'COMPRESSION_ERROR'); return; } - this.push({ - type: frame.type, - flags: frame.flags, - stream: frame.stream, - priority: frame.priority, - promised_stream: frame.promised_stream, - headers: headers - }); + this.push(util._extend({ headers: headers }, this._base)); this._inProgress = false; }   done(); };   -// [Initial header names](http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-00#appendix-A) -// ====================== -  -CompressionContext.initialRequestTable = [ - [ ':scheme' , 'http' ], - [ ':scheme' , 'https' ], - [ ':host' , '' ], - [ ':path' , '/' ], - [ ':method' , 'get' ], - [ 'accept' , '' ], - [ 'accept-charset' , '' ], - [ 'accept-encoding' , '' ], - [ 'accept-language' , '' ], - [ 'cookie' , '' ], - [ 'if-modified-since' , '' ], - [ 'keep-alive' , '' ], - [ 'user-agent' , '' ], - [ 'proxy-connection' , '' ], - [ 'referer' , '' ], - [ 'accept-datetime' , '' ], - [ 'authorization' , '' ], - [ 'allow' , '' ], - [ 'cache-control' , '' ], - [ 'connection' , '' ], - [ 'content-length' , '' ], - [ 'content-md5' , '' ], - [ 'content-type' , '' ], - [ 'date' , '' ], - [ 'expect' , '' ], - [ 'from' , '' ], - [ 'if-match' , '' ], - [ 'if-none-match' , '' ], - [ 'if-range' , '' ], - [ 'if-unmodified-since' , '' ], - [ 'max-forwards' , '' ], - [ 'pragma' , '' ], - [ 'proxy-authorization' , '' ], - [ 'range' , '' ], - [ 'te' , '' ], - [ 'upgrade' , '' ], - [ 'via' , '' ], - [ 'warning' , '' ] -]; -  -CompressionContext.initialResponseTable = [ - [ ':status' , '200' ], - [ 'age' , '' ], - [ 'cache-control' , '' ], - [ 'content-length' , '' ], - [ 'content-type' , '' ], - [ 'date' , '' ], - [ 'etag' , '' ], - [ 'expires' , '' ], - [ 'last-modified' , '' ], - [ 'server' , '' ], - [ 'set-cookie' , '' ], - [ 'vary' , '' ], - [ 'via' , '' ], - [ 'access-control-allow-origin' , '' ], - [ 'accept-ranges' , '' ], - [ 'allow' , '' ], - [ 'connection' , '' ], - [ 'content-disposition' , '' ], - [ 'content-encoding' , '' ], - [ 'content-language' , '' ], - [ 'content-location' , '' ], - [ 'content-md5' , '' ], - [ 'content-range' , '' ], - [ 'link' , '' ], - [ 'location' , '' ], - [ 'p3p' , '' ], - [ 'pragma' , '' ], - [ 'proxy-authenticate' , '' ], - [ 'refresh' , '' ], - [ 'retry-after' , '' ], - [ 'strict-transport-security' , '' ], - [ 'trailer' , '' ], - [ 'transfer-encoding' , '' ], - [ 'warning' , '' ], - [ 'www-authenticate' , '' ] -]; -  // Helper functions -// ---------------- +// ================   // Concatenate an array of buffers into a new buffer function concat(buffers) { @@ -2764,21 +2923,12 @@

} while(cursor < buffer.length); return chunks; } -  -// Shallow copy inspired by underscore's [clone](http://underscorejs.org/#clone) -function shallowCopy(object) { - var clone = {}; - for (var key in object) { - clone[key] = object[key]; - } - return clone; -}  

diff --git a/coverage/lcov-report/lib/connection.js.html b/coverage/lcov-report/lib/connection.js.html index 2b5a1418..03c57e15 100644 --- a/coverage/lcov-report/lib/connection.js.html +++ b/coverage/lcov-report/lib/connection.js.html @@ -183,16 +183,16 @@

Code coverage report for lib/connection.js

- Statements: 93.65% (177 / 189)      + Statements: 92.79% (193 / 208)      - Branches: 83.33% (45 / 54)      + Branches: 81.25% (52 / 64)      - Functions: 93.75% (30 / 32)      + Functions: 94.12% (32 / 34)      - Lines: 93.65% (177 / 189)      + Lines: 92.79% (193 / 208)     

All files » lib/ » connection.js
@@ -690,7 +690,43 @@

489 490 491 -4921 +492 +493 +494 +495 +496 +497 +498 +499 +500 +501 +502 +503 +504 +505 +506 +507 +508 +509 +510 +511 +512 +513 +514 +515 +516 +517 +518 +519 +520 +521 +522 +523 +524 +525 +526 +527 +5281       @@ -727,22 +763,22 @@

  1   -43 +45     -43 +45     -43 +45     -43 +45     -43 +45     -43 +45       @@ -789,34 +825,30 @@

      -43 -43 +45 +45     -43 -43 +45 +45     -43 +45       -43 -43 -43 -  -  -1 -438 +45 +45 +45         1 -40 +42   -40 -40 +42 +42       @@ -830,10 +862,10 @@

    1 -116 -34 -34 -34 +130 +39 +39 +39       @@ -847,14 +879,14 @@

  1   -43 -22 -22 +45 +23 +23       -21 -21 +22 +22       @@ -865,66 +897,82 @@

      -43 +45     -43 -43 -43 +45 +45 +45   -43 +45       1 -43 -43 -43 -43 -43 +45 +45 +45 +45 +45 +  +  +1 +75 +27 +  +48       1 -64 -64 -64 -94 +10 +10 +10 +10 +10 +8   -64 +  +10         1 -1 -1 -1 -1 +22 +  +22 +22 +22 +22   +22       1 -21 +18 +  +  +18 +18 +  +18 +  +    -21 -21 -21 -21   -21       1 -17 +448     -17 -17 +448 +448 +388   -17       @@ -932,76 +980,83 @@

      -1 -412     -412 -412 -438 -438 -438 -438 -75 +388 +388 +622 +622 +622 +  +622 +537 +  +  +85         -75 -17   +85 +85 +18 +  +67   -75 -75 +  +85 5 5     -75 -75 -75 +85 +85 +85     +85 +85   -75 -75   -  -75 +85   -75 +85     +85 +        -412 +  +448         1 -113 +125     -113 +125     -113 -16 +125 +17       -113 +125 5     -113 +125     -113 +125   -113 +125       @@ -1014,13 +1069,13 @@

  1   -43 -43 +45 +45     -43 -34 -34 +45 +36 +36       @@ -1028,23 +1083,26 @@

      -43 +45       1 -34 -52 +36 +54         1 -43 +45         +45 +70 +        @@ -1058,9 +1116,9 @@

    1 -43 -43 -43 +45 +45 +45       @@ -1138,16 +1196,18 @@

  1   -43 -43 -43 -  -43 -43 -43 -  +45 +45 +45 +45 +25     +45 +45 +45 +45 +45       @@ -1158,14 +1218,14 @@

    1 -39 +41 1 1   -38 -38 -38 -51 +40 +40 +40 +54       @@ -1173,14 +1233,26 @@

    1 +24 +22 22 -20 -20 2 1 1     +  +1 +20 +20 +20 +20 +  +  +  +  +  +   
var assert = process.env.HTTP2_ASSERT ? require('assert') : function noop() {};
  
 // The Connection class
@@ -1225,15 +1297,15 @@ 

  // * stream management this._initializeStreamManagement(firstStreamId); -  - // * settings management - this._initializeSettingsManagement(settings);   // * lifecycle management this._initializeLifecycleManagement();   // * flow control this._initializeFlowControl(); +  + // * settings management + this._initializeSettingsManagement(settings);   // * multiplexing } @@ -1278,27 +1350,23 @@

// Initialization: Connection.prototype._initializeStreamManagement = function _initializeStreamManagement(firstStreamId) { // * streams are stored in two data structures: - // * `_streamsIn` is an id -> stream map of the streams that are allowed to receive frames. - // * `_streamsOut` is the list of all streams ordered by priority. - this._streamsIn = []; - this._streamsOut = []; + // * `_streamIds` is an id -> stream map of the streams that are allowed to receive frames. + // * `_streamPriorities` is a priority -> [stream] map of stream that allowed to send frames. + this._streamIds = []; + this._streamPriorities = [];   // * The next outbound stream ID and the last inbound stream id this._nextStreamId = firstStreamId; this._lastIncomingStream = 0;   // * Calling `_writeControlFrame` when there's an incoming stream with 0 as stream ID - this._streamsIn[0] = { upstream: { write: this._writeControlFrame.bind(this) } }; + this._streamIds[0] = { upstream: { write: this._writeControlFrame.bind(this) } };   // * By default, the number of concurrent outbound streams is not limited. The `_streamLimit` can // be set by the SETTINGS_MAX_CONCURRENT_STREAMS setting. this._streamCount = 0; this._streamLimit = Infinity; - this.on('SETTINGS_MAX_CONCURRENT_STREAMS', this._updateStreamLimit); -}; -  -Connection.prototype._getIdOf = function _getIdOf(stream) { - return this._streamsIn.indexOf(stream); + this.on('RECEIVING_SETTINGS_MAX_CONCURRENT_STREAMS', this._updateStreamLimit); };   // `_writeControlFrame` is called when there's an incoming frame in the `_control` stream. It @@ -1332,11 +1400,11 @@

// an outbound stream) consists of three steps: // // 1. var stream = new Stream(this._log); -// 2. this._enableReceiving(stream, id); -// 2. this._enableSending(stream); +// 2. this._allocateId(stream, id); +// 2. this._allocatePriority(stream);   -// Enabling receiving -Connection.prototype._enableReceiving = function _enableReceiving(stream, id) { +// Allocating an ID to a stream +Connection.prototype._allocateId = function _allocateId(stream, id) { // * initiated stream without definite ID if (id === undefined) { id = this._nextStreamId; @@ -1356,42 +1424,43 @@

return undefined; }   - assert(!(id in this._streamsIn)); + assert(!(id in this._streamIds));   - // * adding to `this._streamsIn` - this._log.trace({ s: stream, stream_id: id }, 'Enabling receiving for a stream.'); - this._streamsIn[id] = stream; + // * adding to `this._streamIds` + this._log.trace({ s: stream, stream_id: id }, 'Allocation ID for stream.'); + this._streamIds[id] = stream; this.emit('new_stream', stream, id);   return id; };   -// Enabling sending -Connection.prototype._enableSending = function _enableSending(stream) { - this._log.trace({ s: stream }, 'Enabling sending for a stream.'); - this._insert(stream); +// Allocating a priority to a stream, and managing priority changes +Connection.prototype._allocatePriority = function _allocatePriority(stream) { + this._log.trace({ s: stream }, 'Allocation priority for stream.'); + this._insert(stream, stream._priority); stream.on('priority', this._reprioritize.bind(this, stream)); stream.upstream.on('readable', this.read.bind(this, 0)); this.read(0); };   -// `_insert(stream)` inserts `stream` in `_streamsOut` in a place determined by `stream._priority` -Connection.prototype._insert = function _insert(stream) { - var streams = this._streamsOut; - var index = 0; - while ((index < streams.length) && (streams[index]._priority <= stream._priority)) { - index += 1; +Connection.prototype._insert = function _insert(stream, priority) { + if (priority in this._streamPriorities) { + this._streamPriorities[priority].push(stream); + } else { + this._streamPriorities[priority] = [stream]; } - streams.splice(index, 0, stream); };   -// `_reprioritize(stream)` moves `stream` to the apprioriate place in `_streamsOut` (according to -// its `_priority`) -Connection.prototype._reprioritize = function _reprioritize(stream) { - var index = this._streamsOut.indexOf(stream); +Connection.prototype._reprioritize = function _reprioritize(stream, priority) { + var bucket = this._streamPriorities[stream._priority]; + var index = bucket.indexOf(stream); assert(index !== -1); - this._streamsOut.splice(index, 1); - this._insert(stream); + bucket.splice(index, 1); + if (bucket.length === 0) { + delete this._streamPriorities[stream._priority]; + } +  + this._insert(stream, priority); };   // Creating an *inbound* stream with the given ID. It is called when there's an incoming frame to @@ -1400,8 +1469,8 @@

this._log.debug({ stream_id: id }, 'New incoming stream.');   var stream = new Stream(this._log); - this._enableReceiving(stream, id); - this._enableSending(stream); + this._allocateId(stream, id); + this._allocatePriority(stream); this.emit('stream', stream, id);   return stream; @@ -1413,7 +1482,7 @@

  // * Receiving is enabled immediately, and an ID gets assigned to the stream var stream = new Stream(this._log); - this._enableSending(stream); + this._allocatePriority(stream);   return stream; }; @@ -1426,42 +1495,64 @@

Connection.prototype._send = function _send() { this._log.trace('Starting forwarding frames from streams.');   - // * Looping through the active streams in priority order and forwarding frames from streams -stream_loop: - for (var i = 0; i < this._streamsOut.length; i++) { - var stream = this._streamsOut[i]; - var id = this._getIdOf(stream); - var frame; - while (frame = stream.upstream.read()) { - Iif (this._streamCount + frame.count_change > this._streamLimit) { - stream.upstream.unshift(frame); - continue stream_loop; + // * Looping through priority `bucket`s in priority order. +priority_loop: + for (var priority in this._streamPriorities) { + var bucket = this._streamPriorities[priority].slice(); +  + // * Forwarding frames from buckets with round-robin scheduling. + // 1. pulling out frame + // 2. if there's no frame, remove this stream from `buckets` + // 3. if forwarding this frame would make `streamCount` greater than `streamLimit`, remove + // this stream + // 4. assigning an ID to the frame (allocating an ID to the stream if there isn't already) + // 5. if forwarding a PUSH_PROMISE, allocate ID to the promised stream + // 6. forwarding the frame, changing `streamCount` as appropriate + // 7. stepping to the next stream if there's still more frame needed in the output buffer + var index = 0; + while (bucket.length > 0) { + index = index % bucket.length; + var stream = bucket[index]; + var frame = stream.upstream.read(); +  + if (!frame) { + bucket.splice(index, 1); }   - if (id === -1) { - id = this._enableReceiving(stream); + else Iif (this._streamCount + frame.count_change > this._streamLimit) { + stream.upstream.unshift(frame); + bucket.splice(index, 1); }   - frame.stream = id; - if (frame.type === 'PUSH_PROMISE') { - setImmediate(this._enableSending.bind(this, frame.promised_stream)); - frame.promised_stream = this._enableReceiving(frame.promised_stream); - } + else { + var id = this._streamIds.indexOf(stream); + if (id === -1) { + frame.stream = this._allocateId(stream); + } else { + frame.stream = id; + }   - this._log.trace({ s: stream, frame: frame }, 'Trying to forward outgoing frame'); - var remainder = null; - var moreNeeded = this._push(frame, function(remainderFrame) { - stream.upstream.unshift(remainder = remainderFrame); - }); + if (frame.type === 'PUSH_PROMISE') { + this._allocatePriority(frame.promised_stream); + frame.promised_stream = this._allocateId(frame.promised_stream); + }   - Eif (!remainder) { - this._changeStreamCount(frame.count_change); - } + this._log.trace({ s: stream, frame: frame }, 'Trying to forward outgoing frame'); + var remainder = null; + var moreNeeded = this._push(frame, function(remainderFrame) { + stream.upstream.unshift(remainder = remainderFrame); + }); + Eif (!remainder) { + this._changeStreamCount(frame.count_change); + }   - Iif (moreNeeded === null) { - continue stream_loop; - } else Iif (moreNeeded === false) { - break stream_loop; + Iif (moreNeeded === null) { + bucket.splice(index, 1); + } else Iif (moreNeeded === false) { + break priority_loop; + } else { + index += 1; + } } } } @@ -1475,7 +1566,7 @@

this._log.trace({ frame: frame }, 'Forwarding incoming frame');   // * gets the appropriate stream from the stream registry - var stream = this._streamsIn[frame.stream]; + var stream = this._streamIds[frame.stream];   // * or creates one if it's not in `this.streams` if (!stream) { @@ -1525,7 +1616,7 @@

// Handling of incoming SETTINGS frames. Connection.prototype._receiveSettings = function _receiveSettings(frame) { for (var name in frame.settings) { - this.emit(name, frame.settings[name]); + this.emit('RECEIVING_' + name, frame.settings[name]); } };   @@ -1536,6 +1627,9 @@

type: 'SETTINGS', settings: settings }); + for (var name in settings) { + this.emit('SENDING_' + name, settings[name]); + } };   // Lifecycle management @@ -1632,13 +1726,15 @@

this._initialStreamWindowSize = INITIAL_STREAM_WINDOW_SIZE; this.on('new_stream', function(stream) { stream.upstream.setInitialWindow(this._initialStreamWindowSize); + if (this._remoteFlowControlDisabled) { + stream.upstream.disableRemoteFlowControl(); + } }); - this.on('SETTINGS_INITIAL_WINDOW_SIZE', this._setInitialStreamWindowSize); - this.on('SETTINGS_FLOW_CONTROL_OPTIONS', this._setStreamFlowControl); - this._streamsIn[0].upstream.setInitialWindow = function noop() {}; -  - // Flow control for incoming frames is not yet supported, and is turned off in the initial - // SETTINGS frame. + this.on('RECEIVING_SETTINGS_INITIAL_WINDOW_SIZE', this._setInitialStreamWindowSize); + this.on('RECEIVING_SETTINGS_FLOW_CONTROL_OPTIONS', this._setLocalFlowControl); + this.on('SENDING_SETTINGS_FLOW_CONTROL_OPTIONS', this._setRemoteFlowControl); + this._streamIds[0].upstream.setInitialWindow = function noop() {}; + this._streamIds[0].upstream.disableRemoteFlowControl = function noop() {}; };   // The initial connection flow control window is 65535 bytes. @@ -1655,7 +1751,7 @@

} else { this._log.debug({ size: size }, 'Changing stream initial window size.'); this._initialStreamWindowSize = size; - this._streamsIn.forEach(function(stream) { + this._streamIds.forEach(function(stream) { stream.upstream.setInitialWindow(size); }); } @@ -1663,7 +1759,7 @@

  // `_setStreamFlowControl()` may be used to disable/enable flow control. In practice, it is just // for turning off flow control since it can not be turned on. -Connection.prototype._setStreamFlowControl = function _setStreamFlowControl(disable) { +Connection.prototype._setLocalFlowControl = function _setLocalFlowControl(disable) { if (disable) { this._increaseWindow(Infinity); this._setInitialStreamWindowSize(Infinity); @@ -1672,12 +1768,24 @@

this.emit('error', 'FLOW_CONTROL_ERROR'); } }; +  +Connection.prototype._setRemoteFlowControl = function _setRemoteFlowControl(disable) { + Eif (disable) { + this.disableRemoteFlowControl(); + this._streamIds.forEach(function(stream) { + stream.upstream.disableRemoteFlowControl(); + }); + } else if (this._remoteFlowControlDisabled) { + this._log.error('Trying to re-enable flow control after it was turned off.'); + throw new Error('Trying to re-enable flow control after it was turned off.'); + } +};  

diff --git a/coverage/lcov-report/lib/endpoint.js.html b/coverage/lcov-report/lib/endpoint.js.html index 23126304..ad89fb50 100644 --- a/coverage/lcov-report/lib/endpoint.js.html +++ b/coverage/lcov-report/lib/endpoint.js.html @@ -183,7 +183,7 @@

Code coverage report for lib/endpoint.js

- Statements: 100% (83 / 83)      + Statements: 100% (84 / 84)      Branches: 88.89% (16 / 18)      @@ -192,7 +192,7 @@

Functions: 92.86% (13 / 14)      - Lines: 100% (83 / 83)      + Lines: 100% (84 / 84)     

All files » lib/ » endpoint.js
@@ -396,7 +396,9 @@

195 196 197 -1981 +198 +199 +2001   1 1 @@ -412,30 +414,30 @@

    1 -22 +24     -22 +24       -22 -22 -11 +24 +24 +12   -11 +12           -22 +24     -22 +24     -22 +24   1   @@ -446,37 +448,38 @@

    1 -11 -11 +12 +12       1   -11 +12     -11 +12     -10 -10 -217 +11 +11 +241 1   1 1   -216 +240         -9 -9 -9 -9 -9 +10 +10 +10 +10 +10 +        @@ -513,62 +516,63 @@

      +1   1 -22 -22 -11 -11 -11 +24 +24 +12 +12 +12   -11 -11 -11 +12 +12 +12     -22 -22 -22 -22 -22 +24 +24 +24 +24 +24   -22 -22 +24 +24   -22 +24     1 -256 -256 -156 +293 +293 +178       1 -46 +51           1 -22 +24     1 -10 +11           1 -22 -22 -22 -22 -22 +24 +24 +24 +24 +24     1 @@ -711,6 +715,8 @@

// read() | | write() // v |   +var MAX_HTTP_PAYLOAD_SIZE = 16383; +  Endpoint.prototype._initializeDataFlow = function _initializeDataFlow(role, settings) { var firstStreamId, compressorRole, decompressorRole; if (role === 'CLIENT') { @@ -723,8 +729,8 @@

decompressorRole = 'REQUEST'; }   - this._serializer = new Serializer(this._log); - this._deserializer = new Deserializer(this._log); + this._serializer = new Serializer(this._log, MAX_HTTP_PAYLOAD_SIZE); + this._deserializer = new Deserializer(this._log, MAX_HTTP_PAYLOAD_SIZE); this._compressor = new Compressor(compressorRole, this._log); this._decompressor = new Decompressor(decompressorRole, this._log); this._connection = new Connection(firstStreamId, settings, this._log); @@ -795,7 +801,7 @@

diff --git a/coverage/lcov-report/lib/flow.js.html b/coverage/lcov-report/lib/flow.js.html index a821eb49..e44a34d3 100644 --- a/coverage/lcov-report/lib/flow.js.html +++ b/coverage/lcov-report/lib/flow.js.html @@ -186,7 +186,7 @@

Statements: 100% (105 / 105)      - Branches: 98.53% (67 / 68)      + Branches: 97.06% (66 / 68)      Functions: 93.75% (15 / 16)      @@ -530,14 +530,7 @@

329 330 331 -332 -333 -334 -335 -336 -337 -338 -3391 +3321       @@ -609,15 +602,15 @@

    1 -162 +164   -162 -162 -162 +164 +164 +164   -162 -162 -162 +164 +164 +164   1   @@ -634,37 +627,37 @@

    1 -308 +329   -308 -59 +329 +63     -308 -100 -100 -100 -7 +329 +106 +106 +106 +12   -100 +106         -208 +223     -308 +329   -6 +5           1 -7 -7 +12 +12 6     @@ -675,16 +668,9 @@

      -  1 -1 -1 -  -  -  -  -  -  +45 +45       @@ -715,8 +701,8 @@

  1   -1244 -1143 +1392 +1291       @@ -734,7 +720,7 @@

      -1244 +1392       @@ -748,11 +734,11 @@

1   1 -264 -357 -357 +285 +378 +378   -257 +278     100 @@ -774,40 +760,40 @@

93     -357 -357 -350 -350 -140 +378 +378 +371 +371 +144   -140 -140 +144 +144   -350 +371     -357 +378     -264 +285 7     -264 +285       1 -182 +193 6   -176 -176 -176 +187 +187 +187     -182 -181 +193 +192   1 1 @@ -817,8 +803,8 @@

    1 -34 -34 +36 +36       @@ -835,17 +821,17 @@

1   1 -90 +94 1 1   -89 -89 -89 +93 +93 +93 1 1   -88 +92       @@ -859,7 +845,7 @@

    1 -6 +5       @@ -867,8 +853,8 @@

    1 -56 -56 +59 +59       @@ -955,7 +941,7 @@

  this._ended = false; this._received = 0; - this._remoteFlowControlDisabled = true; + this._remoteFlowControlDisabled = false; } Flow.prototype = Object.create(Duplex.prototype, { constructor: { value: Flow } });   @@ -1012,17 +998,10 @@

} };   -// Remote flow control is currently disabled by default, but in the future, it may be turned off -// using the `disableRemoteFlowControl` method. +// Must be called after sending a SETTINGS frame that turns off flow control on the remote side. Flow.prototype.disableRemoteFlowControl = function disableRemoteFlowControl() { + this._log.debug('Turning off remote flow control'); this._remoteFlowControlDisabled = true; - this.push({ - type: 'WINDOW_UPDATE', - stream: this._flowControlId, - flags: { - END_FLOW_CONTROL: true - } - }); };   // Outgoing frames - sending procedure @@ -1197,7 +1176,7 @@

// * A sender that receives a WINDOW_UPDATE frame updates the corresponding window by the amount // specified in the frame. Flow.prototype._updateWindow = function _updateWindow(frame) { - this._increaseWindow(frame.flags.END_FLOW_CONTROL ? Infinity : frame.window_size); + this._increaseWindow(frame.flags.END_FLOW_CONTROL ? Infinity : frame.window_size); };   // A SETTINGS frame can alter the initial flow control window size for all current streams. When the @@ -1218,7 +1197,7 @@

diff --git a/coverage/lcov-report/lib/framer.js.html b/coverage/lcov-report/lib/framer.js.html index 08aa9848..e75a4cb7 100644 --- a/coverage/lcov-report/lib/framer.js.html +++ b/coverage/lcov-report/lib/framer.js.html @@ -183,16 +183,16 @@

Code coverage report for lib/framer.js

- Statements: 93.99% (219 / 233)      + Statements: 94.26% (230 / 244)      - Branches: 82.86% (58 / 70)      + Branches: 82.43% (61 / 74)      - Functions: 90.32% (28 / 31)      + Functions: 90.91% (30 / 33)      - Lines: 93.99% (219 / 233)      + Lines: 94.26% (230 / 244)     

All files » lib/ » framer.js
@@ -901,7 +901,42 @@

700 701 702 -703  +703 +704 +705 +706 +707 +708 +709 +710 +711 +712 +713 +714 +715 +716 +717 +718 +719 +720 +721 +722 +723 +724 +725 +726 +727 +728 +729 +730 +731 +732 +733 +734 +735 +736 +737 +738        @@ -926,8 +961,9 @@

    1 -23 -23 +25 +25 +25   1   @@ -935,22 +971,24 @@

    1 -87 +99 +  +99   -87 +99 +99 +99   -87 -87 -87 +99   -87 -178 +99 +202     -178 +202     -87 +99       @@ -965,9 +1003,10 @@

    1 -23 -23 -23 +25 +25 +25 +25   1   @@ -977,39 +1016,43 @@

    1 -183 -183 -183 -183 -103 +209 +209 +209 +209 +117           1 -61 +68   -61 +68       -61 +68 +    +171 +171 +171 +171   -148 -148 -148 -148           +171 +92 +92 +92 +  +    -148 -80 -80       @@ -1017,24 +1060,24 @@

      -148 -80 -80 -80 +171 +92 +92 +92       -80 -80 +92 +92         -80 +92       -61 +68       @@ -1094,47 +1137,47 @@

1   1 -97 +110   -97 -97 -101 +110 +110 +114   -97 -97 +110 +110   -97 -97 +110 +110   -97 -97 -70 -70 -70 -46 +110 +110 +105 +105 +105 +54     -97 +110   -97 -97 +110 +110   -97 +110     1 -90 +103   -90 +103   -90 -90 -90 -90 -166 +103 +103 +103 +103 +196     -90 +103       @@ -1168,11 +1211,11 @@

1   1 -32 +37     1 -31 +36       @@ -1211,21 +1254,21 @@

    1 -25 +29 2 2 2 2   -25 +29     1 -24 +28 2 2   -22 +26       @@ -1327,39 +1370,40 @@

    1 -24 -24 -72 -32 -32 -32 +26 +26 +78 +34 +34 +34     -24 +26   -24 -24 -32 -32 +26 +26 +34 +34     -24 +26     1 -20 +22   -20 +22     -20 -26 -26 -26 -26 -  +22 +28 +28 +28 +28 +28 +  +    -26       @@ -1507,10 +1551,6 @@

      -  -  -  -  1   1 @@ -1536,6 +1576,36 @@

      +  +  +  +  +  +  +  +  +  +  +  +  +  +1 +  +1 +  +1 +  +1 +2 +  +  +1 +2 +  +  +  +  +  1     @@ -1627,8 +1697,9 @@

// empty adds payload adds header // array buffers buffer   -function Serializer(log) { +function Serializer(log, sizeLimit) { this._log = log.child({ component: 'serializer' }); + this._sizeLimit = sizeLimit || MAX_PAYLOAD_SIZE; Transform.call(this, { objectMode: true }); } Serializer.prototype = Object.create(Transform.prototype, { constructor: { value: Serializer } }); @@ -1644,6 +1715,8 @@

var buffers = []; Serializer[frame.type](frame, buffers); Serializer.commonHeader(frame, buffers); +  + assert(buffers[0].readUInt16BE(0) <= this._sizeLimit, 'Frame too large!');   for (var i = 0; i < buffers.length; i++) { Iif (logData) { @@ -1666,8 +1739,9 @@

// empty adds parsed adds parsed // object header properties payload properties   -function Deserializer(log) { +function Deserializer(log, sizeLimit) { this._log = log.child({ component: 'deserializer' }); + this._sizeLimit = sizeLimit || MAX_PAYLOAD_SIZE; Transform.call(this, { objectMode: true }); this._next(COMMON_HEADER_SIZE); } @@ -1711,7 +1785,11 @@

// deserializer waits for the specified length payload. if ((this._cursor === this._buffer.length) && this._waitingForHeader) { Deserializer.commonHeader(this._buffer, this._frame); - this._next(this._frame.length); + Eif (this._frame.length <= this._sizeLimit) { + this._next(this._frame.length); + } else { + this.emit('error', 'FRAME_TOO_LARGE'); + } }   // If it's payload then the the frame object is finalized and then gets pushed out. @@ -1746,7 +1824,7 @@

// bytes of data. // // Additional size limits can be set by specific application uses. HTTP limits the frame size to -// 16,383 octets. This limitation is enforced on the connection layer. +// 16,383 octets. // // 0 1 2 3 // 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 @@ -1802,7 +1880,7 @@

for (var i = 0; i < buffers.length; i++) { size += buffers[i].length; } - assert(size < MAX_PAYLOAD_SIZE, 'Too large frame: ' + size + ' bytes'); + assert(size <= MAX_PAYLOAD_SIZE, 'Frame too large!'); headerBuffer.writeUInt16BE(size, 0);   var typeId = frameTypes.indexOf(frame.type); // If we are here then the type is valid for sure @@ -2021,12 +2099,12 @@

// | Value (32) | // +---------------------------------------------------------------+ // -// A SETTINGS frame is not required to include every defined setting; senders can include only those -// parameters for which it has accurate values and a need to convey. When multiple parameters are -// sent, they SHOULD be sent in order of numerically lowest ID to highest ID. A single SETTINGS -// frame MUST NOT contain multiple values for the same ID. If the receiver of a SETTINGS frame -// discovers multiple values for the same ID, it MUST ignore all values for that ID except the first -// one. +// Each setting in a SETTINGS frame replaces the existing value for that setting. Settings are +// processed in the order in which they appear, and a receiver of a SETTINGS frame does not need to +// maintain any state other than the current value of settings. Therefore, the value of a setting +// is the last value that is seen by a receiver. This permits the inclusion of the same settings +// multiple times in the same SETTINGS frame, though doing so does nothing other than waste +// connection capacity.   Serializer.SETTINGS = function writeSettings(frame, buffers) { var settings = [], settingsLeft = Object.keys(frame.settings); @@ -2057,11 +2135,12 @@

for (var i = 0; i < buffer.length / 8; i++) { var id = buffer.readUInt32BE(i*8) & 0xffffff; var setting = definedSettings[id]; - var value = buffer.readUInt32BE(i*8 + 4); - Iif (!setting || (setting.name in frame.settings)) { - continue; + Eif (setting) { + var value = buffer.readUInt32BE(i*8 + 4); + frame.settings[setting.name] = setting.flag ? Boolean(value & 0x1) : value; + } else { + /* Unknown setting, ignoring */ } - frame.settings[setting.name] = setting.flag ? Boolean(value & 0x1) : value; } };   @@ -2207,15 +2286,11 @@

// // The WINDOW_UPDATE frame (type=0x9) is used to implement flow control. // -// The WINDOW_UPDATE frame defines the following flags: -// -// * END_FLOW_CONTROL (0x1): -// Bit 1 being set indicates that flow control for the identified stream -// or connection has been ended; subsequent frames do not need to be flow controlled. +// The WINDOW_UPDATE frame does not define any flags.   frameTypes[0x9] = 'WINDOW_UPDATE';   -frameFlags.WINDOW_UPDATE = ['END_FLOW_CONTROL']; +frameFlags.WINDOW_UPDATE = [];   typeSpecificAttributes.WINDOW_UPDATE = ['window_size'];   @@ -2235,6 +2310,36 @@

frame.window_size = buffer.readUInt32BE(0) & 0x7fffffff; };   +// [CONTINUATION](http://http2.github.io/http2-spec/#CONTINUATION) +// ------------------------------------------------------------ +// +// The CONTINUATION frame (type=0xA) is used to continue a sequence of header block fragments. +// +// The CONTINUATION frame defines the following flags: +// +// * END_STREAM (0x1): +// Bit 1 being set indicates that this frame is the last that the endpoint will send for the +// identified stream. +// * RESERVED (0x2): +// Bit 2 is reserved for future use. +// * END_HEADERS (0x4): +// The END_HEADERS bit indicates that this frame ends the sequence of header block fragments +// necessary to provide a complete set of headers. +  +frameTypes[0xA] = 'CONTINUATION'; +  +frameFlags.CONTINUATION = ['END_STREAM', 'RESERVED', 'END_HEADERS']; +  +typeSpecificAttributes.CONTINUATION = ['headers', 'data']; +  +Serializer.CONTINUATION = function writeContinuation(frame, buffers) { + buffers.push(frame.data); +}; +  +Deserializer.CONTINUATION = function readContinuation(buffer, frame) { + frame.data = buffer; +}; +  // [Error Codes](http://http2.github.io/http2-spec/#ErrorCodes) // ------------------------------------------------------------   @@ -2310,7 +2415,7 @@

diff --git a/coverage/lcov-report/lib/http.js.html b/coverage/lcov-report/lib/http.js.html index 21b34da3..35fe6217 100644 --- a/coverage/lcov-report/lib/http.js.html +++ b/coverage/lcov-report/lib/http.js.html @@ -183,16 +183,16 @@

Code coverage report for lib/http.js

- Statements: 91.73% (355 / 387)      + Statements: 91.15% (371 / 407)      - Branches: 81.94% (118 / 144)      + Branches: 80.26% (122 / 152)      - Functions: 93.1% (54 / 58)      + Functions: 91.94% (57 / 62)      - Lines: 91.73% (355 / 387)      + Lines: 91.15% (371 / 407)     

All files » lib/ » http.js
@@ -1122,8 +1122,54 @@

921 922 923 -924  -  +924 +925 +926 +927 +928 +929 +930 +931 +932 +933 +934 +935 +936 +937 +938 +939 +940 +941 +942 +943 +944 +945 +946 +947 +948 +949 +950 +951 +952 +953 +954 +955 +956 +957 +958 +959 +960 +961 +962 +963 +964 +965 +966 +967 +968 +969 +970 +971        @@ -1265,6 +1311,16 @@

1 1   +1 +  +  +  +  +  +  +  +  +      1 @@ -1297,62 +1353,111 @@

  1   -23 -23 -23 +25 +25 +25   -23 +25       -23 -23 -23 +25 +25 +25     -23 +25 +25   -1 +  +25   1         +  1   -25   -25 -25   -25 +  +24 +168 +168 +  +  +  +  +  +  +  +24 +73 +13 +  +  +  +  +24 +    1 +2 +    1 -12 -11 +  +  +    1   +27 +  +27 +27 +27   +27   1 -28 -21   -7 +1 +13 +12 +  +1       1 +31 +23 2     2     +23 +  +8 +  +  +  +1 +4 +  +  +4 +4 +  +  +4 +  +    1 1 @@ -1367,6 +1472,10 @@

    1 +2 +  +  +1       @@ -1381,30 +1490,30 @@

    1 -12 +13   -12 -12 +13 +13   -12 -12 +13 +13     -12 -9 -9 -9 -9 -9 +13 +10 +10 +10 +10 +10 +10 +10 9 9 -8 -8         -9 +10       @@ -1420,36 +1529,40 @@

2     -10 +11   1     1 -9 +10   -9 +10     -9   -9 -9 -9 -9   -9 +10   +10 +10 +10 +10   -9 +10   -9 +  +10 +  +10     1       +  +        @@ -1461,9 +1574,9 @@

    1 -8 +9   -8 +9     1 @@ -1497,65 +1610,48 @@

    1 -8 -  -  -8 -  -  -  -1 9 -1 -1 -  +    9   -8 -8 -    -8     +1 +  +        1 -11 -  +10 1 -  -  -  -  -  1     +10   -11 +9 +9     +9           +1 +12   -11 -77 -77 -  -  -  +1         -11   +1       @@ -1566,95 +1662,92 @@

      -11 +12           -11 -45 -44 -44 +12 +48 +48         -44 +48   -1     +12     -11 +12     -11 +12   -11 +12           1 -11 +12   -11 +12   -11 -11 -11 +12 +12 +12   -11 +12   1   1 -11 +12 1   -10 -  -  11   -11 +  +12 1   +12   +12 11 -10 -    -11   -11 +12   -11 +12   -11 +12 +12     1 -21 -10 +23 +11       1 -10 -10 +11 +11     1 -11 -11 +12 +12     1 -9 +10     1 @@ -1684,10 +1777,10 @@

    1 -11 +12     -11 +12       @@ -1700,7 +1793,7 @@

1 1 1 -3 +4   1 7 @@ -1732,41 +1825,41 @@

1   1 -11 -7 +12 +8     -11 -11 -11 -11 -11 +12 +12 +12 +12 +12   -11 +12 1 1     -10 +11   -10 +11 7     -10 +11             -10 +11 1 1       -9 +10 1 1   @@ -1779,58 +1872,59 @@

      -8 -8 -8 -8 +9 +9 +9 +9 +9   -8 -8 +9 +9     -8 +9       -8 +9 1 -8 -8 -8 -8 -8 -8 -8 +9 +9 +9 +9 +9 +9 +9   -8 +9 1 1         -7 -7 +8 +8   -7 -7 +8 +8             -8 -8 -8 -8 +9 +9 +9 +9             -10 +11     1 @@ -1840,14 +1934,14 @@

    1 -8 -8 -8 -8 -8 -8 -8 -8 +9 +9 +9 +9 +9 +9 +9 +9     1 @@ -1865,45 +1959,45 @@

    1 -14 +15   -14 +15   -14 -14 +15   1   1 -10 +11   -10 +11   -10 -10 +11 1   -10 +11 +11   -10 +11       -10 -10 -10 -10 +11 +11 +11 +11   -10 +11   -10 +11 +11   -10 +11   -10 -10 +11 +11   -10 +11     1 @@ -1923,10 +2017,10 @@

    1 -37 +40     -37 +40       @@ -1983,35 +2077,35 @@

    1 -12 +13   1     -1       -11 -  +1             -11 -11 +12 +12         -11 -11 +12     -11 -11 +12 +  +  +12 +12       @@ -2054,7 +2148,8 @@

// should fall back to using HTTP/1.1 if needed. Compatibility with undocumented or deprecated // elements of the node.js HTTP/HTTPS API is a non-goal. // -// Additional and modified API elements: +// Additional and modified API elements +// ------------------------------------ // // - **Class: http2.Server** // - **Event: 'connection' (socket, [endpoint])**: there's a second argument if the negotiation of @@ -2116,37 +2211,32 @@

// - **promise.setPriority(priority)**: assign a priority to this push stream. `priority` is a // number between 0 (highest priority) and 2^31-1 (lowest priority). Default value is 2^30. // -// API elements not yet implemented: +// API elements not yet implemented +// -------------------------------- // // - **Class: http2.Server** -// - **Event: 'checkContinue'** // - **server.maxHeadersCount** // -// - **Class: http2.ServerResponse** -// - **response.writeContinue()** -// - **response.addTrailers(headers)** -// -// - **Class: http2.ClientRequest** -// - **Event: 'continue'** -// -// - **Class: http2.IncomingMessage** -// - **message.trailers** +// API elements that are not applicable to HTTP/2 +// ---------------------------------------------- // -// API elements that are not applicable to HTTP/2 (deprecated functionality, or for other reason). -// These will not be present when a request is done with HTTP/2, but will function normally when -// falling back to using HTTP/1.1 +// The reason may be deprecation of certain HTTP/1.1 features, or that some API elements simply +// don't make sense when using HTTP/2. These will not be present when a request is done with HTTP/2, +// but will function normally when falling back to using HTTP/1.1. // // - **Class: http2.Server** +// - **Event: 'checkContinue'**: not in the spec, yet (see [http-spec#18][expect-continue]) // - **Event: 'upgrade'**: upgrade is deprecated in HTTP/2 // - **Event: 'timeout'**: HTTP/2 sockets won't timeout because of application level keepalive // (PING frames) -// - **Event: 'connect'**: CONNECT method is not supported in current draft of HTTP/2 +// - **Event: 'connect'**: not in the spec, yet (see [http-spec#230][connect]) // - **server.setTimeout(msecs, callback)** // - **server.timeout** // // - **Class: http2.ServerResponse** // - **Event: 'close'** // - **Event: 'timeout'** +// - **response.writeContinue()** // - **response.writeHead(statusCode, [reasonPhrase], [headers])**: reasonPhrase will always be // ignored since [it's not supported in HTTP/2][3] // - **response.setTimeout(timeout, [callback])** @@ -2158,6 +2248,7 @@

// - **Class: http2.ClientRequest** // - **Event: 'upgrade'** // - **Event: 'connect'** +// - **Event: 'continue'** // - **request.setTimeout(timeout, [callback])** // - **request.setNoDelay([noDelay])** // - **request.setSocketKeepAlive([enable], [initialDelay])** @@ -2169,6 +2260,8 @@

// [1]: http://nodejs.org/api/https.html // [2]: http://nodejs.org/api/http.html // [3]: http://tools.ietf.org/html/draft-ietf-httpbis-http2-04#section-8.1.3 +// [expect-continue]: https://github.com/http2/http2-spec/issues/18 +// [connect]: https://github.com/http2/http2-spec/issues/230   // Common server and client side code // ================================== @@ -2188,9 +2281,19 @@

exports.IncomingMessage = IncomingMessage; exports.OutgoingMessage = OutgoingMessage;   +var deprecatedHeaders = [ + 'connection', + 'host', + 'keep-alive', + 'proxy-connection', + 'te', + 'transfer-encoding', + 'upgrade' +]; +  // The implemented version of the HTTP/2 specification is [draft 04][1]. // [1]: http://tools.ietf.org/html/draft-ietf-httpbis-http2-04 -var implementedVersion = 'HTTP-draft-04/2.0'; +var implementedVersion = 'HTTP-draft-06/2.0';   // Logging // ------- @@ -2231,12 +2334,49 @@

this.httpVersion = '2.0'; this.httpVersionMajor = 2; this.httpVersionMinor = 0; +  + // * `this.headers` will store the regular headers (and none of the special colon headers) + this.headers = {}; + this.trailers = undefined;   // * Other metadata is filled in when the headers arrive. stream.once('headers', this._onHeaders.bind(this)); } IncomingMessage.prototype = Object.create(PassThrough.prototype, { constructor: { value: IncomingMessage } });   +// [Request Header Fields](http://tools.ietf.org/html/draft-ietf-httpbis-http2-05#section-8.1.2.1) +// * `headers` argument: HTTP/2.0 request and response header fields carry information as a series +// of key-value pairs. This includes the target URI for the request, the status code for the +// response, as well as HTTP header fields. +IncomingMessage.prototype._onHeaders = function _onHeaders(headers) { + // * An HTTP/2.0 request or response MUST NOT include any of the following header fields: + // Connection, Host, Keep-Alive, Proxy-Connection, TE, Transfer-Encoding, and Upgrade. A server + // MUST treat the presence of any of these header fields as a stream error of type + // PROTOCOL_ERROR. + for (var i = 0; i < deprecatedHeaders.length; i++) { + var key = deprecatedHeaders[i]; + Iif (key in headers) { + this._log.error({ key: key, value: headers[key] }, 'Deprecated header found'); + this.stream.emit('error', 'PROTOCOL_ERROR'); + return; + } + } +  + // * Store the _regular_ headers in `this.headers` + for (var name in headers) { + if (name[0] !== ':') { + this.headers[name] = headers[name]; + } + } +  + // * The next header block, if any, will represent the trailers + this.stream.once('headers', this._onTrailers.bind(this)); +}; +  +IncomingMessage.prototype._onTrailers = function _onTrailers(trailers) { + this.trailers = trailers; +}; +  IncomingMessage.prototype.setTimeout = noop;   // OutgoingMessage class @@ -2247,6 +2387,7 @@

Writable.call(this);   this._headers = {}; + this._trailers = undefined; this.headersSent = false;   this.on('finish', this._finish.bind(this)); @@ -2263,6 +2404,13 @@

  OutgoingMessage.prototype._finish = function _finish() { if (this.stream) { + if (this._trailers) { + Iif (this.request) { + this.request.addTrailers(this._trailers); + } else { + this.stream.headers(this._trailers); + } + } this.stream.end(); } else { this.once('socket', this._finish.bind(this)); @@ -2273,7 +2421,11 @@

Iif (this.headersSent) { throw new Error('Can\'t set headers after they are sent.'); } else { - this._headers[name.toLowerCase()] = value; + name = name.toLowerCase(); + Iif (deprecatedHeaders.indexOf(name) !== -1) { + throw new Error('Cannot set deprecated header: ' + name); + } + this._headers[name] = value; } };   @@ -2289,6 +2441,10 @@

return this._headers[name.toLowerCase()]; };   +OutgoingMessage.prototype.addTrailers = function addTrailers(trailers) { + this._trailers = trailers; +}; +  OutgoingMessage.prototype.setTimeout = noop;   // Server side @@ -2321,7 +2477,7 @@

this._originalSocketListeners = this._server.listeners('secureConnection'); this._server.removeAllListeners('secureConnection'); this._server.on('secureConnection', function(socket) { - Eif (socket.npnProtocol === implementedVersion) { + Eif (socket.npnProtocol === implementedVersion && socket.servername) { start(socket); } else { fallback(socket); @@ -2351,8 +2507,10 @@

Server.prototype._start = function _start(socket) { var endpoint = new Endpoint('SERVER', this._settings, this._log);   - this._log.info({ e: endpoint, client: socket.remoteAddress + ':' + socket.remotePort }, - 'New incoming HTTP/2 connection'); + this._log.info({ e: endpoint, + client: socket.remoteAddress + ':' + socket.remotePort, + SNI: socket.servername + }, 'New incoming HTTP/2 connection');   endpoint.pipe(socket).pipe(endpoint);   @@ -2370,8 +2528,10 @@

};   Server.prototype._fallback = function _fallback(socket) { - this._log.info({ client: socket.remoteAddress + ':' + socket.remotePort, protocol: socket.npnProtocol }, - 'Falling back to simple HTTPS'); + this._log.info({ client: socket.remoteAddress + ':' + socket.remotePort, + protocol: socket.npnProtocol, + SNI: socket.servername + }, 'Falling back to simple HTTPS');   for (var i = 0; i < this._originalSocketListeners.length; i++) { this._originalSocketListeners[i].call(this._server, socket); @@ -2427,6 +2587,13 @@

} };   +// `addContext` is used to add Server Name Indication contexts +Server.prototype.addContext = function addContext(hostname, credentials) { + if (this._mode === 'tls') { + this._server.addContext(hostname, credentials); + } +}; +  function createServer(options, requestListener) { if (typeof options === 'function') { requestListener = options; @@ -2455,30 +2622,6 @@

// of key-value pairs. This includes the target URI for the request, the status code for the // response, as well as HTTP header fields. IncomingRequest.prototype._onHeaders = function _onHeaders(headers) { - // * An HTTP/2.0 request MUST NOT include any of the following header fields: Connection, Host, - // Keep-Alive, Proxy-Connection, TE, Transfer-Encoding, and Upgrade. A server MUST treat the - // presence of any of these header fields as a stream error of type PROTOCOL_ERROR. - var deprecatedHeaders = [ - 'connection', - 'host', - 'keep-alive', - 'proxy-connection', - 'te', - 'transfer-encoding', - 'upgrade' - ]; - for (var i = 0; i < deprecatedHeaders.length; i++) { - var key = deprecatedHeaders[i]; - Iif (key in headers) { - this._log.error({ key: key, value: headers[key] }, 'Deprecated header found'); - this.stream.emit('error', 'PROTOCOL_ERROR'); - return; - } - } -  - // `this.headers` will store the regular headers (and none of the special colon headers) - this.headers = {}; -  // * The ":method" header field includes the HTTP method // * The ":scheme" header field includes the scheme portion of the target URI // * The ":host" header field includes the authority portion of the target URI @@ -2495,24 +2638,23 @@

':host': 'host', ':path': 'url' }; - for (var name in headers) { - if (name in mapping) { - var value = headers[name]; - Iif ((typeof value !== 'string') || (value.length === 0)) { - this._log.error({ key: name, value: value }, 'Invalid header field'); - this.stream.emit('error', 'PROTOCOL_ERROR'); - return; - } - this[mapping[name]] = value; - } else { - this.headers[name] = headers[name]; + for (var name in mapping) { + var value = headers[name]; + Iif ((typeof value !== 'string') || (value.length === 0)) { + this._log.error({ key: name, value: value }, 'Invalid or missing special header field'); + this.stream.emit('error', 'PROTOCOL_ERROR'); + return; } + this[mapping[name]] = value; }   // * Host header is included in the headers object for backwards compatibility. this.headers.host = this.host;   - // * Signaling that the header arrived. + // * Handling regular headers. + IncomingMessage.prototype._onHeaders.call(this, headers); +  + // * Signaling that the headers arrived. this._log.info({ method: this.method, scheme: this.scheme, host: this.host, path: this.url, headers: this.headers }, 'Incoming request'); this.emit('ready'); @@ -2540,23 +2682,21 @@

} else { headers = reasonPhrase; } -  - headers = headers || {};   for (var name in headers) { - this._headers[name.toLowerCase()] = headers[name]; + this.setHeader(name, headers[name]); } + headers = this._headers;   if (this.sendDate && !('date' in this._headers)) { - this._headers.date = (new Date()).toUTCString(); + headers.date = (new Date()).toUTCString(); }   this._log.info({ status: statusCode, headers: this._headers }, 'Sending server response');   - this._headers[':status'] = this.statusCode = statusCode; -  - this.stream.headers(this._headers); + headers[':status'] = this.statusCode = statusCode;   + this.stream.headers(headers); this.headersSent = true; };   @@ -2704,6 +2844,7 @@

else { var started = false; options.NPNProtocols = [implementedVersion, 'http/1.1', 'http/1.0']; + options.servername = options.host; // Server Name Indication options.agent = this._httpsAgent; var httpsRequest = https.request(options);   @@ -2793,7 +2934,6 @@

this._log = undefined;   this.stream = undefined; - this.headersSent = true; } OutgoingRequest.prototype = Object.create(OutgoingMessage.prototype, { constructor: { value: OutgoingRequest } });   @@ -2802,10 +2942,10 @@

  this._log = stream._log.child({ component: 'http' });   - var headers = {}; for (var key in options.headers) { - headers[key] = options.headers[key]; + this.setHeader(key, options.headers[key]); } + var headers = this._headers; delete headers.host;   Iif (options.auth) { @@ -2820,6 +2960,7 @@

this._log.info({ scheme: headers[':scheme'], method: headers[':method'], host: headers[':host'], path: headers[':path'], headers: (options.headers || {}) }, 'Sending request'); this.stream.headers(headers); + this.headersSent = true;   this.emit('socket', this.stream);   @@ -2911,12 +3052,10 @@

IncomingResponse.prototype = Object.create(IncomingMessage.prototype, { constructor: { value: IncomingResponse } });   // [Response Header Fields](http://tools.ietf.org/html/draft-ietf-httpbis-http2-05#section-8.1.2.2) +// * `headers` argument: HTTP/2.0 request and response header fields carry information as a series +// of key-value pairs. This includes the target URI for the request, the status code for the +// response, as well as HTTP header fields. IncomingResponse.prototype._onHeaders = function _onHeaders(headers) { - // * HTTP/2.0 request and response header fields carry information as a series of key-value pairs. - // This includes the target URI for the request, the status code for the response, as well as - // HTTP header fields. - this.headers = headers; -  // * A single ":status" header field is defined that carries the HTTP status code field. This // header field MUST be included in all responses. // * A client MUST treat the absence of the ":status" header field, the presence of multiple @@ -2930,10 +3069,12 @@

return; } this.statusCode = statusCode; - delete headers[':status'];   - // * Signaling that the header arrived. - this._log.info({ status: statusCode, headers: headers}, 'Incoming response'); + // * Handling regular headers. + IncomingMessage.prototype._onHeaders.call(this, headers); +  + // * Signaling that the headers arrived. + this._log.info({ status: this.statusCode, headers: this.headers}, 'Incoming response'); this.emit('ready'); };   @@ -2973,7 +3114,7 @@

diff --git a/coverage/lcov-report/lib/index.html b/coverage/lcov-report/lib/index.html index 12ed1f39..a95bd29b 100644 --- a/coverage/lcov-report/lib/index.html +++ b/coverage/lcov-report/lib/index.html @@ -183,16 +183,16 @@

Code coverage report for lib/

- Statements: 94.4% (1400 / 1483)      + Statements: 93.44% (1482 / 1586)      - Branches: 87.75% (523 / 596)      + Branches: 86.13% (559 / 649)      - Functions: 93.2% (192 / 206)      + Functions: 92.34% (193 / 209)      - Lines: 94.38% (1394 / 1477)      + Lines: 93.42% (1476 / 1580)     

All files » lib/
@@ -216,41 +216,41 @@

compressor.js - - 98.62% - (285 / 289) - 100% - (97 / 97) - 100% - (34 / 34) - 98.62% - (285 / 289) + + 94.72% + (323 / 341) + 93.75% + (120 / 128) + 96.55% + (28 / 29) + 94.72% + (323 / 341) connection.js - - 93.65% - (177 / 189) - 83.33% - (45 / 54) - 93.75% - (30 / 32) - 93.65% - (177 / 189) + + 92.79% + (193 / 208) + 81.25% + (52 / 64) + 94.12% + (32 / 34) + 92.79% + (193 / 208) endpoint.js 100% - (83 / 83) + (84 / 84) 88.89% (16 / 18) 92.86% (13 / 14) 100% - (83 / 83) + (84 / 84) @@ -258,8 +258,8 @@

100% (105 / 105) - 98.53% - (67 / 68) + 97.06% + (66 / 68) 93.75% (15 / 16) 100% @@ -268,28 +268,28 @@

framer.js - - 93.99% - (219 / 233) - 82.86% - (58 / 70) - 90.32% - (28 / 31) - 93.99% - (219 / 233) + + 94.26% + (230 / 244) + 82.43% + (61 / 74) + 90.91% + (30 / 33) + 94.26% + (230 / 244) http.js - - 91.73% - (355 / 387) - 81.94% - (118 / 144) - 93.1% - (54 / 58) - 91.73% - (355 / 387) + + 91.15% + (371 / 407) + 80.26% + (122 / 152) + 91.94% + (57 / 62) + 91.15% + (371 / 407) @@ -310,7 +310,7 @@

diff --git a/coverage/lcov-report/lib/stream.js.html b/coverage/lcov-report/lib/stream.js.html index 786fcf28..7a2e75d1 100644 --- a/coverage/lcov-report/lib/stream.js.html +++ b/coverage/lcov-report/lib/stream.js.html @@ -816,19 +816,19 @@

    1 -103 +105     -103 +105     -103 +105     -103 +105     -103 +105     1 @@ -842,19 +842,19 @@

    1 -103 -103 -103 -103 +105 +105 +105 +105 6   -103 -39 +105 +43     -39 +43   -103 +105       @@ -871,7 +871,7 @@

    1 -40 +44       @@ -947,28 +947,28 @@

1   1 -103 -103 -103 -103 -103 -103 -103 +105 +105 +105 +105 +105 +105 +105   -103 +105       1 -87 +97   -87 +97       -87 -42 -42 +97 +48 +48       @@ -976,23 +976,23 @@

      -45 +49       -87 -33 +97 +35     -87 -87 +97 +97           1 -35 +38       @@ -1002,14 +1002,14 @@

  1   -18 +19           -18 -18 +19 +19       @@ -1019,7 +1019,7 @@

    1 -690 +809       @@ -1031,19 +1031,19 @@

    1 -34 +36         -34 -34 -10 -10 -10 -10 +36 +36 +7 +7 +7 +7   -24 +29       @@ -1078,68 +1078,68 @@

    1 -103 -103 -103 -103 -103 -103 +105 +105 +105 +105 +105 +105         1 -155 -155 -155 -155 +161 +161 +161 +161         1 -220 +234           1 -268 -268 -  -268 -268 -268 -106 -87 +285 +285 +  +285 +285 +285 +115 +95 8 33 24 10     -268 +285   -268 +285             -55 -40 -40 +57 +42 +42 3   -40 +42 15 6   9   -55 +57       @@ -1191,14 +1191,14 @@

      -61 -27 -34 +65 +29 +36 2       -61 +65       @@ -1207,14 +1207,14 @@

      -55 -23 -32 +62 +24 +38     3   -55 +62       @@ -1227,14 +1227,14 @@

      -36 -21 -15 +40 +22 +18     3   -36 +40       @@ -1270,9 +1270,9 @@

      -268 -64 -64 +285 +66 +66       @@ -1281,7 +1281,7 @@

      -268 +285 13   13 @@ -1289,19 +1289,19 @@

      -268 -110 -110 -57 +285 +117 +117 +60   -53 +57   -158 -85 +168 +89       -268 +285 45     @@ -1464,8 +1464,8 @@

}   this._log.debug({ priority: priority }, 'Changing priority'); - this._priority = priority; this.emit('priority', priority); + this._priority = priority; } };   @@ -1914,7 +1914,7 @@

diff --git a/coverage/lcov.info b/coverage/lcov.info index 314311f5..9d4bd0eb 100644 --- a/coverage/lcov.info +++ b/coverage/lcov.info @@ -1,781 +1,887 @@ TN: SF:/data/upstream/node-http2/lib/compressor.js -FN:38,CompressionContext -FN:48,(anonymous_2) -FN:53,getWorkingSet -FN:54,(anonymous_4) -FN:60,reinitialize -FN:66,(anonymous_6) -FN:68,(anonymous_7) -FN:76,(anonymous_8) -FN:105,execute -FN:118,(anonymous_10) -FN:156,(anonymous_11) -FN:157,(anonymous_12) -FN:164,(anonymous_13) -FN:180,(anonymous_14) -FN:203,(anonymous_15) -FN:227,(anonymous_16) -FN:249,Decompressor -FN:264,decompress -FN:310,Compressor -FN:325,compress -FN:395,writeInteger -FN:436,readInteger -FN:466,writeString -FN:472,readString -FN:525,writeHeader -FN:561,readHeader -FN:626,_initializeStream -FN:630,_transform -FN:676,_initializeStream -FN:685,_transform -FN:715,(anonymous_31) -FN:825,concat -FN:840,cut -FN:852,shallowCopy -FNF:34 -FNH:34 -FNDA:50,CompressionContext -FNDA:3424,(anonymous_2) -FNDA:88,getWorkingSet -FNDA:227,(anonymous_4) -FNDA:88,reinitialize -FNDA:202,(anonymous_6) -FNDA:146,(anonymous_7) -FNDA:146,(anonymous_8) -FNDA:278,execute -FNDA:173,(anonymous_10) -FNDA:81,(anonymous_11) -FNDA:149,(anonymous_12) -FNDA:109,(anonymous_13) -FNDA:2413,(anonymous_14) -FNDA:28,(anonymous_15) -FNDA:190,(anonymous_16) -FNDA:26,Decompressor -FNDA:45,decompress -FNDA:24,Compressor -FNDA:43,compress -FNDA:345,writeInteger -FNDA:353,readInteger -FNDA:153,writeString -FNDA:155,readString -FNDA:145,writeHeader -FNDA:149,readHeader -FNDA:24,_initializeStream -FNDA:87,_transform -FNDA:26,_initializeStream -FNDA:84,_transform -FNDA:34,(anonymous_31) -FNDA:75,concat -FNDA:33,cut -FNDA:35,shallowCopy -DA:16,1 +FN:25,noop +FN:37,HeaderTable +FN:57,entryFromPair +FN:76,size +FN:80,tableSize +FN:96,(anonymous_6) +FN:203,HeaderSetDecompressor +FN:214,_transform +FN:240,_execute +FN:297,_flush +FN:331,HeaderSetCompressor +FN:339,send +FN:352,_transform +FN:437,_flush +FN:468,writeInteger +FN:509,readInteger +FN:538,writeString +FN:544,readString +FN:596,writeHeader +FN:632,readHeader +FN:701,Compressor +FN:715,compress +FN:737,_transform +FN:793,Decompressor +FN:810,decompress +FN:834,_transform +FN:863,(anonymous_27) +FN:884,concat +FN:899,cut +FNF:29 +FNH:28 +FNDA:0,noop +FNDA:54,HeaderTable +FNDA:1806,entryFromPair +FNDA:1806,size +FNDA:54,tableSize +FNDA:182,(anonymous_6) +FNDA:49,HeaderSetDecompressor +FNDA:49,_transform +FNDA:163,_execute +FNDA:49,_flush +FNDA:47,HeaderSetCompressor +FNDA:159,send +FNDA:159,_transform +FNDA:47,_flush +FNDA:363,writeInteger +FNDA:375,readInteger +FNDA:123,writeString +FNDA:125,readString +FNDA:163,writeHeader +FNDA:171,readHeader +FNDA:26,Compressor +FNDA:47,compress +FNDA:98,_transform +FNDA:28,Decompressor +FNDA:49,decompress +FNDA:95,_transform +FNDA:38,(anonymous_27) +FNDA:132,concat +FNDA:37,cut DA:18,1 DA:19,1 DA:20,1 -DA:36,1 -DA:38,1 -DA:39,50 -DA:40,50 -DA:41,50 -DA:42,50 -DA:43,50 -DA:48,1 -DA:49,3424 -DA:53,1 -DA:54,88 -DA:55,227 -DA:60,1 -DA:61,88 -DA:66,88 -DA:67,202 -DA:69,146 -DA:76,88 -DA:77,146 -DA:78,146 -DA:105,1 -DA:106,278 -DA:109,278 -DA:116,278 -DA:117,87 -DA:118,87 -DA:119,173 -DA:121,87 -DA:122,29 -DA:123,29 -DA:125,58 -DA:134,191 -DA:135,94 -DA:137,97 -DA:140,191 -DA:141,190 -DA:142,100 -DA:144,90 -DA:146,190 -DA:147,190 -DA:150,191 -DA:156,1 -DA:157,81 -DA:158,149 -DA:164,1 -DA:165,109 -DA:167,109 -DA:168,109 -DA:169,19 -DA:170,19 -DA:171,15 -DA:179,94 -DA:180,94 -DA:181,2413 -DA:183,94 -DA:184,62 -DA:185,62 -DA:186,46 -DA:194,48 +DA:21,1 +DA:22,1 +DA:24,1 +DA:25,1 +DA:26,1 +DA:37,1 +DA:38,54 +DA:39,54 +DA:40,54 +DA:41,54 +DA:42,54 +DA:43,54 +DA:57,1 +DA:58,1806 +DA:59,1806 +DA:60,1806 +DA:61,1806 +DA:62,1806 +DA:63,1806 +DA:74,1 +DA:76,1 +DA:77,1806 +DA:80,1 +DA:81,54 +DA:82,54 +DA:83,1620 +DA:85,54 +DA:96,1 +DA:97,182 +DA:98,182 +DA:100,182 +DA:101,0 +DA:102,0 +DA:103,0 +DA:106,182 +DA:107,182 +DA:108,182 +DA:109,0 +DA:111,182 +DA:113,182 +DA:116,182 +DA:124,1 +DA:159,1 +DA:202,1 DA:203,1 -DA:204,28 -DA:206,28 -DA:207,46 -DA:208,28 -DA:209,28 -DA:213,28 -DA:227,1 -DA:228,190 -DA:229,190 -DA:230,190 -DA:231,5011 -DA:232,263 -DA:234,5011 -DA:236,190 -DA:237,218 -DA:238,218 -DA:249,1 -DA:250,26 -DA:252,26 -DA:254,26 -DA:256,26 -DA:258,1 -DA:264,1 -DA:265,45 -DA:269,45 -DA:274,45 -DA:275,45 -DA:276,141 -DA:281,45 -DA:285,45 -DA:286,45 -DA:287,157 -DA:288,157 -DA:289,157 -DA:290,17 -DA:291,8 -DA:293,9 -DA:296,140 -DA:299,45 -DA:300,45 -DA:310,1 -DA:311,24 -DA:313,24 -DA:315,24 -DA:317,24 -DA:319,1 -DA:325,1 -DA:326,43 -DA:327,43 -DA:331,43 -DA:332,43 -DA:333,135 -DA:334,135 -DA:335,8 -DA:336,24 -DA:339,127 -DA:345,43 -DA:346,43 -DA:349,43 -DA:350,70 -DA:351,28 -DA:352,28 -DA:353,28 -DA:358,43 -DA:359,151 -DA:360,109 -DA:361,109 -DA:362,109 -DA:367,43 -DA:368,43 -DA:369,137 -DA:372,43 -DA:374,43 -DA:375,43 -DA:395,1 -DA:396,345 -DA:397,345 -DA:398,143 -DA:401,202 -DA:402,202 -DA:403,2 -DA:405,202 -DA:407,202 -DA:408,202 -DA:409,210 -DA:410,210 -DA:412,210 -DA:413,8 -DA:415,210 -DA:417,210 -DA:420,202 -DA:436,1 -DA:437,353 -DA:439,353 -DA:440,353 -DA:441,151 -DA:444,353 -DA:445,207 -DA:446,207 -DA:447,217 -DA:448,217 -DA:449,217 -DA:453,353 -DA:466,1 -DA:467,153 -DA:468,153 -DA:469,153 -DA:472,1 -DA:473,155 -DA:474,155 -DA:475,155 -DA:476,155 -DA:518,1 -DA:525,1 -DA:526,145 -DA:528,145 -DA:529,45 -DA:530,100 -DA:531,1 -DA:532,99 -DA:533,52 -DA:535,47 -DA:538,145 -DA:539,45 -DA:542,100 -DA:543,51 -DA:545,49 -DA:546,49 -DA:549,100 -DA:550,47 -DA:553,100 -DA:556,145 -DA:558,145 -DA:561,1 -DA:562,149 -DA:564,149 -DA:565,149 -DA:566,46 -DA:567,103 -DA:568,58 -DA:569,2 -DA:571,56 -DA:574,45 -DA:577,149 -DA:578,46 -DA:579,46 -DA:582,103 -DA:583,103 -DA:584,50 -DA:587,103 -DA:588,45 -DA:589,58 -DA:590,56 -DA:592,2 -DA:595,103 -DA:598,149 -DA:623,1 -DA:626,1 -DA:627,24 -DA:630,1 -DA:632,87 -DA:634,33 -DA:637,33 -DA:642,33 -DA:643,35 -DA:644,35 -DA:645,33 -DA:647,2 -DA:648,2 -DA:651,35 -DA:664,54 -DA:667,87 -DA:676,1 -DA:677,26 -DA:678,26 -DA:679,26 -DA:680,26 -DA:681,26 -DA:685,1 -DA:688,84 -DA:689,3 -DA:690,1 -DA:691,1 -DA:692,1 -DA:694,2 -DA:699,81 -DA:700,33 -DA:701,33 -DA:702,33 -DA:703,33 -DA:708,48 -DA:714,83 -DA:715,32 -DA:716,34 -DA:718,32 -DA:719,32 -DA:721,0 -DA:722,0 -DA:723,0 -DA:725,32 -DA:733,32 -DA:736,83 -DA:742,1 -DA:783,1 -DA:825,1 -DA:826,75 -DA:827,75 -DA:828,501 -DA:831,75 -DA:832,75 -DA:833,501 -DA:836,75 +DA:204,49 +DA:206,49 +DA:207,49 +DA:208,49 +DA:214,1 +DA:215,49 +DA:216,49 +DA:240,1 +DA:241,163 +DA:244,163 +DA:253,163 +DA:254,66 +DA:255,66 +DA:257,66 +DA:258,38 +DA:260,28 +DA:261,28 +DA:262,28 +DA:263,28 +DA:275,97 +DA:276,78 +DA:278,19 +DA:281,97 +DA:282,97 +DA:283,92 +DA:284,92 +DA:285,92 +DA:286,92 +DA:289,97 +DA:297,1 +DA:298,49 +DA:301,49 +DA:302,49 +DA:303,163 +DA:307,49 +DA:308,1559 +DA:309,1559 +DA:310,40 +DA:312,1559 +DA:315,49 +DA:330,1 +DA:331,1 +DA:332,47 +DA:334,47 +DA:335,47 +DA:336,47 +DA:339,1 +DA:340,159 +DA:343,159 +DA:344,155 +DA:346,159 +DA:352,1 +DA:353,159 +DA:354,159 +DA:355,159 +DA:358,159 +DA:359,159 +DA:360,3760 +DA:361,3760 +DA:362,152 +DA:363,65 +DA:364,65 +DA:365,87 +DA:366,87 +DA:373,159 +DA:374,65 +DA:376,65 +DA:377,25 +DA:378,25 +DA:379,25 +DA:382,40 +DA:383,0 +DA:384,0 +DA:385,0 +DA:386,0 +DA:387,0 +DA:388,0 +DA:391,40 +DA:392,4 +DA:393,4 +DA:397,36 +DA:403,94 +DA:404,94 +DA:406,94 +DA:407,94 +DA:408,4 +DA:409,90 +DA:410,76 +DA:412,14 +DA:415,94 +DA:416,90 +DA:417,90 +DA:418,90 +DA:419,0 +DA:420,0 +DA:421,0 +DA:422,0 +DA:423,0 +DA:428,94 +DA:431,159 +DA:437,1 +DA:439,47 +DA:440,1488 +DA:441,1488 +DA:442,32 +DA:443,32 +DA:445,1488 +DA:446,1488 +DA:449,47 +DA:468,1 +DA:469,363 +DA:470,363 +DA:471,161 +DA:474,202 +DA:475,202 +DA:476,2 +DA:478,202 +DA:480,202 +DA:481,202 +DA:482,210 +DA:483,210 +DA:485,210 +DA:486,8 +DA:488,210 +DA:490,210 +DA:493,202 +DA:509,1 +DA:510,375 +DA:512,375 +DA:513,375 +DA:514,173 +DA:517,375 +DA:518,207 +DA:519,207 +DA:520,217 +DA:521,217 +DA:522,217 +DA:526,375 +DA:538,1 +DA:539,123 +DA:540,123 +DA:541,123 +DA:544,1 +DA:545,125 +DA:546,125 +DA:547,125 +DA:548,125 +DA:589,1 +DA:596,1 +DA:597,163 +DA:599,163 +DA:600,63 +DA:601,100 +DA:602,5 +DA:603,95 +DA:604,18 +DA:606,77 +DA:609,163 +DA:610,63 +DA:613,100 +DA:614,81 +DA:616,19 +DA:617,19 +DA:620,100 +DA:621,77 +DA:624,100 +DA:627,163 +DA:629,163 +DA:632,1 +DA:633,171 +DA:635,171 +DA:636,171 +DA:637,68 +DA:638,103 +DA:639,28 +DA:640,6 +DA:642,22 +DA:645,75 +DA:648,171 +DA:649,68 +DA:650,68 +DA:653,103 +DA:654,103 +DA:655,20 +DA:658,103 +DA:659,75 +DA:660,28 +DA:661,22 +DA:663,6 +DA:666,103 +DA:669,171 +DA:694,1 +DA:700,1 +DA:701,1 +DA:702,26 +DA:704,26 +DA:706,26 +DA:707,26 +DA:709,26 +DA:715,1 +DA:716,47 +DA:717,47 +DA:718,143 +DA:719,143 +DA:720,8 +DA:721,24 +DA:724,135 +DA:727,47 +DA:729,47 +DA:730,47 +DA:731,459 +DA:733,47 +DA:737,1 +DA:745,98 +DA:746,37 +DA:748,37 +DA:750,37 +DA:751,39 +DA:752,39 +DA:753,39 +DA:755,39 +DA:756,37 +DA:757,37 +DA:758,37 +DA:760,2 +DA:766,39 +DA:767,32 +DA:769,39 +DA:771,39 +DA:777,61 +DA:780,98 +DA:792,1 +DA:793,1 +DA:794,28 +DA:796,28 +DA:798,28 +DA:799,28 +DA:801,28 +DA:803,28 +DA:804,28 +DA:810,1 +DA:811,49 +DA:812,49 +DA:814,49 +DA:815,49 +DA:816,49 +DA:817,165 +DA:818,165 +DA:819,165 +DA:820,17 +DA:821,8 +DA:823,9 +DA:826,148 +DA:830,49 +DA:834,1 +DA:837,95 +DA:838,3 +DA:839,1 DA:840,1 -DA:841,33 -DA:842,33 -DA:843,33 -DA:844,35 -DA:845,35 -DA:846,35 -DA:848,33 -DA:852,1 -DA:853,35 -DA:854,35 -DA:855,0 -DA:857,35 -LF:289 -LH:285 -BRDA:41,1,0,50 -BRDA:41,1,1,50 -BRDA:49,2,0,3424 -BRDA:49,2,1,214 -BRDA:116,3,0,87 -BRDA:116,3,1,191 -BRDA:121,4,0,29 -BRDA:121,4,1,58 -BRDA:134,5,0,94 -BRDA:134,5,1,97 -BRDA:140,6,0,190 -BRDA:140,6,1,1 -BRDA:141,7,0,100 -BRDA:141,7,1,90 -BRDA:168,8,0,19 -BRDA:168,8,1,90 -BRDA:170,9,0,15 -BRDA:170,9,1,4 -BRDA:183,10,0,62 -BRDA:183,10,1,32 -BRDA:185,11,0,46 -BRDA:185,11,1,16 -BRDA:207,12,0,28 -BRDA:207,12,1,18 -BRDA:231,13,0,263 -BRDA:231,13,1,4748 -BRDA:252,14,0,14 -BRDA:252,14,1,12 -BRDA:289,15,0,17 -BRDA:289,15,1,140 -BRDA:290,16,0,8 -BRDA:290,16,1,9 -BRDA:313,17,0,12 -BRDA:313,17,1,12 -BRDA:334,18,0,8 -BRDA:334,18,1,127 -BRDA:350,19,0,28 -BRDA:350,19,1,42 -BRDA:359,20,0,109 -BRDA:359,20,1,42 -BRDA:397,21,0,143 -BRDA:397,21,1,202 -BRDA:402,22,0,2 -BRDA:402,22,1,200 -BRDA:412,23,0,8 -BRDA:412,23,1,202 -BRDA:440,24,0,151 -BRDA:440,24,1,202 -BRDA:444,25,0,207 -BRDA:444,25,1,146 -BRDA:528,26,0,45 -BRDA:528,26,1,100 -BRDA:530,27,0,1 -BRDA:530,27,1,99 -BRDA:532,28,0,52 -BRDA:532,28,1,47 -BRDA:538,29,0,45 -BRDA:538,29,1,100 -BRDA:542,30,0,51 -BRDA:542,30,1,49 -BRDA:549,31,0,47 -BRDA:549,31,1,53 -BRDA:565,32,0,46 -BRDA:565,32,1,103 -BRDA:567,33,0,58 -BRDA:567,33,1,45 -BRDA:568,34,0,2 -BRDA:568,34,1,56 -BRDA:577,35,0,46 -BRDA:577,35,1,103 -BRDA:583,36,0,50 -BRDA:583,36,1,53 -BRDA:587,37,0,45 -BRDA:587,37,1,58 -BRDA:589,38,0,56 -BRDA:589,38,1,2 -BRDA:632,39,0,33 -BRDA:632,39,1,54 -BRDA:632,40,0,87 -BRDA:632,40,1,61 -BRDA:644,41,0,33 -BRDA:644,41,1,2 -BRDA:688,42,0,3 -BRDA:688,42,1,81 -BRDA:689,43,0,1 -BRDA:689,43,1,2 -BRDA:689,44,0,3 -BRDA:689,44,1,2 -BRDA:699,45,0,33 -BRDA:699,45,1,48 -BRDA:699,46,0,81 -BRDA:699,46,1,55 -BRDA:714,47,0,32 -BRDA:714,47,1,51 -BRDA:714,48,0,83 -BRDA:714,48,1,35 -BRDA:714,48,2,10 -BRF:97 -BRH:97 +DA:841,1 +DA:843,2 +DA:848,92 +DA:849,37 +DA:850,37 +DA:851,37 +DA:856,55 +DA:862,94 +DA:863,36 +DA:864,38 +DA:866,36 +DA:867,36 +DA:869,0 +DA:870,0 +DA:871,0 +DA:873,36 +DA:874,36 +DA:877,94 +DA:884,1 +DA:885,132 +DA:886,132 +DA:887,546 +DA:890,132 +DA:891,132 +DA:892,546 +DA:895,132 +DA:899,1 +DA:900,37 +DA:901,37 +DA:902,37 +DA:903,39 +DA:904,39 +DA:905,39 +DA:907,37 +LF:341 +LH:323 +BRDA:25,1,0,1 +BRDA:25,1,1,0 +BRDA:40,2,0,54 +BRDA:40,2,1,54 +BRDA:100,3,0,182 +BRDA:100,3,1,0 +BRDA:106,4,0,182 +BRDA:106,4,1,0 +BRDA:108,5,0,0 +BRDA:108,5,1,182 +BRDA:253,6,0,66 +BRDA:253,6,1,97 +BRDA:257,7,0,38 +BRDA:257,7,1,28 +BRDA:275,8,0,78 +BRDA:275,8,1,19 +BRDA:282,9,0,92 +BRDA:282,9,1,5 +BRDA:309,10,0,40 +BRDA:309,10,1,1519 +BRDA:309,11,0,1559 +BRDA:309,11,1,144 +BRDA:343,12,0,155 +BRDA:343,12,1,4 +BRDA:361,13,0,152 +BRDA:361,13,1,3608 +BRDA:362,14,0,65 +BRDA:362,14,1,87 +BRDA:365,15,0,87 +BRDA:365,15,1,0 +BRDA:373,16,0,65 +BRDA:373,16,1,94 +BRDA:376,17,0,25 +BRDA:376,17,1,40 +BRDA:382,18,0,0 +BRDA:382,18,1,40 +BRDA:391,19,0,4 +BRDA:391,19,1,36 +BRDA:407,20,0,4 +BRDA:407,20,1,90 +BRDA:409,21,0,76 +BRDA:409,21,1,14 +BRDA:415,22,0,90 +BRDA:415,22,1,4 +BRDA:420,23,0,0 +BRDA:420,23,1,0 +BRDA:428,24,0,76 +BRDA:428,24,1,18 +BRDA:441,25,0,32 +BRDA:441,25,1,1456 +BRDA:441,26,0,1488 +BRDA:441,26,1,171 +BRDA:441,26,2,135 +BRDA:470,27,0,161 +BRDA:470,27,1,202 +BRDA:475,28,0,2 +BRDA:475,28,1,200 +BRDA:485,29,0,8 +BRDA:485,29,1,202 +BRDA:513,30,0,173 +BRDA:513,30,1,202 +BRDA:517,31,0,207 +BRDA:517,31,1,168 +BRDA:599,32,0,63 +BRDA:599,32,1,100 +BRDA:601,33,0,5 +BRDA:601,33,1,95 +BRDA:603,34,0,18 +BRDA:603,34,1,77 +BRDA:609,35,0,63 +BRDA:609,35,1,100 +BRDA:613,36,0,81 +BRDA:613,36,1,19 +BRDA:620,37,0,77 +BRDA:620,37,1,23 +BRDA:636,38,0,68 +BRDA:636,38,1,103 +BRDA:638,39,0,28 +BRDA:638,39,1,75 +BRDA:639,40,0,6 +BRDA:639,40,1,22 +BRDA:648,41,0,68 +BRDA:648,41,1,103 +BRDA:654,42,0,20 +BRDA:654,42,1,83 +BRDA:658,43,0,75 +BRDA:658,43,1,28 +BRDA:660,44,0,22 +BRDA:660,44,1,6 +BRDA:706,45,0,26 +BRDA:706,45,1,13 +BRDA:707,46,0,13 +BRDA:707,46,1,13 +BRDA:719,47,0,8 +BRDA:719,47,1,135 +BRDA:745,48,0,37 +BRDA:745,48,1,61 +BRDA:745,49,0,98 +BRDA:745,49,1,68 +BRDA:755,50,0,37 +BRDA:755,50,1,2 +BRDA:766,51,0,32 +BRDA:766,51,1,7 +BRDA:767,52,0,32 +BRDA:767,52,1,30 +BRDA:798,53,0,28 +BRDA:798,53,1,13 +BRDA:799,54,0,15 +BRDA:799,54,1,13 +BRDA:819,55,0,17 +BRDA:819,55,1,148 +BRDA:820,56,0,8 +BRDA:820,56,1,9 +BRDA:837,57,0,3 +BRDA:837,57,1,92 +BRDA:838,58,0,1 +BRDA:838,58,1,2 +BRDA:838,59,0,3 +BRDA:838,59,1,2 +BRDA:848,60,0,37 +BRDA:848,60,1,55 +BRDA:848,61,0,92 +BRDA:848,61,1,62 +BRDA:862,62,0,36 +BRDA:862,62,1,58 +BRDA:862,63,0,94 +BRDA:862,63,1,39 +BRDA:862,63,2,10 +BRF:128 +BRH:120 end_of_record TN: SF:/data/upstream/node-http2/lib/connection.js FN:1,noop FN:36,Connection FN:96,_initializeStreamManagement -FN:117,_getIdOf -FN:123,_writeControlFrame -FN:135,_updateStreamLimit -FN:140,_changeStreamCount -FN:156,_enableReceiving -FN:187,_enableSending -FN:196,_insert -FN:207,_reprioritize -FN:216,_createIncomingStream -FN:228,createStream -FN:243,_send -FN:270,(anonymous_15) -FN:291,_receive -FN:323,_initializeSettingsManagement -FN:329,(anonymous_18) -FN:343,_receiveSettings -FN:350,set -FN:368,_initializeLifecycleManagement -FN:375,_generatePingId -FN:386,ping -FN:403,_receivePing -FN:428,close -FN:439,_receiveGoaway -FN:447,_initializeFlowControl -FN:450,(anonymous_28) -FN:455,noop -FN:468,_setInitialStreamWindowSize -FN:475,(anonymous_31) -FN:483,_setStreamFlowControl -FNF:32 -FNH:30 +FN:119,_writeControlFrame +FN:131,_updateStreamLimit +FN:136,_changeStreamCount +FN:152,_allocateId +FN:183,_allocatePriority +FN:191,_insert +FN:199,_reprioritize +FN:213,_createIncomingStream +FN:225,createStream +FN:240,_send +FN:287,(anonymous_14) +FN:310,_receive +FN:342,_initializeSettingsManagement +FN:348,(anonymous_17) +FN:362,_receiveSettings +FN:369,set +FN:390,_initializeLifecycleManagement +FN:397,_generatePingId +FN:408,ping +FN:425,_receivePing +FN:450,close +FN:461,_receiveGoaway +FN:469,_initializeFlowControl +FN:472,(anonymous_27) +FN:481,noop +FN:482,noop +FN:492,_setInitialStreamWindowSize +FN:499,(anonymous_31) +FN:507,_setLocalFlowControl +FN:517,_setRemoteFlowControl +FN:520,(anonymous_34) +FNF:34 +FNH:32 FNDA:0,noop -FNDA:43,Connection -FNDA:43,_initializeStreamManagement -FNDA:438,_getIdOf -FNDA:40,_writeControlFrame +FNDA:45,Connection +FNDA:45,_initializeStreamManagement +FNDA:42,_writeControlFrame FNDA:18,_updateStreamLimit -FNDA:116,_changeStreamCount -FNDA:43,_enableReceiving -FNDA:43,_enableSending -FNDA:64,_insert -FNDA:1,_reprioritize -FNDA:21,_createIncomingStream -FNDA:17,createStream -FNDA:412,_send -FNDA:0,(anonymous_15) -FNDA:113,_receive -FNDA:43,_initializeSettingsManagement -FNDA:34,(anonymous_18) -FNDA:34,_receiveSettings -FNDA:43,set -FNDA:43,_initializeLifecycleManagement +FNDA:130,_changeStreamCount +FNDA:45,_allocateId +FNDA:45,_allocatePriority +FNDA:75,_insert +FNDA:10,_reprioritize +FNDA:22,_createIncomingStream +FNDA:18,createStream +FNDA:448,_send +FNDA:0,(anonymous_14) +FNDA:125,_receive +FNDA:45,_initializeSettingsManagement +FNDA:36,(anonymous_17) +FNDA:36,_receiveSettings +FNDA:45,set +FNDA:45,_initializeLifecycleManagement FNDA:2,_generatePingId FNDA:2,ping FNDA:5,_receivePing FNDA:3,close FNDA:2,_receiveGoaway -FNDA:43,_initializeFlowControl -FNDA:43,(anonymous_28) -FNDA:38,noop -FNDA:39,_setInitialStreamWindowSize -FNDA:51,(anonymous_31) -FNDA:22,_setStreamFlowControl +FNDA:45,_initializeFlowControl +FNDA:45,(anonymous_27) +FNDA:40,noop +FNDA:20,noop +FNDA:41,_setInitialStreamWindowSize +FNDA:54,(anonymous_31) +FNDA:24,_setLocalFlowControl +FNDA:20,_setRemoteFlowControl +FNDA:20,(anonymous_34) DA:1,1 DA:10,1 DA:12,1 DA:36,1 -DA:38,43 -DA:41,43 -DA:44,43 -DA:47,43 -DA:50,43 -DA:53,43 +DA:38,45 +DA:41,45 +DA:44,45 +DA:47,45 +DA:50,45 +DA:53,45 DA:57,1 DA:93,1 DA:96,1 -DA:100,43 -DA:101,43 -DA:104,43 -DA:105,43 -DA:108,43 -DA:112,43 -DA:113,43 -DA:114,43 -DA:117,1 -DA:118,438 -DA:123,1 -DA:124,40 -DA:126,40 -DA:127,40 -DA:129,0 -DA:130,0 -DA:135,1 -DA:136,18 -DA:137,18 -DA:140,1 -DA:141,116 -DA:142,34 -DA:143,34 -DA:144,34 -DA:156,1 -DA:158,43 -DA:159,22 +DA:100,45 +DA:101,45 +DA:104,45 +DA:105,45 +DA:108,45 +DA:112,45 +DA:113,45 +DA:114,45 +DA:119,1 +DA:120,42 +DA:122,42 +DA:123,42 +DA:125,0 +DA:126,0 +DA:131,1 +DA:132,18 +DA:133,18 +DA:136,1 +DA:137,130 +DA:138,39 +DA:139,39 +DA:140,39 +DA:152,1 +DA:154,45 +DA:155,23 +DA:156,23 DA:160,22 -DA:164,21 -DA:165,21 -DA:170,0 -DA:172,0 -DA:173,0 -DA:176,43 -DA:179,43 -DA:180,43 -DA:181,43 -DA:183,43 -DA:187,1 -DA:188,43 -DA:189,43 -DA:190,43 -DA:191,43 -DA:192,43 -DA:196,1 -DA:197,64 -DA:198,64 -DA:199,64 -DA:200,94 -DA:202,64 -DA:207,1 -DA:208,1 -DA:209,1 -DA:210,1 -DA:211,1 -DA:216,1 -DA:217,21 -DA:219,21 -DA:220,21 -DA:221,21 -DA:222,21 -DA:224,21 -DA:228,1 -DA:229,17 -DA:232,17 -DA:233,17 -DA:235,17 -DA:243,1 -DA:244,412 -DA:247,412 -DA:248,412 -DA:249,438 -DA:250,438 -DA:251,438 -DA:252,438 -DA:253,75 -DA:254,0 -DA:255,0 -DA:258,75 -DA:259,17 -DA:262,75 -DA:263,75 -DA:264,5 -DA:265,5 -DA:268,75 -DA:269,75 -DA:270,75 -DA:271,0 -DA:274,75 -DA:275,75 -DA:278,75 -DA:279,0 -DA:280,75 -DA:281,0 -DA:286,412 -DA:291,1 -DA:292,113 -DA:295,113 -DA:298,113 -DA:299,16 -DA:303,113 -DA:304,5 -DA:307,113 -DA:310,113 -DA:312,113 -DA:318,1 -DA:323,1 -DA:325,43 -DA:326,43 -DA:329,43 -DA:330,34 -DA:331,34 -DA:333,0 -DA:334,0 -DA:339,43 -DA:343,1 -DA:344,34 -DA:345,52 -DA:350,1 -DA:351,43 -DA:368,1 -DA:369,43 -DA:370,43 -DA:371,43 -DA:375,1 -DA:376,2 -DA:377,2 -DA:378,2 -DA:379,32 -DA:382,2 -DA:386,1 -DA:387,2 -DA:388,2 -DA:389,2 -DA:391,2 -DA:392,2 -DA:403,1 -DA:404,5 -DA:405,3 -DA:406,3 -DA:407,2 -DA:408,2 +DA:161,22 +DA:166,0 +DA:168,0 +DA:169,0 +DA:172,45 +DA:175,45 +DA:176,45 +DA:177,45 +DA:179,45 +DA:183,1 +DA:184,45 +DA:185,45 +DA:186,45 +DA:187,45 +DA:188,45 +DA:191,1 +DA:192,75 +DA:193,27 +DA:195,48 +DA:199,1 +DA:200,10 +DA:201,10 +DA:202,10 +DA:203,10 +DA:204,10 +DA:205,8 +DA:208,10 +DA:213,1 +DA:214,22 +DA:216,22 +DA:217,22 +DA:218,22 +DA:219,22 +DA:221,22 +DA:225,1 +DA:226,18 +DA:229,18 +DA:230,18 +DA:232,18 +DA:240,1 +DA:241,448 +DA:244,448 +DA:245,448 +DA:246,388 +DA:257,388 +DA:258,388 +DA:259,622 +DA:260,622 +DA:261,622 +DA:263,622 +DA:264,537 +DA:267,85 +DA:268,0 +DA:269,0 +DA:273,85 +DA:274,85 +DA:275,18 +DA:277,67 +DA:280,85 +DA:281,5 +DA:282,5 +DA:285,85 +DA:286,85 +DA:287,85 +DA:288,0 +DA:290,85 +DA:291,85 +DA:294,85 +DA:295,0 +DA:296,85 +DA:297,0 +DA:299,85 +DA:305,448 +DA:310,1 +DA:311,125 +DA:314,125 +DA:317,125 +DA:318,17 +DA:322,125 +DA:323,5 +DA:326,125 +DA:329,125 +DA:331,125 +DA:337,1 +DA:342,1 +DA:344,45 +DA:345,45 +DA:348,45 +DA:349,36 +DA:350,36 +DA:352,0 +DA:353,0 +DA:358,45 +DA:362,1 +DA:363,36 +DA:364,54 +DA:369,1 +DA:370,45 +DA:375,45 +DA:376,70 +DA:390,1 +DA:391,45 +DA:392,45 +DA:393,45 +DA:397,1 +DA:398,2 +DA:399,2 +DA:400,2 +DA:401,32 +DA:404,2 +DA:408,1 DA:409,2 -DA:411,1 -DA:415,2 -DA:416,2 -DA:428,1 -DA:429,3 -DA:430,3 -DA:436,3 -DA:439,1 -DA:440,2 -DA:441,2 -DA:447,1 -DA:449,43 -DA:450,43 -DA:451,43 -DA:453,43 -DA:454,43 -DA:455,43 -DA:462,1 -DA:468,1 -DA:469,39 -DA:470,1 -DA:471,1 -DA:473,38 -DA:474,38 -DA:475,38 -DA:476,51 -DA:483,1 -DA:484,22 -DA:485,20 -DA:486,20 -DA:487,2 -DA:488,1 -DA:489,1 -LF:189 -LH:177 +DA:410,2 +DA:411,2 +DA:413,2 +DA:414,2 +DA:425,1 +DA:426,5 +DA:427,3 +DA:428,3 +DA:429,2 +DA:430,2 +DA:431,2 +DA:433,1 +DA:437,2 +DA:438,2 +DA:450,1 +DA:451,3 +DA:452,3 +DA:458,3 +DA:461,1 +DA:462,2 +DA:463,2 +DA:469,1 +DA:471,45 +DA:472,45 +DA:473,45 +DA:474,45 +DA:475,25 +DA:478,45 +DA:479,45 +DA:480,45 +DA:481,45 +DA:482,45 +DA:486,1 +DA:492,1 +DA:493,41 +DA:494,1 +DA:495,1 +DA:497,40 +DA:498,40 +DA:499,40 +DA:500,54 +DA:507,1 +DA:508,24 +DA:509,22 +DA:510,22 +DA:511,2 +DA:512,1 +DA:513,1 +DA:517,1 +DA:518,20 +DA:519,20 +DA:520,20 +DA:521,20 +DA:523,0 +DA:524,0 +DA:525,0 +LF:208 +LH:193 BRDA:1,1,0,1 BRDA:1,1,1,0 -BRDA:124,2,0,40 -BRDA:124,2,1,0 -BRDA:124,3,0,40 -BRDA:124,3,1,6 -BRDA:124,3,2,2 -BRDA:124,3,3,0 -BRDA:141,4,0,34 -BRDA:141,4,1,82 -BRDA:158,5,0,22 -BRDA:158,5,1,21 -BRDA:164,6,0,21 -BRDA:164,6,1,0 -BRDA:164,7,0,21 -BRDA:164,7,1,21 -BRDA:199,8,0,158 -BRDA:199,8,1,107 -BRDA:253,9,0,0 -BRDA:253,9,1,75 -BRDA:258,10,0,17 -BRDA:258,10,1,58 -BRDA:263,11,0,5 -BRDA:263,11,1,70 -BRDA:274,12,0,75 -BRDA:274,12,1,0 -BRDA:278,13,0,0 -BRDA:278,13,1,75 -BRDA:280,14,0,0 -BRDA:280,14,1,75 -BRDA:298,15,0,16 -BRDA:298,15,1,97 -BRDA:303,16,0,5 -BRDA:303,16,1,108 -BRDA:326,17,0,43 -BRDA:326,17,1,18 -BRDA:330,18,0,34 -BRDA:330,18,1,0 -BRDA:330,19,0,34 -BRDA:330,19,1,34 -BRDA:404,20,0,3 -BRDA:404,20,1,2 -BRDA:406,21,0,2 -BRDA:406,21,1,1 -BRDA:434,22,0,3 -BRDA:434,22,1,2 -BRDA:469,23,0,1 -BRDA:469,23,1,38 -BRDA:469,24,0,39 -BRDA:469,24,1,2 -BRDA:484,25,0,20 -BRDA:484,25,1,2 -BRDA:487,26,0,1 -BRDA:487,26,1,1 -BRF:54 -BRH:45 +BRDA:120,2,0,42 +BRDA:120,2,1,0 +BRDA:120,3,0,42 +BRDA:120,3,1,6 +BRDA:120,3,2,2 +BRDA:120,3,3,0 +BRDA:137,4,0,39 +BRDA:137,4,1,91 +BRDA:154,5,0,23 +BRDA:154,5,1,22 +BRDA:160,6,0,22 +BRDA:160,6,1,0 +BRDA:160,7,0,22 +BRDA:160,7,1,22 +BRDA:192,8,0,27 +BRDA:192,8,1,48 +BRDA:204,9,0,8 +BRDA:204,9,1,2 +BRDA:263,10,0,537 +BRDA:263,10,1,85 +BRDA:267,11,0,0 +BRDA:267,11,1,85 +BRDA:274,12,0,18 +BRDA:274,12,1,67 +BRDA:280,13,0,5 +BRDA:280,13,1,80 +BRDA:290,14,0,85 +BRDA:290,14,1,0 +BRDA:294,15,0,0 +BRDA:294,15,1,85 +BRDA:296,16,0,0 +BRDA:296,16,1,85 +BRDA:317,17,0,17 +BRDA:317,17,1,108 +BRDA:322,18,0,5 +BRDA:322,18,1,120 +BRDA:345,19,0,45 +BRDA:345,19,1,20 +BRDA:349,20,0,36 +BRDA:349,20,1,0 +BRDA:349,21,0,36 +BRDA:349,21,1,36 +BRDA:426,22,0,3 +BRDA:426,22,1,2 +BRDA:428,23,0,2 +BRDA:428,23,1,1 +BRDA:456,24,0,3 +BRDA:456,24,1,2 +BRDA:474,25,0,25 +BRDA:474,25,1,20 +BRDA:493,26,0,1 +BRDA:493,26,1,40 +BRDA:493,27,0,41 +BRDA:493,27,1,2 +BRDA:508,28,0,22 +BRDA:508,28,1,2 +BRDA:511,29,0,1 +BRDA:511,29,1,1 +BRDA:518,30,0,20 +BRDA:518,30,1,0 +BRDA:523,31,0,0 +BRDA:523,31,1,0 +BRF:64 +BRH:52 end_of_record TN: SF:/data/upstream/node-http2/lib/flow.js @@ -785,211 +891,211 @@ FN:89,_receive FN:97,_write FN:105,(anonymous_5) FN:126,_restoreWindow -FN:140,disableRemoteFlowControl -FN:170,_send -FN:177,_read -FN:211,_push -FN:261,push -FN:280,getLastQueuedFrame -FN:298,_increaseWindow -FN:322,_updateWindow -FN:330,setInitialWindow -FN:336,disableLocalFlowControl +FN:139,disableRemoteFlowControl +FN:163,_send +FN:170,_read +FN:204,_push +FN:254,push +FN:273,getLastQueuedFrame +FN:291,_increaseWindow +FN:315,_updateWindow +FN:323,setInitialWindow +FN:329,disableLocalFlowControl FNF:16 FNH:15 FNDA:0,noop -FNDA:162,Flow +FNDA:164,Flow FNDA:1,_receive -FNDA:308,_write -FNDA:100,(anonymous_5) -FNDA:7,_restoreWindow -FNDA:1,disableRemoteFlowControl +FNDA:329,_write +FNDA:106,(anonymous_5) +FNDA:12,_restoreWindow +FNDA:45,disableRemoteFlowControl FNDA:1,_send -FNDA:1244,_read -FNDA:264,_push -FNDA:182,push -FNDA:34,getLastQueuedFrame -FNDA:90,_increaseWindow -FNDA:6,_updateWindow -FNDA:56,setInitialWindow +FNDA:1392,_read +FNDA:285,_push +FNDA:193,push +FNDA:36,getLastQueuedFrame +FNDA:94,_increaseWindow +FNDA:5,_updateWindow +FNDA:59,setInitialWindow FNDA:1,disableLocalFlowControl DA:1,1 DA:10,1 DA:12,1 DA:69,1 DA:72,1 -DA:73,162 -DA:75,162 -DA:76,162 -DA:77,162 -DA:79,162 -DA:80,162 -DA:81,162 +DA:73,164 +DA:75,164 +DA:76,164 +DA:77,164 +DA:79,164 +DA:80,164 +DA:81,164 DA:83,1 DA:89,1 DA:90,1 DA:97,1 -DA:98,308 -DA:100,308 -DA:101,59 -DA:104,308 -DA:105,100 -DA:106,100 -DA:107,100 -DA:108,7 -DA:110,100 -DA:115,208 -DA:118,308 -DA:120,6 +DA:98,329 +DA:100,329 +DA:101,63 +DA:104,329 +DA:105,106 +DA:106,106 +DA:107,106 +DA:108,12 +DA:110,106 +DA:115,223 +DA:118,329 +DA:120,5 DA:126,1 -DA:127,7 -DA:128,7 +DA:127,12 +DA:128,12 DA:129,6 DA:134,6 -DA:140,1 -DA:141,1 -DA:142,1 +DA:139,1 +DA:140,45 +DA:141,45 +DA:163,1 +DA:164,1 DA:170,1 -DA:171,1 -DA:177,1 -DA:179,1244 -DA:180,1143 -DA:185,101 +DA:172,1392 +DA:173,1291 +DA:178,101 +DA:179,7 +DA:180,7 +DA:181,7 +DA:182,7 +DA:183,8 DA:186,7 -DA:187,7 -DA:188,7 -DA:189,7 -DA:190,8 -DA:193,7 -DA:198,1244 -DA:209,1 -DA:211,1 -DA:212,264 -DA:213,357 -DA:214,357 -DA:216,257 -DA:219,100 -DA:220,7 -DA:224,93 +DA:191,1392 +DA:202,1 +DA:204,1 +DA:205,285 +DA:206,378 +DA:207,378 +DA:209,278 +DA:212,100 +DA:213,7 +DA:217,93 +DA:218,93 DA:225,93 -DA:232,93 -DA:234,93 -DA:235,93 -DA:238,357 -DA:239,357 -DA:240,350 -DA:241,350 -DA:242,140 -DA:244,140 -DA:245,140 -DA:247,350 -DA:250,357 -DA:253,264 -DA:254,7 -DA:257,264 -DA:261,1 -DA:262,182 -DA:263,6 -DA:265,176 -DA:266,176 -DA:267,176 -DA:270,182 -DA:271,181 +DA:227,93 +DA:228,93 +DA:231,378 +DA:232,378 +DA:233,371 +DA:234,371 +DA:235,144 +DA:237,144 +DA:238,144 +DA:240,371 +DA:243,378 +DA:246,285 +DA:247,7 +DA:250,285 +DA:254,1 +DA:255,193 +DA:256,6 +DA:258,187 +DA:259,187 +DA:260,187 +DA:263,193 +DA:264,192 +DA:266,1 +DA:267,1 DA:273,1 -DA:274,1 -DA:280,1 -DA:281,34 -DA:282,34 -DA:296,1 -DA:298,1 -DA:299,90 +DA:274,36 +DA:275,36 +DA:289,1 +DA:291,1 +DA:292,94 +DA:293,1 +DA:294,1 +DA:296,93 +DA:297,93 +DA:298,93 +DA:299,1 DA:300,1 -DA:301,1 -DA:303,89 -DA:304,89 -DA:305,89 -DA:306,1 -DA:307,1 -DA:309,88 -DA:322,1 -DA:323,6 +DA:302,92 +DA:315,1 +DA:316,5 +DA:323,1 +DA:324,59 +DA:325,59 +DA:329,1 DA:330,1 -DA:331,56 -DA:332,56 -DA:336,1 -DA:337,1 LF:105 LH:105 BRDA:1,1,0,1 BRDA:1,1,1,0 -BRDA:100,2,0,59 -BRDA:100,2,1,249 -BRDA:104,3,0,100 -BRDA:104,3,1,208 -BRDA:104,4,0,308 -BRDA:104,4,1,180 -BRDA:104,4,2,133 -BRDA:107,5,0,7 -BRDA:107,5,1,93 -BRDA:118,6,0,6 -BRDA:118,6,1,302 -BRDA:118,7,0,308 -BRDA:118,7,1,6 -BRDA:118,7,2,6 +BRDA:100,2,0,63 +BRDA:100,2,1,266 +BRDA:104,3,0,106 +BRDA:104,3,1,223 +BRDA:104,4,0,329 +BRDA:104,4,1,192 +BRDA:104,4,2,135 +BRDA:107,5,0,12 +BRDA:107,5,1,94 +BRDA:118,6,0,5 +BRDA:118,6,1,324 +BRDA:118,7,0,329 +BRDA:118,7,1,5 +BRDA:118,7,2,5 BRDA:128,8,0,6 -BRDA:128,8,1,1 -BRDA:128,9,0,7 +BRDA:128,8,1,6 +BRDA:128,9,0,12 BRDA:128,9,1,6 BRDA:128,9,2,6 -BRDA:179,10,0,1143 -BRDA:179,10,1,101 -BRDA:185,11,0,7 -BRDA:185,11,1,94 -BRDA:189,12,0,15 -BRDA:189,12,1,14 -BRDA:193,13,0,7 -BRDA:193,13,1,7 -BRDA:193,13,2,1 -BRDA:193,13,3,1 -BRDA:251,14,0,357 -BRDA:251,14,1,100 -BRDA:214,15,0,257 -BRDA:214,15,1,100 -BRDA:214,16,0,357 -BRDA:214,16,1,351 -BRDA:214,16,2,190 -BRDA:214,16,3,163 -BRDA:219,17,0,7 -BRDA:219,17,1,93 -BRDA:239,18,0,350 -BRDA:239,18,1,7 -BRDA:241,19,0,140 -BRDA:241,19,1,210 -BRDA:241,20,0,350 -BRDA:241,20,1,344 -BRDA:241,20,2,183 -BRDA:253,21,0,7 -BRDA:253,21,1,257 -BRDA:262,22,0,6 -BRDA:262,22,1,176 -BRDA:265,23,0,176 -BRDA:265,23,1,135 -BRDA:270,24,0,181 -BRDA:270,24,1,1 -BRDA:282,25,0,34 -BRDA:282,25,1,34 -BRDA:299,26,0,1 -BRDA:299,26,1,89 -BRDA:299,27,0,90 -BRDA:299,27,1,2 -BRDA:305,28,0,1 -BRDA:305,28,1,88 -BRDA:305,29,0,89 -BRDA:305,29,1,43 -BRDA:323,30,0,1 -BRDA:323,30,1,5 +BRDA:172,10,0,1291 +BRDA:172,10,1,101 +BRDA:178,11,0,7 +BRDA:178,11,1,94 +BRDA:182,12,0,15 +BRDA:182,12,1,14 +BRDA:186,13,0,7 +BRDA:186,13,1,7 +BRDA:186,13,2,1 +BRDA:186,13,3,1 +BRDA:244,14,0,378 +BRDA:244,14,1,100 +BRDA:207,15,0,278 +BRDA:207,15,1,100 +BRDA:207,16,0,378 +BRDA:207,16,1,372 +BRDA:207,16,2,202 +BRDA:207,16,3,154 +BRDA:212,17,0,7 +BRDA:212,17,1,93 +BRDA:232,18,0,371 +BRDA:232,18,1,7 +BRDA:234,19,0,144 +BRDA:234,19,1,227 +BRDA:234,20,0,371 +BRDA:234,20,1,365 +BRDA:234,20,2,195 +BRDA:246,21,0,7 +BRDA:246,21,1,278 +BRDA:255,22,0,6 +BRDA:255,22,1,187 +BRDA:258,23,0,187 +BRDA:258,23,1,142 +BRDA:263,24,0,192 +BRDA:263,24,1,1 +BRDA:275,25,0,36 +BRDA:275,25,1,36 +BRDA:292,26,0,1 +BRDA:292,26,1,93 +BRDA:292,27,0,94 +BRDA:292,27,1,2 +BRDA:298,28,0,1 +BRDA:298,28,1,92 +BRDA:298,29,0,93 +BRDA:298,29,1,44 +BRDA:316,30,0,0 +BRDA:316,30,1,5 BRF:68 -BRH:67 +BRH:66 end_of_record TN: SF:/data/upstream/node-http2/lib/stream.js @@ -1017,49 +1123,49 @@ FN:564,(anonymous_21) FNF:21 FNH:18 FNDA:0,noop -FNDA:103,Stream -FNDA:103,_initializeManagement +FNDA:105,Stream +FNDA:105,_initializeManagement FNDA:6,(anonymous_4) -FNDA:39,(anonymous_5) +FNDA:43,(anonymous_5) FNDA:0,(anonymous_6) FNDA:6,promise -FNDA:40,headers +FNDA:44,headers FNDA:0,priority FNDA:26,reset -FNDA:103,_initializeDataFlow -FNDA:87,_receive -FNDA:35,_read -FNDA:18,_write -FNDA:690,_send -FNDA:34,_finishing -FNDA:103,_initializeState -FNDA:155,transition -FNDA:220,activeState -FNDA:268,transition +FNDA:105,_initializeDataFlow +FNDA:97,_receive +FNDA:38,_read +FNDA:19,_write +FNDA:809,_send +FNDA:36,_finishing +FNDA:105,_initializeState +FNDA:161,transition +FNDA:234,activeState +FNDA:285,transition FNDA:6,(anonymous_21) DA:1,1 DA:12,1 DA:14,1 DA:47,1 -DA:48,103 -DA:51,103 -DA:54,103 -DA:57,103 -DA:60,103 +DA:48,105 +DA:51,105 +DA:54,105 +DA:57,105 +DA:60,105 DA:63,1 DA:69,1 DA:70,1 DA:73,1 -DA:74,103 -DA:75,103 -DA:76,103 -DA:77,103 +DA:74,105 +DA:75,105 +DA:76,105 +DA:77,105 DA:78,6 -DA:80,103 -DA:81,39 +DA:80,105 +DA:81,43 DA:82,0 -DA:84,39 -DA:86,103 +DA:84,43 +DA:86,105 DA:87,0 DA:91,1 DA:92,6 @@ -1067,7 +1173,7 @@ DA:93,6 DA:94,6 DA:99,6 DA:102,1 -DA:103,40 +DA:103,44 DA:109,1 DA:110,0 DA:111,0 @@ -1085,88 +1191,88 @@ DA:135,19 DA:136,19 DA:176,1 DA:178,1 -DA:179,103 -DA:180,103 -DA:181,103 -DA:182,103 -DA:183,103 -DA:184,103 -DA:185,103 -DA:187,103 +DA:179,105 +DA:180,105 +DA:181,105 +DA:182,105 +DA:183,105 +DA:184,105 +DA:185,105 +DA:187,105 DA:191,1 -DA:192,87 -DA:194,87 -DA:198,87 -DA:199,42 -DA:200,42 +DA:192,97 +DA:194,97 +DA:198,97 +DA:199,48 +DA:200,48 DA:201,0 DA:202,0 -DA:208,45 -DA:212,87 -DA:213,33 -DA:216,87 -DA:217,87 +DA:208,49 +DA:212,97 +DA:213,35 +DA:216,97 +DA:217,97 DA:223,1 -DA:224,35 +DA:224,38 DA:225,0 DA:226,0 DA:227,0 DA:232,1 -DA:234,18 -DA:240,18 -DA:241,18 +DA:234,19 +DA:240,19 +DA:241,19 DA:243,0 DA:250,1 -DA:251,690 +DA:251,809 DA:252,0 DA:253,0 DA:254,0 DA:262,1 -DA:263,34 -DA:268,34 -DA:269,34 -DA:270,10 -DA:271,10 -DA:272,10 -DA:273,10 -DA:275,24 +DA:263,36 +DA:268,36 +DA:269,36 +DA:270,7 +DA:271,7 +DA:272,7 +DA:273,7 +DA:275,29 DA:309,1 -DA:310,103 -DA:311,103 -DA:312,103 -DA:313,103 -DA:314,103 -DA:315,103 +DA:310,105 +DA:311,105 +DA:312,105 +DA:313,105 +DA:314,105 +DA:315,105 DA:320,1 -DA:321,155 -DA:322,155 -DA:323,155 -DA:324,155 +DA:321,161 +DA:322,161 +DA:323,161 +DA:324,161 DA:329,1 -DA:330,220 +DA:330,234 DA:336,1 -DA:337,268 -DA:338,268 -DA:340,268 -DA:341,268 -DA:342,268 -DA:343,106 -DA:344,87 +DA:337,285 +DA:338,285 +DA:340,285 +DA:341,285 +DA:342,285 +DA:343,115 +DA:344,95 DA:345,8 DA:346,33 DA:347,24 DA:348,10 -DA:351,268 -DA:353,268 -DA:360,55 -DA:361,40 -DA:362,40 +DA:351,285 +DA:353,285 +DA:360,57 +DA:361,42 +DA:362,42 DA:363,3 -DA:365,40 +DA:365,42 DA:366,15 DA:367,6 DA:369,9 -DA:371,55 +DA:371,57 DA:383,18 DA:384,4 DA:385,14 @@ -1181,39 +1287,39 @@ DA:405,4 DA:406,8 DA:409,8 DA:411,18 -DA:423,61 -DA:424,27 -DA:425,34 +DA:423,65 +DA:424,29 +DA:425,36 DA:426,2 -DA:430,61 -DA:439,55 -DA:440,23 -DA:441,32 +DA:430,65 +DA:439,62 +DA:440,24 +DA:441,38 DA:444,3 -DA:446,55 -DA:459,36 -DA:460,21 -DA:461,15 +DA:446,62 +DA:459,40 +DA:460,22 +DA:461,18 DA:464,3 -DA:466,36 +DA:466,40 DA:489,25 DA:494,14 DA:496,25 -DA:502,268 -DA:503,64 -DA:504,64 -DA:513,268 +DA:502,285 +DA:503,66 +DA:504,66 +DA:513,285 DA:514,13 DA:516,13 DA:517,13 -DA:521,268 -DA:522,110 -DA:523,110 -DA:524,57 -DA:526,53 -DA:528,158 -DA:529,85 -DA:533,268 +DA:521,285 +DA:522,117 +DA:523,117 +DA:524,60 +DA:526,57 +DA:528,168 +DA:529,89 +DA:533,285 DA:534,45 DA:543,45 DA:544,20 @@ -1233,7 +1339,7 @@ LH:170 BRDA:1,1,0,1 BRDA:1,1,1,0 BRDA:81,2,0,0 -BRDA:81,2,1,39 +BRDA:81,2,1,43 BRDA:110,3,0,0 BRDA:110,3,1,0 BRDA:110,4,0,0 @@ -1248,47 +1354,47 @@ BRDA:115,7,1,0 BRDA:115,7,2,0 BRDA:134,8,0,19 BRDA:134,8,1,7 -BRDA:198,9,0,42 -BRDA:198,9,1,45 +BRDA:198,9,0,48 +BRDA:198,9,1,49 BRDA:200,10,0,0 -BRDA:200,10,1,42 -BRDA:212,11,0,33 -BRDA:212,11,1,54 -BRDA:216,12,0,87 +BRDA:200,10,1,48 +BRDA:212,11,0,35 +BRDA:212,11,1,62 +BRDA:216,12,0,97 BRDA:216,12,1,0 BRDA:224,13,0,0 -BRDA:224,13,1,35 -BRDA:240,14,0,18 +BRDA:224,13,1,38 +BRDA:240,14,0,19 BRDA:240,14,1,0 BRDA:251,15,0,0 -BRDA:251,15,1,690 -BRDA:269,16,0,10 -BRDA:269,16,1,24 -BRDA:269,17,0,34 -BRDA:269,17,1,10 +BRDA:251,15,1,809 +BRDA:269,16,0,7 +BRDA:269,16,1,29 +BRDA:269,17,0,36 +BRDA:269,17,1,7 BRDA:269,17,2,4 -BRDA:271,18,0,10 +BRDA:271,18,0,7 BRDA:271,18,1,0 -BRDA:330,19,0,220 -BRDA:330,19,1,133 -BRDA:330,19,2,117 -BRDA:342,20,0,106 -BRDA:342,20,1,87 +BRDA:330,19,0,234 +BRDA:330,19,1,139 +BRDA:330,19,2,123 +BRDA:342,20,0,115 +BRDA:342,20,1,95 BRDA:342,20,2,8 BRDA:342,20,3,33 BRDA:342,20,4,24 BRDA:342,20,5,10 -BRDA:353,21,0,55 +BRDA:353,21,0,57 BRDA:353,21,1,18 BRDA:353,21,2,18 -BRDA:353,21,3,61 -BRDA:353,21,4,55 -BRDA:353,21,5,36 +BRDA:353,21,3,65 +BRDA:353,21,4,62 +BRDA:353,21,5,40 BRDA:353,21,6,25 -BRDA:360,22,0,40 +BRDA:360,22,0,42 BRDA:360,22,1,15 BRDA:362,23,0,3 -BRDA:362,23,1,37 +BRDA:362,23,1,39 BRDA:363,24,0,0 BRDA:363,24,1,3 BRDA:366,25,0,6 @@ -1315,31 +1421,31 @@ BRDA:406,35,0,0 BRDA:406,35,1,8 BRDA:406,36,0,8 BRDA:406,36,1,4 -BRDA:423,37,0,27 -BRDA:423,37,1,34 -BRDA:424,38,0,18 -BRDA:424,38,1,9 +BRDA:423,37,0,29 +BRDA:423,37,1,36 +BRDA:424,38,0,19 +BRDA:424,38,1,10 BRDA:425,39,0,2 -BRDA:425,39,1,32 -BRDA:439,40,0,23 -BRDA:439,40,1,32 -BRDA:439,41,0,55 -BRDA:439,41,1,53 -BRDA:439,41,2,50 -BRDA:441,42,0,29 +BRDA:425,39,1,34 +BRDA:439,40,0,24 +BRDA:439,40,1,38 +BRDA:439,41,0,62 +BRDA:439,41,1,60 +BRDA:439,41,2,57 +BRDA:441,42,0,35 BRDA:441,42,1,3 -BRDA:441,43,0,32 +BRDA:441,43,0,38 BRDA:441,43,1,3 BRDA:441,43,2,3 BRDA:441,43,3,3 -BRDA:459,44,0,21 -BRDA:459,44,1,15 -BRDA:459,45,0,36 -BRDA:459,45,1,31 -BRDA:459,45,2,28 -BRDA:461,46,0,12 +BRDA:459,44,0,22 +BRDA:459,44,1,18 +BRDA:459,45,0,40 +BRDA:459,45,1,35 +BRDA:459,45,2,32 +BRDA:461,46,0,15 BRDA:461,46,1,3 -BRDA:461,47,0,15 +BRDA:461,47,0,18 BRDA:461,47,1,3 BRDA:461,47,2,3 BRDA:461,47,3,3 @@ -1353,24 +1459,24 @@ BRDA:489,49,4,12 BRDA:489,49,5,6 BRDA:489,49,6,5 BRDA:489,49,7,4 -BRDA:502,50,0,64 -BRDA:502,50,1,204 -BRDA:502,51,0,268 -BRDA:502,51,1,89 +BRDA:502,50,0,66 +BRDA:502,50,1,219 +BRDA:502,51,0,285 +BRDA:502,51,1,91 BRDA:513,52,0,13 -BRDA:513,52,1,255 -BRDA:513,53,0,268 +BRDA:513,52,1,272 +BRDA:513,53,0,285 BRDA:513,53,1,24 BRDA:516,54,0,6 BRDA:516,54,1,7 -BRDA:521,55,0,110 -BRDA:521,55,1,158 -BRDA:523,56,0,57 -BRDA:523,56,1,53 -BRDA:528,57,0,85 -BRDA:528,57,1,73 +BRDA:521,55,0,117 +BRDA:521,55,1,168 +BRDA:523,56,0,60 +BRDA:523,56,1,57 +BRDA:528,57,0,89 +BRDA:528,57,1,79 BRDA:533,58,0,45 -BRDA:533,58,1,223 +BRDA:533,58,1,240 BRDA:543,59,0,20 BRDA:543,59,1,25 BRDA:565,60,0,2 @@ -1385,28 +1491,28 @@ FN:16,Endpoint FN:50,_writePrelude FN:56,_readPrelude FN:61,_temporalWrite -FN:119,_initializeDataFlow -FN:143,_read -FN:150,_write -FN:157,_initializeManagement -FN:161,createStream -FN:168,_initializeErrorHandling -FN:176,_error -FN:181,close -FN:191,(anonymous_14) +FN:121,_initializeDataFlow +FN:145,_read +FN:152,_write +FN:159,_initializeManagement +FN:163,createStream +FN:170,_initializeErrorHandling +FN:178,_error +FN:183,close +FN:193,(anonymous_14) FNF:14 FNH:13 FNDA:0,noop -FNDA:22,Endpoint -FNDA:11,_writePrelude -FNDA:11,_readPrelude -FNDA:10,_temporalWrite -FNDA:22,_initializeDataFlow -FNDA:256,_read -FNDA:46,_write -FNDA:22,_initializeManagement -FNDA:10,createStream -FNDA:22,_initializeErrorHandling +FNDA:24,Endpoint +FNDA:12,_writePrelude +FNDA:12,_readPrelude +FNDA:11,_temporalWrite +FNDA:24,_initializeDataFlow +FNDA:293,_read +FNDA:51,_write +FNDA:24,_initializeManagement +FNDA:11,createStream +FNDA:24,_initializeErrorHandling FNDA:1,_error FNDA:2,close FNDA:6,(anonymous_14) @@ -1419,100 +1525,101 @@ DA:7,1 DA:8,1 DA:10,1 DA:16,1 -DA:17,22 -DA:20,22 -DA:24,22 -DA:25,22 -DA:26,11 -DA:28,11 -DA:34,22 -DA:37,22 -DA:40,22 +DA:17,24 +DA:20,24 +DA:24,24 +DA:25,24 +DA:26,12 +DA:28,12 +DA:34,24 +DA:37,24 +DA:40,24 DA:42,1 DA:47,1 DA:50,1 -DA:51,11 -DA:52,11 +DA:51,12 +DA:52,12 DA:56,1 -DA:58,11 -DA:61,11 -DA:64,10 -DA:65,10 -DA:66,217 +DA:58,12 +DA:61,12 +DA:64,11 +DA:65,11 +DA:66,241 DA:67,1 DA:69,1 DA:70,1 -DA:72,216 -DA:77,9 -DA:78,9 -DA:79,9 -DA:80,9 -DA:81,9 +DA:72,240 +DA:77,10 +DA:78,10 +DA:79,10 +DA:80,10 +DA:81,10 DA:119,1 -DA:120,22 -DA:121,22 -DA:122,11 -DA:123,11 -DA:124,11 -DA:126,11 -DA:127,11 -DA:128,11 -DA:131,22 -DA:132,22 -DA:133,22 -DA:134,22 -DA:135,22 -DA:137,22 -DA:138,22 -DA:140,22 -DA:143,1 -DA:144,256 -DA:145,256 -DA:146,156 -DA:150,1 -DA:151,46 -DA:157,1 -DA:158,22 -DA:161,1 -DA:162,10 -DA:168,1 -DA:169,22 -DA:170,22 -DA:171,22 -DA:172,22 -DA:173,22 -DA:176,1 -DA:177,1 +DA:121,1 +DA:122,24 +DA:123,24 +DA:124,12 +DA:125,12 +DA:126,12 +DA:128,12 +DA:129,12 +DA:130,12 +DA:133,24 +DA:134,24 +DA:135,24 +DA:136,24 +DA:137,24 +DA:139,24 +DA:140,24 +DA:142,24 +DA:145,1 +DA:146,293 +DA:147,293 +DA:148,178 +DA:152,1 +DA:153,51 +DA:159,1 +DA:160,24 +DA:163,1 +DA:164,11 +DA:170,1 +DA:171,24 +DA:172,24 +DA:173,24 +DA:174,24 +DA:175,24 DA:178,1 -DA:181,1 -DA:182,2 -DA:188,1 +DA:179,1 +DA:180,1 +DA:183,1 +DA:184,2 DA:190,1 -DA:191,1 -DA:192,6 -DA:193,2 -DA:194,2 -DA:196,6 -LF:83 -LH:83 +DA:192,1 +DA:193,1 +DA:194,6 +DA:195,2 +DA:196,2 +DA:198,6 +LF:84 +LH:84 BRDA:1,1,0,1 BRDA:1,1,1,0 -BRDA:24,2,0,22 -BRDA:24,2,1,11 -BRDA:25,3,0,11 -BRDA:25,3,1,11 -BRDA:65,4,0,226 -BRDA:65,4,1,217 +BRDA:24,2,0,24 +BRDA:24,2,1,12 +BRDA:25,3,0,12 +BRDA:25,3,1,12 +BRDA:65,4,0,251 +BRDA:65,4,1,241 BRDA:66,5,0,1 -BRDA:66,5,1,216 -BRDA:77,6,0,9 +BRDA:66,5,1,240 +BRDA:77,6,0,10 BRDA:77,6,1,0 -BRDA:121,7,0,11 -BRDA:121,7,1,11 -BRDA:145,8,0,412 -BRDA:145,8,1,412 -BRDA:192,9,0,2 -BRDA:192,9,1,4 +BRDA:123,7,0,12 +BRDA:123,7,1,12 +BRDA:147,8,0,471 +BRDA:147,8,1,471 +BRDA:194,9,0,2 +BRDA:194,9,1,4 BRF:18 BRH:16 end_of_record @@ -1520,56 +1627,58 @@ TN: SF:/data/upstream/node-http2/lib/framer.js FN:5,noop FN:25,Serializer -FN:34,_transform -FN:64,Deserializer -FN:76,(anonymous_5) -FN:87,_transform -FN:193,writeCommonHeader -FN:222,readCommonHeader -FN:267,writeData -FN:271,readData -FN:310,writeHeadersPriority -FN:320,readHeadersPriority -FN:350,writePriority -FN:356,readPriority -FN:382,writeRstStream -FN:390,readRstStream -FN:426,writeSettings -FN:428,(anonymous_18) -FN:446,readSettings -FN:510,writePushPromise -FN:518,readPushPromise -FN:542,writePing -FN:547,readPing -FN:582,writeGoaway -FN:595,readGoaway -FN:622,writeWindowUpdate -FN:629,readWindowUpdate -FN:659,(anonymous_28) -FN:672,(anonymous_29) -FN:692,(anonymous_30) -FN:700,(anonymous_31) -FNF:31 -FNH:28 +FN:35,_transform +FN:67,Deserializer +FN:80,(anonymous_5) +FN:91,_transform +FN:201,writeCommonHeader +FN:230,readCommonHeader +FN:275,writeData +FN:279,readData +FN:318,writeHeadersPriority +FN:328,readHeadersPriority +FN:358,writePriority +FN:364,readPriority +FN:390,writeRstStream +FN:398,readRstStream +FN:434,writeSettings +FN:436,(anonymous_18) +FN:454,readSettings +FN:519,writePushPromise +FN:527,readPushPromise +FN:551,writePing +FN:556,readPing +FN:591,writeGoaway +FN:604,readGoaway +FN:627,writeWindowUpdate +FN:634,readWindowUpdate +FN:660,writeContinuation +FN:664,readContinuation +FN:694,(anonymous_30) +FN:707,(anonymous_31) +FN:727,(anonymous_32) +FN:735,(anonymous_33) +FNF:33 +FNH:30 FNDA:0,noop -FNDA:23,Serializer -FNDA:87,_transform -FNDA:23,Deserializer -FNDA:183,(anonymous_5) -FNDA:61,_transform -FNDA:97,writeCommonHeader -FNDA:90,readCommonHeader -FNDA:32,writeData -FNDA:31,readData -FNDA:25,writeHeadersPriority -FNDA:24,readHeadersPriority +FNDA:25,Serializer +FNDA:99,_transform +FNDA:25,Deserializer +FNDA:209,(anonymous_5) +FNDA:68,_transform +FNDA:110,writeCommonHeader +FNDA:103,readCommonHeader +FNDA:37,writeData +FNDA:36,readData +FNDA:29,writeHeadersPriority +FNDA:28,readHeadersPriority FNDA:2,writePriority FNDA:2,readPriority FNDA:2,writeRstStream FNDA:2,readRstStream -FNDA:24,writeSettings -FNDA:72,(anonymous_18) -FNDA:20,readSettings +FNDA:26,writeSettings +FNDA:78,(anonymous_18) +FNDA:22,readSettings FNDA:4,writePushPromise FNDA:4,readPushPromise FNDA:2,writePing @@ -1578,438 +1687,464 @@ FNDA:4,writeGoaway FNDA:3,readGoaway FNDA:2,writeWindowUpdate FNDA:2,readWindowUpdate -FNDA:6,(anonymous_28) -FNDA:10,(anonymous_29) -FNDA:0,(anonymous_30) -FNDA:0,(anonymous_31) +FNDA:2,writeContinuation +FNDA:2,readContinuation +FNDA:6,(anonymous_30) +FNDA:10,(anonymous_31) +FNDA:0,(anonymous_32) +FNDA:0,(anonymous_33) DA:5,1 DA:7,1 DA:9,1 DA:10,1 DA:12,1 DA:25,1 -DA:26,23 -DA:27,23 -DA:29,1 -DA:34,1 -DA:35,87 -DA:37,87 -DA:39,87 -DA:40,87 -DA:41,87 -DA:43,87 -DA:44,178 -DA:45,0 -DA:47,178 -DA:50,87 -DA:64,1 -DA:65,23 -DA:66,23 -DA:67,23 -DA:69,1 -DA:76,1 -DA:77,183 -DA:78,183 -DA:79,183 -DA:80,183 -DA:81,103 -DA:87,1 -DA:88,61 -DA:90,61 -DA:91,0 -DA:94,61 -DA:97,148 -DA:98,148 -DA:99,148 -DA:100,148 -DA:107,148 -DA:108,80 -DA:109,80 -DA:117,148 -DA:118,80 -DA:119,80 -DA:120,80 -DA:121,0 -DA:122,0 -DA:124,80 -DA:125,80 -DA:128,0 -DA:130,80 -DA:134,61 -DA:182,1 -DA:183,1 -DA:185,1 -DA:187,1 -DA:189,1 +DA:26,25 +DA:27,25 +DA:28,25 +DA:30,1 +DA:35,1 +DA:36,99 +DA:38,99 +DA:40,99 +DA:41,99 +DA:42,99 +DA:44,99 +DA:46,99 +DA:47,202 +DA:48,0 +DA:50,202 +DA:53,99 +DA:67,1 +DA:68,25 +DA:69,25 +DA:70,25 +DA:71,25 +DA:73,1 +DA:80,1 +DA:81,209 +DA:82,209 +DA:83,209 +DA:84,209 +DA:85,117 +DA:91,1 +DA:92,68 +DA:94,68 +DA:95,0 +DA:98,68 +DA:101,171 +DA:102,171 +DA:103,171 +DA:104,171 +DA:111,171 +DA:112,92 +DA:113,92 +DA:114,92 +DA:116,0 +DA:125,171 +DA:126,92 +DA:127,92 +DA:128,92 +DA:129,0 +DA:130,0 +DA:132,92 +DA:133,92 +DA:136,0 +DA:138,92 +DA:142,68 +DA:190,1 DA:191,1 DA:193,1 -DA:194,97 -DA:196,97 -DA:197,97 -DA:198,101 -DA:200,97 -DA:201,97 -DA:203,97 -DA:204,97 -DA:206,97 -DA:207,97 -DA:208,70 -DA:209,70 -DA:210,70 -DA:211,46 -DA:214,97 -DA:216,97 -DA:217,97 -DA:219,97 -DA:222,1 -DA:223,90 -DA:225,90 -DA:227,90 -DA:228,90 -DA:229,90 -DA:230,90 -DA:231,166 -DA:234,90 -DA:261,1 -DA:263,1 -DA:265,1 -DA:267,1 -DA:268,32 +DA:195,1 +DA:197,1 +DA:199,1 +DA:201,1 +DA:202,110 +DA:204,110 +DA:205,110 +DA:206,114 +DA:208,110 +DA:209,110 +DA:211,110 +DA:212,110 +DA:214,110 +DA:215,110 +DA:216,105 +DA:217,105 +DA:218,105 +DA:219,54 +DA:222,110 +DA:224,110 +DA:225,110 +DA:227,110 +DA:230,1 +DA:231,103 +DA:233,103 +DA:235,103 +DA:236,103 +DA:237,103 +DA:238,103 +DA:239,196 +DA:242,103 +DA:269,1 DA:271,1 -DA:272,31 -DA:294,1 -DA:296,1 -DA:298,1 -DA:310,1 -DA:311,25 -DA:312,2 -DA:313,2 -DA:314,2 -DA:315,2 -DA:317,25 -DA:320,1 -DA:321,24 +DA:273,1 +DA:275,1 +DA:276,37 +DA:279,1 +DA:280,36 +DA:302,1 +DA:304,1 +DA:306,1 +DA:318,1 +DA:319,29 +DA:320,2 +DA:321,2 DA:322,2 DA:323,2 -DA:325,22 -DA:336,1 -DA:338,1 -DA:340,1 -DA:350,1 -DA:351,2 -DA:352,2 -DA:353,2 -DA:356,1 -DA:357,2 -DA:367,1 -DA:369,1 -DA:371,1 -DA:382,1 -DA:383,2 -DA:384,2 -DA:385,2 -DA:386,2 -DA:387,2 +DA:325,29 +DA:328,1 +DA:329,28 +DA:330,2 +DA:331,2 +DA:333,26 +DA:344,1 +DA:346,1 +DA:348,1 +DA:358,1 +DA:359,2 +DA:360,2 +DA:361,2 +DA:364,1 +DA:365,2 +DA:375,1 +DA:377,1 +DA:379,1 DA:390,1 DA:391,2 -DA:402,1 -DA:404,1 -DA:406,1 -DA:426,1 -DA:427,24 -DA:428,24 -DA:429,72 -DA:430,32 -DA:431,32 -DA:432,32 -DA:435,24 -DA:437,24 -DA:438,24 -DA:439,32 -DA:440,32 -DA:443,24 -DA:446,1 -DA:447,20 -DA:449,20 -DA:450,0 -DA:452,20 -DA:453,26 -DA:454,26 -DA:455,26 -DA:456,26 -DA:457,0 -DA:459,26 -DA:464,1 -DA:468,1 -DA:472,1 -DA:478,1 -DA:492,1 -DA:494,1 -DA:496,1 -DA:510,1 -DA:511,4 -DA:512,4 -DA:513,4 -DA:514,4 -DA:515,4 -DA:518,1 -DA:519,4 +DA:392,2 +DA:393,2 +DA:394,2 +DA:395,2 +DA:398,1 +DA:399,2 +DA:410,1 +DA:412,1 +DA:414,1 +DA:434,1 +DA:435,26 +DA:436,26 +DA:437,78 +DA:438,34 +DA:439,34 +DA:440,34 +DA:443,26 +DA:445,26 +DA:446,26 +DA:447,34 +DA:448,34 +DA:451,26 +DA:454,1 +DA:455,22 +DA:457,22 +DA:458,0 +DA:460,22 +DA:461,28 +DA:462,28 +DA:463,28 +DA:464,28 +DA:465,28 +DA:473,1 +DA:477,1 +DA:481,1 +DA:487,1 +DA:501,1 +DA:503,1 +DA:505,1 +DA:519,1 DA:520,4 -DA:534,1 -DA:536,1 -DA:538,1 -DA:542,1 -DA:543,2 -DA:544,2 +DA:521,4 +DA:522,4 +DA:523,4 +DA:524,4 +DA:527,1 +DA:528,4 +DA:529,4 +DA:543,1 +DA:545,1 DA:547,1 -DA:548,2 -DA:549,0 -DA:551,2 -DA:561,1 -DA:563,1 -DA:565,1 -DA:582,1 -DA:583,4 -DA:585,4 -DA:586,4 -DA:588,4 -DA:589,4 -DA:590,4 +DA:551,1 +DA:552,2 +DA:553,2 +DA:556,1 +DA:557,2 +DA:558,0 +DA:560,2 +DA:570,1 +DA:572,1 +DA:574,1 +DA:591,1 DA:592,4 -DA:595,1 -DA:596,3 -DA:597,3 -DA:611,1 -DA:613,1 -DA:615,1 -DA:622,1 -DA:623,2 -DA:624,2 -DA:625,2 -DA:626,2 -DA:629,1 +DA:594,4 +DA:595,4 +DA:597,4 +DA:598,4 +DA:599,4 +DA:601,4 +DA:604,1 +DA:605,3 +DA:606,3 +DA:616,1 +DA:618,1 +DA:620,1 +DA:627,1 +DA:628,2 +DA:629,2 DA:630,2 -DA:636,1 +DA:631,2 +DA:634,1 +DA:635,2 DA:654,1 +DA:656,1 DA:658,1 -DA:659,1 -DA:660,6 -DA:661,0 -DA:664,6 -DA:665,4 -DA:668,2 -DA:669,2 -DA:671,2 -DA:672,2 -DA:673,10 -DA:676,2 -DA:677,1 -DA:678,0 -DA:680,1 -DA:683,1 -DA:684,0 -DA:688,2 -DA:689,0 -DA:692,2 -DA:693,0 -DA:696,2 -DA:700,1 -DA:701,0 -LF:233 -LH:219 +DA:660,1 +DA:661,2 +DA:664,1 +DA:665,2 +DA:671,1 +DA:689,1 +DA:693,1 +DA:694,1 +DA:695,6 +DA:696,0 +DA:699,6 +DA:700,4 +DA:703,2 +DA:704,2 +DA:706,2 +DA:707,2 +DA:708,10 +DA:711,2 +DA:712,1 +DA:713,0 +DA:715,1 +DA:718,1 +DA:719,0 +DA:723,2 +DA:724,0 +DA:727,2 +DA:728,0 +DA:731,2 +DA:735,1 +DA:736,0 +LF:244 +LH:230 BRDA:5,1,0,1 BRDA:5,1,1,0 -BRDA:44,2,0,0 -BRDA:44,2,1,178 -BRDA:80,3,0,103 -BRDA:80,3,1,80 -BRDA:90,4,0,0 -BRDA:90,4,1,61 -BRDA:107,5,0,80 -BRDA:107,5,1,68 -BRDA:107,6,0,148 -BRDA:107,6,1,136 -BRDA:117,7,0,80 -BRDA:117,7,1,68 -BRDA:117,8,0,148 -BRDA:117,8,1,80 -BRDA:118,9,0,80 -BRDA:118,9,1,0 -BRDA:120,10,0,0 -BRDA:120,10,1,80 -BRDA:210,11,0,46 -BRDA:210,11,1,24 -BRDA:217,12,0,97 -BRDA:217,12,1,24 -BRDA:311,13,0,2 -BRDA:311,13,1,23 -BRDA:313,14,0,2 -BRDA:313,14,1,2 -BRDA:321,15,0,2 -BRDA:321,15,1,22 -BRDA:385,16,0,2 -BRDA:385,16,1,2 -BRDA:429,17,0,32 -BRDA:429,17,1,40 -BRDA:432,18,0,20 -BRDA:432,18,1,12 -BRDA:449,19,0,0 -BRDA:449,19,1,20 -BRDA:456,20,0,0 -BRDA:456,20,1,26 -BRDA:456,21,0,26 -BRDA:456,21,1,26 -BRDA:459,22,0,18 -BRDA:459,22,1,8 -BRDA:512,23,0,4 -BRDA:512,23,1,4 -BRDA:543,24,0,2 -BRDA:543,24,1,2 -BRDA:548,25,0,0 -BRDA:548,25,1,2 -BRDA:585,26,0,4 -BRDA:585,26,1,4 -BRDA:589,27,0,4 -BRDA:589,27,1,4 -BRDA:624,28,0,2 -BRDA:624,28,1,2 -BRDA:660,29,0,0 -BRDA:660,29,1,6 -BRDA:664,30,0,4 -BRDA:664,30,1,2 -BRDA:676,31,0,1 -BRDA:676,31,1,1 -BRDA:677,32,0,0 -BRDA:677,32,1,1 -BRDA:683,33,0,0 -BRDA:683,33,1,1 -BRDA:688,34,0,0 -BRDA:688,34,1,2 -BRDA:692,35,0,2 -BRDA:692,35,1,2 -BRF:70 -BRH:58 +BRDA:27,2,0,25 +BRDA:27,2,1,1 +BRDA:47,3,0,0 +BRDA:47,3,1,202 +BRDA:69,4,0,25 +BRDA:69,4,1,1 +BRDA:84,5,0,117 +BRDA:84,5,1,92 +BRDA:94,6,0,0 +BRDA:94,6,1,68 +BRDA:111,7,0,92 +BRDA:111,7,1,79 +BRDA:111,8,0,171 +BRDA:111,8,1,157 +BRDA:113,9,0,92 +BRDA:113,9,1,0 +BRDA:125,10,0,92 +BRDA:125,10,1,79 +BRDA:125,11,0,171 +BRDA:125,11,1,92 +BRDA:126,12,0,92 +BRDA:126,12,1,0 +BRDA:128,13,0,0 +BRDA:128,13,1,92 +BRDA:218,14,0,54 +BRDA:218,14,1,51 +BRDA:225,15,0,110 +BRDA:225,15,1,26 +BRDA:319,16,0,2 +BRDA:319,16,1,27 +BRDA:321,17,0,2 +BRDA:321,17,1,2 +BRDA:329,18,0,2 +BRDA:329,18,1,26 +BRDA:393,19,0,2 +BRDA:393,19,1,2 +BRDA:437,20,0,34 +BRDA:437,20,1,44 +BRDA:440,21,0,22 +BRDA:440,21,1,12 +BRDA:457,22,0,0 +BRDA:457,22,1,22 +BRDA:463,23,0,28 +BRDA:463,23,1,0 +BRDA:465,24,0,20 +BRDA:465,24,1,8 +BRDA:521,25,0,4 +BRDA:521,25,1,4 +BRDA:552,26,0,2 +BRDA:552,26,1,2 +BRDA:557,27,0,0 +BRDA:557,27,1,2 +BRDA:594,28,0,4 +BRDA:594,28,1,4 +BRDA:598,29,0,4 +BRDA:598,29,1,4 +BRDA:629,30,0,2 +BRDA:629,30,1,2 +BRDA:695,31,0,0 +BRDA:695,31,1,6 +BRDA:699,32,0,4 +BRDA:699,32,1,2 +BRDA:711,33,0,1 +BRDA:711,33,1,1 +BRDA:712,34,0,0 +BRDA:712,34,1,1 +BRDA:718,35,0,0 +BRDA:718,35,1,1 +BRDA:723,36,0,0 +BRDA:723,36,1,2 +BRDA:727,37,0,2 +BRDA:727,37,1,2 +BRF:74 +BRH:61 end_of_record TN: SF:/data/upstream/node-http2/lib/http.js -FN:152,noop -FN:161,(anonymous_2) -FN:167,(anonymous_3) -FN:174,IncomingMessage -FN:198,OutgoingMessage -FN:209,_write -FN:217,_finish -FN:225,setHeader -FN:233,removeHeader -FN:241,getHeader -FN:259,Server -FN:276,(anonymous_12) -FN:304,_start -FN:313,_onStream -FN:325,_fallback -FN:339,listen -FN:345,close -FN:350,setTimeout -FN:357,getTimeout -FN:364,setTimeout -FN:375,on -FN:383,createServer -FN:401,IncomingRequest -FN:410,_onHeaders -FN:477,OutgoingResponse -FN:490,writeHead -FN:516,_implicitHeaders -FN:522,write -FN:527,end -FN:532,_onRequestHeaders -FN:536,push -FN:562,on -FN:578,request -FN:581,get -FN:588,Agent -FN:610,request -FN:663,(anonymous_37) -FN:672,negotiated -FN:699,(anonymous_39) -FN:712,get -FN:718,unbundleSocket -FN:730,getMaxSockets -FN:733,setMaxSockets -FN:743,OutgoingRequest -FN:753,_start -FN:785,_fallback -FN:791,setPriority -FN:801,on -FN:810,setNoDelay -FN:818,setSocketKeepAlive -FN:826,setTimeout -FN:835,abort -FN:846,_onPromise -FN:861,IncomingResponse -FN:867,_onHeaders -FN:896,IncomingPromise -FN:915,cancel -FN:919,setPriority -FNF:58 -FNH:54 +FN:161,noop +FN:170,(anonymous_2) +FN:176,(anonymous_3) +FN:183,IncomingMessage +FN:210,_onHeaders +FN:235,_onTrailers +FN:244,OutgoingMessage +FN:256,_write +FN:264,_finish +FN:279,setHeader +FN:291,removeHeader +FN:299,getHeader +FN:303,addTrailers +FN:321,Server +FN:338,(anonymous_15) +FN:366,_start +FN:377,_onStream +FN:389,_fallback +FN:405,listen +FN:411,close +FN:416,setTimeout +FN:423,getTimeout +FN:430,setTimeout +FN:441,on +FN:450,addContext +FN:456,createServer +FN:474,IncomingRequest +FN:483,_onHeaders +FN:525,OutgoingResponse +FN:538,writeHead +FN:562,_implicitHeaders +FN:568,write +FN:573,end +FN:578,_onRequestHeaders +FN:582,push +FN:608,on +FN:624,request +FN:627,get +FN:634,Agent +FN:656,request +FN:710,(anonymous_41) +FN:719,negotiated +FN:746,(anonymous_43) +FN:759,get +FN:765,unbundleSocket +FN:777,getMaxSockets +FN:780,setMaxSockets +FN:790,OutgoingRequest +FN:799,_start +FN:832,_fallback +FN:838,setPriority +FN:848,on +FN:857,setNoDelay +FN:865,setSocketKeepAlive +FN:873,setTimeout +FN:882,abort +FN:893,_onPromise +FN:908,IncomingResponse +FN:917,_onHeaders +FN:943,IncomingPromise +FN:962,cancel +FN:966,setPriority +FNF:62 +FNH:57 FNDA:2,noop FNDA:3,(anonymous_2) FNDA:6,(anonymous_3) -FNDA:23,IncomingMessage -FNDA:25,OutgoingMessage -FNDA:12,_write -FNDA:28,_finish -FNDA:2,setHeader +FNDA:25,IncomingMessage +FNDA:24,_onHeaders +FNDA:2,_onTrailers +FNDA:27,OutgoingMessage +FNDA:13,_write +FNDA:31,_finish +FNDA:4,setHeader FNDA:1,removeHeader FNDA:3,getHeader -FNDA:12,Server -FNDA:8,(anonymous_12) -FNDA:9,_start -FNDA:9,_onStream +FNDA:2,addTrailers +FNDA:13,Server +FNDA:9,(anonymous_15) +FNDA:10,_start +FNDA:10,_onStream FNDA:0,_fallback -FNDA:8,listen +FNDA:9,listen FNDA:4,close FNDA:1,setTimeout FNDA:1,getTimeout FNDA:1,setTimeout -FNDA:8,on -FNDA:9,createServer -FNDA:11,IncomingRequest -FNDA:11,_onHeaders -FNDA:11,OutgoingResponse -FNDA:11,writeHead -FNDA:21,_implicitHeaders -FNDA:10,write -FNDA:11,end -FNDA:9,_onRequestHeaders +FNDA:9,on +FNDA:0,addContext +FNDA:10,createServer +FNDA:12,IncomingRequest +FNDA:12,_onHeaders +FNDA:12,OutgoingResponse +FNDA:12,writeHead +FNDA:23,_implicitHeaders +FNDA:11,write +FNDA:12,end +FNDA:10,_onRequestHeaders FNDA:2,push -FNDA:11,on -FNDA:3,request +FNDA:12,on +FNDA:4,request FNDA:7,get FNDA:4,Agent -FNDA:11,request -FNDA:8,(anonymous_37) -FNDA:8,negotiated -FNDA:8,(anonymous_39) +FNDA:12,request +FNDA:9,(anonymous_41) +FNDA:9,negotiated +FNDA:9,(anonymous_43) FNDA:7,get -FNDA:8,unbundleSocket +FNDA:9,unbundleSocket FNDA:1,getMaxSockets FNDA:1,setMaxSockets -FNDA:14,OutgoingRequest -FNDA:10,_start +FNDA:15,OutgoingRequest +FNDA:11,_start FNDA:4,_fallback FNDA:0,setPriority -FNDA:37,on +FNDA:40,on FNDA:3,setNoDelay FNDA:3,setSocketKeepAlive FNDA:3,setTimeout FNDA:3,abort FNDA:2,_onPromise -FNDA:12,IncomingResponse -FNDA:11,_onHeaders +FNDA:13,IncomingResponse +FNDA:12,_onHeaders FNDA:2,IncomingPromise FNDA:0,cancel FNDA:0,setPriority +DA:128,1 DA:129,1 DA:130,1 DA:131,1 @@ -2019,530 +2154,557 @@ DA:134,1 DA:135,1 DA:136,1 DA:137,1 -DA:138,1 +DA:139,1 DA:140,1 DA:141,1 -DA:142,1 -DA:146,1 -DA:152,1 -DA:153,1 -DA:161,3 -DA:165,1 -DA:166,1 -DA:167,1 -DA:168,6 +DA:143,1 +DA:155,1 +DA:161,1 +DA:162,1 +DA:170,3 DA:174,1 -DA:176,23 -DA:177,23 -DA:178,23 -DA:180,23 -DA:184,23 -DA:185,23 -DA:186,23 -DA:189,23 -DA:191,1 -DA:193,1 -DA:198,1 -DA:200,25 +DA:175,1 +DA:176,1 +DA:177,6 +DA:183,1 +DA:185,25 +DA:186,25 +DA:187,25 +DA:189,25 +DA:193,25 +DA:194,25 +DA:195,25 +DA:198,25 +DA:199,25 DA:202,25 -DA:203,25 -DA:205,25 -DA:207,1 -DA:209,1 -DA:210,12 -DA:211,11 -DA:213,1 -DA:217,1 -DA:218,28 -DA:219,21 -DA:221,7 -DA:225,1 -DA:226,2 -DA:227,0 -DA:229,2 -DA:233,1 -DA:234,1 -DA:235,0 -DA:237,1 -DA:241,1 -DA:242,3 -DA:245,1 -DA:250,1 -DA:251,1 -DA:252,1 -DA:253,1 +DA:204,1 +DA:210,1 +DA:215,24 +DA:216,168 +DA:217,168 +DA:218,0 +DA:219,0 +DA:220,0 +DA:225,24 +DA:226,73 +DA:227,13 +DA:232,24 +DA:235,1 +DA:236,2 +DA:239,1 +DA:244,1 +DA:246,27 +DA:248,27 +DA:249,27 +DA:250,27 +DA:252,27 DA:254,1 -DA:259,1 -DA:260,12 -DA:262,12 -DA:263,12 -DA:265,12 -DA:266,12 -DA:269,12 -DA:270,9 -DA:271,9 -DA:272,9 -DA:273,9 -DA:274,9 -DA:275,9 -DA:276,9 -DA:277,8 -DA:278,8 -DA:280,0 -DA:283,9 -DA:287,3 -DA:288,1 -DA:289,1 -DA:290,1 -DA:295,2 -DA:296,2 -DA:299,10 -DA:301,1 -DA:304,1 -DA:305,9 -DA:307,9 -DA:310,9 -DA:312,9 -DA:313,9 -DA:314,9 -DA:315,9 -DA:317,9 -DA:320,9 -DA:322,9 -DA:325,1 -DA:326,0 -DA:329,0 -DA:330,0 -DA:333,0 -DA:339,1 -DA:340,8 -DA:342,8 -DA:345,1 -DA:346,4 -DA:347,4 +DA:256,1 +DA:257,13 +DA:258,12 +DA:260,1 +DA:264,1 +DA:265,31 +DA:266,23 +DA:267,2 +DA:268,0 +DA:270,2 +DA:273,23 +DA:275,8 +DA:279,1 +DA:280,4 +DA:281,0 +DA:283,4 +DA:284,4 +DA:285,0 +DA:287,4 +DA:291,1 +DA:292,1 +DA:293,0 +DA:295,1 +DA:299,1 +DA:300,3 +DA:303,1 +DA:304,2 +DA:307,1 +DA:312,1 +DA:313,1 +DA:314,1 +DA:315,1 +DA:316,1 +DA:321,1 +DA:322,13 +DA:324,13 +DA:325,13 +DA:327,13 +DA:328,13 +DA:331,13 +DA:332,10 +DA:333,10 +DA:334,10 +DA:335,10 +DA:336,10 +DA:337,10 +DA:338,10 +DA:339,9 +DA:340,9 +DA:342,0 +DA:345,10 +DA:349,3 DA:350,1 DA:351,1 DA:352,1 -DA:356,1 -DA:358,1 -DA:359,1 -DA:361,0 -DA:365,1 +DA:357,2 +DA:358,2 +DA:361,11 +DA:363,1 DA:366,1 -DA:375,1 -DA:376,8 -DA:377,0 -DA:379,8 -DA:383,1 -DA:384,9 -DA:385,1 -DA:386,1 -DA:389,9 -DA:391,8 -DA:392,8 -DA:395,8 -DA:401,1 -DA:402,11 -DA:404,1 -DA:410,1 -DA:414,11 -DA:423,11 -DA:424,77 -DA:425,77 -DA:426,0 +DA:367,10 +DA:369,10 +DA:374,10 +DA:376,10 +DA:377,10 +DA:378,10 +DA:379,10 +DA:381,10 +DA:384,10 +DA:386,10 +DA:389,1 +DA:390,0 +DA:395,0 +DA:396,0 +DA:399,0 +DA:405,1 +DA:406,9 +DA:408,9 +DA:411,1 +DA:412,4 +DA:413,4 +DA:416,1 +DA:417,1 +DA:418,1 +DA:422,1 +DA:424,1 +DA:425,1 DA:427,0 -DA:428,0 -DA:433,11 -DA:445,11 -DA:451,11 -DA:452,45 -DA:453,44 -DA:454,44 -DA:455,0 -DA:456,0 -DA:457,0 -DA:459,44 -DA:461,1 -DA:466,11 -DA:469,11 -DA:471,11 +DA:431,1 +DA:432,1 +DA:441,1 +DA:442,9 +DA:443,0 +DA:445,9 +DA:450,1 +DA:451,0 +DA:452,0 +DA:456,1 +DA:457,10 +DA:458,1 +DA:459,1 +DA:462,10 +DA:464,9 +DA:465,9 +DA:468,9 +DA:474,1 +DA:475,12 DA:477,1 -DA:478,11 -DA:480,11 -DA:482,11 -DA:483,11 -DA:484,11 -DA:486,11 -DA:488,1 -DA:490,1 -DA:491,11 -DA:492,1 -DA:494,10 -DA:497,11 -DA:499,11 -DA:500,1 -DA:503,11 -DA:504,10 -DA:507,11 -DA:509,11 -DA:511,11 -DA:513,11 -DA:516,1 -DA:517,21 -DA:518,10 -DA:522,1 -DA:523,10 -DA:524,10 -DA:527,1 -DA:528,11 -DA:529,11 -DA:532,1 -DA:533,9 +DA:483,1 +DA:494,12 +DA:500,12 +DA:501,48 +DA:502,48 +DA:503,0 +DA:504,0 +DA:505,0 +DA:507,48 +DA:511,12 +DA:514,12 +DA:517,12 +DA:519,12 +DA:525,1 +DA:526,12 +DA:528,12 +DA:530,12 +DA:531,12 +DA:532,12 +DA:534,12 DA:536,1 -DA:537,2 DA:538,1 -DA:541,2 -DA:542,0 -DA:545,2 -DA:552,2 -DA:555,2 -DA:557,2 +DA:539,12 +DA:540,1 +DA:542,11 +DA:545,12 +DA:546,1 +DA:548,12 +DA:550,12 +DA:551,11 +DA:554,12 +DA:556,12 +DA:558,12 +DA:559,12 DA:562,1 -DA:563,11 -DA:564,0 -DA:566,11 +DA:563,23 +DA:564,11 +DA:568,1 +DA:569,11 +DA:570,11 DA:573,1 -DA:574,1 -DA:575,1 -DA:576,1 -DA:577,1 +DA:574,12 +DA:575,12 DA:578,1 -DA:579,3 -DA:581,1 -DA:582,7 -DA:588,1 -DA:589,4 -DA:591,4 -DA:593,4 -DA:594,4 -DA:595,4 -DA:601,4 -DA:605,4 -DA:606,4 +DA:579,10 +DA:582,1 +DA:583,2 +DA:584,1 +DA:587,2 +DA:588,0 +DA:591,2 +DA:598,2 +DA:601,2 +DA:603,2 DA:608,1 -DA:610,1 -DA:611,11 -DA:612,7 -DA:615,11 -DA:616,11 -DA:617,11 -DA:618,11 -DA:619,11 -DA:621,11 +DA:609,12 +DA:610,0 +DA:612,12 +DA:619,1 +DA:620,1 +DA:621,1 DA:622,1 DA:623,1 -DA:626,10 -DA:628,10 -DA:629,7 -DA:632,10 -DA:639,10 -DA:640,1 -DA:641,1 -DA:645,9 -DA:646,1 -DA:647,1 -DA:652,1 -DA:653,1 +DA:624,1 +DA:625,4 +DA:627,1 +DA:628,7 +DA:634,1 +DA:635,4 +DA:637,4 +DA:639,4 +DA:640,4 +DA:641,4 +DA:647,4 +DA:651,4 +DA:652,4 +DA:654,1 +DA:656,1 +DA:657,12 DA:658,8 -DA:659,8 -DA:660,8 -DA:661,8 -DA:663,8 -DA:664,8 -DA:665,0 -DA:667,8 -DA:671,8 -DA:672,1 -DA:673,8 -DA:674,8 -DA:675,8 -DA:676,8 -DA:677,8 -DA:678,8 -DA:679,8 -DA:681,8 -DA:682,1 -DA:683,1 -DA:685,0 -DA:688,7 -DA:689,7 -DA:691,7 -DA:692,7 -DA:694,0 -DA:699,8 -DA:700,8 -DA:701,8 -DA:702,8 -DA:704,0 -DA:709,10 -DA:712,1 -DA:713,7 -DA:714,7 -DA:715,7 -DA:718,1 -DA:719,8 -DA:720,8 -DA:721,8 -DA:722,8 -DA:723,8 -DA:724,8 -DA:725,8 -DA:726,8 +DA:661,12 +DA:662,12 +DA:663,12 +DA:664,12 +DA:665,12 +DA:667,12 +DA:668,1 +DA:669,1 +DA:672,11 +DA:674,11 +DA:675,7 +DA:678,11 +DA:685,11 +DA:686,1 +DA:687,1 +DA:691,10 +DA:692,1 +DA:693,1 +DA:698,1 +DA:699,1 +DA:704,9 +DA:705,9 +DA:706,9 +DA:707,9 +DA:708,9 +DA:710,9 +DA:711,9 +DA:712,0 +DA:714,9 +DA:718,9 +DA:719,1 +DA:720,9 +DA:721,9 +DA:722,9 +DA:723,9 +DA:724,9 +DA:725,9 +DA:726,9 +DA:728,9 DA:729,1 -DA:731,1 -DA:734,1 -DA:738,1 -DA:743,1 -DA:744,14 -DA:746,14 -DA:748,14 -DA:749,14 -DA:751,1 -DA:753,1 -DA:754,10 -DA:756,10 -DA:758,10 -DA:759,10 -DA:760,1 -DA:762,10 -DA:764,10 -DA:765,0 -DA:768,10 -DA:769,10 -DA:770,10 -DA:771,10 -DA:773,10 -DA:775,10 -DA:777,10 -DA:779,10 -DA:780,10 -DA:782,10 +DA:730,1 +DA:732,0 +DA:735,8 +DA:736,8 +DA:738,8 +DA:739,8 +DA:741,0 +DA:746,9 +DA:747,9 +DA:748,9 +DA:749,9 +DA:751,0 +DA:756,11 +DA:759,1 +DA:760,7 +DA:761,7 +DA:762,7 +DA:765,1 +DA:766,9 +DA:767,9 +DA:768,9 +DA:769,9 +DA:770,9 +DA:771,9 +DA:772,9 +DA:773,9 +DA:776,1 +DA:778,1 +DA:781,1 DA:785,1 -DA:786,4 -DA:787,4 -DA:788,4 -DA:791,1 -DA:792,0 -DA:793,0 -DA:795,0 -DA:801,1 -DA:802,37 -DA:803,0 -DA:805,37 -DA:810,1 -DA:811,3 -DA:812,1 -DA:813,2 -DA:814,1 -DA:818,1 -DA:819,3 -DA:820,1 -DA:821,2 -DA:822,1 -DA:826,1 -DA:827,3 -DA:828,1 -DA:829,2 -DA:830,1 -DA:835,1 -DA:836,3 -DA:837,1 -DA:838,2 -DA:839,1 -DA:841,1 -DA:846,1 -DA:847,2 -DA:849,2 -DA:851,2 -DA:852,2 -DA:854,0 +DA:790,1 +DA:791,15 +DA:793,15 +DA:795,15 +DA:797,1 +DA:799,1 +DA:800,11 +DA:802,11 +DA:804,11 +DA:805,1 +DA:807,11 +DA:808,11 +DA:810,11 +DA:811,0 +DA:814,11 +DA:815,11 +DA:816,11 +DA:817,11 +DA:819,11 +DA:821,11 +DA:822,11 +DA:824,11 +DA:826,11 +DA:827,11 +DA:829,11 +DA:832,1 +DA:833,4 +DA:834,4 +DA:835,4 +DA:838,1 +DA:839,0 +DA:840,0 +DA:842,0 +DA:848,1 +DA:849,40 +DA:850,0 +DA:852,40 +DA:857,1 +DA:858,3 +DA:859,1 +DA:860,2 DA:861,1 -DA:862,12 -DA:864,1 +DA:865,1 +DA:866,3 DA:867,1 -DA:871,11 -DA:879,11 -DA:880,11 -DA:881,0 -DA:882,0 -DA:883,0 -DA:885,11 -DA:886,11 -DA:889,11 -DA:890,11 -DA:896,1 -DA:897,2 +DA:868,2 +DA:869,1 +DA:873,1 +DA:874,3 +DA:875,1 +DA:876,2 +DA:877,1 +DA:882,1 +DA:883,3 +DA:884,1 +DA:885,2 +DA:886,1 +DA:888,1 +DA:893,1 +DA:894,2 +DA:896,2 DA:898,2 DA:899,2 -DA:900,2 -DA:902,2 -DA:904,2 -DA:906,2 -DA:908,2 -DA:909,2 -DA:911,2 -DA:913,1 -DA:915,1 -DA:916,0 -DA:919,1 -DA:920,0 -DA:923,1 -LF:387 -LH:355 -BRDA:210,1,0,11 -BRDA:210,1,1,1 -BRDA:218,2,0,21 -BRDA:218,2,1,7 -BRDA:226,3,0,0 -BRDA:226,3,1,2 -BRDA:234,4,0,0 -BRDA:234,4,1,1 -BRDA:260,5,0,12 -BRDA:260,5,1,2 -BRDA:262,6,0,12 -BRDA:262,6,1,2 -BRDA:269,7,0,9 -BRDA:269,7,1,3 -BRDA:269,8,0,12 -BRDA:269,8,1,9 -BRDA:269,8,2,3 -BRDA:277,9,0,8 -BRDA:277,9,1,0 -BRDA:287,10,0,1 -BRDA:287,10,1,2 -BRDA:340,11,0,0 -BRDA:340,11,1,8 -BRDA:351,12,0,1 -BRDA:351,12,1,0 -BRDA:358,13,0,1 -BRDA:358,13,1,0 -BRDA:365,14,0,1 -BRDA:365,14,1,0 -BRDA:376,15,0,0 -BRDA:376,15,1,8 -BRDA:376,16,0,8 -BRDA:376,16,1,8 -BRDA:384,17,0,1 -BRDA:384,17,1,8 -BRDA:391,18,0,8 -BRDA:391,18,1,0 -BRDA:425,19,0,0 -BRDA:425,19,1,77 -BRDA:452,20,0,44 -BRDA:452,20,1,1 -BRDA:454,21,0,0 -BRDA:454,21,1,44 -BRDA:454,22,0,44 -BRDA:454,22,1,44 -BRDA:491,23,0,1 -BRDA:491,23,1,10 -BRDA:497,24,0,11 -BRDA:497,24,1,10 -BRDA:503,25,0,10 -BRDA:503,25,1,1 -BRDA:503,26,0,11 -BRDA:503,26,1,10 -BRDA:517,27,0,10 -BRDA:517,27,1,11 -BRDA:537,28,0,1 -BRDA:537,28,1,1 -BRDA:541,29,0,0 -BRDA:541,29,1,2 -BRDA:546,30,0,2 -BRDA:546,30,1,2 -BRDA:547,31,0,2 -BRDA:547,31,1,1 -BRDA:547,31,2,1 -BRDA:548,32,0,2 -BRDA:548,32,1,2 -BRDA:548,32,2,2 -BRDA:563,33,0,0 -BRDA:563,33,1,11 -BRDA:563,34,0,11 -BRDA:563,34,1,0 -BRDA:579,35,0,3 -BRDA:579,35,1,3 -BRDA:582,36,0,7 -BRDA:582,36,1,7 -BRDA:591,37,0,4 -BRDA:591,37,1,1 -BRDA:594,38,0,4 -BRDA:594,38,1,1 -BRDA:611,39,0,7 -BRDA:611,39,1,4 -BRDA:615,40,0,11 -BRDA:615,40,1,11 -BRDA:616,41,0,11 -BRDA:616,41,1,3 -BRDA:617,42,0,11 -BRDA:617,42,1,4 -BRDA:617,42,2,1 -BRDA:618,43,0,11 -BRDA:618,43,1,1 -BRDA:619,44,0,11 -BRDA:619,44,1,1 -BRDA:621,45,0,1 -BRDA:621,45,1,10 -BRDA:628,46,0,7 -BRDA:628,46,1,3 -BRDA:639,47,0,1 -BRDA:639,47,1,9 -BRDA:645,48,0,1 -BRDA:645,48,1,8 -BRDA:664,49,0,0 -BRDA:664,49,1,8 -BRDA:674,50,0,8 -BRDA:674,50,1,0 -BRDA:681,51,0,1 -BRDA:681,51,1,7 -BRDA:682,52,0,1 -BRDA:682,52,1,0 -BRDA:688,53,0,7 -BRDA:688,53,1,0 -BRDA:701,54,0,8 -BRDA:701,54,1,0 -BRDA:764,55,0,0 -BRDA:764,55,1,10 -BRDA:774,56,0,10 -BRDA:774,56,1,9 -BRDA:792,57,0,0 -BRDA:792,57,1,0 -BRDA:802,58,0,0 -BRDA:802,58,1,37 -BRDA:802,59,0,37 -BRDA:802,59,1,0 -BRDA:811,60,0,1 -BRDA:811,60,1,2 -BRDA:813,61,0,1 -BRDA:813,61,1,1 -BRDA:819,62,0,1 -BRDA:819,62,1,2 -BRDA:821,63,0,1 -BRDA:821,63,1,1 -BRDA:827,64,0,1 -BRDA:827,64,1,2 -BRDA:829,65,0,1 -BRDA:829,65,1,1 -BRDA:836,66,0,1 -BRDA:836,66,1,2 -BRDA:838,67,0,1 -BRDA:838,67,1,1 -BRDA:851,68,0,2 -BRDA:851,68,1,0 -BRDA:880,69,0,0 -BRDA:880,69,1,11 -BRDA:880,70,0,11 -BRDA:880,70,1,11 -BRF:144 -BRH:118 +DA:901,0 +DA:908,1 +DA:909,13 +DA:911,1 +DA:917,1 +DA:924,12 +DA:925,12 +DA:926,0 +DA:927,0 +DA:928,0 +DA:930,12 +DA:933,12 +DA:936,12 +DA:937,12 +DA:943,1 +DA:944,2 +DA:945,2 +DA:946,2 +DA:947,2 +DA:949,2 +DA:951,2 +DA:953,2 +DA:955,2 +DA:956,2 +DA:958,2 +DA:960,1 +DA:962,1 +DA:963,0 +DA:966,1 +DA:967,0 +DA:970,1 +LF:407 +LH:371 +BRDA:217,1,0,0 +BRDA:217,1,1,168 +BRDA:226,2,0,13 +BRDA:226,2,1,60 +BRDA:257,3,0,12 +BRDA:257,3,1,1 +BRDA:265,4,0,23 +BRDA:265,4,1,8 +BRDA:266,5,0,2 +BRDA:266,5,1,21 +BRDA:267,6,0,0 +BRDA:267,6,1,2 +BRDA:280,7,0,0 +BRDA:280,7,1,4 +BRDA:284,8,0,0 +BRDA:284,8,1,4 +BRDA:292,9,0,0 +BRDA:292,9,1,1 +BRDA:322,10,0,13 +BRDA:322,10,1,2 +BRDA:324,11,0,13 +BRDA:324,11,1,2 +BRDA:331,12,0,10 +BRDA:331,12,1,3 +BRDA:331,13,0,13 +BRDA:331,13,1,10 +BRDA:331,13,2,3 +BRDA:339,14,0,9 +BRDA:339,14,1,0 +BRDA:339,15,0,9 +BRDA:339,15,1,9 +BRDA:349,16,0,1 +BRDA:349,16,1,2 +BRDA:406,17,0,0 +BRDA:406,17,1,9 +BRDA:417,18,0,1 +BRDA:417,18,1,0 +BRDA:424,19,0,1 +BRDA:424,19,1,0 +BRDA:431,20,0,1 +BRDA:431,20,1,0 +BRDA:442,21,0,0 +BRDA:442,21,1,9 +BRDA:442,22,0,9 +BRDA:442,22,1,9 +BRDA:451,23,0,0 +BRDA:451,23,1,0 +BRDA:457,24,0,1 +BRDA:457,24,1,9 +BRDA:464,25,0,9 +BRDA:464,25,1,0 +BRDA:502,26,0,0 +BRDA:502,26,1,48 +BRDA:502,27,0,48 +BRDA:502,27,1,48 +BRDA:539,28,0,1 +BRDA:539,28,1,11 +BRDA:550,29,0,11 +BRDA:550,29,1,1 +BRDA:550,30,0,12 +BRDA:550,30,1,11 +BRDA:563,31,0,11 +BRDA:563,31,1,12 +BRDA:583,32,0,1 +BRDA:583,32,1,1 +BRDA:587,33,0,0 +BRDA:587,33,1,2 +BRDA:592,34,0,2 +BRDA:592,34,1,2 +BRDA:593,35,0,2 +BRDA:593,35,1,1 +BRDA:593,35,2,1 +BRDA:594,36,0,2 +BRDA:594,36,1,2 +BRDA:594,36,2,2 +BRDA:609,37,0,0 +BRDA:609,37,1,12 +BRDA:609,38,0,12 +BRDA:609,38,1,0 +BRDA:625,39,0,4 +BRDA:625,39,1,4 +BRDA:628,40,0,7 +BRDA:628,40,1,7 +BRDA:637,41,0,4 +BRDA:637,41,1,1 +BRDA:640,42,0,4 +BRDA:640,42,1,1 +BRDA:657,43,0,8 +BRDA:657,43,1,4 +BRDA:661,44,0,12 +BRDA:661,44,1,12 +BRDA:662,45,0,12 +BRDA:662,45,1,3 +BRDA:663,46,0,12 +BRDA:663,46,1,4 +BRDA:663,46,2,1 +BRDA:664,47,0,12 +BRDA:664,47,1,1 +BRDA:665,48,0,12 +BRDA:665,48,1,1 +BRDA:667,49,0,1 +BRDA:667,49,1,11 +BRDA:674,50,0,7 +BRDA:674,50,1,4 +BRDA:685,51,0,1 +BRDA:685,51,1,10 +BRDA:691,52,0,1 +BRDA:691,52,1,9 +BRDA:711,53,0,0 +BRDA:711,53,1,9 +BRDA:721,54,0,9 +BRDA:721,54,1,0 +BRDA:728,55,0,1 +BRDA:728,55,1,8 +BRDA:729,56,0,1 +BRDA:729,56,1,0 +BRDA:735,57,0,8 +BRDA:735,57,1,0 +BRDA:748,58,0,9 +BRDA:748,58,1,0 +BRDA:810,59,0,0 +BRDA:810,59,1,11 +BRDA:820,60,0,11 +BRDA:820,60,1,10 +BRDA:839,61,0,0 +BRDA:839,61,1,0 +BRDA:849,62,0,0 +BRDA:849,62,1,40 +BRDA:849,63,0,40 +BRDA:849,63,1,0 +BRDA:858,64,0,1 +BRDA:858,64,1,2 +BRDA:860,65,0,1 +BRDA:860,65,1,1 +BRDA:866,66,0,1 +BRDA:866,66,1,2 +BRDA:868,67,0,1 +BRDA:868,67,1,1 +BRDA:874,68,0,1 +BRDA:874,68,1,2 +BRDA:876,69,0,1 +BRDA:876,69,1,1 +BRDA:883,70,0,1 +BRDA:883,70,1,2 +BRDA:885,71,0,1 +BRDA:885,71,1,1 +BRDA:898,72,0,2 +BRDA:898,72,1,0 +BRDA:925,73,0,0 +BRDA:925,73,1,12 +BRDA:925,74,0,12 +BRDA:925,74,1,12 +BRF:152 +BRH:122 end_of_record From d536eb15a35dbaa8e3efbe4c8fb5162ff45592f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Moln=C3=A1r?= Date: Sun, 15 Sep 2013 21:56:06 +0200 Subject: [PATCH 12/20] Updating code coverage report. --- coverage/coverage.json | 1 - coverage/lcov-report/index.html | 28 +- coverage/lcov-report/lib/compressor.js.html | 244 +- coverage/lcov-report/lib/connection.js.html | 405 ++- coverage/lcov-report/lib/endpoint.js.html | 55 +- coverage/lcov-report/lib/flow.js.html | 379 ++- coverage/lcov-report/lib/framer.js.html | 209 +- coverage/lcov-report/lib/http.js.html | 100 +- coverage/lcov-report/lib/index.html | 118 +- coverage/lcov-report/lib/stream.js.html | 305 ++- coverage/lcov.info | 2710 ------------------- 11 files changed, 1163 insertions(+), 3391 deletions(-) delete mode 100644 coverage/coverage.json delete mode 100644 coverage/lcov.info diff --git a/coverage/coverage.json b/coverage/coverage.json deleted file mode 100644 index 75cf6155..00000000 --- a/coverage/coverage.json +++ /dev/null @@ -1 +0,0 @@ -{"/data/upstream/node-http2/lib/compressor.js":{"path":"/data/upstream/node-http2/lib/compressor.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":54,"11":54,"12":54,"13":54,"14":54,"15":54,"16":1,"17":1806,"18":1806,"19":1806,"20":1806,"21":1806,"22":1806,"23":1,"24":1,"25":1806,"26":1,"27":54,"28":54,"29":1620,"30":54,"31":1,"32":182,"33":182,"34":182,"35":0,"36":0,"37":0,"38":182,"39":182,"40":182,"41":0,"42":182,"43":182,"44":182,"45":1,"46":1,"47":1,"48":1,"49":49,"50":49,"51":49,"52":49,"53":1,"54":49,"55":49,"56":1,"57":163,"58":163,"59":163,"60":66,"61":66,"62":66,"63":38,"64":28,"65":28,"66":28,"67":28,"68":97,"69":78,"70":19,"71":97,"72":97,"73":92,"74":92,"75":92,"76":92,"77":97,"78":1,"79":49,"80":49,"81":49,"82":163,"83":49,"84":1559,"85":1559,"86":40,"87":1559,"88":49,"89":1,"90":1,"91":47,"92":47,"93":47,"94":47,"95":1,"96":159,"97":159,"98":155,"99":159,"100":1,"101":159,"102":159,"103":159,"104":159,"105":159,"106":3760,"107":3760,"108":152,"109":65,"110":65,"111":87,"112":87,"113":159,"114":65,"115":65,"116":25,"117":25,"118":25,"119":40,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":40,"127":4,"128":4,"129":36,"130":94,"131":94,"132":94,"133":94,"134":4,"135":90,"136":76,"137":14,"138":94,"139":90,"140":90,"141":90,"142":0,"143":0,"144":0,"145":0,"146":0,"147":94,"148":159,"149":1,"150":47,"151":1488,"152":1488,"153":32,"154":32,"155":1488,"156":1488,"157":47,"158":1,"159":363,"160":363,"161":161,"162":202,"163":202,"164":2,"165":202,"166":202,"167":202,"168":210,"169":210,"170":210,"171":8,"172":210,"173":210,"174":202,"175":1,"176":375,"177":375,"178":375,"179":173,"180":375,"181":207,"182":207,"183":217,"184":217,"185":217,"186":375,"187":1,"188":123,"189":123,"190":123,"191":1,"192":125,"193":125,"194":125,"195":125,"196":1,"197":1,"198":163,"199":163,"200":63,"201":100,"202":5,"203":95,"204":18,"205":77,"206":163,"207":63,"208":100,"209":81,"210":19,"211":19,"212":100,"213":77,"214":100,"215":163,"216":163,"217":1,"218":171,"219":171,"220":171,"221":68,"222":103,"223":28,"224":6,"225":22,"226":75,"227":171,"228":68,"229":68,"230":103,"231":103,"232":20,"233":103,"234":75,"235":28,"236":22,"237":6,"238":103,"239":171,"240":1,"241":1,"242":1,"243":26,"244":26,"245":26,"246":26,"247":26,"248":1,"249":47,"250":47,"251":143,"252":143,"253":8,"254":24,"255":135,"256":47,"257":47,"258":47,"259":459,"260":47,"261":1,"262":98,"263":37,"264":37,"265":37,"266":39,"267":39,"268":39,"269":39,"270":37,"271":37,"272":37,"273":2,"274":39,"275":32,"276":39,"277":39,"278":61,"279":98,"280":1,"281":1,"282":28,"283":28,"284":28,"285":28,"286":28,"287":28,"288":28,"289":1,"290":49,"291":49,"292":49,"293":49,"294":49,"295":165,"296":165,"297":165,"298":17,"299":8,"300":9,"301":148,"302":49,"303":1,"304":95,"305":3,"306":1,"307":1,"308":1,"309":2,"310":92,"311":37,"312":37,"313":37,"314":55,"315":94,"316":36,"317":38,"318":36,"319":36,"320":0,"321":0,"322":0,"323":36,"324":36,"325":94,"326":1,"327":132,"328":132,"329":546,"330":132,"331":132,"332":546,"333":132,"334":1,"335":37,"336":37,"337":37,"338":39,"339":39,"340":39,"341":37},"b":{"1":[1,0],"2":[54,54],"3":[182,0],"4":[182,0],"5":[0,182],"6":[66,97],"7":[38,28],"8":[78,19],"9":[92,5],"10":[40,1519],"11":[1559,144],"12":[155,4],"13":[152,3608],"14":[65,87],"15":[87,0],"16":[65,94],"17":[25,40],"18":[0,40],"19":[4,36],"20":[4,90],"21":[76,14],"22":[90,4],"23":[0,0],"24":[76,18],"25":[32,1456],"26":[1488,171,135],"27":[161,202],"28":[2,200],"29":[8,202],"30":[173,202],"31":[207,168],"32":[63,100],"33":[5,95],"34":[18,77],"35":[63,100],"36":[81,19],"37":[77,23],"38":[68,103],"39":[28,75],"40":[6,22],"41":[68,103],"42":[20,83],"43":[75,28],"44":[22,6],"45":[26,13],"46":[13,13],"47":[8,135],"48":[37,61],"49":[98,68],"50":[37,2],"51":[32,7],"52":[32,30],"53":[28,13],"54":[15,13],"55":[17,148],"56":[8,9],"57":[3,92],"58":[1,2],"59":[3,2],"60":[37,55],"61":[92,62],"62":[36,58],"63":[94,39,10]},"f":{"1":0,"2":54,"3":1806,"4":1806,"5":54,"6":182,"7":49,"8":49,"9":163,"10":49,"11":47,"12":159,"13":159,"14":47,"15":363,"16":375,"17":123,"18":125,"19":163,"20":171,"21":26,"22":47,"23":98,"24":28,"25":49,"26":95,"27":38,"28":132,"29":37},"fnMap":{"1":{"name":"noop","line":25,"loc":{"start":{"line":25,"column":60},"end":{"line":25,"column":76}}},"2":{"name":"HeaderTable","line":37,"loc":{"start":{"line":37,"column":0},"end":{"line":37,"column":40}}},"3":{"name":"entryFromPair","line":57,"loc":{"start":{"line":57,"column":0},"end":{"line":57,"column":29}}},"4":{"name":"size","line":76,"loc":{"start":{"line":76,"column":0},"end":{"line":76,"column":21}}},"5":{"name":"tableSize","line":80,"loc":{"start":{"line":80,"column":0},"end":{"line":80,"column":26}}},"6":{"name":"(anonymous_6)","line":96,"loc":{"start":{"line":96,"column":28},"end":{"line":96,"column":51}}},"7":{"name":"HeaderSetDecompressor","line":203,"loc":{"start":{"line":203,"column":0},"end":{"line":203,"column":43}}},"8":{"name":"_transform","line":214,"loc":{"start":{"line":214,"column":45},"end":{"line":214,"column":92}}},"9":{"name":"_execute","line":240,"loc":{"start":{"line":240,"column":43},"end":{"line":240,"column":66}}},"10":{"name":"_flush","line":297,"loc":{"start":{"line":297,"column":41},"end":{"line":297,"column":67}}},"11":{"name":"HeaderSetCompressor","line":331,"loc":{"start":{"line":331,"column":0},"end":{"line":331,"column":41}}},"12":{"name":"send","line":339,"loc":{"start":{"line":339,"column":37},"end":{"line":339,"column":56}}},"13":{"name":"_transform","line":352,"loc":{"start":{"line":352,"column":43},"end":{"line":352,"column":89}}},"14":{"name":"_flush","line":437,"loc":{"start":{"line":437,"column":39},"end":{"line":437,"column":65}}},"15":{"name":"writeInteger","line":468,"loc":{"start":{"line":468,"column":30},"end":{"line":468,"column":58}}},"16":{"name":"readInteger","line":509,"loc":{"start":{"line":509,"column":32},"end":{"line":509,"column":64}}},"17":{"name":"writeString","line":538,"loc":{"start":{"line":538,"column":29},"end":{"line":538,"column":55}}},"18":{"name":"readString","line":544,"loc":{"start":{"line":544,"column":31},"end":{"line":544,"column":59}}},"19":{"name":"writeHeader","line":596,"loc":{"start":{"line":596,"column":29},"end":{"line":596,"column":58}}},"20":{"name":"readHeader","line":632,"loc":{"start":{"line":632,"column":31},"end":{"line":632,"column":59}}},"21":{"name":"Compressor","line":701,"loc":{"start":{"line":701,"column":0},"end":{"line":701,"column":31}}},"22":{"name":"compress","line":715,"loc":{"start":{"line":715,"column":32},"end":{"line":715,"column":59}}},"23":{"name":"_transform","line":737,"loc":{"start":{"line":737,"column":34},"end":{"line":737,"column":77}}},"24":{"name":"Decompressor","line":793,"loc":{"start":{"line":793,"column":0},"end":{"line":793,"column":33}}},"25":{"name":"decompress","line":810,"loc":{"start":{"line":810,"column":36},"end":{"line":810,"column":63}}},"26":{"name":"_transform","line":834,"loc":{"start":{"line":834,"column":36},"end":{"line":834,"column":79}}},"27":{"name":"(anonymous_27)","line":863,"loc":{"start":{"line":863,"column":41},"end":{"line":863,"column":57}}},"28":{"name":"concat","line":884,"loc":{"start":{"line":884,"column":0},"end":{"line":884,"column":25}}},"29":{"name":"cut","line":899,"loc":{"start":{"line":899,"column":0},"end":{"line":899,"column":27}}}},"statementMap":{"1":{"start":{"line":18,"column":0},"end":{"line":18,"column":34}},"2":{"start":{"line":19,"column":0},"end":{"line":19,"column":50}},"3":{"start":{"line":20,"column":0},"end":{"line":20,"column":54}},"4":{"start":{"line":21,"column":0},"end":{"line":21,"column":32}},"5":{"start":{"line":22,"column":0},"end":{"line":22,"column":36}},"6":{"start":{"line":24,"column":0},"end":{"line":24,"column":50}},"7":{"start":{"line":25,"column":0},"end":{"line":25,"column":79}},"8":{"start":{"line":26,"column":0},"end":{"line":26,"column":27}},"9":{"start":{"line":37,"column":0},"end":{"line":44,"column":1}},"10":{"start":{"line":38,"column":2},"end":{"line":38,"column":38}},"11":{"start":{"line":39,"column":2},"end":{"line":39,"column":18}},"12":{"start":{"line":40,"column":2},"end":{"line":40,"column":52}},"13":{"start":{"line":41,"column":2},"end":{"line":41,"column":31}},"14":{"start":{"line":42,"column":2},"end":{"line":42,"column":39}},"15":{"start":{"line":43,"column":2},"end":{"line":43,"column":14}},"16":{"start":{"line":57,"column":0},"end":{"line":64,"column":1}},"17":{"start":{"line":58,"column":2},"end":{"line":58,"column":27}},"18":{"start":{"line":59,"column":2},"end":{"line":59,"column":26}},"19":{"start":{"line":60,"column":2},"end":{"line":60,"column":24}},"20":{"start":{"line":61,"column":2},"end":{"line":61,"column":21}},"21":{"start":{"line":62,"column":2},"end":{"line":62,"column":28}},"22":{"start":{"line":63,"column":2},"end":{"line":63,"column":15}},"23":{"start":{"line":74,"column":0},"end":{"line":74,"column":38}},"24":{"start":{"line":76,"column":0},"end":{"line":78,"column":1}},"25":{"start":{"line":77,"column":2},"end":{"line":77,"column":61}},"26":{"start":{"line":80,"column":0},"end":{"line":86,"column":1}},"27":{"start":{"line":81,"column":2},"end":{"line":81,"column":15}},"28":{"start":{"line":82,"column":2},"end":{"line":84,"column":3}},"29":{"start":{"line":83,"column":4},"end":{"line":83,"column":27}},"30":{"start":{"line":85,"column":2},"end":{"line":85,"column":14}},"31":{"start":{"line":96,"column":0},"end":{"line":117,"column":2}},"32":{"start":{"line":97,"column":2},"end":{"line":97,"column":40}},"33":{"start":{"line":98,"column":2},"end":{"line":98,"column":26}},"34":{"start":{"line":100,"column":2},"end":{"line":104,"column":3}},"35":{"start":{"line":101,"column":4},"end":{"line":101,"column":31}},"36":{"start":{"line":102,"column":4},"end":{"line":102,"column":32}},"37":{"start":{"line":103,"column":4},"end":{"line":103,"column":33}},"38":{"start":{"line":106,"column":2},"end":{"line":114,"column":3}},"39":{"start":{"line":107,"column":4},"end":{"line":107,"column":35}},"40":{"start":{"line":108,"column":4},"end":{"line":112,"column":5}},"41":{"start":{"line":109,"column":6},"end":{"line":109,"column":26}},"42":{"start":{"line":111,"column":6},"end":{"line":111,"column":35}},"43":{"start":{"line":113,"column":4},"end":{"line":113,"column":30}},"44":{"start":{"line":116,"column":2},"end":{"line":116,"column":24}},"45":{"start":{"line":124,"column":0},"end":{"line":155,"column":2}},"46":{"start":{"line":159,"column":0},"end":{"line":190,"column":2}},"47":{"start":{"line":202,"column":0},"end":{"line":202,"column":54}},"48":{"start":{"line":203,"column":0},"end":{"line":209,"column":1}},"49":{"start":{"line":204,"column":2},"end":{"line":204,"column":51}},"50":{"start":{"line":206,"column":2},"end":{"line":206,"column":53}},"51":{"start":{"line":207,"column":2},"end":{"line":207,"column":22}},"52":{"start":{"line":208,"column":2},"end":{"line":208,"column":20}},"53":{"start":{"line":214,"column":0},"end":{"line":217,"column":2}},"54":{"start":{"line":215,"column":2},"end":{"line":215,"column":27}},"55":{"start":{"line":216,"column":2},"end":{"line":216,"column":13}},"56":{"start":{"line":240,"column":0},"end":{"line":291,"column":2}},"57":{"start":{"line":241,"column":2},"end":{"line":242,"column":53}},"58":{"start":{"line":244,"column":2},"end":{"line":244,"column":25}},"59":{"start":{"line":253,"column":2},"end":{"line":290,"column":3}},"60":{"start":{"line":254,"column":4},"end":{"line":254,"column":22}},"61":{"start":{"line":255,"column":4},"end":{"line":255,"column":31}},"62":{"start":{"line":257,"column":4},"end":{"line":264,"column":5}},"63":{"start":{"line":258,"column":6},"end":{"line":258,"column":30}},"64":{"start":{"line":260,"column":6},"end":{"line":260,"column":29}},"65":{"start":{"line":261,"column":6},"end":{"line":261,"column":27}},"66":{"start":{"line":262,"column":6},"end":{"line":262,"column":27}},"67":{"start":{"line":263,"column":6},"end":{"line":263,"column":22}},"68":{"start":{"line":275,"column":4},"end":{"line":279,"column":5}},"69":{"start":{"line":276,"column":6},"end":{"line":276,"column":51}},"70":{"start":{"line":278,"column":6},"end":{"line":278,"column":35}},"71":{"start":{"line":281,"column":4},"end":{"line":281,"column":22}},"72":{"start":{"line":282,"column":4},"end":{"line":287,"column":5}},"73":{"start":{"line":283,"column":6},"end":{"line":283,"column":34}},"74":{"start":{"line":284,"column":6},"end":{"line":284,"column":29}},"75":{"start":{"line":285,"column":6},"end":{"line":285,"column":27}},"76":{"start":{"line":286,"column":6},"end":{"line":286,"column":36}},"77":{"start":{"line":289,"column":4},"end":{"line":289,"column":20}},"78":{"start":{"line":297,"column":0},"end":{"line":316,"column":2}},"79":{"start":{"line":298,"column":2},"end":{"line":298,"column":36}},"80":{"start":{"line":301,"column":2},"end":{"line":301,"column":20}},"81":{"start":{"line":302,"column":2},"end":{"line":304,"column":3}},"82":{"start":{"line":303,"column":4},"end":{"line":303,"column":56}},"83":{"start":{"line":307,"column":2},"end":{"line":313,"column":3}},"84":{"start":{"line":308,"column":4},"end":{"line":308,"column":35}},"85":{"start":{"line":309,"column":4},"end":{"line":311,"column":5}},"86":{"start":{"line":310,"column":6},"end":{"line":310,"column":31}},"87":{"start":{"line":312,"column":4},"end":{"line":312,"column":26}},"88":{"start":{"line":315,"column":2},"end":{"line":315,"column":13}},"89":{"start":{"line":330,"column":0},"end":{"line":330,"column":52}},"90":{"start":{"line":331,"column":0},"end":{"line":337,"column":1}},"91":{"start":{"line":332,"column":2},"end":{"line":332,"column":51}},"92":{"start":{"line":334,"column":2},"end":{"line":334,"column":53}},"93":{"start":{"line":335,"column":2},"end":{"line":335,"column":22}},"94":{"start":{"line":336,"column":2},"end":{"line":336,"column":56}},"95":{"start":{"line":339,"column":0},"end":{"line":347,"column":2}},"96":{"start":{"line":340,"column":2},"end":{"line":341,"column":52}},"97":{"start":{"line":343,"column":2},"end":{"line":345,"column":3}},"98":{"start":{"line":344,"column":4},"end":{"line":344,"column":49}},"99":{"start":{"line":346,"column":2},"end":{"line":346,"column":32}},"100":{"start":{"line":352,"column":0},"end":{"line":432,"column":2}},"101":{"start":{"line":353,"column":2},"end":{"line":353,"column":35}},"102":{"start":{"line":354,"column":2},"end":{"line":354,"column":22}},"103":{"start":{"line":355,"column":2},"end":{"line":355,"column":17}},"104":{"start":{"line":358,"column":2},"end":{"line":358,"column":37}},"105":{"start":{"line":359,"column":2},"end":{"line":369,"column":3}},"106":{"start":{"line":360,"column":4},"end":{"line":360,"column":31}},"107":{"start":{"line":361,"column":4},"end":{"line":368,"column":5}},"108":{"start":{"line":362,"column":6},"end":{"line":367,"column":7}},"109":{"start":{"line":363,"column":8},"end":{"line":363,"column":26}},"110":{"start":{"line":364,"column":8},"end":{"line":364,"column":14}},"111":{"start":{"line":365,"column":13},"end":{"line":367,"column":7}},"112":{"start":{"line":366,"column":8},"end":{"line":366,"column":26}},"113":{"start":{"line":373,"column":2},"end":{"line":429,"column":3}},"114":{"start":{"line":374,"column":4},"end":{"line":374,"column":59}},"115":{"start":{"line":376,"column":4},"end":{"line":398,"column":5}},"116":{"start":{"line":377,"column":6},"end":{"line":377,"column":21}},"117":{"start":{"line":378,"column":6},"end":{"line":378,"column":29}},"118":{"start":{"line":379,"column":6},"end":{"line":379,"column":27}},"119":{"start":{"line":382,"column":9},"end":{"line":398,"column":5}},"120":{"start":{"line":383,"column":6},"end":{"line":383,"column":21}},"121":{"start":{"line":384,"column":6},"end":{"line":384,"column":21}},"122":{"start":{"line":385,"column":6},"end":{"line":385,"column":21}},"123":{"start":{"line":386,"column":6},"end":{"line":386,"column":21}},"124":{"start":{"line":387,"column":6},"end":{"line":387,"column":25}},"125":{"start":{"line":388,"column":6},"end":{"line":388,"column":27}},"126":{"start":{"line":391,"column":9},"end":{"line":398,"column":5}},"127":{"start":{"line":392,"column":6},"end":{"line":392,"column":21}},"128":{"start":{"line":393,"column":6},"end":{"line":393,"column":21}},"129":{"start":{"line":397,"column":6},"end":{"line":397,"column":24}},"130":{"start":{"line":403,"column":4},"end":{"line":403,"column":32}},"131":{"start":{"line":404,"column":4},"end":{"line":404,"column":25}},"132":{"start":{"line":406,"column":4},"end":{"line":406,"column":20}},"133":{"start":{"line":407,"column":4},"end":{"line":413,"column":5}},"134":{"start":{"line":408,"column":6},"end":{"line":408,"column":23}},"135":{"start":{"line":409,"column":11},"end":{"line":413,"column":5}},"136":{"start":{"line":410,"column":6},"end":{"line":410,"column":30}},"137":{"start":{"line":412,"column":6},"end":{"line":412,"column":29}},"138":{"start":{"line":415,"column":4},"end":{"line":426,"column":5}},"139":{"start":{"line":416,"column":6},"end":{"line":416,"column":29}},"140":{"start":{"line":417,"column":6},"end":{"line":417,"column":63}},"141":{"start":{"line":418,"column":6},"end":{"line":425,"column":7}},"142":{"start":{"line":419,"column":8},"end":{"line":419,"column":44}},"143":{"start":{"line":420,"column":8},"end":{"line":424,"column":9}},"144":{"start":{"line":421,"column":10},"end":{"line":421,"column":57}},"145":{"start":{"line":422,"column":10},"end":{"line":422,"column":25}},"146":{"start":{"line":423,"column":10},"end":{"line":423,"column":25}},"147":{"start":{"line":428,"column":4},"end":{"line":428,"column":97}},"148":{"start":{"line":431,"column":2},"end":{"line":431,"column":13}},"149":{"start":{"line":437,"column":0},"end":{"line":450,"column":2}},"150":{"start":{"line":439,"column":2},"end":{"line":447,"column":3}},"151":{"start":{"line":440,"column":4},"end":{"line":440,"column":35}},"152":{"start":{"line":441,"column":4},"end":{"line":444,"column":5}},"153":{"start":{"line":442,"column":6},"end":{"line":442,"column":58}},"154":{"start":{"line":443,"column":6},"end":{"line":443,"column":30}},"155":{"start":{"line":445,"column":4},"end":{"line":445,"column":23}},"156":{"start":{"line":446,"column":4},"end":{"line":446,"column":26}},"157":{"start":{"line":449,"column":2},"end":{"line":449,"column":13}},"158":{"start":{"line":468,"column":0},"end":{"line":494,"column":2}},"159":{"start":{"line":469,"column":2},"end":{"line":469,"column":32}},"160":{"start":{"line":470,"column":2},"end":{"line":472,"column":3}},"161":{"start":{"line":471,"column":4},"end":{"line":471,"column":29}},"162":{"start":{"line":474,"column":2},"end":{"line":474,"column":17}},"163":{"start":{"line":475,"column":2},"end":{"line":477,"column":3}},"164":{"start":{"line":476,"column":4},"end":{"line":476,"column":22}},"165":{"start":{"line":478,"column":2},"end":{"line":478,"column":13}},"166":{"start":{"line":480,"column":2},"end":{"line":480,"column":15}},"167":{"start":{"line":481,"column":2},"end":{"line":491,"column":3}},"168":{"start":{"line":482,"column":4},"end":{"line":482,"column":28}},"169":{"start":{"line":483,"column":4},"end":{"line":483,"column":16}},"170":{"start":{"line":485,"column":4},"end":{"line":487,"column":5}},"171":{"start":{"line":486,"column":6},"end":{"line":486,"column":15}},"172":{"start":{"line":488,"column":4},"end":{"line":488,"column":18}},"173":{"start":{"line":490,"column":4},"end":{"line":490,"column":10}},"174":{"start":{"line":493,"column":2},"end":{"line":493,"column":29}},"175":{"start":{"line":509,"column":0},"end":{"line":527,"column":2}},"176":{"start":{"line":510,"column":2},"end":{"line":510,"column":32}},"177":{"start":{"line":512,"column":2},"end":{"line":512,"column":40}},"178":{"start":{"line":513,"column":2},"end":{"line":515,"column":3}},"179":{"start":{"line":514,"column":4},"end":{"line":514,"column":23}},"180":{"start":{"line":517,"column":2},"end":{"line":524,"column":3}},"181":{"start":{"line":518,"column":4},"end":{"line":518,"column":14}},"182":{"start":{"line":519,"column":4},"end":{"line":523,"column":46}},"183":{"start":{"line":520,"column":6},"end":{"line":520,"column":46}},"184":{"start":{"line":521,"column":6},"end":{"line":521,"column":13}},"185":{"start":{"line":522,"column":6},"end":{"line":522,"column":25}},"186":{"start":{"line":526,"column":2},"end":{"line":526,"column":11}},"187":{"start":{"line":538,"column":0},"end":{"line":542,"column":2}},"188":{"start":{"line":539,"column":2},"end":{"line":539,"column":46}},"189":{"start":{"line":540,"column":2},"end":{"line":540,"column":75}},"190":{"start":{"line":541,"column":2},"end":{"line":541,"column":45}},"191":{"start":{"line":544,"column":0},"end":{"line":549,"column":2}},"192":{"start":{"line":545,"column":2},"end":{"line":545,"column":56}},"193":{"start":{"line":546,"column":2},"end":{"line":546,"column":75}},"194":{"start":{"line":547,"column":2},"end":{"line":547,"column":26}},"195":{"start":{"line":548,"column":2},"end":{"line":548,"column":13}},"196":{"start":{"line":589,"column":0},"end":{"line":594,"column":2}},"197":{"start":{"line":596,"column":0},"end":{"line":630,"column":2}},"198":{"start":{"line":597,"column":2},"end":{"line":597,"column":35}},"199":{"start":{"line":599,"column":2},"end":{"line":607,"column":3}},"200":{"start":{"line":600,"column":4},"end":{"line":600,"column":45}},"201":{"start":{"line":601,"column":9},"end":{"line":607,"column":3}},"202":{"start":{"line":602,"column":4},"end":{"line":602,"column":45}},"203":{"start":{"line":603,"column":9},"end":{"line":607,"column":3}},"204":{"start":{"line":604,"column":4},"end":{"line":604,"column":56}},"205":{"start":{"line":606,"column":4},"end":{"line":606,"column":57}},"206":{"start":{"line":609,"column":2},"end":{"line":625,"column":3}},"207":{"start":{"line":610,"column":4},"end":{"line":610,"column":83}},"208":{"start":{"line":613,"column":4},"end":{"line":618,"column":5}},"209":{"start":{"line":614,"column":6},"end":{"line":614,"column":88}},"210":{"start":{"line":616,"column":6},"end":{"line":616,"column":74}},"211":{"start":{"line":617,"column":6},"end":{"line":617,"column":60}},"212":{"start":{"line":620,"column":4},"end":{"line":622,"column":5}},"213":{"start":{"line":621,"column":6},"end":{"line":621,"column":65}},"214":{"start":{"line":624,"column":4},"end":{"line":624,"column":59}},"215":{"start":{"line":627,"column":2},"end":{"line":627,"column":45}},"216":{"start":{"line":629,"column":2},"end":{"line":629,"column":51}},"217":{"start":{"line":632,"column":0},"end":{"line":670,"column":2}},"218":{"start":{"line":633,"column":2},"end":{"line":633,"column":34}},"219":{"start":{"line":635,"column":2},"end":{"line":635,"column":40}},"220":{"start":{"line":636,"column":2},"end":{"line":646,"column":3}},"221":{"start":{"line":637,"column":4},"end":{"line":637,"column":45}},"222":{"start":{"line":638,"column":9},"end":{"line":646,"column":3}},"223":{"start":{"line":639,"column":4},"end":{"line":643,"column":5}},"224":{"start":{"line":640,"column":6},"end":{"line":640,"column":47}},"225":{"start":{"line":642,"column":6},"end":{"line":642,"column":58}},"226":{"start":{"line":645,"column":4},"end":{"line":645,"column":57}},"227":{"start":{"line":648,"column":2},"end":{"line":667,"column":3}},"228":{"start":{"line":649,"column":4},"end":{"line":649,"column":94}},"229":{"start":{"line":650,"column":4},"end":{"line":650,"column":22}},"230":{"start":{"line":653,"column":4},"end":{"line":653,"column":83}},"231":{"start":{"line":654,"column":4},"end":{"line":656,"column":5}},"232":{"start":{"line":655,"column":6},"end":{"line":655,"column":57}},"233":{"start":{"line":658,"column":4},"end":{"line":664,"column":5}},"234":{"start":{"line":659,"column":6},"end":{"line":659,"column":62}},"235":{"start":{"line":660,"column":11},"end":{"line":664,"column":5}},"236":{"start":{"line":661,"column":6},"end":{"line":661,"column":30}},"237":{"start":{"line":663,"column":6},"end":{"line":663,"column":24}},"238":{"start":{"line":666,"column":4},"end":{"line":666,"column":56}},"239":{"start":{"line":669,"column":2},"end":{"line":669,"column":16}},"240":{"start":{"line":694,"column":0},"end":{"line":694,"column":34}},"241":{"start":{"line":700,"column":0},"end":{"line":700,"column":43}},"242":{"start":{"line":701,"column":0},"end":{"line":710,"column":1}},"243":{"start":{"line":702,"column":2},"end":{"line":702,"column":51}},"244":{"start":{"line":704,"column":2},"end":{"line":704,"column":53}},"245":{"start":{"line":706,"column":2},"end":{"line":706,"column":56}},"246":{"start":{"line":707,"column":2},"end":{"line":708,"column":77}},"247":{"start":{"line":709,"column":2},"end":{"line":709,"column":57}},"248":{"start":{"line":715,"column":0},"end":{"line":734,"column":2}},"249":{"start":{"line":716,"column":2},"end":{"line":716,"column":67}},"250":{"start":{"line":717,"column":2},"end":{"line":726,"column":3}},"251":{"start":{"line":718,"column":4},"end":{"line":718,"column":30}},"252":{"start":{"line":719,"column":4},"end":{"line":725,"column":5}},"253":{"start":{"line":720,"column":6},"end":{"line":722,"column":7}},"254":{"start":{"line":721,"column":8},"end":{"line":721,"column":59}},"255":{"start":{"line":724,"column":6},"end":{"line":724,"column":54}},"256":{"start":{"line":727,"column":2},"end":{"line":727,"column":19}},"257":{"start":{"line":729,"column":2},"end":{"line":729,"column":25}},"258":{"start":{"line":730,"column":2},"end":{"line":732,"column":3}},"259":{"start":{"line":731,"column":4},"end":{"line":731,"column":23}},"260":{"start":{"line":733,"column":2},"end":{"line":733,"column":24}},"261":{"start":{"line":737,"column":0},"end":{"line":781,"column":2}},"262":{"start":{"line":745,"column":2},"end":{"line":778,"column":3}},"263":{"start":{"line":746,"column":4},"end":{"line":746,"column":46}},"264":{"start":{"line":748,"column":4},"end":{"line":748,"column":52}},"265":{"start":{"line":750,"column":4},"end":{"line":772,"column":5}},"266":{"start":{"line":751,"column":6},"end":{"line":751,"column":21}},"267":{"start":{"line":752,"column":6},"end":{"line":752,"column":28}},"268":{"start":{"line":753,"column":6},"end":{"line":753,"column":43}},"269":{"start":{"line":755,"column":6},"end":{"line":765,"column":7}},"270":{"start":{"line":756,"column":8},"end":{"line":756,"column":45}},"271":{"start":{"line":757,"column":8},"end":{"line":757,"column":57}},"272":{"start":{"line":758,"column":8},"end":{"line":758,"column":53}},"273":{"start":{"line":760,"column":8},"end":{"line":764,"column":10}},"274":{"start":{"line":766,"column":6},"end":{"line":768,"column":7}},"275":{"start":{"line":767,"column":8},"end":{"line":767,"column":63}},"276":{"start":{"line":769,"column":6},"end":{"line":769,"column":34}},"277":{"start":{"line":771,"column":6},"end":{"line":771,"column":28}},"278":{"start":{"line":777,"column":4},"end":{"line":777,"column":21}},"279":{"start":{"line":780,"column":2},"end":{"line":780,"column":9}},"280":{"start":{"line":792,"column":0},"end":{"line":792,"column":45}},"281":{"start":{"line":793,"column":0},"end":{"line":805,"column":1}},"282":{"start":{"line":794,"column":2},"end":{"line":794,"column":51}},"283":{"start":{"line":796,"column":2},"end":{"line":796,"column":53}},"284":{"start":{"line":798,"column":2},"end":{"line":798,"column":56}},"285":{"start":{"line":799,"column":2},"end":{"line":800,"column":77}},"286":{"start":{"line":801,"column":2},"end":{"line":801,"column":57}},"287":{"start":{"line":803,"column":2},"end":{"line":803,"column":27}},"288":{"start":{"line":804,"column":2},"end":{"line":804,"column":25}},"289":{"start":{"line":810,"column":0},"end":{"line":831,"column":2}},"290":{"start":{"line":811,"column":2},"end":{"line":811,"column":71}},"291":{"start":{"line":812,"column":2},"end":{"line":812,"column":26}},"292":{"start":{"line":814,"column":2},"end":{"line":814,"column":19}},"293":{"start":{"line":815,"column":2},"end":{"line":815,"column":11}},"294":{"start":{"line":816,"column":2},"end":{"line":828,"column":3}},"295":{"start":{"line":817,"column":4},"end":{"line":817,"column":23}},"296":{"start":{"line":818,"column":4},"end":{"line":818,"column":24}},"297":{"start":{"line":819,"column":4},"end":{"line":827,"column":5}},"298":{"start":{"line":820,"column":6},"end":{"line":824,"column":7}},"299":{"start":{"line":821,"column":8},"end":{"line":821,"column":34}},"300":{"start":{"line":823,"column":8},"end":{"line":823,"column":47}},"301":{"start":{"line":826,"column":6},"end":{"line":826,"column":28}},"302":{"start":{"line":830,"column":2},"end":{"line":830,"column":17}},"303":{"start":{"line":834,"column":0},"end":{"line":878,"column":2}},"304":{"start":{"line":837,"column":2},"end":{"line":857,"column":3}},"305":{"start":{"line":838,"column":4},"end":{"line":842,"column":5}},"306":{"start":{"line":839,"column":6},"end":{"line":839,"column":71}},"307":{"start":{"line":840,"column":6},"end":{"line":840,"column":43}},"308":{"start":{"line":841,"column":6},"end":{"line":841,"column":13}},"309":{"start":{"line":843,"column":4},"end":{"line":843,"column":29}},"310":{"start":{"line":848,"column":7},"end":{"line":857,"column":3}},"311":{"start":{"line":849,"column":4},"end":{"line":849,"column":28}},"312":{"start":{"line":850,"column":4},"end":{"line":850,"column":23}},"313":{"start":{"line":851,"column":4},"end":{"line":851,"column":27}},"314":{"start":{"line":856,"column":4},"end":{"line":856,"column":21}},"315":{"start":{"line":862,"column":2},"end":{"line":875,"column":3}},"316":{"start":{"line":863,"column":4},"end":{"line":865,"column":8}},"317":{"start":{"line":864,"column":6},"end":{"line":864,"column":24}},"318":{"start":{"line":866,"column":4},"end":{"line":872,"column":5}},"319":{"start":{"line":867,"column":6},"end":{"line":867,"column":44}},"320":{"start":{"line":869,"column":6},"end":{"line":869,"column":68}},"321":{"start":{"line":870,"column":6},"end":{"line":870,"column":46}},"322":{"start":{"line":871,"column":6},"end":{"line":871,"column":13}},"323":{"start":{"line":873,"column":4},"end":{"line":873,"column":62}},"324":{"start":{"line":874,"column":4},"end":{"line":874,"column":29}},"325":{"start":{"line":877,"column":2},"end":{"line":877,"column":9}},"326":{"start":{"line":884,"column":0},"end":{"line":896,"column":1}},"327":{"start":{"line":885,"column":2},"end":{"line":885,"column":15}},"328":{"start":{"line":886,"column":2},"end":{"line":888,"column":3}},"329":{"start":{"line":887,"column":4},"end":{"line":887,"column":30}},"330":{"start":{"line":890,"column":2},"end":{"line":890,"column":38}},"331":{"start":{"line":891,"column":2},"end":{"line":893,"column":3}},"332":{"start":{"line":892,"column":4},"end":{"line":892,"column":42}},"333":{"start":{"line":895,"column":2},"end":{"line":895,"column":22}},"334":{"start":{"line":899,"column":0},"end":{"line":908,"column":1}},"335":{"start":{"line":900,"column":2},"end":{"line":900,"column":18}},"336":{"start":{"line":901,"column":2},"end":{"line":901,"column":17}},"337":{"start":{"line":902,"column":2},"end":{"line":906,"column":34}},"338":{"start":{"line":903,"column":4},"end":{"line":903,"column":59}},"339":{"start":{"line":904,"column":4},"end":{"line":904,"column":58}},"340":{"start":{"line":905,"column":4},"end":{"line":905,"column":24}},"341":{"start":{"line":907,"column":2},"end":{"line":907,"column":16}}},"branchMap":{"1":{"line":25,"type":"cond-expr","locations":[{"start":{"line":25,"column":40},"end":{"line":25,"column":57}},{"start":{"line":25,"column":60},"end":{"line":25,"column":78}}]},"2":{"line":40,"type":"binary-expr","locations":[{"start":{"line":40,"column":16},"end":{"line":40,"column":21}},{"start":{"line":40,"column":25},"end":{"line":40,"column":51}}]},"3":{"line":100,"type":"binary-expr","locations":[{"start":{"line":100,"column":10},"end":{"line":100,"column":28}},{"start":{"line":100,"column":34},"end":{"line":100,"column":49}}]},"4":{"line":106,"type":"if","locations":[{"start":{"line":106,"column":2},"end":{"line":106,"column":2}},{"start":{"line":106,"column":2},"end":{"line":106,"column":2}}]},"5":{"line":108,"type":"if","locations":[{"start":{"line":108,"column":4},"end":{"line":108,"column":4}},{"start":{"line":108,"column":4},"end":{"line":108,"column":4}}]},"6":{"line":253,"type":"if","locations":[{"start":{"line":253,"column":2},"end":{"line":253,"column":2}},{"start":{"line":253,"column":2},"end":{"line":253,"column":2}}]},"7":{"line":257,"type":"if","locations":[{"start":{"line":257,"column":4},"end":{"line":257,"column":4}},{"start":{"line":257,"column":4},"end":{"line":257,"column":4}}]},"8":{"line":275,"type":"if","locations":[{"start":{"line":275,"column":4},"end":{"line":275,"column":4}},{"start":{"line":275,"column":4},"end":{"line":275,"column":4}}]},"9":{"line":282,"type":"if","locations":[{"start":{"line":282,"column":4},"end":{"line":282,"column":4}},{"start":{"line":282,"column":4},"end":{"line":282,"column":4}}]},"10":{"line":309,"type":"if","locations":[{"start":{"line":309,"column":4},"end":{"line":309,"column":4}},{"start":{"line":309,"column":4},"end":{"line":309,"column":4}}]},"11":{"line":309,"type":"binary-expr","locations":[{"start":{"line":309,"column":8},"end":{"line":309,"column":23}},{"start":{"line":309,"column":27},"end":{"line":309,"column":41}}]},"12":{"line":343,"type":"if","locations":[{"start":{"line":343,"column":2},"end":{"line":343,"column":2}},{"start":{"line":343,"column":2},"end":{"line":343,"column":2}}]},"13":{"line":361,"type":"if","locations":[{"start":{"line":361,"column":4},"end":{"line":361,"column":4}},{"start":{"line":361,"column":4},"end":{"line":361,"column":4}}]},"14":{"line":362,"type":"if","locations":[{"start":{"line":362,"column":6},"end":{"line":362,"column":6}},{"start":{"line":362,"column":6},"end":{"line":362,"column":6}}]},"15":{"line":365,"type":"if","locations":[{"start":{"line":365,"column":13},"end":{"line":365,"column":13}},{"start":{"line":365,"column":13},"end":{"line":365,"column":13}}]},"16":{"line":373,"type":"if","locations":[{"start":{"line":373,"column":2},"end":{"line":373,"column":2}},{"start":{"line":373,"column":2},"end":{"line":373,"column":2}}]},"17":{"line":376,"type":"if","locations":[{"start":{"line":376,"column":4},"end":{"line":376,"column":4}},{"start":{"line":376,"column":4},"end":{"line":376,"column":4}}]},"18":{"line":382,"type":"if","locations":[{"start":{"line":382,"column":9},"end":{"line":382,"column":9}},{"start":{"line":382,"column":9},"end":{"line":382,"column":9}}]},"19":{"line":391,"type":"if","locations":[{"start":{"line":391,"column":9},"end":{"line":391,"column":9}},{"start":{"line":391,"column":9},"end":{"line":391,"column":9}}]},"20":{"line":407,"type":"if","locations":[{"start":{"line":407,"column":4},"end":{"line":407,"column":4}},{"start":{"line":407,"column":4},"end":{"line":407,"column":4}}]},"21":{"line":409,"type":"if","locations":[{"start":{"line":409,"column":11},"end":{"line":409,"column":11}},{"start":{"line":409,"column":11},"end":{"line":409,"column":11}}]},"22":{"line":415,"type":"if","locations":[{"start":{"line":415,"column":4},"end":{"line":415,"column":4}},{"start":{"line":415,"column":4},"end":{"line":415,"column":4}}]},"23":{"line":420,"type":"if","locations":[{"start":{"line":420,"column":8},"end":{"line":420,"column":8}},{"start":{"line":420,"column":8},"end":{"line":420,"column":8}}]},"24":{"line":428,"type":"cond-expr","locations":[{"start":{"line":428,"column":43},"end":{"line":428,"column":52}},{"start":{"line":428,"column":55},"end":{"line":428,"column":59}}]},"25":{"line":441,"type":"if","locations":[{"start":{"line":441,"column":4},"end":{"line":441,"column":4}},{"start":{"line":441,"column":4},"end":{"line":441,"column":4}}]},"26":{"line":441,"type":"binary-expr","locations":[{"start":{"line":441,"column":8},"end":{"line":441,"column":23}},{"start":{"line":441,"column":27},"end":{"line":441,"column":38}},{"start":{"line":441,"column":42},"end":{"line":441,"column":56}}]},"27":{"line":470,"type":"if","locations":[{"start":{"line":470,"column":2},"end":{"line":470,"column":2}},{"start":{"line":470,"column":2},"end":{"line":470,"column":2}}]},"28":{"line":475,"type":"if","locations":[{"start":{"line":475,"column":2},"end":{"line":475,"column":2}},{"start":{"line":475,"column":2},"end":{"line":475,"column":2}}]},"29":{"line":485,"type":"if","locations":[{"start":{"line":485,"column":4},"end":{"line":485,"column":4}},{"start":{"line":485,"column":4},"end":{"line":485,"column":4}}]},"30":{"line":513,"type":"if","locations":[{"start":{"line":513,"column":2},"end":{"line":513,"column":2}},{"start":{"line":513,"column":2},"end":{"line":513,"column":2}}]},"31":{"line":517,"type":"if","locations":[{"start":{"line":517,"column":2},"end":{"line":517,"column":2}},{"start":{"line":517,"column":2},"end":{"line":517,"column":2}}]},"32":{"line":599,"type":"if","locations":[{"start":{"line":599,"column":2},"end":{"line":599,"column":2}},{"start":{"line":599,"column":2},"end":{"line":599,"column":2}}]},"33":{"line":601,"type":"if","locations":[{"start":{"line":601,"column":9},"end":{"line":601,"column":9}},{"start":{"line":601,"column":9},"end":{"line":601,"column":9}}]},"34":{"line":603,"type":"if","locations":[{"start":{"line":603,"column":9},"end":{"line":603,"column":9}},{"start":{"line":603,"column":9},"end":{"line":603,"column":9}}]},"35":{"line":609,"type":"if","locations":[{"start":{"line":609,"column":2},"end":{"line":609,"column":2}},{"start":{"line":609,"column":2},"end":{"line":609,"column":2}}]},"36":{"line":613,"type":"if","locations":[{"start":{"line":613,"column":4},"end":{"line":613,"column":4}},{"start":{"line":613,"column":4},"end":{"line":613,"column":4}}]},"37":{"line":620,"type":"if","locations":[{"start":{"line":620,"column":4},"end":{"line":620,"column":4}},{"start":{"line":620,"column":4},"end":{"line":620,"column":4}}]},"38":{"line":636,"type":"if","locations":[{"start":{"line":636,"column":2},"end":{"line":636,"column":2}},{"start":{"line":636,"column":2},"end":{"line":636,"column":2}}]},"39":{"line":638,"type":"if","locations":[{"start":{"line":638,"column":9},"end":{"line":638,"column":9}},{"start":{"line":638,"column":9},"end":{"line":638,"column":9}}]},"40":{"line":639,"type":"if","locations":[{"start":{"line":639,"column":4},"end":{"line":639,"column":4}},{"start":{"line":639,"column":4},"end":{"line":639,"column":4}}]},"41":{"line":648,"type":"if","locations":[{"start":{"line":648,"column":2},"end":{"line":648,"column":2}},{"start":{"line":648,"column":2},"end":{"line":648,"column":2}}]},"42":{"line":654,"type":"if","locations":[{"start":{"line":654,"column":4},"end":{"line":654,"column":4}},{"start":{"line":654,"column":4},"end":{"line":654,"column":4}}]},"43":{"line":658,"type":"if","locations":[{"start":{"line":658,"column":4},"end":{"line":658,"column":4}},{"start":{"line":658,"column":4},"end":{"line":658,"column":4}}]},"44":{"line":660,"type":"if","locations":[{"start":{"line":660,"column":11},"end":{"line":660,"column":11}},{"start":{"line":660,"column":11},"end":{"line":660,"column":11}}]},"45":{"line":706,"type":"binary-expr","locations":[{"start":{"line":706,"column":10},"end":{"line":706,"column":28}},{"start":{"line":706,"column":34},"end":{"line":706,"column":53}}]},"46":{"line":707,"type":"cond-expr","locations":[{"start":{"line":707,"column":44},"end":{"line":707,"column":75}},{"start":{"line":708,"column":44},"end":{"line":708,"column":76}}]},"47":{"line":719,"type":"if","locations":[{"start":{"line":719,"column":4},"end":{"line":719,"column":4}},{"start":{"line":719,"column":4},"end":{"line":719,"column":4}}]},"48":{"line":745,"type":"if","locations":[{"start":{"line":745,"column":2},"end":{"line":745,"column":2}},{"start":{"line":745,"column":2},"end":{"line":745,"column":2}}]},"49":{"line":745,"type":"binary-expr","locations":[{"start":{"line":745,"column":6},"end":{"line":745,"column":30}},{"start":{"line":745,"column":34},"end":{"line":745,"column":63}}]},"50":{"line":755,"type":"if","locations":[{"start":{"line":755,"column":6},"end":{"line":755,"column":6}},{"start":{"line":755,"column":6},"end":{"line":755,"column":6}}]},"51":{"line":766,"type":"if","locations":[{"start":{"line":766,"column":6},"end":{"line":766,"column":6}},{"start":{"line":766,"column":6},"end":{"line":766,"column":6}}]},"52":{"line":767,"type":"binary-expr","locations":[{"start":{"line":767,"column":38},"end":{"line":767,"column":42}},{"start":{"line":767,"column":46},"end":{"line":767,"column":62}}]},"53":{"line":798,"type":"binary-expr","locations":[{"start":{"line":798,"column":10},"end":{"line":798,"column":28}},{"start":{"line":798,"column":34},"end":{"line":798,"column":53}}]},"54":{"line":799,"type":"cond-expr","locations":[{"start":{"line":799,"column":44},"end":{"line":799,"column":75}},{"start":{"line":800,"column":44},"end":{"line":800,"column":76}}]},"55":{"line":819,"type":"if","locations":[{"start":{"line":819,"column":4},"end":{"line":819,"column":4}},{"start":{"line":819,"column":4},"end":{"line":819,"column":4}}]},"56":{"line":820,"type":"if","locations":[{"start":{"line":820,"column":6},"end":{"line":820,"column":6}},{"start":{"line":820,"column":6},"end":{"line":820,"column":6}}]},"57":{"line":837,"type":"if","locations":[{"start":{"line":837,"column":2},"end":{"line":837,"column":2}},{"start":{"line":837,"column":2},"end":{"line":837,"column":2}}]},"58":{"line":838,"type":"if","locations":[{"start":{"line":838,"column":4},"end":{"line":838,"column":4}},{"start":{"line":838,"column":4},"end":{"line":838,"column":4}}]},"59":{"line":838,"type":"binary-expr","locations":[{"start":{"line":838,"column":9},"end":{"line":838,"column":38}},{"start":{"line":838,"column":44},"end":{"line":838,"column":78}}]},"60":{"line":848,"type":"if","locations":[{"start":{"line":848,"column":7},"end":{"line":848,"column":7}},{"start":{"line":848,"column":7},"end":{"line":848,"column":7}}]},"61":{"line":848,"type":"binary-expr","locations":[{"start":{"line":848,"column":12},"end":{"line":848,"column":36}},{"start":{"line":848,"column":42},"end":{"line":848,"column":71}}]},"62":{"line":862,"type":"if","locations":[{"start":{"line":862,"column":2},"end":{"line":862,"column":2}},{"start":{"line":862,"column":2},"end":{"line":862,"column":2}}]},"63":{"line":862,"type":"binary-expr","locations":[{"start":{"line":862,"column":6},"end":{"line":862,"column":22}},{"start":{"line":862,"column":27},"end":{"line":862,"column":50}},{"start":{"line":862,"column":54},"end":{"line":862,"column":82}}]}}},"/data/upstream/node-http2/lib/connection.js":{"path":"/data/upstream/node-http2/lib/connection.js","s":{"1":1,"2":1,"3":1,"4":1,"5":45,"6":45,"7":45,"8":45,"9":45,"10":45,"11":1,"12":1,"13":1,"14":45,"15":45,"16":45,"17":45,"18":45,"19":45,"20":45,"21":45,"22":1,"23":42,"24":42,"25":42,"26":0,"27":0,"28":1,"29":18,"30":18,"31":1,"32":130,"33":39,"34":39,"35":39,"36":1,"37":45,"38":23,"39":23,"40":22,"41":22,"42":0,"43":0,"44":0,"45":45,"46":45,"47":45,"48":45,"49":45,"50":1,"51":45,"52":45,"53":45,"54":45,"55":45,"56":1,"57":75,"58":27,"59":48,"60":1,"61":10,"62":10,"63":10,"64":10,"65":10,"66":8,"67":10,"68":1,"69":22,"70":22,"71":22,"72":22,"73":22,"74":22,"75":1,"76":18,"77":18,"78":18,"79":18,"80":1,"81":448,"82":448,"83":448,"84":388,"85":388,"86":388,"87":622,"88":622,"89":622,"90":622,"91":537,"92":85,"93":0,"94":0,"95":85,"96":85,"97":18,"98":67,"99":85,"100":5,"101":5,"102":85,"103":85,"104":85,"105":0,"106":85,"107":85,"108":85,"109":0,"110":85,"111":0,"112":85,"113":448,"114":1,"115":125,"116":125,"117":125,"118":17,"119":125,"120":5,"121":125,"122":125,"123":125,"124":1,"125":1,"126":45,"127":45,"128":45,"129":36,"130":36,"131":0,"132":0,"133":45,"134":1,"135":36,"136":54,"137":1,"138":45,"139":45,"140":70,"141":1,"142":45,"143":45,"144":45,"145":1,"146":2,"147":2,"148":2,"149":32,"150":2,"151":1,"152":2,"153":2,"154":2,"155":2,"156":2,"157":1,"158":5,"159":3,"160":3,"161":2,"162":2,"163":2,"164":1,"165":2,"166":2,"167":1,"168":3,"169":3,"170":3,"171":1,"172":2,"173":2,"174":1,"175":45,"176":45,"177":45,"178":45,"179":25,"180":45,"181":45,"182":45,"183":45,"184":45,"185":1,"186":1,"187":41,"188":1,"189":1,"190":40,"191":40,"192":40,"193":54,"194":1,"195":24,"196":22,"197":22,"198":2,"199":1,"200":1,"201":1,"202":20,"203":20,"204":20,"205":20,"206":0,"207":0,"208":0},"b":{"1":[1,0],"2":[42,0],"3":[42,6,2,0],"4":[39,91],"5":[23,22],"6":[22,0],"7":[22,22],"8":[27,48],"9":[8,2],"10":[537,85],"11":[0,85],"12":[18,67],"13":[5,80],"14":[85,0],"15":[0,85],"16":[0,85],"17":[17,108],"18":[5,120],"19":[45,20],"20":[36,0],"21":[36,36],"22":[3,2],"23":[2,1],"24":[3,2],"25":[25,20],"26":[1,40],"27":[41,2],"28":[22,2],"29":[1,1],"30":[20,0],"31":[0,0]},"f":{"1":0,"2":45,"3":45,"4":42,"5":18,"6":130,"7":45,"8":45,"9":75,"10":10,"11":22,"12":18,"13":448,"14":0,"15":125,"16":45,"17":36,"18":36,"19":45,"20":45,"21":2,"22":2,"23":5,"24":3,"25":2,"26":45,"27":45,"28":40,"29":20,"30":41,"31":54,"32":24,"33":20,"34":20},"fnMap":{"1":{"name":"noop","line":1,"loc":{"start":{"line":1,"column":45},"end":{"line":1,"column":76}}},"2":{"name":"Connection","line":36,"loc":{"start":{"line":36,"column":0},"end":{"line":36,"column":50}}},"3":{"name":"_initializeStreamManagement","line":96,"loc":{"start":{"line":96,"column":51},"end":{"line":96,"column":103}}},"4":{"name":"_writeControlFrame","line":119,"loc":{"start":{"line":119,"column":42},"end":{"line":119,"column":77}}},"5":{"name":"_updateStreamLimit","line":131,"loc":{"start":{"line":131,"column":42},"end":{"line":131,"column":86}}},"6":{"name":"_changeStreamCount","line":136,"loc":{"start":{"line":136,"column":42},"end":{"line":136,"column":78}}},"7":{"name":"_allocateId","line":152,"loc":{"start":{"line":152,"column":35},"end":{"line":152,"column":68}}},"8":{"name":"_allocatePriority","line":183,"loc":{"start":{"line":183,"column":41},"end":{"line":183,"column":76}}},"9":{"name":"_insert","line":191,"loc":{"start":{"line":191,"column":31},"end":{"line":191,"column":66}}},"10":{"name":"_reprioritize","line":199,"loc":{"start":{"line":199,"column":37},"end":{"line":199,"column":78}}},"11":{"name":"_createIncomingStream","line":213,"loc":{"start":{"line":213,"column":45},"end":{"line":213,"column":80}}},"12":{"name":"createStream","line":225,"loc":{"start":{"line":225,"column":36},"end":{"line":225,"column":60}}},"13":{"name":"_send","line":240,"loc":{"start":{"line":240,"column":29},"end":{"line":240,"column":46}}},"14":{"name":"(anonymous_14)","line":287,"loc":{"start":{"line":287,"column":43},"end":{"line":287,"column":68}}},"15":{"name":"_receive","line":310,"loc":{"start":{"line":310,"column":32},"end":{"line":310,"column":63}}},"16":{"name":"_initializeSettingsManagement","line":342,"loc":{"start":{"line":342,"column":53},"end":{"line":342,"column":102}}},"17":{"name":"(anonymous_17)","line":348,"loc":{"start":{"line":348,"column":25},"end":{"line":348,"column":41}}},"18":{"name":"_receiveSettings","line":362,"loc":{"start":{"line":362,"column":40},"end":{"line":362,"column":73}}},"19":{"name":"set","line":369,"loc":{"start":{"line":369,"column":27},"end":{"line":369,"column":50}}},"20":{"name":"_initializeLifecycleManagement","line":390,"loc":{"start":{"line":390,"column":54},"end":{"line":390,"column":96}}},"21":{"name":"_generatePingId","line":397,"loc":{"start":{"line":397,"column":39},"end":{"line":397,"column":66}}},"22":{"name":"ping","line":408,"loc":{"start":{"line":408,"column":28},"end":{"line":408,"column":52}}},"23":{"name":"_receivePing","line":425,"loc":{"start":{"line":425,"column":36},"end":{"line":425,"column":65}}},"24":{"name":"close","line":450,"loc":{"start":{"line":450,"column":29},"end":{"line":450,"column":51}}},"25":{"name":"_receiveGoaway","line":461,"loc":{"start":{"line":461,"column":38},"end":{"line":461,"column":69}}},"26":{"name":"_initializeFlowControl","line":469,"loc":{"start":{"line":469,"column":46},"end":{"line":469,"column":80}}},"27":{"name":"(anonymous_27)","line":472,"loc":{"start":{"line":472,"column":24},"end":{"line":472,"column":41}}},"28":{"name":"noop","line":481,"loc":{"start":{"line":481,"column":49},"end":{"line":481,"column":65}}},"29":{"name":"noop","line":482,"loc":{"start":{"line":482,"column":57},"end":{"line":482,"column":73}}},"30":{"name":"_setInitialStreamWindowSize","line":492,"loc":{"start":{"line":492,"column":51},"end":{"line":492,"column":94}}},"31":{"name":"(anonymous_31)","line":499,"loc":{"start":{"line":499,"column":28},"end":{"line":499,"column":45}}},"32":{"name":"_setLocalFlowControl","line":507,"loc":{"start":{"line":507,"column":44},"end":{"line":507,"column":83}}},"33":{"name":"_setRemoteFlowControl","line":517,"loc":{"start":{"line":517,"column":45},"end":{"line":517,"column":85}}},"34":{"name":"(anonymous_34)","line":520,"loc":{"start":{"line":520,"column":28},"end":{"line":520,"column":45}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":79}},"2":{"start":{"line":10,"column":0},"end":{"line":10,"column":34}},"3":{"start":{"line":12,"column":0},"end":{"line":12,"column":32}},"4":{"start":{"line":36,"column":0},"end":{"line":56,"column":1}},"5":{"start":{"line":38,"column":2},"end":{"line":38,"column":21}},"6":{"start":{"line":41,"column":2},"end":{"line":41,"column":53}},"7":{"start":{"line":44,"column":2},"end":{"line":44,"column":50}},"8":{"start":{"line":47,"column":2},"end":{"line":47,"column":40}},"9":{"start":{"line":50,"column":2},"end":{"line":50,"column":32}},"10":{"start":{"line":53,"column":2},"end":{"line":53,"column":47}},"11":{"start":{"line":57,"column":0},"end":{"line":57,"column":93}},"12":{"start":{"line":93,"column":0},"end":{"line":93,"column":41}},"13":{"start":{"line":96,"column":0},"end":{"line":115,"column":2}},"14":{"start":{"line":100,"column":2},"end":{"line":100,"column":23}},"15":{"start":{"line":101,"column":2},"end":{"line":101,"column":30}},"16":{"start":{"line":104,"column":2},"end":{"line":104,"column":37}},"17":{"start":{"line":105,"column":2},"end":{"line":105,"column":31}},"18":{"start":{"line":108,"column":2},"end":{"line":108,"column":83}},"19":{"start":{"line":112,"column":2},"end":{"line":112,"column":24}},"20":{"start":{"line":113,"column":2},"end":{"line":113,"column":31}},"21":{"start":{"line":114,"column":2},"end":{"line":114,"column":80}},"22":{"start":{"line":119,"column":0},"end":{"line":128,"column":2}},"23":{"start":{"line":120,"column":2},"end":{"line":127,"column":3}},"24":{"start":{"line":122,"column":4},"end":{"line":122,"column":74}},"25":{"start":{"line":123,"column":4},"end":{"line":123,"column":33}},"26":{"start":{"line":125,"column":4},"end":{"line":125,"column":72}},"27":{"start":{"line":126,"column":4},"end":{"line":126,"column":41}},"28":{"start":{"line":131,"column":0},"end":{"line":134,"column":2}},"29":{"start":{"line":132,"column":2},"end":{"line":132,"column":37}},"30":{"start":{"line":133,"column":2},"end":{"line":133,"column":15}},"31":{"start":{"line":136,"column":0},"end":{"line":142,"column":2}},"32":{"start":{"line":137,"column":2},"end":{"line":141,"column":3}},"33":{"start":{"line":138,"column":4},"end":{"line":138,"column":99}},"34":{"start":{"line":139,"column":4},"end":{"line":139,"column":32}},"35":{"start":{"line":140,"column":4},"end":{"line":140,"column":17}},"36":{"start":{"line":152,"column":0},"end":{"line":180,"column":2}},"37":{"start":{"line":154,"column":2},"end":{"line":170,"column":3}},"38":{"start":{"line":155,"column":4},"end":{"line":155,"column":28}},"39":{"start":{"line":156,"column":4},"end":{"line":156,"column":28}},"40":{"start":{"line":160,"column":7},"end":{"line":170,"column":3}},"41":{"start":{"line":161,"column":4},"end":{"line":161,"column":34}},"42":{"start":{"line":166,"column":4},"end":{"line":167,"column":51}},"43":{"start":{"line":168,"column":4},"end":{"line":168,"column":41}},"44":{"start":{"line":169,"column":4},"end":{"line":169,"column":21}},"45":{"start":{"line":172,"column":2},"end":{"line":172,"column":35}},"46":{"start":{"line":175,"column":2},"end":{"line":175,"column":77}},"47":{"start":{"line":176,"column":2},"end":{"line":176,"column":31}},"48":{"start":{"line":177,"column":2},"end":{"line":177,"column":38}},"49":{"start":{"line":179,"column":2},"end":{"line":179,"column":12}},"50":{"start":{"line":183,"column":0},"end":{"line":189,"column":2}},"51":{"start":{"line":184,"column":2},"end":{"line":184,"column":68}},"52":{"start":{"line":185,"column":2},"end":{"line":185,"column":41}},"53":{"start":{"line":186,"column":2},"end":{"line":186,"column":63}},"54":{"start":{"line":187,"column":2},"end":{"line":187,"column":58}},"55":{"start":{"line":188,"column":2},"end":{"line":188,"column":15}},"56":{"start":{"line":191,"column":0},"end":{"line":197,"column":2}},"57":{"start":{"line":192,"column":2},"end":{"line":196,"column":3}},"58":{"start":{"line":193,"column":4},"end":{"line":193,"column":50}},"59":{"start":{"line":195,"column":4},"end":{"line":195,"column":48}},"60":{"start":{"line":199,"column":0},"end":{"line":209,"column":2}},"61":{"start":{"line":200,"column":2},"end":{"line":200,"column":56}},"62":{"start":{"line":201,"column":2},"end":{"line":201,"column":37}},"63":{"start":{"line":202,"column":2},"end":{"line":202,"column":23}},"64":{"start":{"line":203,"column":2},"end":{"line":203,"column":26}},"65":{"start":{"line":204,"column":2},"end":{"line":206,"column":3}},"66":{"start":{"line":205,"column":4},"end":{"line":205,"column":52}},"67":{"start":{"line":208,"column":2},"end":{"line":208,"column":33}},"68":{"start":{"line":213,"column":0},"end":{"line":222,"column":2}},"69":{"start":{"line":214,"column":2},"end":{"line":214,"column":61}},"70":{"start":{"line":216,"column":2},"end":{"line":216,"column":37}},"71":{"start":{"line":217,"column":2},"end":{"line":217,"column":31}},"72":{"start":{"line":218,"column":2},"end":{"line":218,"column":33}},"73":{"start":{"line":219,"column":2},"end":{"line":219,"column":34}},"74":{"start":{"line":221,"column":2},"end":{"line":221,"column":16}},"75":{"start":{"line":225,"column":0},"end":{"line":233,"column":2}},"76":{"start":{"line":226,"column":2},"end":{"line":226,"column":51}},"77":{"start":{"line":229,"column":2},"end":{"line":229,"column":37}},"78":{"start":{"line":230,"column":2},"end":{"line":230,"column":33}},"79":{"start":{"line":232,"column":2},"end":{"line":232,"column":16}},"80":{"start":{"line":240,"column":0},"end":{"line":306,"column":2}},"81":{"start":{"line":241,"column":2},"end":{"line":241,"column":62}},"82":{"start":{"line":244,"column":0},"end":{"line":303,"column":3}},"83":{"start":{"line":245,"column":2},"end":{"line":303,"column":3}},"84":{"start":{"line":246,"column":4},"end":{"line":246,"column":58}},"85":{"start":{"line":257,"column":4},"end":{"line":257,"column":18}},"86":{"start":{"line":258,"column":4},"end":{"line":302,"column":5}},"87":{"start":{"line":259,"column":6},"end":{"line":259,"column":36}},"88":{"start":{"line":260,"column":6},"end":{"line":260,"column":33}},"89":{"start":{"line":261,"column":6},"end":{"line":261,"column":41}},"90":{"start":{"line":263,"column":6},"end":{"line":301,"column":7}},"91":{"start":{"line":264,"column":8},"end":{"line":264,"column":32}},"92":{"start":{"line":267,"column":11},"end":{"line":301,"column":7}},"93":{"start":{"line":268,"column":8},"end":{"line":268,"column":39}},"94":{"start":{"line":269,"column":8},"end":{"line":269,"column":32}},"95":{"start":{"line":273,"column":8},"end":{"line":273,"column":49}},"96":{"start":{"line":274,"column":8},"end":{"line":278,"column":9}},"97":{"start":{"line":275,"column":10},"end":{"line":275,"column":50}},"98":{"start":{"line":277,"column":10},"end":{"line":277,"column":28}},"99":{"start":{"line":280,"column":8},"end":{"line":283,"column":9}},"100":{"start":{"line":281,"column":10},"end":{"line":281,"column":56}},"101":{"start":{"line":282,"column":10},"end":{"line":282,"column":74}},"102":{"start":{"line":285,"column":8},"end":{"line":285,"column":89}},"103":{"start":{"line":286,"column":8},"end":{"line":286,"column":29}},"104":{"start":{"line":287,"column":8},"end":{"line":289,"column":11}},"105":{"start":{"line":288,"column":10},"end":{"line":288,"column":62}},"106":{"start":{"line":290,"column":8},"end":{"line":292,"column":9}},"107":{"start":{"line":291,"column":10},"end":{"line":291,"column":54}},"108":{"start":{"line":294,"column":8},"end":{"line":300,"column":9}},"109":{"start":{"line":295,"column":10},"end":{"line":295,"column":34}},"110":{"start":{"line":296,"column":15},"end":{"line":300,"column":9}},"111":{"start":{"line":297,"column":10},"end":{"line":297,"column":30}},"112":{"start":{"line":299,"column":10},"end":{"line":299,"column":21}},"113":{"start":{"line":305,"column":2},"end":{"line":305,"column":90}},"114":{"start":{"line":310,"column":0},"end":{"line":332,"column":2}},"115":{"start":{"line":311,"column":2},"end":{"line":311,"column":65}},"116":{"start":{"line":314,"column":2},"end":{"line":314,"column":45}},"117":{"start":{"line":317,"column":2},"end":{"line":319,"column":3}},"118":{"start":{"line":318,"column":4},"end":{"line":318,"column":54}},"119":{"start":{"line":322,"column":2},"end":{"line":324,"column":3}},"120":{"start":{"line":323,"column":4},"end":{"line":323,"column":78}},"121":{"start":{"line":326,"column":2},"end":{"line":326,"column":58}},"122":{"start":{"line":329,"column":2},"end":{"line":329,"column":31}},"123":{"start":{"line":331,"column":2},"end":{"line":331,"column":9}},"124":{"start":{"line":337,"column":0},"end":{"line":339,"column":2}},"125":{"start":{"line":342,"column":0},"end":{"line":359,"column":2}},"126":{"start":{"line":344,"column":2},"end":{"line":344,"column":88}},"127":{"start":{"line":345,"column":2},"end":{"line":345,"column":40}},"128":{"start":{"line":348,"column":2},"end":{"line":355,"column":5}},"129":{"start":{"line":349,"column":4},"end":{"line":354,"column":5}},"130":{"start":{"line":350,"column":6},"end":{"line":350,"column":94}},"131":{"start":{"line":352,"column":6},"end":{"line":352,"column":99}},"132":{"start":{"line":353,"column":6},"end":{"line":353,"column":25}},"133":{"start":{"line":358,"column":2},"end":{"line":358,"column":45}},"134":{"start":{"line":362,"column":0},"end":{"line":366,"column":2}},"135":{"start":{"line":363,"column":2},"end":{"line":365,"column":3}},"136":{"start":{"line":364,"column":4},"end":{"line":364,"column":57}},"137":{"start":{"line":369,"column":0},"end":{"line":378,"column":2}},"138":{"start":{"line":370,"column":2},"end":{"line":374,"column":5}},"139":{"start":{"line":375,"column":2},"end":{"line":377,"column":3}},"140":{"start":{"line":376,"column":4},"end":{"line":376,"column":49}},"141":{"start":{"line":390,"column":0},"end":{"line":394,"column":2}},"142":{"start":{"line":391,"column":2},"end":{"line":391,"column":19}},"143":{"start":{"line":392,"column":2},"end":{"line":392,"column":37}},"144":{"start":{"line":393,"column":2},"end":{"line":393,"column":41}},"145":{"start":{"line":397,"column":0},"end":{"line":405,"column":2}},"146":{"start":{"line":398,"column":2},"end":{"line":403,"column":29}},"147":{"start":{"line":399,"column":4},"end":{"line":399,"column":16}},"148":{"start":{"line":400,"column":4},"end":{"line":402,"column":5}},"149":{"start":{"line":401,"column":6},"end":{"line":401,"column":54}},"150":{"start":{"line":404,"column":2},"end":{"line":404,"column":12}},"151":{"start":{"line":408,"column":0},"end":{"line":422,"column":2}},"152":{"start":{"line":409,"column":2},"end":{"line":409,"column":34}},"153":{"start":{"line":410,"column":2},"end":{"line":410,"column":35}},"154":{"start":{"line":411,"column":2},"end":{"line":411,"column":29}},"155":{"start":{"line":413,"column":2},"end":{"line":413,"column":51}},"156":{"start":{"line":414,"column":2},"end":{"line":421,"column":5}},"157":{"start":{"line":425,"column":0},"end":{"line":447,"column":2}},"158":{"start":{"line":426,"column":2},"end":{"line":446,"column":3}},"159":{"start":{"line":427,"column":4},"end":{"line":427,"column":40}},"160":{"start":{"line":428,"column":4},"end":{"line":434,"column":5}},"161":{"start":{"line":429,"column":6},"end":{"line":429,"column":76}},"162":{"start":{"line":430,"column":6},"end":{"line":430,"column":24}},"163":{"start":{"line":431,"column":6},"end":{"line":431,"column":29}},"164":{"start":{"line":433,"column":6},"end":{"line":433,"column":71}},"165":{"start":{"line":437,"column":4},"end":{"line":437,"column":61}},"166":{"start":{"line":438,"column":4},"end":{"line":445,"column":7}},"167":{"start":{"line":450,"column":0},"end":{"line":459,"column":2}},"168":{"start":{"line":451,"column":2},"end":{"line":451,"column":61}},"169":{"start":{"line":452,"column":2},"end":{"line":457,"column":5}},"170":{"start":{"line":458,"column":2},"end":{"line":458,"column":18}},"171":{"start":{"line":461,"column":0},"end":{"line":464,"column":2}},"172":{"start":{"line":462,"column":2},"end":{"line":462,"column":76}},"173":{"start":{"line":463,"column":2},"end":{"line":463,"column":18}},"174":{"start":{"line":469,"column":0},"end":{"line":483,"column":2}},"175":{"start":{"line":471,"column":2},"end":{"line":471,"column":61}},"176":{"start":{"line":472,"column":2},"end":{"line":477,"column":5}},"177":{"start":{"line":473,"column":4},"end":{"line":473,"column":68}},"178":{"start":{"line":474,"column":4},"end":{"line":476,"column":5}},"179":{"start":{"line":475,"column":6},"end":{"line":475,"column":49}},"180":{"start":{"line":478,"column":2},"end":{"line":478,"column":86}},"181":{"start":{"line":479,"column":2},"end":{"line":479,"column":80}},"182":{"start":{"line":480,"column":2},"end":{"line":480,"column":79}},"183":{"start":{"line":481,"column":2},"end":{"line":481,"column":68}},"184":{"start":{"line":482,"column":2},"end":{"line":482,"column":76}},"185":{"start":{"line":486,"column":0},"end":{"line":486,"column":39}},"186":{"start":{"line":492,"column":0},"end":{"line":503,"column":2}},"187":{"start":{"line":493,"column":2},"end":{"line":502,"column":3}},"188":{"start":{"line":494,"column":4},"end":{"line":494,"column":112}},"189":{"start":{"line":495,"column":4},"end":{"line":495,"column":45}},"190":{"start":{"line":497,"column":4},"end":{"line":497,"column":76}},"191":{"start":{"line":498,"column":4},"end":{"line":498,"column":41}},"192":{"start":{"line":499,"column":4},"end":{"line":501,"column":7}},"193":{"start":{"line":500,"column":6},"end":{"line":500,"column":45}},"194":{"start":{"line":507,"column":0},"end":{"line":515,"column":2}},"195":{"start":{"line":508,"column":2},"end":{"line":514,"column":3}},"196":{"start":{"line":509,"column":4},"end":{"line":509,"column":35}},"197":{"start":{"line":510,"column":4},"end":{"line":510,"column":47}},"198":{"start":{"line":511,"column":9},"end":{"line":514,"column":3}},"199":{"start":{"line":512,"column":4},"end":{"line":512,"column":81}},"200":{"start":{"line":513,"column":4},"end":{"line":513,"column":45}},"201":{"start":{"line":517,"column":0},"end":{"line":527,"column":2}},"202":{"start":{"line":518,"column":2},"end":{"line":526,"column":3}},"203":{"start":{"line":519,"column":4},"end":{"line":519,"column":36}},"204":{"start":{"line":520,"column":4},"end":{"line":522,"column":7}},"205":{"start":{"line":521,"column":6},"end":{"line":521,"column":49}},"206":{"start":{"line":523,"column":9},"end":{"line":526,"column":3}},"207":{"start":{"line":524,"column":4},"end":{"line":524,"column":81}},"208":{"start":{"line":525,"column":4},"end":{"line":525,"column":81}}},"branchMap":{"1":{"line":1,"type":"cond-expr","locations":[{"start":{"line":1,"column":40},"end":{"line":1,"column":57}},{"start":{"line":1,"column":45},"end":{"line":1,"column":78}}]},"2":{"line":120,"type":"if","locations":[{"start":{"line":120,"column":2},"end":{"line":120,"column":2}},{"start":{"line":120,"column":2},"end":{"line":120,"column":2}}]},"3":{"line":120,"type":"binary-expr","locations":[{"start":{"line":120,"column":7},"end":{"line":120,"column":32}},{"start":{"line":120,"column":38},"end":{"line":120,"column":59}},{"start":{"line":121,"column":7},"end":{"line":121,"column":30}},{"start":{"line":121,"column":36},"end":{"line":121,"column":66}}]},"4":{"line":137,"type":"if","locations":[{"start":{"line":137,"column":2},"end":{"line":137,"column":2}},{"start":{"line":137,"column":2},"end":{"line":137,"column":2}}]},"5":{"line":154,"type":"if","locations":[{"start":{"line":154,"column":2},"end":{"line":154,"column":2}},{"start":{"line":154,"column":2},"end":{"line":154,"column":2}}]},"6":{"line":160,"type":"if","locations":[{"start":{"line":160,"column":7},"end":{"line":160,"column":7}},{"start":{"line":160,"column":7},"end":{"line":160,"column":7}}]},"7":{"line":160,"type":"binary-expr","locations":[{"start":{"line":160,"column":12},"end":{"line":160,"column":41}},{"start":{"line":160,"column":47},"end":{"line":160,"column":82}}]},"8":{"line":192,"type":"if","locations":[{"start":{"line":192,"column":2},"end":{"line":192,"column":2}},{"start":{"line":192,"column":2},"end":{"line":192,"column":2}}]},"9":{"line":204,"type":"if","locations":[{"start":{"line":204,"column":2},"end":{"line":204,"column":2}},{"start":{"line":204,"column":2},"end":{"line":204,"column":2}}]},"10":{"line":263,"type":"if","locations":[{"start":{"line":263,"column":6},"end":{"line":263,"column":6}},{"start":{"line":263,"column":6},"end":{"line":263,"column":6}}]},"11":{"line":267,"type":"if","locations":[{"start":{"line":267,"column":11},"end":{"line":267,"column":11}},{"start":{"line":267,"column":11},"end":{"line":267,"column":11}}]},"12":{"line":274,"type":"if","locations":[{"start":{"line":274,"column":8},"end":{"line":274,"column":8}},{"start":{"line":274,"column":8},"end":{"line":274,"column":8}}]},"13":{"line":280,"type":"if","locations":[{"start":{"line":280,"column":8},"end":{"line":280,"column":8}},{"start":{"line":280,"column":8},"end":{"line":280,"column":8}}]},"14":{"line":290,"type":"if","locations":[{"start":{"line":290,"column":8},"end":{"line":290,"column":8}},{"start":{"line":290,"column":8},"end":{"line":290,"column":8}}]},"15":{"line":294,"type":"if","locations":[{"start":{"line":294,"column":8},"end":{"line":294,"column":8}},{"start":{"line":294,"column":8},"end":{"line":294,"column":8}}]},"16":{"line":296,"type":"if","locations":[{"start":{"line":296,"column":15},"end":{"line":296,"column":15}},{"start":{"line":296,"column":15},"end":{"line":296,"column":15}}]},"17":{"line":317,"type":"if","locations":[{"start":{"line":317,"column":2},"end":{"line":317,"column":2}},{"start":{"line":317,"column":2},"end":{"line":317,"column":2}}]},"18":{"line":322,"type":"if","locations":[{"start":{"line":322,"column":2},"end":{"line":322,"column":2}},{"start":{"line":322,"column":2},"end":{"line":322,"column":2}}]},"19":{"line":345,"type":"binary-expr","locations":[{"start":{"line":345,"column":11},"end":{"line":345,"column":19}},{"start":{"line":345,"column":23},"end":{"line":345,"column":38}}]},"20":{"line":349,"type":"if","locations":[{"start":{"line":349,"column":4},"end":{"line":349,"column":4}},{"start":{"line":349,"column":4},"end":{"line":349,"column":4}}]},"21":{"line":349,"type":"binary-expr","locations":[{"start":{"line":349,"column":9},"end":{"line":349,"column":27}},{"start":{"line":349,"column":33},"end":{"line":349,"column":58}}]},"22":{"line":426,"type":"if","locations":[{"start":{"line":426,"column":2},"end":{"line":426,"column":2}},{"start":{"line":426,"column":2},"end":{"line":426,"column":2}}]},"23":{"line":428,"type":"if","locations":[{"start":{"line":428,"column":4},"end":{"line":428,"column":4}},{"start":{"line":428,"column":4},"end":{"line":428,"column":4}}]},"24":{"line":456,"type":"binary-expr","locations":[{"start":{"line":456,"column":11},"end":{"line":456,"column":16}},{"start":{"line":456,"column":20},"end":{"line":456,"column":30}}]},"25":{"line":474,"type":"if","locations":[{"start":{"line":474,"column":4},"end":{"line":474,"column":4}},{"start":{"line":474,"column":4},"end":{"line":474,"column":4}}]},"26":{"line":493,"type":"if","locations":[{"start":{"line":493,"column":2},"end":{"line":493,"column":2}},{"start":{"line":493,"column":2},"end":{"line":493,"column":2}}]},"27":{"line":493,"type":"binary-expr","locations":[{"start":{"line":493,"column":7},"end":{"line":493,"column":49}},{"start":{"line":493,"column":55},"end":{"line":493,"column":72}}]},"28":{"line":508,"type":"if","locations":[{"start":{"line":508,"column":2},"end":{"line":508,"column":2}},{"start":{"line":508,"column":2},"end":{"line":508,"column":2}}]},"29":{"line":511,"type":"if","locations":[{"start":{"line":511,"column":9},"end":{"line":511,"column":9}},{"start":{"line":511,"column":9},"end":{"line":511,"column":9}}]},"30":{"line":518,"type":"if","locations":[{"start":{"line":518,"column":2},"end":{"line":518,"column":2}},{"start":{"line":518,"column":2},"end":{"line":518,"column":2}}]},"31":{"line":523,"type":"if","locations":[{"start":{"line":523,"column":9},"end":{"line":523,"column":9}},{"start":{"line":523,"column":9},"end":{"line":523,"column":9}}]}}},"/data/upstream/node-http2/lib/flow.js":{"path":"/data/upstream/node-http2/lib/flow.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":164,"7":164,"8":164,"9":164,"10":164,"11":164,"12":164,"13":1,"14":1,"15":1,"16":1,"17":329,"18":329,"19":63,"20":329,"21":106,"22":106,"23":106,"24":12,"25":106,"26":223,"27":329,"28":5,"29":1,"30":12,"31":12,"32":6,"33":6,"34":1,"35":45,"36":45,"37":1,"38":1,"39":1,"40":1392,"41":1291,"42":101,"43":7,"44":7,"45":7,"46":7,"47":8,"48":7,"49":1392,"50":1,"51":1,"52":285,"53":378,"54":378,"55":278,"56":100,"57":7,"58":93,"59":93,"60":93,"61":93,"62":93,"63":378,"64":378,"65":371,"66":371,"67":144,"68":144,"69":144,"70":371,"71":378,"72":285,"73":7,"74":285,"75":1,"76":193,"77":6,"78":187,"79":187,"80":187,"81":193,"82":192,"83":1,"84":1,"85":1,"86":36,"87":36,"88":1,"89":1,"90":94,"91":1,"92":1,"93":93,"94":93,"95":93,"96":1,"97":1,"98":92,"99":1,"100":5,"101":1,"102":59,"103":59,"104":1,"105":1},"b":{"1":[1,0],"2":[63,266],"3":[106,223],"4":[329,192,135],"5":[12,94],"6":[5,324],"7":[329,5,5],"8":[6,6],"9":[12,6,6],"10":[1291,101],"11":[7,94],"12":[15,14],"13":[7,7,1,1],"14":[378,100],"15":[278,100],"16":[378,372,202,154],"17":[7,93],"18":[371,7],"19":[144,227],"20":[371,365,195],"21":[7,278],"22":[6,187],"23":[187,142],"24":[192,1],"25":[36,36],"26":[1,93],"27":[94,2],"28":[1,92],"29":[93,44],"30":[0,5]},"f":{"1":0,"2":164,"3":1,"4":329,"5":106,"6":12,"7":45,"8":1,"9":1392,"10":285,"11":193,"12":36,"13":94,"14":5,"15":59,"16":1},"fnMap":{"1":{"name":"noop","line":1,"loc":{"start":{"line":1,"column":45},"end":{"line":1,"column":76}}},"2":{"name":"Flow","line":72,"loc":{"start":{"line":72,"column":0},"end":{"line":72,"column":29}}},"3":{"name":"_receive","line":89,"loc":{"start":{"line":89,"column":26},"end":{"line":89,"column":61}}},"4":{"name":"_write","line":97,"loc":{"start":{"line":97,"column":24},"end":{"line":97,"column":67}}},"5":{"name":"(anonymous_5)","line":105,"loc":{"start":{"line":105,"column":25},"end":{"line":105,"column":36}}},"6":{"name":"_restoreWindow","line":126,"loc":{"start":{"line":126,"column":32},"end":{"line":126,"column":58}}},"7":{"name":"disableRemoteFlowControl","line":139,"loc":{"start":{"line":139,"column":42},"end":{"line":139,"column":78}}},"8":{"name":"_send","line":163,"loc":{"start":{"line":163,"column":23},"end":{"line":163,"column":40}}},"9":{"name":"_read","line":170,"loc":{"start":{"line":170,"column":23},"end":{"line":170,"column":40}}},"10":{"name":"_push","line":204,"loc":{"start":{"line":204,"column":23},"end":{"line":204,"column":64}}},"11":{"name":"push","line":254,"loc":{"start":{"line":254,"column":22},"end":{"line":254,"column":43}}},"12":{"name":"getLastQueuedFrame","line":273,"loc":{"start":{"line":273,"column":36},"end":{"line":273,"column":66}}},"13":{"name":"_increaseWindow","line":291,"loc":{"start":{"line":291,"column":33},"end":{"line":291,"column":64}}},"14":{"name":"_updateWindow","line":315,"loc":{"start":{"line":315,"column":31},"end":{"line":315,"column":61}}},"15":{"name":"setInitialWindow","line":323,"loc":{"start":{"line":323,"column":34},"end":{"line":323,"column":75}}},"16":{"name":"disableLocalFlowControl","line":329,"loc":{"start":{"line":329,"column":41},"end":{"line":329,"column":76}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":79}},"2":{"start":{"line":10,"column":0},"end":{"line":10,"column":39}},"3":{"start":{"line":12,"column":0},"end":{"line":12,"column":20}},"4":{"start":{"line":69,"column":0},"end":{"line":69,"column":32}},"5":{"start":{"line":72,"column":0},"end":{"line":82,"column":1}},"6":{"start":{"line":73,"column":2},"end":{"line":73,"column":42}},"7":{"start":{"line":75,"column":2},"end":{"line":75,"column":59}},"8":{"start":{"line":76,"column":2},"end":{"line":76,"column":38}},"9":{"start":{"line":77,"column":2},"end":{"line":77,"column":19}},"10":{"start":{"line":79,"column":2},"end":{"line":79,"column":22}},"11":{"start":{"line":80,"column":2},"end":{"line":80,"column":21}},"12":{"start":{"line":81,"column":2},"end":{"line":81,"column":42}},"13":{"start":{"line":83,"column":0},"end":{"line":83,"column":83}},"14":{"start":{"line":89,"column":0},"end":{"line":91,"column":2}},"15":{"start":{"line":90,"column":2},"end":{"line":90,"column":99}},"16":{"start":{"line":97,"column":0},"end":{"line":122,"column":2}},"17":{"start":{"line":98,"column":2},"end":{"line":98,"column":32}},"18":{"start":{"line":100,"column":2},"end":{"line":102,"column":3}},"19":{"start":{"line":101,"column":4},"end":{"line":101,"column":23}},"20":{"start":{"line":104,"column":2},"end":{"line":116,"column":3}},"21":{"start":{"line":105,"column":4},"end":{"line":111,"column":18}},"22":{"start":{"line":106,"column":6},"end":{"line":106,"column":42}},"23":{"start":{"line":107,"column":6},"end":{"line":109,"column":7}},"24":{"start":{"line":108,"column":8},"end":{"line":108,"column":80}},"25":{"start":{"line":110,"column":6},"end":{"line":110,"column":17}},"26":{"start":{"line":115,"column":4},"end":{"line":115,"column":35}},"27":{"start":{"line":118,"column":2},"end":{"line":121,"column":3}},"28":{"start":{"line":120,"column":4},"end":{"line":120,"column":30}},"29":{"start":{"line":126,"column":0},"end":{"line":136,"column":2}},"30":{"start":{"line":127,"column":2},"end":{"line":127,"column":34}},"31":{"start":{"line":128,"column":2},"end":{"line":135,"column":3}},"32":{"start":{"line":129,"column":4},"end":{"line":133,"column":7}},"33":{"start":{"line":134,"column":4},"end":{"line":134,"column":23}},"34":{"start":{"line":139,"column":0},"end":{"line":142,"column":2}},"35":{"start":{"line":140,"column":2},"end":{"line":140,"column":53}},"36":{"start":{"line":141,"column":2},"end":{"line":141,"column":41}},"37":{"start":{"line":163,"column":0},"end":{"line":165,"column":2}},"38":{"start":{"line":164,"column":2},"end":{"line":164,"column":81}},"39":{"start":{"line":170,"column":0},"end":{"line":192,"column":2}},"40":{"start":{"line":172,"column":2},"end":{"line":189,"column":3}},"41":{"start":{"line":173,"column":4},"end":{"line":173,"column":17}},"42":{"start":{"line":178,"column":7},"end":{"line":189,"column":3}},"43":{"start":{"line":179,"column":4},"end":{"line":179,"column":14}},"44":{"start":{"line":180,"column":4},"end":{"line":180,"column":26}},"45":{"start":{"line":181,"column":4},"end":{"line":181,"column":65}},"46":{"start":{"line":182,"column":4},"end":{"line":184,"column":5}},"47":{"start":{"line":183,"column":6},"end":{"line":183,"column":55}},"48":{"start":{"line":186,"column":4},"end":{"line":188,"column":71}},"49":{"start":{"line":191,"column":2},"end":{"line":191,"column":38}},"50":{"start":{"line":202,"column":0},"end":{"line":202,"column":28}},"51":{"start":{"line":204,"column":0},"end":{"line":251,"column":2}},"52":{"start":{"line":205,"column":2},"end":{"line":244,"column":36}},"53":{"start":{"line":206,"column":4},"end":{"line":206,"column":55}},"54":{"start":{"line":207,"column":4},"end":{"line":229,"column":5}},"55":{"start":{"line":209,"column":6},"end":{"line":209,"column":26}},"56":{"start":{"line":212,"column":9},"end":{"line":229,"column":5}},"57":{"start":{"line":213,"column":6},"end":{"line":213,"column":24}},"58":{"start":{"line":217,"column":6},"end":{"line":217,"column":63}},"59":{"start":{"line":218,"column":6},"end":{"line":223,"column":8}},"60":{"start":{"line":225,"column":6},"end":{"line":226,"column":73}},"61":{"start":{"line":227,"column":6},"end":{"line":227,"column":47}},"62":{"start":{"line":228,"column":6},"end":{"line":228,"column":24}},"63":{"start":{"line":231,"column":4},"end":{"line":231,"column":26}},"64":{"start":{"line":232,"column":4},"end":{"line":241,"column":5}},"65":{"start":{"line":233,"column":6},"end":{"line":233,"column":85}},"66":{"start":{"line":234,"column":6},"end":{"line":239,"column":7}},"67":{"start":{"line":235,"column":8},"end":{"line":236,"column":65}},"68":{"start":{"line":237,"column":8},"end":{"line":237,"column":48}},"69":{"start":{"line":238,"column":8},"end":{"line":238,"column":34}},"70":{"start":{"line":240,"column":6},"end":{"line":240,"column":65}},"71":{"start":{"line":243,"column":4},"end":{"line":243,"column":22}},"72":{"start":{"line":246,"column":2},"end":{"line":248,"column":3}},"73":{"start":{"line":247,"column":4},"end":{"line":247,"column":33}},"74":{"start":{"line":250,"column":2},"end":{"line":250,"column":20}},"75":{"start":{"line":254,"column":0},"end":{"line":269,"column":2}},"76":{"start":{"line":255,"column":2},"end":{"line":261,"column":3}},"77":{"start":{"line":256,"column":4},"end":{"line":256,"column":57}},"78":{"start":{"line":258,"column":4},"end":{"line":258,"column":36}},"79":{"start":{"line":259,"column":4},"end":{"line":259,"column":67}},"80":{"start":{"line":260,"column":4},"end":{"line":260,"column":32}},"81":{"start":{"line":263,"column":2},"end":{"line":268,"column":3}},"82":{"start":{"line":264,"column":4},"end":{"line":264,"column":65}},"83":{"start":{"line":266,"column":4},"end":{"line":266,"column":28}},"84":{"start":{"line":267,"column":4},"end":{"line":267,"column":16}},"85":{"start":{"line":273,"column":0},"end":{"line":276,"column":2}},"86":{"start":{"line":274,"column":2},"end":{"line":274,"column":49}},"87":{"start":{"line":275,"column":2},"end":{"line":275,"column":88}},"88":{"start":{"line":289,"column":0},"end":{"line":289,"column":44}},"89":{"start":{"line":291,"column":0},"end":{"line":305,"column":2}},"90":{"start":{"line":292,"column":2},"end":{"line":304,"column":3}},"91":{"start":{"line":293,"column":4},"end":{"line":293,"column":97}},"92":{"start":{"line":294,"column":4},"end":{"line":294,"column":45}},"93":{"start":{"line":296,"column":4},"end":{"line":296,"column":96}},"94":{"start":{"line":297,"column":4},"end":{"line":297,"column":25}},"95":{"start":{"line":298,"column":4},"end":{"line":303,"column":5}},"96":{"start":{"line":299,"column":6},"end":{"line":299,"column":61}},"97":{"start":{"line":300,"column":6},"end":{"line":300,"column":47}},"98":{"start":{"line":302,"column":6},"end":{"line":302,"column":19}},"99":{"start":{"line":315,"column":0},"end":{"line":317,"column":2}},"100":{"start":{"line":316,"column":2},"end":{"line":316,"column":84}},"101":{"start":{"line":323,"column":0},"end":{"line":326,"column":2}},"102":{"start":{"line":324,"column":2},"end":{"line":324,"column":60}},"103":{"start":{"line":325,"column":2},"end":{"line":325,"column":38}},"104":{"start":{"line":329,"column":0},"end":{"line":331,"column":2}},"105":{"start":{"line":330,"column":2},"end":{"line":330,"column":33}}},"branchMap":{"1":{"line":1,"type":"cond-expr","locations":[{"start":{"line":1,"column":40},"end":{"line":1,"column":57}},{"start":{"line":1,"column":45},"end":{"line":1,"column":78}}]},"2":{"line":100,"type":"if","locations":[{"start":{"line":100,"column":2},"end":{"line":100,"column":2}},{"start":{"line":100,"column":2},"end":{"line":100,"column":2}}]},"3":{"line":104,"type":"if","locations":[{"start":{"line":104,"column":2},"end":{"line":104,"column":2}},{"start":{"line":104,"column":2},"end":{"line":104,"column":2}}]},"4":{"line":104,"type":"binary-expr","locations":[{"start":{"line":104,"column":7},"end":{"line":104,"column":28}},{"start":{"line":104,"column":34},"end":{"line":104,"column":55}},{"start":{"line":104,"column":60},"end":{"line":104,"column":92}}]},"5":{"line":107,"type":"if","locations":[{"start":{"line":107,"column":6},"end":{"line":107,"column":6}},{"start":{"line":107,"column":6},"end":{"line":107,"column":6}}]},"6":{"line":118,"type":"if","locations":[{"start":{"line":118,"column":2},"end":{"line":118,"column":2}},{"start":{"line":118,"column":2},"end":{"line":118,"column":2}}]},"7":{"line":118,"type":"binary-expr","locations":[{"start":{"line":118,"column":7},"end":{"line":118,"column":37}},{"start":{"line":119,"column":8},"end":{"line":119,"column":41}},{"start":{"line":119,"column":47},"end":{"line":119,"column":83}}]},"8":{"line":128,"type":"if","locations":[{"start":{"line":128,"column":2},"end":{"line":128,"column":2}},{"start":{"line":128,"column":2},"end":{"line":128,"column":2}}]},"9":{"line":128,"type":"binary-expr","locations":[{"start":{"line":128,"column":6},"end":{"line":128,"column":18}},{"start":{"line":128,"column":22},"end":{"line":128,"column":54}},{"start":{"line":128,"column":59},"end":{"line":128,"column":77}}]},"10":{"line":172,"type":"if","locations":[{"start":{"line":172,"column":2},"end":{"line":172,"column":2}},{"start":{"line":172,"column":2},"end":{"line":172,"column":2}}]},"11":{"line":178,"type":"if","locations":[{"start":{"line":178,"column":7},"end":{"line":178,"column":7}},{"start":{"line":178,"column":7},"end":{"line":178,"column":7}}]},"12":{"line":182,"type":"binary-expr","locations":[{"start":{"line":182,"column":11},"end":{"line":182,"column":21}},{"start":{"line":182,"column":26},"end":{"line":182,"column":53}}]},"13":{"line":186,"type":"binary-expr","locations":[{"start":{"line":186,"column":12},"end":{"line":186,"column":31}},{"start":{"line":187,"column":12},"end":{"line":187,"column":36}},{"start":{"line":188,"column":13},"end":{"line":188,"column":31}},{"start":{"line":188,"column":37},"end":{"line":188,"column":67}}]},"14":{"line":244,"type":"binary-expr","locations":[{"start":{"line":244,"column":11},"end":{"line":244,"column":20}},{"start":{"line":244,"column":24},"end":{"line":244,"column":34}}]},"15":{"line":207,"type":"if","locations":[{"start":{"line":207,"column":4},"end":{"line":207,"column":4}},{"start":{"line":207,"column":4},"end":{"line":207,"column":4}}]},"16":{"line":207,"type":"binary-expr","locations":[{"start":{"line":207,"column":9},"end":{"line":207,"column":23}},{"start":{"line":207,"column":29},"end":{"line":207,"column":50}},{"start":{"line":208,"column":10},"end":{"line":208,"column":43}},{"start":{"line":208,"column":49},"end":{"line":208,"column":86}}]},"17":{"line":212,"type":"if","locations":[{"start":{"line":212,"column":9},"end":{"line":212,"column":9}},{"start":{"line":212,"column":9},"end":{"line":212,"column":9}}]},"18":{"line":232,"type":"if","locations":[{"start":{"line":232,"column":4},"end":{"line":232,"column":4}},{"start":{"line":232,"column":4},"end":{"line":232,"column":4}}]},"19":{"line":234,"type":"if","locations":[{"start":{"line":234,"column":6},"end":{"line":234,"column":6}},{"start":{"line":234,"column":6},"end":{"line":234,"column":6}}]},"20":{"line":234,"type":"binary-expr","locations":[{"start":{"line":234,"column":10},"end":{"line":234,"column":21}},{"start":{"line":234,"column":26},"end":{"line":234,"column":53}},{"start":{"line":234,"column":59},"end":{"line":234,"column":84}}]},"21":{"line":246,"type":"if","locations":[{"start":{"line":246,"column":2},"end":{"line":246,"column":2}},{"start":{"line":246,"column":2},"end":{"line":246,"column":2}}]},"22":{"line":255,"type":"if","locations":[{"start":{"line":255,"column":2},"end":{"line":255,"column":2}},{"start":{"line":255,"column":2},"end":{"line":255,"column":2}}]},"23":{"line":258,"type":"binary-expr","locations":[{"start":{"line":258,"column":18},"end":{"line":258,"column":29}},{"start":{"line":258,"column":33},"end":{"line":258,"column":35}}]},"24":{"line":263,"type":"if","locations":[{"start":{"line":263,"column":2},"end":{"line":263,"column":2}},{"start":{"line":263,"column":2},"end":{"line":263,"column":2}}]},"25":{"line":275,"type":"binary-expr","locations":[{"start":{"line":275,"column":9},"end":{"line":275,"column":44}},{"start":{"line":275,"column":48},"end":{"line":275,"column":87}}]},"26":{"line":292,"type":"if","locations":[{"start":{"line":292,"column":2},"end":{"line":292,"column":2}},{"start":{"line":292,"column":2},"end":{"line":292,"column":2}}]},"27":{"line":292,"type":"binary-expr","locations":[{"start":{"line":292,"column":7},"end":{"line":292,"column":32}},{"start":{"line":292,"column":38},"end":{"line":292,"column":55}}]},"28":{"line":298,"type":"if","locations":[{"start":{"line":298,"column":4},"end":{"line":298,"column":4}},{"start":{"line":298,"column":4},"end":{"line":298,"column":4}}]},"29":{"line":298,"type":"binary-expr","locations":[{"start":{"line":298,"column":9},"end":{"line":298,"column":34}},{"start":{"line":298,"column":40},"end":{"line":298,"column":72}}]},"30":{"line":316,"type":"cond-expr","locations":[{"start":{"line":316,"column":54},"end":{"line":316,"column":62}},{"start":{"line":316,"column":65},"end":{"line":316,"column":82}}]}}},"/data/upstream/node-http2/lib/stream.js":{"path":"/data/upstream/node-http2/lib/stream.js","s":{"1":1,"2":1,"3":1,"4":1,"5":105,"6":105,"7":105,"8":105,"9":105,"10":1,"11":1,"12":1,"13":1,"14":105,"15":105,"16":105,"17":105,"18":6,"19":105,"20":43,"21":0,"22":43,"23":105,"24":0,"25":1,"26":6,"27":6,"28":6,"29":6,"30":1,"31":44,"32":1,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":1,"44":26,"45":19,"46":19,"47":1,"48":1,"49":105,"50":105,"51":105,"52":105,"53":105,"54":105,"55":105,"56":105,"57":1,"58":97,"59":97,"60":97,"61":48,"62":48,"63":0,"64":0,"65":49,"66":97,"67":35,"68":97,"69":97,"70":1,"71":38,"72":0,"73":0,"74":0,"75":1,"76":19,"77":19,"78":19,"79":0,"80":1,"81":809,"82":0,"83":0,"84":0,"85":1,"86":36,"87":36,"88":36,"89":7,"90":7,"91":7,"92":7,"93":29,"94":1,"95":105,"96":105,"97":105,"98":105,"99":105,"100":105,"101":1,"102":161,"103":161,"104":161,"105":161,"106":1,"107":234,"108":1,"109":285,"110":285,"111":285,"112":285,"113":285,"114":115,"115":115,"116":95,"117":95,"118":8,"119":8,"120":33,"121":33,"122":24,"123":24,"124":10,"125":10,"126":285,"127":285,"128":57,"129":42,"130":42,"131":3,"132":42,"133":15,"134":6,"135":9,"136":57,"137":18,"138":4,"139":14,"140":6,"141":8,"142":8,"143":18,"144":18,"145":6,"146":12,"147":4,"148":8,"149":8,"150":18,"151":65,"152":29,"153":36,"154":2,"155":65,"156":62,"157":24,"158":38,"159":3,"160":62,"161":40,"162":22,"163":18,"164":3,"165":40,"166":25,"167":14,"168":25,"169":285,"170":66,"171":66,"172":285,"173":13,"174":13,"175":13,"176":285,"177":117,"178":117,"179":60,"180":57,"181":168,"182":89,"183":285,"184":45,"185":45,"186":20,"187":20,"188":25,"189":25,"190":25,"191":1,"192":1,"193":1,"194":6,"195":2,"196":2,"197":6},"b":{"1":[1,0],"2":[0,43],"3":[0,0],"4":[0,0,0],"5":[0,0],"6":[0,0],"7":[0,0,0],"8":[19,7],"9":[48,49],"10":[0,48],"11":[35,62],"12":[97,0],"13":[0,38],"14":[19,0],"15":[0,809],"16":[7,29],"17":[36,7,4],"18":[7,0],"19":[234,139,123],"20":[115,95,8,33,24,10],"21":[57,18,18,65,62,40,25],"22":[42,15],"23":[3,39],"24":[0,3],"25":[6,9],"26":[15,10],"27":[4,14],"28":[18,13],"29":[6,8],"30":[0,8],"31":[8,4],"32":[6,12],"33":[4,8],"34":[12,8],"35":[0,8],"36":[8,4],"37":[29,36],"38":[19,10],"39":[2,34],"40":[24,38],"41":[62,60,57],"42":[35,3],"43":[38,3,3,3],"44":[22,18],"45":[40,35,32],"46":[15,3],"47":[18,3,3,3],"48":[11,14],"49":[25,7,23,18,12,6,5,4],"50":[66,219],"51":[285,91],"52":[13,272],"53":[285,24],"54":[6,7],"55":[117,168],"56":[60,57],"57":[89,79],"58":[45,240],"59":[20,25],"60":[2,4]},"f":{"1":0,"2":105,"3":105,"4":6,"5":43,"6":0,"7":6,"8":44,"9":0,"10":26,"11":105,"12":97,"13":38,"14":19,"15":809,"16":36,"17":105,"18":161,"19":234,"20":285,"21":6},"fnMap":{"1":{"name":"noop","line":1,"loc":{"start":{"line":1,"column":45},"end":{"line":1,"column":76}}},"2":{"name":"Stream","line":47,"loc":{"start":{"line":47,"column":0},"end":{"line":47,"column":21}}},"3":{"name":"_initializeManagement","line":73,"loc":{"start":{"line":73,"column":41},"end":{"line":73,"column":74}}},"4":{"name":"(anonymous_4)","line":77,"loc":{"start":{"line":77,"column":26},"end":{"line":77,"column":42}}},"5":{"name":"(anonymous_5)","line":80,"loc":{"start":{"line":80,"column":21},"end":{"line":80,"column":37}}},"6":{"name":"(anonymous_6)","line":86,"loc":{"start":{"line":86,"column":22},"end":{"line":86,"column":38}}},"7":{"name":"promise","line":91,"loc":{"start":{"line":91,"column":27},"end":{"line":91,"column":53}}},"8":{"name":"headers","line":102,"loc":{"start":{"line":102,"column":27},"end":{"line":102,"column":53}}},"9":{"name":"priority","line":109,"loc":{"start":{"line":109,"column":28},"end":{"line":109,"column":62}}},"10":{"name":"reset","line":133,"loc":{"start":{"line":133,"column":25},"end":{"line":133,"column":47}}},"11":{"name":"_initializeDataFlow","line":178,"loc":{"start":{"line":178,"column":39},"end":{"line":178,"column":70}}},"12":{"name":"_receive","line":191,"loc":{"start":{"line":191,"column":28},"end":{"line":191,"column":60}}},"13":{"name":"_read","line":223,"loc":{"start":{"line":223,"column":25},"end":{"line":223,"column":42}}},"14":{"name":"_write","line":232,"loc":{"start":{"line":232,"column":26},"end":{"line":232,"column":67}}},"15":{"name":"_send","line":250,"loc":{"start":{"line":250,"column":25},"end":{"line":250,"column":42}}},"16":{"name":"_finishing","line":262,"loc":{"start":{"line":262,"column":30},"end":{"line":262,"column":52}}},"17":{"name":"_initializeState","line":309,"loc":{"start":{"line":309,"column":36},"end":{"line":309,"column":64}}},"18":{"name":"transition","line":320,"loc":{"start":{"line":320,"column":29},"end":{"line":320,"column":56}}},"19":{"name":"activeState","line":329,"loc":{"start":{"line":329,"column":0},"end":{"line":329,"column":28}}},"20":{"name":"transition","line":336,"loc":{"start":{"line":336,"column":31},"end":{"line":336,"column":67}}},"21":{"name":"(anonymous_21)","line":564,"loc":{"start":{"line":564,"column":24},"end":{"line":564,"column":41}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":79}},"2":{"start":{"line":12,"column":0},"end":{"line":12,"column":38}},"3":{"start":{"line":14,"column":0},"end":{"line":14,"column":24}},"4":{"start":{"line":47,"column":0},"end":{"line":61,"column":1}},"5":{"start":{"line":48,"column":2},"end":{"line":48,"column":20}},"6":{"start":{"line":51,"column":2},"end":{"line":51,"column":58}},"7":{"start":{"line":54,"column":2},"end":{"line":54,"column":31}},"8":{"start":{"line":57,"column":2},"end":{"line":57,"column":29}},"9":{"start":{"line":60,"column":2},"end":{"line":60,"column":26}},"10":{"start":{"line":63,"column":0},"end":{"line":63,"column":87}},"11":{"start":{"line":69,"column":0},"end":{"line":69,"column":39}},"12":{"start":{"line":70,"column":0},"end":{"line":70,"column":39}},"13":{"start":{"line":73,"column":0},"end":{"line":89,"column":2}},"14":{"start":{"line":74,"column":2},"end":{"line":74,"column":26}},"15":{"start":{"line":75,"column":2},"end":{"line":75,"column":36}},"16":{"start":{"line":76,"column":2},"end":{"line":76,"column":33}},"17":{"start":{"line":77,"column":2},"end":{"line":79,"column":5}},"18":{"start":{"line":78,"column":4},"end":{"line":78,"column":63}},"19":{"start":{"line":80,"column":2},"end":{"line":85,"column":5}},"20":{"start":{"line":81,"column":4},"end":{"line":83,"column":5}},"21":{"start":{"line":82,"column":6},"end":{"line":82,"column":42}},"22":{"start":{"line":84,"column":4},"end":{"line":84,"column":40}},"23":{"start":{"line":86,"column":2},"end":{"line":88,"column":5}},"24":{"start":{"line":87,"column":4},"end":{"line":87,"column":40}},"25":{"start":{"line":91,"column":0},"end":{"line":100,"column":2}},"26":{"start":{"line":92,"column":2},"end":{"line":92,"column":37}},"27":{"start":{"line":93,"column":2},"end":{"line":93,"column":64}},"28":{"start":{"line":94,"column":2},"end":{"line":98,"column":5}},"29":{"start":{"line":99,"column":2},"end":{"line":99,"column":16}},"30":{"start":{"line":102,"column":0},"end":{"line":107,"column":2}},"31":{"start":{"line":103,"column":2},"end":{"line":106,"column":5}},"32":{"start":{"line":109,"column":0},"end":{"line":129,"column":2}},"33":{"start":{"line":110,"column":2},"end":{"line":128,"column":3}},"34":{"start":{"line":111,"column":4},"end":{"line":123,"column":5}},"35":{"start":{"line":112,"column":6},"end":{"line":112,"column":38}},"36":{"start":{"line":114,"column":6},"end":{"line":114,"column":57}},"37":{"start":{"line":115,"column":6},"end":{"line":122,"column":7}},"38":{"start":{"line":116,"column":8},"end":{"line":116,"column":38}},"39":{"start":{"line":118,"column":8},"end":{"line":121,"column":11}},"40":{"start":{"line":125,"column":4},"end":{"line":125,"column":65}},"41":{"start":{"line":126,"column":4},"end":{"line":126,"column":36}},"42":{"start":{"line":127,"column":4},"end":{"line":127,"column":30}},"43":{"start":{"line":133,"column":0},"end":{"line":141,"column":2}},"44":{"start":{"line":134,"column":2},"end":{"line":140,"column":3}},"45":{"start":{"line":135,"column":4},"end":{"line":135,"column":27}},"46":{"start":{"line":136,"column":4},"end":{"line":139,"column":7}},"47":{"start":{"line":176,"column":0},"end":{"line":176,"column":34}},"48":{"start":{"line":178,"column":0},"end":{"line":188,"column":2}},"49":{"start":{"line":179,"column":2},"end":{"line":179,"column":29}},"50":{"start":{"line":180,"column":2},"end":{"line":180,"column":33}},"51":{"start":{"line":181,"column":2},"end":{"line":181,"column":46}},"52":{"start":{"line":182,"column":2},"end":{"line":182,"column":52}},"53":{"start":{"line":183,"column":2},"end":{"line":183,"column":63}},"54":{"start":{"line":184,"column":2},"end":{"line":184,"column":67}},"55":{"start":{"line":185,"column":2},"end":{"line":185,"column":59}},"56":{"start":{"line":187,"column":2},"end":{"line":187,"column":37}},"57":{"start":{"line":191,"column":0},"end":{"line":219,"column":2}},"58":{"start":{"line":192,"column":2},"end":{"line":192,"column":55}},"59":{"start":{"line":194,"column":2},"end":{"line":194,"column":23}},"60":{"start":{"line":198,"column":2},"end":{"line":209,"column":3}},"61":{"start":{"line":199,"column":4},"end":{"line":199,"column":43}},"62":{"start":{"line":200,"column":4},"end":{"line":203,"column":5}},"63":{"start":{"line":201,"column":6},"end":{"line":201,"column":32}},"64":{"start":{"line":202,"column":6},"end":{"line":202,"column":24}},"65":{"start":{"line":208,"column":4},"end":{"line":208,"column":33}},"66":{"start":{"line":212,"column":2},"end":{"line":214,"column":3}},"67":{"start":{"line":213,"column":4},"end":{"line":213,"column":20}},"68":{"start":{"line":216,"column":2},"end":{"line":218,"column":3}},"69":{"start":{"line":217,"column":4},"end":{"line":217,"column":12}},"70":{"start":{"line":223,"column":0},"end":{"line":229,"column":2}},"71":{"start":{"line":224,"column":2},"end":{"line":228,"column":3}},"72":{"start":{"line":225,"column":4},"end":{"line":225,"column":40}},"73":{"start":{"line":226,"column":4},"end":{"line":226,"column":29}},"74":{"start":{"line":227,"column":4},"end":{"line":227,"column":18}},"75":{"start":{"line":232,"column":0},"end":{"line":245,"column":2}},"76":{"start":{"line":234,"column":2},"end":{"line":237,"column":5}},"77":{"start":{"line":240,"column":2},"end":{"line":244,"column":3}},"78":{"start":{"line":241,"column":4},"end":{"line":241,"column":12}},"79":{"start":{"line":243,"column":4},"end":{"line":243,"column":27}},"80":{"start":{"line":250,"column":0},"end":{"line":256,"column":2}},"81":{"start":{"line":251,"column":2},"end":{"line":255,"column":3}},"82":{"start":{"line":252,"column":4},"end":{"line":252,"column":34}},"83":{"start":{"line":253,"column":4},"end":{"line":253,"column":26}},"84":{"start":{"line":254,"column":4},"end":{"line":254,"column":15}},"85":{"start":{"line":262,"column":0},"end":{"line":277,"column":2}},"86":{"start":{"line":263,"column":2},"end":{"line":267,"column":4}},"87":{"start":{"line":268,"column":2},"end":{"line":268,"column":53}},"88":{"start":{"line":269,"column":2},"end":{"line":276,"column":3}},"89":{"start":{"line":270,"column":4},"end":{"line":270,"column":86}},"90":{"start":{"line":271,"column":4},"end":{"line":271,"column":44}},"91":{"start":{"line":272,"column":4},"end":{"line":272,"column":38}},"92":{"start":{"line":273,"column":4},"end":{"line":273,"column":37}},"93":{"start":{"line":275,"column":4},"end":{"line":275,"column":33}},"94":{"start":{"line":309,"column":0},"end":{"line":316,"column":2}},"95":{"start":{"line":310,"column":2},"end":{"line":310,"column":22}},"96":{"start":{"line":311,"column":2},"end":{"line":311,"column":30}},"97":{"start":{"line":312,"column":2},"end":{"line":312,"column":31}},"98":{"start":{"line":313,"column":2},"end":{"line":313,"column":34}},"99":{"start":{"line":314,"column":2},"end":{"line":314,"column":56}},"100":{"start":{"line":315,"column":2},"end":{"line":315,"column":59}},"101":{"start":{"line":320,"column":0},"end":{"line":325,"column":2}},"102":{"start":{"line":321,"column":2},"end":{"line":321,"column":31}},"103":{"start":{"line":322,"column":2},"end":{"line":322,"column":71}},"104":{"start":{"line":323,"column":2},"end":{"line":323,"column":21}},"105":{"start":{"line":324,"column":2},"end":{"line":324,"column":28}},"106":{"start":{"line":329,"column":0},"end":{"line":331,"column":1}},"107":{"start":{"line":330,"column":2},"end":{"line":330,"column":101}},"108":{"start":{"line":336,"column":0},"end":{"line":556,"column":2}},"109":{"start":{"line":337,"column":2},"end":{"line":337,"column":27}},"110":{"start":{"line":338,"column":2},"end":{"line":338,"column":24}},"111":{"start":{"line":340,"column":2},"end":{"line":340,"column":54}},"112":{"start":{"line":341,"column":2},"end":{"line":341,"column":70}},"113":{"start":{"line":342,"column":2},"end":{"line":349,"column":3}},"114":{"start":{"line":343,"column":26},"end":{"line":343,"column":47}},"115":{"start":{"line":343,"column":48},"end":{"line":343,"column":54}},"116":{"start":{"line":344,"column":26},"end":{"line":344,"column":47}},"117":{"start":{"line":344,"column":48},"end":{"line":344,"column":54}},"118":{"start":{"line":345,"column":26},"end":{"line":345,"column":47}},"119":{"start":{"line":345,"column":48},"end":{"line":345,"column":54}},"120":{"start":{"line":346,"column":26},"end":{"line":346,"column":47}},"121":{"start":{"line":346,"column":48},"end":{"line":346,"column":54}},"122":{"start":{"line":347,"column":26},"end":{"line":347,"column":47}},"123":{"start":{"line":347,"column":48},"end":{"line":347,"column":54}},"124":{"start":{"line":348,"column":26},"end":{"line":348,"column":47}},"125":{"start":{"line":348,"column":48},"end":{"line":348,"column":54}},"126":{"start":{"line":351,"column":2},"end":{"line":351,"column":33}},"127":{"start":{"line":353,"column":2},"end":{"line":497,"column":3}},"128":{"start":{"line":360,"column":6},"end":{"line":370,"column":7}},"129":{"start":{"line":361,"column":8},"end":{"line":361,"column":31}},"130":{"start":{"line":362,"column":8},"end":{"line":364,"column":9}},"131":{"start":{"line":363,"column":10},"end":{"line":363,"column":79}},"132":{"start":{"line":365,"column":8},"end":{"line":365,"column":34}},"133":{"start":{"line":366,"column":13},"end":{"line":370,"column":7}},"134":{"start":{"line":367,"column":8},"end":{"line":367,"column":33}},"135":{"start":{"line":369,"column":8},"end":{"line":369,"column":33}},"136":{"start":{"line":371,"column":6},"end":{"line":371,"column":12}},"137":{"start":{"line":383,"column":6},"end":{"line":391,"column":7}},"138":{"start":{"line":384,"column":8},"end":{"line":384,"column":45}},"139":{"start":{"line":385,"column":13},"end":{"line":391,"column":7}},"140":{"start":{"line":386,"column":8},"end":{"line":386,"column":33}},"141":{"start":{"line":387,"column":13},"end":{"line":391,"column":7}},"142":{"start":{"line":390,"column":8},"end":{"line":390,"column":33}},"143":{"start":{"line":392,"column":6},"end":{"line":392,"column":12}},"144":{"start":{"line":402,"column":6},"end":{"line":410,"column":7}},"145":{"start":{"line":403,"column":8},"end":{"line":403,"column":33}},"146":{"start":{"line":404,"column":13},"end":{"line":410,"column":7}},"147":{"start":{"line":405,"column":8},"end":{"line":405,"column":44}},"148":{"start":{"line":406,"column":13},"end":{"line":410,"column":7}},"149":{"start":{"line":409,"column":8},"end":{"line":409,"column":33}},"150":{"start":{"line":411,"column":6},"end":{"line":411,"column":12}},"151":{"start":{"line":423,"column":6},"end":{"line":429,"column":7}},"152":{"start":{"line":424,"column":8},"end":{"line":424,"column":77}},"153":{"start":{"line":425,"column":13},"end":{"line":429,"column":7}},"154":{"start":{"line":426,"column":8},"end":{"line":426,"column":33}},"155":{"start":{"line":430,"column":6},"end":{"line":430,"column":12}},"156":{"start":{"line":439,"column":6},"end":{"line":445,"column":7}},"157":{"start":{"line":440,"column":8},"end":{"line":440,"column":33}},"158":{"start":{"line":441,"column":13},"end":{"line":445,"column":7}},"159":{"start":{"line":444,"column":8},"end":{"line":444,"column":33}},"160":{"start":{"line":446,"column":6},"end":{"line":446,"column":12}},"161":{"start":{"line":459,"column":6},"end":{"line":465,"column":7}},"162":{"start":{"line":460,"column":8},"end":{"line":460,"column":33}},"163":{"start":{"line":461,"column":13},"end":{"line":465,"column":7}},"164":{"start":{"line":464,"column":8},"end":{"line":464,"column":33}},"165":{"start":{"line":466,"column":6},"end":{"line":466,"column":12}},"166":{"start":{"line":489,"column":6},"end":{"line":495,"column":7}},"167":{"start":{"line":494,"column":8},"end":{"line":494,"column":32}},"168":{"start":{"line":496,"column":6},"end":{"line":496,"column":12}},"169":{"start":{"line":502,"column":2},"end":{"line":505,"column":3}},"170":{"start":{"line":503,"column":4},"end":{"line":503,"column":31}},"171":{"start":{"line":504,"column":4},"end":{"line":504,"column":37}},"172":{"start":{"line":513,"column":2},"end":{"line":518,"column":3}},"173":{"start":{"line":514,"column":4},"end":{"line":515,"column":86}},"174":{"start":{"line":516,"column":4},"end":{"line":516,"column":84}},"175":{"start":{"line":517,"column":4},"end":{"line":517,"column":47}},"176":{"start":{"line":521,"column":2},"end":{"line":530,"column":3}},"177":{"start":{"line":522,"column":4},"end":{"line":522,"column":72}},"178":{"start":{"line":523,"column":4},"end":{"line":527,"column":5}},"179":{"start":{"line":524,"column":6},"end":{"line":524,"column":34}},"180":{"start":{"line":526,"column":6},"end":{"line":526,"column":33}},"181":{"start":{"line":528,"column":9},"end":{"line":530,"column":3}},"182":{"start":{"line":529,"column":4},"end":{"line":529,"column":27}},"183":{"start":{"line":533,"column":2},"end":{"line":555,"column":3}},"184":{"start":{"line":534,"column":4},"end":{"line":540,"column":6}},"185":{"start":{"line":543,"column":4},"end":{"line":554,"column":5}},"186":{"start":{"line":544,"column":6},"end":{"line":544,"column":68}},"187":{"start":{"line":545,"column":6},"end":{"line":545,"column":97}},"188":{"start":{"line":551,"column":6},"end":{"line":551,"column":69}},"189":{"start":{"line":552,"column":6},"end":{"line":552,"column":24}},"190":{"start":{"line":553,"column":6},"end":{"line":553,"column":32}},"191":{"start":{"line":561,"column":0},"end":{"line":561,"column":25}},"192":{"start":{"line":563,"column":0},"end":{"line":563,"column":15}},"193":{"start":{"line":564,"column":0},"end":{"line":570,"column":2}},"194":{"start":{"line":565,"column":2},"end":{"line":568,"column":3}},"195":{"start":{"line":566,"column":4},"end":{"line":566,"column":23}},"196":{"start":{"line":567,"column":4},"end":{"line":567,"column":16}},"197":{"start":{"line":569,"column":2},"end":{"line":569,"column":19}}},"branchMap":{"1":{"line":1,"type":"cond-expr","locations":[{"start":{"line":1,"column":40},"end":{"line":1,"column":57}},{"start":{"line":1,"column":45},"end":{"line":1,"column":78}}]},"2":{"line":81,"type":"if","locations":[{"start":{"line":81,"column":4},"end":{"line":81,"column":4}},{"start":{"line":81,"column":4},"end":{"line":81,"column":4}}]},"3":{"line":110,"type":"if","locations":[{"start":{"line":110,"column":2},"end":{"line":110,"column":2}},{"start":{"line":110,"column":2},"end":{"line":110,"column":2}}]},"4":{"line":110,"type":"binary-expr","locations":[{"start":{"line":110,"column":7},"end":{"line":110,"column":11}},{"start":{"line":110,"column":15},"end":{"line":110,"column":38}},{"start":{"line":110,"column":43},"end":{"line":110,"column":48}}]},"5":{"line":111,"type":"if","locations":[{"start":{"line":111,"column":4},"end":{"line":111,"column":4}},{"start":{"line":111,"column":4},"end":{"line":111,"column":4}}]},"6":{"line":115,"type":"if","locations":[{"start":{"line":115,"column":6},"end":{"line":115,"column":6}},{"start":{"line":115,"column":6},"end":{"line":115,"column":6}}]},"7":{"line":115,"type":"binary-expr","locations":[{"start":{"line":115,"column":10},"end":{"line":115,"column":19}},{"start":{"line":115,"column":25},"end":{"line":115,"column":53}},{"start":{"line":115,"column":59},"end":{"line":115,"column":88}}]},"8":{"line":134,"type":"if","locations":[{"start":{"line":134,"column":2},"end":{"line":134,"column":2}},{"start":{"line":134,"column":2},"end":{"line":134,"column":2}}]},"9":{"line":198,"type":"if","locations":[{"start":{"line":198,"column":2},"end":{"line":198,"column":2}},{"start":{"line":198,"column":2},"end":{"line":198,"column":2}}]},"10":{"line":200,"type":"if","locations":[{"start":{"line":200,"column":4},"end":{"line":200,"column":4}},{"start":{"line":200,"column":4},"end":{"line":200,"column":4}}]},"11":{"line":212,"type":"if","locations":[{"start":{"line":212,"column":2},"end":{"line":212,"column":2}},{"start":{"line":212,"column":2},"end":{"line":212,"column":2}}]},"12":{"line":216,"type":"if","locations":[{"start":{"line":216,"column":2},"end":{"line":216,"column":2}},{"start":{"line":216,"column":2},"end":{"line":216,"column":2}}]},"13":{"line":224,"type":"if","locations":[{"start":{"line":224,"column":2},"end":{"line":224,"column":2}},{"start":{"line":224,"column":2},"end":{"line":224,"column":2}}]},"14":{"line":240,"type":"if","locations":[{"start":{"line":240,"column":2},"end":{"line":240,"column":2}},{"start":{"line":240,"column":2},"end":{"line":240,"column":2}}]},"15":{"line":251,"type":"if","locations":[{"start":{"line":251,"column":2},"end":{"line":251,"column":2}},{"start":{"line":251,"column":2},"end":{"line":251,"column":2}}]},"16":{"line":269,"type":"if","locations":[{"start":{"line":269,"column":2},"end":{"line":269,"column":2}},{"start":{"line":269,"column":2},"end":{"line":269,"column":2}}]},"17":{"line":269,"type":"binary-expr","locations":[{"start":{"line":269,"column":6},"end":{"line":269,"column":15}},{"start":{"line":269,"column":21},"end":{"line":269,"column":46}},{"start":{"line":269,"column":52},"end":{"line":269,"column":80}}]},"18":{"line":271,"type":"binary-expr","locations":[{"start":{"line":271,"column":22},"end":{"line":271,"column":37}},{"start":{"line":271,"column":41},"end":{"line":271,"column":43}}]},"19":{"line":330,"type":"binary-expr","locations":[{"start":{"line":330,"column":11},"end":{"line":330,"column":40}},{"start":{"line":330,"column":46},"end":{"line":330,"column":76}},{"start":{"line":330,"column":82},"end":{"line":330,"column":98}}]},"20":{"line":342,"type":"switch","locations":[{"start":{"line":343,"column":4},"end":{"line":343,"column":54}},{"start":{"line":344,"column":4},"end":{"line":344,"column":54}},{"start":{"line":345,"column":4},"end":{"line":345,"column":54}},{"start":{"line":346,"column":4},"end":{"line":346,"column":54}},{"start":{"line":347,"column":4},"end":{"line":347,"column":54}},{"start":{"line":348,"column":4},"end":{"line":348,"column":54}}]},"21":{"line":353,"type":"switch","locations":[{"start":{"line":359,"column":4},"end":{"line":371,"column":12}},{"start":{"line":382,"column":4},"end":{"line":392,"column":12}},{"start":{"line":401,"column":4},"end":{"line":411,"column":12}},{"start":{"line":422,"column":4},"end":{"line":430,"column":12}},{"start":{"line":438,"column":4},"end":{"line":446,"column":12}},{"start":{"line":458,"column":4},"end":{"line":466,"column":12}},{"start":{"line":488,"column":4},"end":{"line":496,"column":12}}]},"22":{"line":360,"type":"if","locations":[{"start":{"line":360,"column":6},"end":{"line":360,"column":6}},{"start":{"line":360,"column":6},"end":{"line":360,"column":6}}]},"23":{"line":362,"type":"if","locations":[{"start":{"line":362,"column":8},"end":{"line":362,"column":8}},{"start":{"line":362,"column":8},"end":{"line":362,"column":8}}]},"24":{"line":363,"type":"cond-expr","locations":[{"start":{"line":363,"column":35},"end":{"line":363,"column":54}},{"start":{"line":363,"column":57},"end":{"line":363,"column":77}}]},"25":{"line":366,"type":"if","locations":[{"start":{"line":366,"column":13},"end":{"line":366,"column":13}},{"start":{"line":366,"column":13},"end":{"line":366,"column":13}}]},"26":{"line":366,"type":"binary-expr","locations":[{"start":{"line":366,"column":17},"end":{"line":366,"column":24}},{"start":{"line":366,"column":28},"end":{"line":366,"column":38}}]},"27":{"line":383,"type":"if","locations":[{"start":{"line":383,"column":6},"end":{"line":383,"column":6}},{"start":{"line":383,"column":6},"end":{"line":383,"column":6}}]},"28":{"line":383,"type":"binary-expr","locations":[{"start":{"line":383,"column":10},"end":{"line":383,"column":17}},{"start":{"line":383,"column":21},"end":{"line":383,"column":28}}]},"29":{"line":385,"type":"if","locations":[{"start":{"line":385,"column":13},"end":{"line":385,"column":13}},{"start":{"line":385,"column":13},"end":{"line":385,"column":13}}]},"30":{"line":387,"type":"if","locations":[{"start":{"line":387,"column":13},"end":{"line":387,"column":13}},{"start":{"line":387,"column":13},"end":{"line":387,"column":13}}]},"31":{"line":387,"type":"binary-expr","locations":[{"start":{"line":387,"column":17},"end":{"line":387,"column":26}},{"start":{"line":387,"column":30},"end":{"line":387,"column":38}}]},"32":{"line":402,"type":"if","locations":[{"start":{"line":402,"column":6},"end":{"line":402,"column":6}},{"start":{"line":402,"column":6},"end":{"line":402,"column":6}}]},"33":{"line":404,"type":"if","locations":[{"start":{"line":404,"column":13},"end":{"line":404,"column":13}},{"start":{"line":404,"column":13},"end":{"line":404,"column":13}}]},"34":{"line":404,"type":"binary-expr","locations":[{"start":{"line":404,"column":17},"end":{"line":404,"column":26}},{"start":{"line":404,"column":30},"end":{"line":404,"column":37}}]},"35":{"line":406,"type":"if","locations":[{"start":{"line":406,"column":13},"end":{"line":406,"column":13}},{"start":{"line":406,"column":13},"end":{"line":406,"column":13}}]},"36":{"line":406,"type":"binary-expr","locations":[{"start":{"line":406,"column":17},"end":{"line":406,"column":24}},{"start":{"line":406,"column":28},"end":{"line":406,"column":36}}]},"37":{"line":423,"type":"if","locations":[{"start":{"line":423,"column":6},"end":{"line":423,"column":6}},{"start":{"line":423,"column":6},"end":{"line":423,"column":6}}]},"38":{"line":424,"type":"cond-expr","locations":[{"start":{"line":424,"column":33},"end":{"line":424,"column":52}},{"start":{"line":424,"column":55},"end":{"line":424,"column":75}}]},"39":{"line":425,"type":"if","locations":[{"start":{"line":425,"column":13},"end":{"line":425,"column":13}},{"start":{"line":425,"column":13},"end":{"line":425,"column":13}}]},"40":{"line":439,"type":"if","locations":[{"start":{"line":439,"column":6},"end":{"line":439,"column":6}},{"start":{"line":439,"column":6},"end":{"line":439,"column":6}}]},"41":{"line":439,"type":"binary-expr","locations":[{"start":{"line":439,"column":10},"end":{"line":439,"column":20}},{"start":{"line":439,"column":25},"end":{"line":439,"column":34}},{"start":{"line":439,"column":38},"end":{"line":439,"column":60}}]},"42":{"line":441,"type":"if","locations":[{"start":{"line":441,"column":13},"end":{"line":441,"column":13}},{"start":{"line":441,"column":13},"end":{"line":441,"column":13}}]},"43":{"line":441,"type":"binary-expr","locations":[{"start":{"line":441,"column":17},"end":{"line":441,"column":26}},{"start":{"line":441,"column":31},"end":{"line":441,"column":38}},{"start":{"line":441,"column":43},"end":{"line":441,"column":51}},{"start":{"line":441,"column":55},"end":{"line":441,"column":68}}]},"44":{"line":459,"type":"if","locations":[{"start":{"line":459,"column":6},"end":{"line":459,"column":6}},{"start":{"line":459,"column":6},"end":{"line":459,"column":6}}]},"45":{"line":459,"type":"binary-expr","locations":[{"start":{"line":459,"column":10},"end":{"line":459,"column":20}},{"start":{"line":459,"column":25},"end":{"line":459,"column":32}},{"start":{"line":459,"column":36},"end":{"line":459,"column":58}}]},"46":{"line":461,"type":"if","locations":[{"start":{"line":461,"column":13},"end":{"line":461,"column":13}},{"start":{"line":461,"column":13},"end":{"line":461,"column":13}}]},"47":{"line":461,"type":"binary-expr","locations":[{"start":{"line":461,"column":17},"end":{"line":461,"column":24}},{"start":{"line":461,"column":29},"end":{"line":461,"column":38}},{"start":{"line":461,"column":43},"end":{"line":461,"column":56}},{"start":{"line":461,"column":60},"end":{"line":461,"column":68}}]},"48":{"line":489,"type":"if","locations":[{"start":{"line":489,"column":6},"end":{"line":489,"column":6}},{"start":{"line":489,"column":6},"end":{"line":489,"column":6}}]},"49":{"line":489,"type":"binary-expr","locations":[{"start":{"line":489,"column":11},"end":{"line":489,"column":18}},{"start":{"line":489,"column":22},"end":{"line":489,"column":32}},{"start":{"line":490,"column":11},"end":{"line":490,"column":20}},{"start":{"line":490,"column":24},"end":{"line":490,"column":40}},{"start":{"line":491,"column":12},"end":{"line":491,"column":31}},{"start":{"line":491,"column":35},"end":{"line":491,"column":48}},{"start":{"line":491,"column":52},"end":{"line":491,"column":60}},{"start":{"line":491,"column":64},"end":{"line":491,"column":74}}]},"50":{"line":502,"type":"if","locations":[{"start":{"line":502,"column":2},"end":{"line":502,"column":2}},{"start":{"line":502,"column":2},"end":{"line":502,"column":2}}]},"51":{"line":502,"type":"binary-expr","locations":[{"start":{"line":502,"column":7},"end":{"line":502,"column":30}},{"start":{"line":502,"column":36},"end":{"line":502,"column":62}}]},"52":{"line":513,"type":"if","locations":[{"start":{"line":513,"column":2},"end":{"line":513,"column":2}},{"start":{"line":513,"column":2},"end":{"line":513,"column":2}}]},"53":{"line":513,"type":"binary-expr","locations":[{"start":{"line":513,"column":6},"end":{"line":513,"column":18}},{"start":{"line":513,"column":22},"end":{"line":513,"column":28}}]},"54":{"line":516,"type":"cond-expr","locations":[{"start":{"line":516,"column":46},"end":{"line":516,"column":62}},{"start":{"line":516,"column":65},"end":{"line":516,"column":82}}]},"55":{"line":521,"type":"if","locations":[{"start":{"line":521,"column":2},"end":{"line":521,"column":2}},{"start":{"line":521,"column":2},"end":{"line":521,"column":2}}]},"56":{"line":523,"type":"if","locations":[{"start":{"line":523,"column":4},"end":{"line":523,"column":4}},{"start":{"line":523,"column":4},"end":{"line":523,"column":4}}]},"57":{"line":528,"type":"if","locations":[{"start":{"line":528,"column":9},"end":{"line":528,"column":9}},{"start":{"line":528,"column":9},"end":{"line":528,"column":9}}]},"58":{"line":533,"type":"if","locations":[{"start":{"line":533,"column":2},"end":{"line":533,"column":2}},{"start":{"line":533,"column":2},"end":{"line":533,"column":2}}]},"59":{"line":543,"type":"if","locations":[{"start":{"line":543,"column":4},"end":{"line":543,"column":4}},{"start":{"line":543,"column":4},"end":{"line":543,"column":4}}]},"60":{"line":565,"type":"if","locations":[{"start":{"line":565,"column":2},"end":{"line":565,"column":2}},{"start":{"line":565,"column":2},"end":{"line":565,"column":2}}]}}},"/data/upstream/node-http2/lib/endpoint.js":{"path":"/data/upstream/node-http2/lib/endpoint.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":24,"11":24,"12":24,"13":24,"14":12,"15":12,"16":24,"17":24,"18":24,"19":1,"20":1,"21":1,"22":12,"23":12,"24":1,"25":12,"26":12,"27":11,"28":11,"29":241,"30":1,"31":1,"32":1,"33":240,"34":10,"35":10,"36":10,"37":10,"38":10,"39":1,"40":1,"41":24,"42":24,"43":12,"44":12,"45":12,"46":12,"47":12,"48":12,"49":24,"50":24,"51":24,"52":24,"53":24,"54":24,"55":24,"56":24,"57":1,"58":293,"59":293,"60":178,"61":1,"62":51,"63":1,"64":24,"65":1,"66":11,"67":1,"68":24,"69":24,"70":24,"71":24,"72":24,"73":1,"74":1,"75":1,"76":1,"77":2,"78":1,"79":1,"80":1,"81":6,"82":2,"83":2,"84":6},"b":{"1":[1,0],"2":[24,12],"3":[12,12],"4":[251,241],"5":[1,240],"6":[10,0],"7":[12,12],"8":[471,471],"9":[2,4]},"f":{"1":0,"2":24,"3":12,"4":12,"5":11,"6":24,"7":293,"8":51,"9":24,"10":11,"11":24,"12":1,"13":2,"14":6},"fnMap":{"1":{"name":"noop","line":1,"loc":{"start":{"line":1,"column":45},"end":{"line":1,"column":76}}},"2":{"name":"Endpoint","line":16,"loc":{"start":{"line":16,"column":0},"end":{"line":16,"column":39}}},"3":{"name":"_writePrelude","line":50,"loc":{"start":{"line":50,"column":35},"end":{"line":50,"column":60}}},"4":{"name":"_readPrelude","line":56,"loc":{"start":{"line":56,"column":34},"end":{"line":56,"column":58}}},"5":{"name":"_temporalWrite","line":61,"loc":{"start":{"line":61,"column":16},"end":{"line":61,"column":63}}},"6":{"name":"_initializeDataFlow","line":121,"loc":{"start":{"line":121,"column":41},"end":{"line":121,"column":86}}},"7":{"name":"_read","line":145,"loc":{"start":{"line":145,"column":27},"end":{"line":145,"column":44}}},"8":{"name":"_write","line":152,"loc":{"start":{"line":152,"column":28},"end":{"line":152,"column":67}}},"9":{"name":"_initializeManagement","line":159,"loc":{"start":{"line":159,"column":43},"end":{"line":159,"column":76}}},"10":{"name":"createStream","line":163,"loc":{"start":{"line":163,"column":34},"end":{"line":163,"column":58}}},"11":{"name":"_initializeErrorHandling","line":170,"loc":{"start":{"line":170,"column":46},"end":{"line":170,"column":82}}},"12":{"name":"_error","line":178,"loc":{"start":{"line":178,"column":28},"end":{"line":178,"column":62}}},"13":{"name":"close","line":183,"loc":{"start":{"line":183,"column":27},"end":{"line":183,"column":49}}},"14":{"name":"(anonymous_14)","line":193,"loc":{"start":{"line":193,"column":24},"end":{"line":193,"column":43}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":79}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":50}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":52}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":54}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":56}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":54}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":44}},"8":{"start":{"line":10,"column":0},"end":{"line":10,"column":28}},"9":{"start":{"line":16,"column":0},"end":{"line":41,"column":1}},"10":{"start":{"line":17,"column":2},"end":{"line":17,"column":20}},"11":{"start":{"line":20,"column":2},"end":{"line":20,"column":60}},"12":{"start":{"line":24,"column":2},"end":{"line":24,"column":51}},"13":{"start":{"line":25,"column":2},"end":{"line":29,"column":3}},"14":{"start":{"line":26,"column":4},"end":{"line":26,"column":25}},"15":{"start":{"line":28,"column":4},"end":{"line":28,"column":24}},"16":{"start":{"line":34,"column":2},"end":{"line":34,"column":43}},"17":{"start":{"line":37,"column":2},"end":{"line":37,"column":31}},"18":{"start":{"line":40,"column":2},"end":{"line":40,"column":34}},"19":{"start":{"line":42,"column":0},"end":{"line":42,"column":91}},"20":{"start":{"line":47,"column":0},"end":{"line":47,"column":68}},"21":{"start":{"line":50,"column":0},"end":{"line":53,"column":2}},"22":{"start":{"line":51,"column":2},"end":{"line":51,"column":67}},"23":{"start":{"line":52,"column":2},"end":{"line":52,"column":28}},"24":{"start":{"line":56,"column":0},"end":{"line":84,"column":2}},"25":{"start":{"line":58,"column":2},"end":{"line":58,"column":17}},"26":{"start":{"line":61,"column":2},"end":{"line":83,"column":4}},"27":{"start":{"line":64,"column":4},"end":{"line":64,"column":24}},"28":{"start":{"line":65,"column":4},"end":{"line":73,"column":5}},"29":{"start":{"line":66,"column":6},"end":{"line":71,"column":7}},"30":{"start":{"line":67,"column":8},"end":{"line":68,"column":76}},"31":{"start":{"line":69,"column":8},"end":{"line":69,"column":51}},"32":{"start":{"line":70,"column":8},"end":{"line":70,"column":15}},"33":{"start":{"line":72,"column":6},"end":{"line":72,"column":18}},"34":{"start":{"line":77,"column":4},"end":{"line":82,"column":5}},"35":{"start":{"line":78,"column":6},"end":{"line":78,"column":85}},"36":{"start":{"line":79,"column":6},"end":{"line":79,"column":25}},"37":{"start":{"line":80,"column":6},"end":{"line":80,"column":43}},"38":{"start":{"line":81,"column":6},"end":{"line":81,"column":41}},"39":{"start":{"line":119,"column":0},"end":{"line":119,"column":34}},"40":{"start":{"line":121,"column":0},"end":{"line":143,"column":2}},"41":{"start":{"line":122,"column":2},"end":{"line":122,"column":54}},"42":{"start":{"line":123,"column":2},"end":{"line":131,"column":3}},"43":{"start":{"line":124,"column":4},"end":{"line":124,"column":22}},"44":{"start":{"line":125,"column":4},"end":{"line":125,"column":31}},"45":{"start":{"line":126,"column":4},"end":{"line":126,"column":34}},"46":{"start":{"line":128,"column":4},"end":{"line":128,"column":22}},"47":{"start":{"line":129,"column":4},"end":{"line":129,"column":32}},"48":{"start":{"line":130,"column":4},"end":{"line":130,"column":33}},"49":{"start":{"line":133,"column":2},"end":{"line":133,"column":72}},"50":{"start":{"line":134,"column":2},"end":{"line":134,"column":74}},"51":{"start":{"line":135,"column":2},"end":{"line":135,"column":65}},"52":{"start":{"line":136,"column":2},"end":{"line":136,"column":69}},"53":{"start":{"line":137,"column":2},"end":{"line":137,"column":74}},"54":{"start":{"line":139,"column":2},"end":{"line":139,"column":65}},"55":{"start":{"line":140,"column":2},"end":{"line":140,"column":69}},"56":{"start":{"line":142,"column":2},"end":{"line":142,"column":57}},"57":{"start":{"line":145,"column":0},"end":{"line":150,"column":2}},"58":{"start":{"line":146,"column":2},"end":{"line":146,"column":31}},"59":{"start":{"line":147,"column":2},"end":{"line":149,"column":3}},"60":{"start":{"line":148,"column":4},"end":{"line":148,"column":34}},"61":{"start":{"line":152,"column":0},"end":{"line":154,"column":2}},"62":{"start":{"line":153,"column":2},"end":{"line":153,"column":50}},"63":{"start":{"line":159,"column":0},"end":{"line":161,"column":2}},"64":{"start":{"line":160,"column":2},"end":{"line":160,"column":64}},"65":{"start":{"line":163,"column":0},"end":{"line":165,"column":2}},"66":{"start":{"line":164,"column":2},"end":{"line":164,"column":41}},"67":{"start":{"line":170,"column":0},"end":{"line":176,"column":2}},"68":{"start":{"line":171,"column":2},"end":{"line":171,"column":69}},"69":{"start":{"line":172,"column":2},"end":{"line":172,"column":73}},"70":{"start":{"line":173,"column":2},"end":{"line":173,"column":69}},"71":{"start":{"line":174,"column":2},"end":{"line":174,"column":73}},"72":{"start":{"line":175,"column":2},"end":{"line":175,"column":69}},"73":{"start":{"line":178,"column":0},"end":{"line":181,"column":2}},"74":{"start":{"line":179,"column":2},"end":{"line":179,"column":95}},"75":{"start":{"line":180,"column":2},"end":{"line":180,"column":20}},"76":{"start":{"line":183,"column":0},"end":{"line":185,"column":2}},"77":{"start":{"line":184,"column":2},"end":{"line":184,"column":32}},"78":{"start":{"line":190,"column":0},"end":{"line":190,"column":25}},"79":{"start":{"line":192,"column":0},"end":{"line":192,"column":15}},"80":{"start":{"line":193,"column":0},"end":{"line":199,"column":2}},"81":{"start":{"line":194,"column":2},"end":{"line":197,"column":3}},"82":{"start":{"line":195,"column":4},"end":{"line":195,"column":25}},"83":{"start":{"line":196,"column":4},"end":{"line":196,"column":16}},"84":{"start":{"line":198,"column":2},"end":{"line":198,"column":21}}},"branchMap":{"1":{"line":1,"type":"cond-expr","locations":[{"start":{"line":1,"column":40},"end":{"line":1,"column":57}},{"start":{"line":1,"column":45},"end":{"line":1,"column":78}}]},"2":{"line":24,"type":"binary-expr","locations":[{"start":{"line":24,"column":10},"end":{"line":24,"column":27}},{"start":{"line":24,"column":32},"end":{"line":24,"column":49}}]},"3":{"line":25,"type":"if","locations":[{"start":{"line":25,"column":2},"end":{"line":25,"column":2}},{"start":{"line":25,"column":2},"end":{"line":25,"column":2}}]},"4":{"line":65,"type":"binary-expr","locations":[{"start":{"line":65,"column":10},"end":{"line":65,"column":40}},{"start":{"line":65,"column":44},"end":{"line":65,"column":76}}]},"5":{"line":66,"type":"if","locations":[{"start":{"line":66,"column":6},"end":{"line":66,"column":6}},{"start":{"line":66,"column":6},"end":{"line":66,"column":6}}]},"6":{"line":77,"type":"if","locations":[{"start":{"line":77,"column":4},"end":{"line":77,"column":4}},{"start":{"line":77,"column":4},"end":{"line":77,"column":4}}]},"7":{"line":123,"type":"if","locations":[{"start":{"line":123,"column":2},"end":{"line":123,"column":2}},{"start":{"line":123,"column":2},"end":{"line":123,"column":2}}]},"8":{"line":147,"type":"binary-expr","locations":[{"start":{"line":147,"column":9},"end":{"line":147,"column":19}},{"start":{"line":147,"column":24},"end":{"line":147,"column":55}}]},"9":{"line":194,"type":"if","locations":[{"start":{"line":194,"column":2},"end":{"line":194,"column":2}},{"start":{"line":194,"column":2},"end":{"line":194,"column":2}}]}}},"/data/upstream/node-http2/lib/framer.js":{"path":"/data/upstream/node-http2/lib/framer.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":25,"8":25,"9":25,"10":1,"11":1,"12":99,"13":99,"14":99,"15":99,"16":99,"17":99,"18":99,"19":202,"20":0,"21":202,"22":99,"23":1,"24":25,"25":25,"26":25,"27":25,"28":1,"29":1,"30":209,"31":209,"32":209,"33":209,"34":117,"35":1,"36":68,"37":68,"38":0,"39":68,"40":171,"41":171,"42":171,"43":171,"44":171,"45":92,"46":92,"47":92,"48":0,"49":171,"50":92,"51":92,"52":92,"53":0,"54":0,"55":92,"56":92,"57":0,"58":92,"59":68,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":110,"68":110,"69":110,"70":114,"71":110,"72":110,"73":110,"74":110,"75":110,"76":110,"77":105,"78":105,"79":105,"80":54,"81":110,"82":110,"83":110,"84":110,"85":1,"86":103,"87":103,"88":103,"89":103,"90":103,"91":103,"92":196,"93":103,"94":1,"95":1,"96":1,"97":1,"98":37,"99":1,"100":36,"101":1,"102":1,"103":1,"104":1,"105":29,"106":2,"107":2,"108":2,"109":2,"110":29,"111":1,"112":28,"113":2,"114":2,"115":26,"116":1,"117":1,"118":1,"119":1,"120":2,"121":2,"122":2,"123":1,"124":2,"125":1,"126":1,"127":1,"128":1,"129":2,"130":2,"131":2,"132":2,"133":2,"134":1,"135":2,"136":1,"137":1,"138":1,"139":1,"140":26,"141":26,"142":78,"143":34,"144":34,"145":34,"146":26,"147":26,"148":26,"149":34,"150":34,"151":26,"152":1,"153":22,"154":22,"155":0,"156":22,"157":28,"158":28,"159":28,"160":28,"161":28,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":4,"171":4,"172":4,"173":4,"174":4,"175":1,"176":4,"177":4,"178":1,"179":1,"180":1,"181":1,"182":2,"183":2,"184":1,"185":2,"186":0,"187":2,"188":1,"189":1,"190":1,"191":1,"192":4,"193":4,"194":4,"195":4,"196":4,"197":4,"198":4,"199":1,"200":3,"201":3,"202":1,"203":1,"204":1,"205":1,"206":2,"207":2,"208":2,"209":2,"210":1,"211":2,"212":1,"213":1,"214":1,"215":1,"216":2,"217":1,"218":2,"219":1,"220":1,"221":1,"222":1,"223":6,"224":0,"225":6,"226":4,"227":2,"228":2,"229":2,"230":2,"231":10,"232":2,"233":1,"234":0,"235":1,"236":1,"237":0,"238":2,"239":0,"240":2,"241":0,"242":2,"243":1,"244":0},"b":{"1":[1,0],"2":[25,1],"3":[0,202],"4":[25,1],"5":[117,92],"6":[0,68],"7":[92,79],"8":[171,157],"9":[92,0],"10":[92,79],"11":[171,92],"12":[92,0],"13":[0,92],"14":[54,51],"15":[110,26],"16":[2,27],"17":[2,2],"18":[2,26],"19":[2,2],"20":[34,44],"21":[22,12],"22":[0,22],"23":[28,0],"24":[20,8],"25":[4,4],"26":[2,2],"27":[0,2],"28":[4,4],"29":[4,4],"30":[2,2],"31":[0,6],"32":[4,2],"33":[1,1],"34":[0,1],"35":[0,1],"36":[0,2],"37":[2,2]},"f":{"1":0,"2":25,"3":99,"4":25,"5":209,"6":68,"7":110,"8":103,"9":37,"10":36,"11":29,"12":28,"13":2,"14":2,"15":2,"16":2,"17":26,"18":78,"19":22,"20":4,"21":4,"22":2,"23":2,"24":4,"25":3,"26":2,"27":2,"28":2,"29":2,"30":6,"31":10,"32":0,"33":0},"fnMap":{"1":{"name":"noop","line":5,"loc":{"start":{"line":5,"column":60},"end":{"line":5,"column":76}}},"2":{"name":"Serializer","line":25,"loc":{"start":{"line":25,"column":0},"end":{"line":25,"column":36}}},"3":{"name":"_transform","line":35,"loc":{"start":{"line":35,"column":34},"end":{"line":35,"column":77}}},"4":{"name":"Deserializer","line":67,"loc":{"start":{"line":67,"column":0},"end":{"line":67,"column":38}}},"5":{"name":"(anonymous_5)","line":80,"loc":{"start":{"line":80,"column":31},"end":{"line":80,"column":46}}},"6":{"name":"_transform","line":91,"loc":{"start":{"line":91,"column":36},"end":{"line":91,"column":79}}},"7":{"name":"writeCommonHeader","line":201,"loc":{"start":{"line":201,"column":26},"end":{"line":201,"column":69}}},"8":{"name":"readCommonHeader","line":230,"loc":{"start":{"line":230,"column":28},"end":{"line":230,"column":69}}},"9":{"name":"writeData","line":275,"loc":{"start":{"line":275,"column":18},"end":{"line":275,"column":53}}},"10":{"name":"readData","line":279,"loc":{"start":{"line":279,"column":20},"end":{"line":279,"column":53}}},"11":{"name":"writeHeadersPriority","line":318,"loc":{"start":{"line":318,"column":21},"end":{"line":318,"column":67}}},"12":{"name":"readHeadersPriority","line":328,"loc":{"start":{"line":328,"column":23},"end":{"line":328,"column":67}}},"13":{"name":"writePriority","line":358,"loc":{"start":{"line":358,"column":22},"end":{"line":358,"column":61}}},"14":{"name":"readPriority","line":364,"loc":{"start":{"line":364,"column":24},"end":{"line":364,"column":61}}},"15":{"name":"writeRstStream","line":390,"loc":{"start":{"line":390,"column":24},"end":{"line":390,"column":64}}},"16":{"name":"readRstStream","line":398,"loc":{"start":{"line":398,"column":26},"end":{"line":398,"column":64}}},"17":{"name":"writeSettings","line":434,"loc":{"start":{"line":434,"column":22},"end":{"line":434,"column":61}}},"18":{"name":"(anonymous_18)","line":436,"loc":{"start":{"line":436,"column":26},"end":{"line":436,"column":48}}},"19":{"name":"readSettings","line":454,"loc":{"start":{"line":454,"column":24},"end":{"line":454,"column":61}}},"20":{"name":"writePushPromise","line":519,"loc":{"start":{"line":519,"column":26},"end":{"line":519,"column":68}}},"21":{"name":"readPushPromise","line":527,"loc":{"start":{"line":527,"column":28},"end":{"line":527,"column":68}}},"22":{"name":"writePing","line":551,"loc":{"start":{"line":551,"column":18},"end":{"line":551,"column":53}}},"23":{"name":"readPing","line":556,"loc":{"start":{"line":556,"column":20},"end":{"line":556,"column":53}}},"24":{"name":"writeGoaway","line":591,"loc":{"start":{"line":591,"column":20},"end":{"line":591,"column":57}}},"25":{"name":"readGoaway","line":604,"loc":{"start":{"line":604,"column":22},"end":{"line":604,"column":57}}},"26":{"name":"writeWindowUpdate","line":627,"loc":{"start":{"line":627,"column":27},"end":{"line":627,"column":70}}},"27":{"name":"readWindowUpdate","line":634,"loc":{"start":{"line":634,"column":29},"end":{"line":634,"column":70}}},"28":{"name":"writeContinuation","line":660,"loc":{"start":{"line":660,"column":26},"end":{"line":660,"column":69}}},"29":{"name":"readContinuation","line":664,"loc":{"start":{"line":664,"column":28},"end":{"line":664,"column":69}}},"30":{"name":"(anonymous_30)","line":694,"loc":{"start":{"line":694,"column":28},"end":{"line":694,"column":44}}},"31":{"name":"(anonymous_31)","line":707,"loc":{"start":{"line":707,"column":71},"end":{"line":707,"column":86}}},"32":{"name":"(anonymous_32)","line":727,"loc":{"start":{"line":727,"column":57},"end":{"line":727,"column":72}}},"33":{"name":"(anonymous_33)","line":735,"loc":{"start":{"line":735,"column":27},"end":{"line":735,"column":42}}}},"statementMap":{"1":{"start":{"line":5,"column":0},"end":{"line":5,"column":79}},"2":{"start":{"line":7,"column":0},"end":{"line":7,"column":44}},"3":{"start":{"line":9,"column":0},"end":{"line":9,"column":32}},"4":{"start":{"line":10,"column":0},"end":{"line":10,"column":36}},"5":{"start":{"line":12,"column":0},"end":{"line":12,"column":50}},"6":{"start":{"line":25,"column":0},"end":{"line":29,"column":1}},"7":{"start":{"line":26,"column":2},"end":{"line":26,"column":53}},"8":{"start":{"line":27,"column":2},"end":{"line":27,"column":50}},"9":{"start":{"line":28,"column":2},"end":{"line":28,"column":45}},"10":{"start":{"line":30,"column":0},"end":{"line":30,"column":98}},"11":{"start":{"line":35,"column":0},"end":{"line":54,"column":2}},"12":{"start":{"line":36,"column":2},"end":{"line":36,"column":54}},"13":{"start":{"line":38,"column":2},"end":{"line":38,"column":72}},"14":{"start":{"line":40,"column":2},"end":{"line":40,"column":19}},"15":{"start":{"line":41,"column":2},"end":{"line":41,"column":41}},"16":{"start":{"line":42,"column":2},"end":{"line":42,"column":42}},"17":{"start":{"line":44,"column":2},"end":{"line":44,"column":76}},"18":{"start":{"line":46,"column":2},"end":{"line":51,"column":3}},"19":{"start":{"line":47,"column":4},"end":{"line":49,"column":5}},"20":{"start":{"line":48,"column":6},"end":{"line":48,"column":61}},"21":{"start":{"line":50,"column":4},"end":{"line":50,"column":26}},"22":{"start":{"line":53,"column":2},"end":{"line":53,"column":9}},"23":{"start":{"line":67,"column":0},"end":{"line":72,"column":1}},"24":{"start":{"line":68,"column":2},"end":{"line":68,"column":55}},"25":{"start":{"line":69,"column":2},"end":{"line":69,"column":50}},"26":{"start":{"line":70,"column":2},"end":{"line":70,"column":45}},"27":{"start":{"line":71,"column":2},"end":{"line":71,"column":33}},"28":{"start":{"line":73,"column":0},"end":{"line":73,"column":102}},"29":{"start":{"line":80,"column":0},"end":{"line":87,"column":2}},"30":{"start":{"line":81,"column":2},"end":{"line":81,"column":19}},"31":{"start":{"line":82,"column":2},"end":{"line":82,"column":34}},"32":{"start":{"line":83,"column":2},"end":{"line":83,"column":51}},"33":{"start":{"line":84,"column":2},"end":{"line":86,"column":3}},"34":{"start":{"line":85,"column":4},"end":{"line":85,"column":21}},"35":{"start":{"line":91,"column":0},"end":{"line":143,"column":2}},"36":{"start":{"line":92,"column":2},"end":{"line":92,"column":17}},"37":{"start":{"line":94,"column":2},"end":{"line":96,"column":3}},"38":{"start":{"line":95,"column":4},"end":{"line":95,"column":54}},"39":{"start":{"line":98,"column":2},"end":{"line":140,"column":3}},"40":{"start":{"line":101,"column":4},"end":{"line":101,"column":85}},"41":{"start":{"line":102,"column":4},"end":{"line":102,"column":68}},"42":{"start":{"line":103,"column":4},"end":{"line":103,"column":27}},"43":{"start":{"line":104,"column":4},"end":{"line":104,"column":21}},"44":{"start":{"line":111,"column":4},"end":{"line":118,"column":5}},"45":{"start":{"line":112,"column":6},"end":{"line":112,"column":59}},"46":{"start":{"line":113,"column":6},"end":{"line":117,"column":7}},"47":{"start":{"line":114,"column":8},"end":{"line":114,"column":39}},"48":{"start":{"line":116,"column":8},"end":{"line":116,"column":46}},"49":{"start":{"line":125,"column":4},"end":{"line":139,"column":5}},"50":{"start":{"line":126,"column":6},"end":{"line":137,"column":7}},"51":{"start":{"line":127,"column":8},"end":{"line":127,"column":78}},"52":{"start":{"line":128,"column":8},"end":{"line":134,"column":9}},"53":{"start":{"line":129,"column":10},"end":{"line":129,"column":58}},"54":{"start":{"line":130,"column":10},"end":{"line":130,"column":47}},"55":{"start":{"line":132,"column":10},"end":{"line":132,"column":68}},"56":{"start":{"line":133,"column":10},"end":{"line":133,"column":33}},"57":{"start":{"line":136,"column":8},"end":{"line":136,"column":78}},"58":{"start":{"line":138,"column":6},"end":{"line":138,"column":37}},"59":{"start":{"line":142,"column":2},"end":{"line":142,"column":9}},"60":{"start":{"line":190,"column":0},"end":{"line":190,"column":27}},"61":{"start":{"line":191,"column":0},"end":{"line":191,"column":29}},"62":{"start":{"line":193,"column":0},"end":{"line":193,"column":20}},"63":{"start":{"line":195,"column":0},"end":{"line":195,"column":20}},"64":{"start":{"line":197,"column":0},"end":{"line":197,"column":62}},"65":{"start":{"line":199,"column":0},"end":{"line":199,"column":32}},"66":{"start":{"line":201,"column":0},"end":{"line":228,"column":2}},"67":{"start":{"line":202,"column":2},"end":{"line":202,"column":52}},"68":{"start":{"line":204,"column":2},"end":{"line":204,"column":15}},"69":{"start":{"line":205,"column":2},"end":{"line":207,"column":3}},"70":{"start":{"line":206,"column":4},"end":{"line":206,"column":30}},"71":{"start":{"line":208,"column":2},"end":{"line":208,"column":55}},"72":{"start":{"line":209,"column":2},"end":{"line":209,"column":38}},"73":{"start":{"line":211,"column":2},"end":{"line":211,"column":46}},"74":{"start":{"line":212,"column":2},"end":{"line":212,"column":37}},"75":{"start":{"line":214,"column":2},"end":{"line":214,"column":19}},"76":{"start":{"line":215,"column":2},"end":{"line":221,"column":3}},"77":{"start":{"line":216,"column":4},"end":{"line":216,"column":56}},"78":{"start":{"line":217,"column":4},"end":{"line":217,"column":87}},"79":{"start":{"line":218,"column":4},"end":{"line":220,"column":5}},"80":{"start":{"line":219,"column":6},"end":{"line":219,"column":34}},"81":{"start":{"line":222,"column":2},"end":{"line":222,"column":39}},"82":{"start":{"line":224,"column":2},"end":{"line":224,"column":76}},"83":{"start":{"line":225,"column":2},"end":{"line":225,"column":51}},"84":{"start":{"line":227,"column":2},"end":{"line":227,"column":32}},"85":{"start":{"line":230,"column":0},"end":{"line":243,"column":2}},"86":{"start":{"line":231,"column":2},"end":{"line":231,"column":40}},"87":{"start":{"line":233,"column":2},"end":{"line":233,"column":47}},"88":{"start":{"line":235,"column":2},"end":{"line":235,"column":19}},"89":{"start":{"line":236,"column":2},"end":{"line":236,"column":37}},"90":{"start":{"line":237,"column":2},"end":{"line":237,"column":44}},"91":{"start":{"line":238,"column":2},"end":{"line":240,"column":3}},"92":{"start":{"line":239,"column":4},"end":{"line":239,"column":64}},"93":{"start":{"line":242,"column":2},"end":{"line":242,"column":53}},"94":{"start":{"line":269,"column":0},"end":{"line":269,"column":25}},"95":{"start":{"line":271,"column":0},"end":{"line":271,"column":45}},"96":{"start":{"line":273,"column":0},"end":{"line":273,"column":39}},"97":{"start":{"line":275,"column":0},"end":{"line":277,"column":2}},"98":{"start":{"line":276,"column":2},"end":{"line":276,"column":27}},"99":{"start":{"line":279,"column":0},"end":{"line":281,"column":2}},"100":{"start":{"line":280,"column":2},"end":{"line":280,"column":22}},"101":{"start":{"line":302,"column":0},"end":{"line":302,"column":28}},"102":{"start":{"line":304,"column":0},"end":{"line":304,"column":75}},"103":{"start":{"line":306,"column":0},"end":{"line":306,"column":65}},"104":{"start":{"line":318,"column":0},"end":{"line":326,"column":2}},"105":{"start":{"line":319,"column":2},"end":{"line":324,"column":3}},"106":{"start":{"line":320,"column":4},"end":{"line":320,"column":31}},"107":{"start":{"line":321,"column":4},"end":{"line":321,"column":68}},"108":{"start":{"line":322,"column":4},"end":{"line":322,"column":44}},"109":{"start":{"line":323,"column":4},"end":{"line":323,"column":25}},"110":{"start":{"line":325,"column":2},"end":{"line":325,"column":27}},"111":{"start":{"line":328,"column":0},"end":{"line":335,"column":2}},"112":{"start":{"line":329,"column":2},"end":{"line":334,"column":3}},"113":{"start":{"line":330,"column":4},"end":{"line":330,"column":57}},"114":{"start":{"line":331,"column":4},"end":{"line":331,"column":33}},"115":{"start":{"line":333,"column":4},"end":{"line":333,"column":24}},"116":{"start":{"line":344,"column":0},"end":{"line":344,"column":29}},"117":{"start":{"line":346,"column":0},"end":{"line":346,"column":25}},"118":{"start":{"line":348,"column":0},"end":{"line":348,"column":47}},"119":{"start":{"line":358,"column":0},"end":{"line":362,"column":2}},"120":{"start":{"line":359,"column":2},"end":{"line":359,"column":29}},"121":{"start":{"line":360,"column":2},"end":{"line":360,"column":42}},"122":{"start":{"line":361,"column":2},"end":{"line":361,"column":23}},"123":{"start":{"line":364,"column":0},"end":{"line":366,"column":2}},"124":{"start":{"line":365,"column":2},"end":{"line":365,"column":42}},"125":{"start":{"line":375,"column":0},"end":{"line":375,"column":31}},"126":{"start":{"line":377,"column":0},"end":{"line":377,"column":27}},"127":{"start":{"line":379,"column":0},"end":{"line":379,"column":46}},"128":{"start":{"line":390,"column":0},"end":{"line":396,"column":2}},"129":{"start":{"line":391,"column":2},"end":{"line":391,"column":29}},"130":{"start":{"line":392,"column":2},"end":{"line":392,"column":45}},"131":{"start":{"line":393,"column":2},"end":{"line":393,"column":46}},"132":{"start":{"line":394,"column":2},"end":{"line":394,"column":32}},"133":{"start":{"line":395,"column":2},"end":{"line":395,"column":23}},"134":{"start":{"line":398,"column":0},"end":{"line":400,"column":2}},"135":{"start":{"line":399,"column":2},"end":{"line":399,"column":51}},"136":{"start":{"line":410,"column":0},"end":{"line":410,"column":29}},"137":{"start":{"line":412,"column":0},"end":{"line":412,"column":25}},"138":{"start":{"line":414,"column":0},"end":{"line":414,"column":47}},"139":{"start":{"line":434,"column":0},"end":{"line":452,"column":2}},"140":{"start":{"line":435,"column":2},"end":{"line":435,"column":64}},"141":{"start":{"line":436,"column":2},"end":{"line":442,"column":5}},"142":{"start":{"line":437,"column":4},"end":{"line":441,"column":5}},"143":{"start":{"line":438,"column":6},"end":{"line":438,"column":65}},"144":{"start":{"line":439,"column":6},"end":{"line":439,"column":47}},"145":{"start":{"line":440,"column":6},"end":{"line":440,"column":78}},"146":{"start":{"line":443,"column":2},"end":{"line":443,"column":84}},"147":{"start":{"line":445,"column":2},"end":{"line":445,"column":47}},"148":{"start":{"line":446,"column":2},"end":{"line":449,"column":3}},"149":{"start":{"line":447,"column":4},"end":{"line":447,"column":57}},"150":{"start":{"line":448,"column":4},"end":{"line":448,"column":53}},"151":{"start":{"line":451,"column":2},"end":{"line":451,"column":23}},"152":{"start":{"line":454,"column":0},"end":{"line":470,"column":2}},"153":{"start":{"line":455,"column":2},"end":{"line":455,"column":22}},"154":{"start":{"line":457,"column":2},"end":{"line":459,"column":3}},"155":{"start":{"line":458,"column":4},"end":{"line":458,"column":36}},"156":{"start":{"line":460,"column":2},"end":{"line":469,"column":3}},"157":{"start":{"line":461,"column":4},"end":{"line":461,"column":49}},"158":{"start":{"line":462,"column":4},"end":{"line":462,"column":38}},"159":{"start":{"line":463,"column":4},"end":{"line":468,"column":5}},"160":{"start":{"line":464,"column":6},"end":{"line":464,"column":47}},"161":{"start":{"line":465,"column":6},"end":{"line":465,"column":81}},"162":{"start":{"line":473,"column":0},"end":{"line":473,"column":25}},"163":{"start":{"line":477,"column":0},"end":{"line":477,"column":78}},"164":{"start":{"line":481,"column":0},"end":{"line":481,"column":75}},"165":{"start":{"line":487,"column":0},"end":{"line":487,"column":76}},"166":{"start":{"line":501,"column":0},"end":{"line":501,"column":33}},"167":{"start":{"line":503,"column":0},"end":{"line":503,"column":47}},"168":{"start":{"line":505,"column":0},"end":{"line":505,"column":77}},"169":{"start":{"line":519,"column":0},"end":{"line":525,"column":2}},"170":{"start":{"line":520,"column":2},"end":{"line":520,"column":29}},"171":{"start":{"line":521,"column":2},"end":{"line":521,"column":80}},"172":{"start":{"line":522,"column":2},"end":{"line":522,"column":49}},"173":{"start":{"line":523,"column":2},"end":{"line":523,"column":23}},"174":{"start":{"line":524,"column":2},"end":{"line":524,"column":27}},"175":{"start":{"line":527,"column":0},"end":{"line":530,"column":2}},"176":{"start":{"line":528,"column":2},"end":{"line":528,"column":62}},"177":{"start":{"line":529,"column":2},"end":{"line":529,"column":31}},"178":{"start":{"line":543,"column":0},"end":{"line":543,"column":25}},"179":{"start":{"line":545,"column":0},"end":{"line":545,"column":27}},"180":{"start":{"line":547,"column":0},"end":{"line":547,"column":39}},"181":{"start":{"line":551,"column":0},"end":{"line":554,"column":2}},"182":{"start":{"line":552,"column":2},"end":{"line":552,"column":101}},"183":{"start":{"line":553,"column":2},"end":{"line":553,"column":27}},"184":{"start":{"line":556,"column":0},"end":{"line":561,"column":2}},"185":{"start":{"line":557,"column":2},"end":{"line":559,"column":3}},"186":{"start":{"line":558,"column":4},"end":{"line":558,"column":37}},"187":{"start":{"line":560,"column":2},"end":{"line":560,"column":22}},"188":{"start":{"line":570,"column":0},"end":{"line":570,"column":27}},"189":{"start":{"line":572,"column":0},"end":{"line":572,"column":23}},"190":{"start":{"line":574,"column":0},"end":{"line":574,"column":57}},"191":{"start":{"line":591,"column":0},"end":{"line":602,"column":2}},"192":{"start":{"line":592,"column":2},"end":{"line":592,"column":29}},"193":{"start":{"line":594,"column":2},"end":{"line":594,"column":72}},"194":{"start":{"line":595,"column":2},"end":{"line":595,"column":45}},"195":{"start":{"line":597,"column":2},"end":{"line":597,"column":45}},"196":{"start":{"line":598,"column":2},"end":{"line":598,"column":46}},"197":{"start":{"line":599,"column":2},"end":{"line":599,"column":32}},"198":{"start":{"line":601,"column":2},"end":{"line":601,"column":23}},"199":{"start":{"line":604,"column":0},"end":{"line":607,"column":2}},"200":{"start":{"line":605,"column":2},"end":{"line":605,"column":58}},"201":{"start":{"line":606,"column":2},"end":{"line":606,"column":51}},"202":{"start":{"line":616,"column":0},"end":{"line":616,"column":34}},"203":{"start":{"line":618,"column":0},"end":{"line":618,"column":30}},"204":{"start":{"line":620,"column":0},"end":{"line":620,"column":55}},"205":{"start":{"line":627,"column":0},"end":{"line":632,"column":2}},"206":{"start":{"line":628,"column":2},"end":{"line":628,"column":29}},"207":{"start":{"line":629,"column":2},"end":{"line":629,"column":72}},"208":{"start":{"line":630,"column":2},"end":{"line":630,"column":45}},"209":{"start":{"line":631,"column":2},"end":{"line":631,"column":23}},"210":{"start":{"line":634,"column":0},"end":{"line":636,"column":2}},"211":{"start":{"line":635,"column":2},"end":{"line":635,"column":58}},"212":{"start":{"line":654,"column":0},"end":{"line":654,"column":33}},"213":{"start":{"line":656,"column":0},"end":{"line":656,"column":68}},"214":{"start":{"line":658,"column":0},"end":{"line":658,"column":58}},"215":{"start":{"line":660,"column":0},"end":{"line":662,"column":2}},"216":{"start":{"line":661,"column":2},"end":{"line":661,"column":27}},"217":{"start":{"line":664,"column":0},"end":{"line":666,"column":2}},"218":{"start":{"line":665,"column":2},"end":{"line":665,"column":22}},"219":{"start":{"line":671,"column":0},"end":{"line":682,"column":2}},"220":{"start":{"line":689,"column":0},"end":{"line":689,"column":25}},"221":{"start":{"line":693,"column":0},"end":{"line":693,"column":21}},"222":{"start":{"line":694,"column":0},"end":{"line":732,"column":2}},"223":{"start":{"line":695,"column":2},"end":{"line":697,"column":3}},"224":{"start":{"line":696,"column":4},"end":{"line":696,"column":16}},"225":{"start":{"line":699,"column":2},"end":{"line":701,"column":3}},"226":{"start":{"line":700,"column":4},"end":{"line":700,"column":20}},"227":{"start":{"line":703,"column":2},"end":{"line":703,"column":26}},"228":{"start":{"line":704,"column":2},"end":{"line":704,"column":20}},"229":{"start":{"line":706,"column":2},"end":{"line":706,"column":34}},"230":{"start":{"line":707,"column":2},"end":{"line":709,"column":5}},"231":{"start":{"line":708,"column":4},"end":{"line":708,"column":33}},"232":{"start":{"line":711,"column":2},"end":{"line":721,"column":3}},"233":{"start":{"line":712,"column":4},"end":{"line":716,"column":5}},"234":{"start":{"line":713,"column":6},"end":{"line":713,"column":70}},"235":{"start":{"line":715,"column":6},"end":{"line":715,"column":49}},"236":{"start":{"line":718,"column":4},"end":{"line":720,"column":5}},"237":{"start":{"line":719,"column":6},"end":{"line":719,"column":42}},"238":{"start":{"line":723,"column":2},"end":{"line":725,"column":3}},"239":{"start":{"line":724,"column":4},"end":{"line":724,"column":68}},"240":{"start":{"line":727,"column":2},"end":{"line":729,"column":5}},"241":{"start":{"line":728,"column":4},"end":{"line":728,"column":38}},"242":{"start":{"line":731,"column":2},"end":{"line":731,"column":18}},"243":{"start":{"line":735,"column":0},"end":{"line":737,"column":2}},"244":{"start":{"line":736,"column":2},"end":{"line":736,"column":30}}},"branchMap":{"1":{"line":5,"type":"cond-expr","locations":[{"start":{"line":5,"column":40},"end":{"line":5,"column":57}},{"start":{"line":5,"column":60},"end":{"line":5,"column":78}}]},"2":{"line":27,"type":"binary-expr","locations":[{"start":{"line":27,"column":20},"end":{"line":27,"column":29}},{"start":{"line":27,"column":33},"end":{"line":27,"column":49}}]},"3":{"line":47,"type":"if","locations":[{"start":{"line":47,"column":4},"end":{"line":47,"column":4}},{"start":{"line":47,"column":4},"end":{"line":47,"column":4}}]},"4":{"line":69,"type":"binary-expr","locations":[{"start":{"line":69,"column":20},"end":{"line":69,"column":29}},{"start":{"line":69,"column":33},"end":{"line":69,"column":49}}]},"5":{"line":84,"type":"if","locations":[{"start":{"line":84,"column":2},"end":{"line":84,"column":2}},{"start":{"line":84,"column":2},"end":{"line":84,"column":2}}]},"6":{"line":94,"type":"if","locations":[{"start":{"line":94,"column":2},"end":{"line":94,"column":2}},{"start":{"line":94,"column":2},"end":{"line":94,"column":2}}]},"7":{"line":111,"type":"if","locations":[{"start":{"line":111,"column":4},"end":{"line":111,"column":4}},{"start":{"line":111,"column":4},"end":{"line":111,"column":4}}]},"8":{"line":111,"type":"binary-expr","locations":[{"start":{"line":111,"column":9},"end":{"line":111,"column":45}},{"start":{"line":111,"column":50},"end":{"line":111,"column":72}}]},"9":{"line":113,"type":"if","locations":[{"start":{"line":113,"column":6},"end":{"line":113,"column":6}},{"start":{"line":113,"column":6},"end":{"line":113,"column":6}}]},"10":{"line":125,"type":"if","locations":[{"start":{"line":125,"column":4},"end":{"line":125,"column":4}},{"start":{"line":125,"column":4},"end":{"line":125,"column":4}}]},"11":{"line":125,"type":"binary-expr","locations":[{"start":{"line":125,"column":9},"end":{"line":125,"column":45}},{"start":{"line":125,"column":50},"end":{"line":125,"column":73}}]},"12":{"line":126,"type":"if","locations":[{"start":{"line":126,"column":6},"end":{"line":126,"column":6}},{"start":{"line":126,"column":6},"end":{"line":126,"column":6}}]},"13":{"line":128,"type":"if","locations":[{"start":{"line":128,"column":8},"end":{"line":128,"column":8}},{"start":{"line":128,"column":8},"end":{"line":128,"column":8}}]},"14":{"line":218,"type":"if","locations":[{"start":{"line":218,"column":4},"end":{"line":218,"column":4}},{"start":{"line":218,"column":4},"end":{"line":218,"column":4}}]},"15":{"line":225,"type":"binary-expr","locations":[{"start":{"line":225,"column":29},"end":{"line":225,"column":41}},{"start":{"line":225,"column":45},"end":{"line":225,"column":46}}]},"16":{"line":319,"type":"if","locations":[{"start":{"line":319,"column":2},"end":{"line":319,"column":2}},{"start":{"line":319,"column":2},"end":{"line":319,"column":2}}]},"17":{"line":321,"type":"binary-expr","locations":[{"start":{"line":321,"column":12},"end":{"line":321,"column":31}},{"start":{"line":321,"column":37},"end":{"line":321,"column":65}}]},"18":{"line":329,"type":"if","locations":[{"start":{"line":329,"column":2},"end":{"line":329,"column":2}},{"start":{"line":329,"column":2},"end":{"line":329,"column":2}}]},"19":{"line":393,"type":"binary-expr","locations":[{"start":{"line":393,"column":10},"end":{"line":393,"column":19}},{"start":{"line":393,"column":25},"end":{"line":393,"column":43}}]},"20":{"line":437,"type":"if","locations":[{"start":{"line":437,"column":4},"end":{"line":437,"column":4}},{"start":{"line":437,"column":4},"end":{"line":437,"column":4}}]},"21":{"line":440,"type":"cond-expr","locations":[{"start":{"line":440,"column":52},"end":{"line":440,"column":66}},{"start":{"line":440,"column":69},"end":{"line":440,"column":74}}]},"22":{"line":457,"type":"if","locations":[{"start":{"line":457,"column":2},"end":{"line":457,"column":2}},{"start":{"line":457,"column":2},"end":{"line":457,"column":2}}]},"23":{"line":463,"type":"if","locations":[{"start":{"line":463,"column":4},"end":{"line":463,"column":4}},{"start":{"line":463,"column":4},"end":{"line":463,"column":4}}]},"24":{"line":465,"type":"cond-expr","locations":[{"start":{"line":465,"column":52},"end":{"line":465,"column":72}},{"start":{"line":465,"column":75},"end":{"line":465,"column":80}}]},"25":{"line":521,"type":"binary-expr","locations":[{"start":{"line":521,"column":10},"end":{"line":521,"column":36}},{"start":{"line":521,"column":42},"end":{"line":521,"column":77}}]},"26":{"line":552,"type":"binary-expr","locations":[{"start":{"line":552,"column":10},"end":{"line":552,"column":25}},{"start":{"line":552,"column":31},"end":{"line":552,"column":54}}]},"27":{"line":557,"type":"if","locations":[{"start":{"line":557,"column":2},"end":{"line":557,"column":2}},{"start":{"line":557,"column":2},"end":{"line":557,"column":2}}]},"28":{"line":594,"type":"binary-expr","locations":[{"start":{"line":594,"column":10},"end":{"line":594,"column":32}},{"start":{"line":594,"column":38},"end":{"line":594,"column":69}}]},"29":{"line":598,"type":"binary-expr","locations":[{"start":{"line":598,"column":10},"end":{"line":598,"column":19}},{"start":{"line":598,"column":25},"end":{"line":598,"column":43}}]},"30":{"line":629,"type":"binary-expr","locations":[{"start":{"line":629,"column":10},"end":{"line":629,"column":32}},{"start":{"line":629,"column":38},"end":{"line":629,"column":69}}]},"31":{"line":695,"type":"if","locations":[{"start":{"line":695,"column":2},"end":{"line":695,"column":2}},{"start":{"line":695,"column":2},"end":{"line":695,"column":2}}]},"32":{"line":699,"type":"if","locations":[{"start":{"line":699,"column":2},"end":{"line":699,"column":2}},{"start":{"line":699,"column":2},"end":{"line":699,"column":2}}]},"33":{"line":711,"type":"if","locations":[{"start":{"line":711,"column":2},"end":{"line":711,"column":2}},{"start":{"line":711,"column":2},"end":{"line":711,"column":2}}]},"34":{"line":712,"type":"if","locations":[{"start":{"line":712,"column":4},"end":{"line":712,"column":4}},{"start":{"line":712,"column":4},"end":{"line":712,"column":4}}]},"35":{"line":718,"type":"if","locations":[{"start":{"line":718,"column":4},"end":{"line":718,"column":4}},{"start":{"line":718,"column":4},"end":{"line":718,"column":4}}]},"36":{"line":723,"type":"if","locations":[{"start":{"line":723,"column":2},"end":{"line":723,"column":2}},{"start":{"line":723,"column":2},"end":{"line":723,"column":2}}]},"37":{"line":727,"type":"binary-expr","locations":[{"start":{"line":727,"column":31},"end":{"line":727,"column":42}},{"start":{"line":727,"column":46},"end":{"line":727,"column":48}}]}}},"/data/upstream/node-http2/lib/http.js":{"path":"/data/upstream/node-http2/lib/http.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":3,"19":1,"20":1,"21":1,"22":6,"23":1,"24":25,"25":25,"26":25,"27":25,"28":25,"29":25,"30":25,"31":25,"32":25,"33":25,"34":1,"35":1,"36":24,"37":168,"38":168,"39":0,"40":0,"41":0,"42":24,"43":73,"44":13,"45":24,"46":1,"47":2,"48":1,"49":1,"50":27,"51":27,"52":27,"53":27,"54":27,"55":1,"56":1,"57":13,"58":12,"59":1,"60":1,"61":31,"62":23,"63":2,"64":0,"65":2,"66":23,"67":8,"68":1,"69":4,"70":0,"71":4,"72":4,"73":0,"74":4,"75":1,"76":1,"77":0,"78":1,"79":1,"80":3,"81":1,"82":2,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":13,"91":13,"92":13,"93":13,"94":13,"95":13,"96":10,"97":10,"98":10,"99":10,"100":10,"101":10,"102":10,"103":9,"104":9,"105":0,"106":10,"107":3,"108":1,"109":1,"110":1,"111":2,"112":2,"113":11,"114":1,"115":1,"116":10,"117":10,"118":10,"119":10,"120":10,"121":10,"122":10,"123":10,"124":10,"125":10,"126":1,"127":0,"128":0,"129":0,"130":0,"131":1,"132":9,"133":9,"134":1,"135":4,"136":4,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":0,"144":1,"145":1,"146":1,"147":9,"148":0,"149":9,"150":1,"151":0,"152":0,"153":1,"154":10,"155":1,"156":1,"157":10,"158":9,"159":9,"160":9,"161":1,"162":12,"163":1,"164":1,"165":12,"166":12,"167":48,"168":48,"169":0,"170":0,"171":0,"172":48,"173":12,"174":12,"175":12,"176":12,"177":1,"178":12,"179":12,"180":12,"181":12,"182":12,"183":12,"184":1,"185":1,"186":12,"187":1,"188":11,"189":12,"190":1,"191":12,"192":12,"193":11,"194":12,"195":12,"196":12,"197":12,"198":1,"199":23,"200":11,"201":1,"202":11,"203":11,"204":1,"205":12,"206":12,"207":1,"208":10,"209":1,"210":2,"211":1,"212":2,"213":0,"214":2,"215":2,"216":2,"217":2,"218":1,"219":12,"220":0,"221":12,"222":1,"223":1,"224":1,"225":1,"226":1,"227":1,"228":4,"229":1,"230":7,"231":1,"232":4,"233":4,"234":4,"235":4,"236":4,"237":4,"238":4,"239":4,"240":1,"241":1,"242":12,"243":8,"244":12,"245":12,"246":12,"247":12,"248":12,"249":12,"250":1,"251":1,"252":11,"253":11,"254":7,"255":11,"256":11,"257":1,"258":1,"259":10,"260":1,"261":1,"262":1,"263":1,"264":9,"265":9,"266":9,"267":9,"268":9,"269":9,"270":9,"271":0,"272":9,"273":9,"274":1,"275":9,"276":9,"277":9,"278":9,"279":9,"280":9,"281":9,"282":9,"283":1,"284":1,"285":0,"286":8,"287":8,"288":8,"289":8,"290":0,"291":9,"292":9,"293":9,"294":9,"295":0,"296":11,"297":1,"298":7,"299":7,"300":7,"301":1,"302":9,"303":9,"304":9,"305":9,"306":9,"307":9,"308":9,"309":9,"310":1,"311":1,"312":1,"313":1,"314":1,"315":15,"316":15,"317":15,"318":1,"319":1,"320":11,"321":11,"322":11,"323":1,"324":11,"325":11,"326":11,"327":0,"328":11,"329":11,"330":11,"331":11,"332":11,"333":11,"334":11,"335":11,"336":11,"337":11,"338":11,"339":1,"340":4,"341":4,"342":4,"343":1,"344":0,"345":0,"346":0,"347":1,"348":40,"349":0,"350":40,"351":1,"352":3,"353":1,"354":2,"355":1,"356":1,"357":3,"358":1,"359":2,"360":1,"361":1,"362":3,"363":1,"364":2,"365":1,"366":1,"367":3,"368":1,"369":2,"370":1,"371":1,"372":1,"373":2,"374":2,"375":2,"376":2,"377":0,"378":1,"379":13,"380":1,"381":1,"382":12,"383":12,"384":0,"385":0,"386":0,"387":12,"388":12,"389":12,"390":12,"391":1,"392":2,"393":2,"394":2,"395":2,"396":2,"397":2,"398":2,"399":2,"400":2,"401":2,"402":1,"403":1,"404":0,"405":1,"406":0,"407":1},"b":{"1":[0,168],"2":[13,60],"3":[12,1],"4":[23,8],"5":[2,21],"6":[0,2],"7":[0,4],"8":[0,4],"9":[0,1],"10":[13,2],"11":[13,2],"12":[10,3],"13":[13,10,3],"14":[9,0],"15":[9,9],"16":[1,2],"17":[0,9],"18":[1,0],"19":[1,0],"20":[1,0],"21":[0,9],"22":[9,9],"23":[0,0],"24":[1,9],"25":[9,0],"26":[0,48],"27":[48,48],"28":[1,11],"29":[11,1],"30":[12,11],"31":[11,12],"32":[1,1],"33":[0,2],"34":[2,2],"35":[2,1,1],"36":[2,2,2],"37":[0,12],"38":[12,0],"39":[4,4],"40":[7,7],"41":[4,1],"42":[4,1],"43":[8,4],"44":[12,12],"45":[12,3],"46":[12,4,1],"47":[12,1],"48":[12,1],"49":[1,11],"50":[7,4],"51":[1,10],"52":[1,9],"53":[0,9],"54":[9,0],"55":[1,8],"56":[1,0],"57":[8,0],"58":[9,0],"59":[0,11],"60":[11,10],"61":[0,0],"62":[0,40],"63":[40,0],"64":[1,2],"65":[1,1],"66":[1,2],"67":[1,1],"68":[1,2],"69":[1,1],"70":[1,2],"71":[1,1],"72":[2,0],"73":[0,12],"74":[12,12]},"f":{"1":2,"2":3,"3":6,"4":25,"5":24,"6":2,"7":27,"8":13,"9":31,"10":4,"11":1,"12":3,"13":2,"14":13,"15":9,"16":10,"17":10,"18":0,"19":9,"20":4,"21":1,"22":1,"23":1,"24":9,"25":0,"26":10,"27":12,"28":12,"29":12,"30":12,"31":23,"32":11,"33":12,"34":10,"35":2,"36":12,"37":4,"38":7,"39":4,"40":12,"41":9,"42":9,"43":9,"44":7,"45":9,"46":1,"47":1,"48":15,"49":11,"50":4,"51":0,"52":40,"53":3,"54":3,"55":3,"56":3,"57":2,"58":13,"59":12,"60":2,"61":0,"62":0},"fnMap":{"1":{"name":"noop","line":161,"loc":{"start":{"line":161,"column":0},"end":{"line":161,"column":16}}},"2":{"name":"(anonymous_2)","line":170,"loc":{"start":{"line":170,"column":9},"end":{"line":170,"column":20}}},"3":{"name":"(anonymous_3)","line":176,"loc":{"start":{"line":176,"column":16},"end":{"line":176,"column":33}}},"4":{"name":"IncomingMessage","line":183,"loc":{"start":{"line":183,"column":0},"end":{"line":183,"column":33}}},"5":{"name":"_onHeaders","line":210,"loc":{"start":{"line":210,"column":39},"end":{"line":210,"column":68}}},"6":{"name":"_onTrailers","line":235,"loc":{"start":{"line":235,"column":40},"end":{"line":235,"column":71}}},"7":{"name":"OutgoingMessage","line":244,"loc":{"start":{"line":244,"column":0},"end":{"line":244,"column":27}}},"8":{"name":"_write","line":256,"loc":{"start":{"line":256,"column":35},"end":{"line":256,"column":78}}},"9":{"name":"_finish","line":264,"loc":{"start":{"line":264,"column":36},"end":{"line":264,"column":55}}},"10":{"name":"setHeader","line":279,"loc":{"start":{"line":279,"column":38},"end":{"line":279,"column":70}}},"11":{"name":"removeHeader","line":291,"loc":{"start":{"line":291,"column":41},"end":{"line":291,"column":69}}},"12":{"name":"getHeader","line":299,"loc":{"start":{"line":299,"column":38},"end":{"line":299,"column":63}}},"13":{"name":"addTrailers","line":303,"loc":{"start":{"line":303,"column":40},"end":{"line":303,"column":71}}},"14":{"name":"Server","line":321,"loc":{"start":{"line":321,"column":0},"end":{"line":321,"column":25}}},"15":{"name":"(anonymous_15)","line":338,"loc":{"start":{"line":338,"column":40},"end":{"line":338,"column":57}}},"16":{"name":"_start","line":366,"loc":{"start":{"line":366,"column":26},"end":{"line":366,"column":50}}},"17":{"name":"_onStream","line":377,"loc":{"start":{"line":377,"column":24},"end":{"line":377,"column":51}}},"18":{"name":"_fallback","line":389,"loc":{"start":{"line":389,"column":29},"end":{"line":389,"column":56}}},"19":{"name":"listen","line":405,"loc":{"start":{"line":405,"column":26},"end":{"line":405,"column":58}}},"20":{"name":"close","line":411,"loc":{"start":{"line":411,"column":25},"end":{"line":411,"column":50}}},"21":{"name":"setTimeout","line":416,"loc":{"start":{"line":416,"column":30},"end":{"line":416,"column":69}}},"22":{"name":"getTimeout","line":423,"loc":{"start":{"line":423,"column":7},"end":{"line":423,"column":29}}},"23":{"name":"setTimeout","line":430,"loc":{"start":{"line":430,"column":7},"end":{"line":430,"column":36}}},"24":{"name":"on","line":441,"loc":{"start":{"line":441,"column":22},"end":{"line":441,"column":51}}},"25":{"name":"addContext","line":450,"loc":{"start":{"line":450,"column":30},"end":{"line":450,"column":73}}},"26":{"name":"createServer","line":456,"loc":{"start":{"line":456,"column":0},"end":{"line":456,"column":48}}},"27":{"name":"IncomingRequest","line":474,"loc":{"start":{"line":474,"column":0},"end":{"line":474,"column":33}}},"28":{"name":"_onHeaders","line":483,"loc":{"start":{"line":483,"column":39},"end":{"line":483,"column":68}}},"29":{"name":"OutgoingResponse","line":525,"loc":{"start":{"line":525,"column":0},"end":{"line":525,"column":34}}},"30":{"name":"writeHead","line":538,"loc":{"start":{"line":538,"column":39},"end":{"line":538,"column":93}}},"31":{"name":"_implicitHeaders","line":562,"loc":{"start":{"line":562,"column":46},"end":{"line":562,"column":74}}},"32":{"name":"write","line":568,"loc":{"start":{"line":568,"column":35},"end":{"line":568,"column":52}}},"33":{"name":"end","line":573,"loc":{"start":{"line":573,"column":33},"end":{"line":573,"column":48}}},"34":{"name":"_onRequestHeaders","line":578,"loc":{"start":{"line":578,"column":47},"end":{"line":578,"column":83}}},"35":{"name":"push","line":582,"loc":{"start":{"line":582,"column":34},"end":{"line":582,"column":57}}},"36":{"name":"on","line":608,"loc":{"start":{"line":608,"column":32},"end":{"line":608,"column":61}}},"37":{"name":"request","line":624,"loc":{"start":{"line":624,"column":18},"end":{"line":624,"column":54}}},"38":{"name":"get","line":627,"loc":{"start":{"line":627,"column":14},"end":{"line":627,"column":46}}},"39":{"name":"Agent","line":634,"loc":{"start":{"line":634,"column":0},"end":{"line":634,"column":24}}},"40":{"name":"request","line":656,"loc":{"start":{"line":656,"column":26},"end":{"line":656,"column":62}}},"41":{"name":"(anonymous_41)","line":710,"loc":{"start":{"line":710,"column":30},"end":{"line":710,"column":47}}},"42":{"name":"negotiated","line":719,"loc":{"start":{"line":719,"column":4},"end":{"line":719,"column":26}}},"43":{"name":"(anonymous_43)","line":746,"loc":{"start":{"line":746,"column":19},"end":{"line":746,"column":38}}},"44":{"name":"get","line":759,"loc":{"start":{"line":759,"column":22},"end":{"line":759,"column":54}}},"45":{"name":"unbundleSocket","line":765,"loc":{"start":{"line":765,"column":0},"end":{"line":765,"column":32}}},"46":{"name":"getMaxSockets","line":777,"loc":{"start":{"line":777,"column":7},"end":{"line":777,"column":32}}},"47":{"name":"setMaxSockets","line":780,"loc":{"start":{"line":780,"column":7},"end":{"line":780,"column":37}}},"48":{"name":"OutgoingRequest","line":790,"loc":{"start":{"line":790,"column":0},"end":{"line":790,"column":27}}},"49":{"name":"_start","line":799,"loc":{"start":{"line":799,"column":35},"end":{"line":799,"column":68}}},"50":{"name":"_fallback","line":832,"loc":{"start":{"line":832,"column":38},"end":{"line":832,"column":66}}},"51":{"name":"setPriority","line":838,"loc":{"start":{"line":838,"column":40},"end":{"line":838,"column":71}}},"52":{"name":"on","line":848,"loc":{"start":{"line":848,"column":31},"end":{"line":848,"column":60}}},"53":{"name":"setNoDelay","line":857,"loc":{"start":{"line":857,"column":39},"end":{"line":857,"column":68}}},"54":{"name":"setSocketKeepAlive","line":865,"loc":{"start":{"line":865,"column":47},"end":{"line":865,"column":97}}},"55":{"name":"setTimeout","line":873,"loc":{"start":{"line":873,"column":39},"end":{"line":873,"column":78}}},"56":{"name":"abort","line":882,"loc":{"start":{"line":882,"column":34},"end":{"line":882,"column":51}}},"57":{"name":"_onPromise","line":893,"loc":{"start":{"line":893,"column":39},"end":{"line":893,"column":76}}},"58":{"name":"IncomingResponse","line":908,"loc":{"start":{"line":908,"column":0},"end":{"line":908,"column":34}}},"59":{"name":"_onHeaders","line":917,"loc":{"start":{"line":917,"column":40},"end":{"line":917,"column":69}}},"60":{"name":"IncomingPromise","line":943,"loc":{"start":{"line":943,"column":0},"end":{"line":943,"column":57}}},"61":{"name":"cancel","line":962,"loc":{"start":{"line":962,"column":35},"end":{"line":962,"column":53}}},"62":{"name":"setPriority","line":966,"loc":{"start":{"line":966,"column":40},"end":{"line":966,"column":71}}}},"statementMap":{"1":{"start":{"line":128,"column":0},"end":{"line":128,"column":25}},"2":{"start":{"line":129,"column":0},"end":{"line":129,"column":25}},"3":{"start":{"line":130,"column":0},"end":{"line":130,"column":27}},"4":{"start":{"line":131,"column":0},"end":{"line":131,"column":50}},"5":{"start":{"line":132,"column":0},"end":{"line":132,"column":48}},"6":{"start":{"line":133,"column":0},"end":{"line":133,"column":42}},"7":{"start":{"line":134,"column":0},"end":{"line":134,"column":42}},"8":{"start":{"line":135,"column":0},"end":{"line":135,"column":46}},"9":{"start":{"line":136,"column":0},"end":{"line":136,"column":27}},"10":{"start":{"line":137,"column":0},"end":{"line":137,"column":29}},"11":{"start":{"line":139,"column":0},"end":{"line":139,"column":41}},"12":{"start":{"line":140,"column":0},"end":{"line":140,"column":42}},"13":{"start":{"line":141,"column":0},"end":{"line":141,"column":42}},"14":{"start":{"line":143,"column":0},"end":{"line":151,"column":2}},"15":{"start":{"line":155,"column":0},"end":{"line":155,"column":45}},"16":{"start":{"line":161,"column":0},"end":{"line":161,"column":18}},"17":{"start":{"line":162,"column":0},"end":{"line":171,"column":2}},"18":{"start":{"line":170,"column":22},"end":{"line":170,"column":34}},"19":{"start":{"line":174,"column":0},"end":{"line":174,"column":25}},"20":{"start":{"line":175,"column":0},"end":{"line":175,"column":95}},"21":{"start":{"line":176,"column":0},"end":{"line":178,"column":3}},"22":{"start":{"line":177,"column":2},"end":{"line":177,"column":65}},"23":{"start":{"line":183,"column":0},"end":{"line":203,"column":1}},"24":{"start":{"line":185,"column":2},"end":{"line":185,"column":25}},"25":{"start":{"line":186,"column":2},"end":{"line":186,"column":20}},"26":{"start":{"line":187,"column":2},"end":{"line":187,"column":37}},"27":{"start":{"line":189,"column":2},"end":{"line":189,"column":55}},"28":{"start":{"line":193,"column":2},"end":{"line":193,"column":27}},"29":{"start":{"line":194,"column":2},"end":{"line":194,"column":28}},"30":{"start":{"line":195,"column":2},"end":{"line":195,"column":28}},"31":{"start":{"line":198,"column":2},"end":{"line":198,"column":20}},"32":{"start":{"line":199,"column":2},"end":{"line":199,"column":28}},"33":{"start":{"line":202,"column":2},"end":{"line":202,"column":53}},"34":{"start":{"line":204,"column":0},"end":{"line":204,"column":110}},"35":{"start":{"line":210,"column":0},"end":{"line":233,"column":2}},"36":{"start":{"line":215,"column":2},"end":{"line":222,"column":3}},"37":{"start":{"line":216,"column":4},"end":{"line":216,"column":35}},"38":{"start":{"line":217,"column":4},"end":{"line":221,"column":5}},"39":{"start":{"line":218,"column":6},"end":{"line":218,"column":84}},"40":{"start":{"line":219,"column":6},"end":{"line":219,"column":50}},"41":{"start":{"line":220,"column":6},"end":{"line":220,"column":13}},"42":{"start":{"line":225,"column":2},"end":{"line":229,"column":3}},"43":{"start":{"line":226,"column":4},"end":{"line":228,"column":5}},"44":{"start":{"line":227,"column":6},"end":{"line":227,"column":41}},"45":{"start":{"line":232,"column":2},"end":{"line":232,"column":59}},"46":{"start":{"line":235,"column":0},"end":{"line":237,"column":2}},"47":{"start":{"line":236,"column":2},"end":{"line":236,"column":27}},"48":{"start":{"line":239,"column":0},"end":{"line":239,"column":44}},"49":{"start":{"line":244,"column":0},"end":{"line":253,"column":1}},"50":{"start":{"line":246,"column":2},"end":{"line":246,"column":22}},"51":{"start":{"line":248,"column":2},"end":{"line":248,"column":21}},"52":{"start":{"line":249,"column":2},"end":{"line":249,"column":29}},"53":{"start":{"line":250,"column":2},"end":{"line":250,"column":27}},"54":{"start":{"line":252,"column":2},"end":{"line":252,"column":45}},"55":{"start":{"line":254,"column":0},"end":{"line":254,"column":107}},"56":{"start":{"line":256,"column":0},"end":{"line":262,"column":2}},"57":{"start":{"line":257,"column":2},"end":{"line":261,"column":3}},"58":{"start":{"line":258,"column":4},"end":{"line":258,"column":49}},"59":{"start":{"line":260,"column":4},"end":{"line":260,"column":75}},"60":{"start":{"line":264,"column":0},"end":{"line":277,"column":2}},"61":{"start":{"line":265,"column":2},"end":{"line":276,"column":3}},"62":{"start":{"line":266,"column":4},"end":{"line":272,"column":5}},"63":{"start":{"line":267,"column":6},"end":{"line":271,"column":7}},"64":{"start":{"line":268,"column":8},"end":{"line":268,"column":49}},"65":{"start":{"line":270,"column":8},"end":{"line":270,"column":44}},"66":{"start":{"line":273,"column":4},"end":{"line":273,"column":22}},"67":{"start":{"line":275,"column":4},"end":{"line":275,"column":49}},"68":{"start":{"line":279,"column":0},"end":{"line":289,"column":2}},"69":{"start":{"line":280,"column":2},"end":{"line":288,"column":3}},"70":{"start":{"line":281,"column":4},"end":{"line":281,"column":63}},"71":{"start":{"line":283,"column":4},"end":{"line":283,"column":30}},"72":{"start":{"line":284,"column":4},"end":{"line":286,"column":5}},"73":{"start":{"line":285,"column":6},"end":{"line":285,"column":63}},"74":{"start":{"line":287,"column":4},"end":{"line":287,"column":32}},"75":{"start":{"line":291,"column":0},"end":{"line":297,"column":2}},"76":{"start":{"line":292,"column":2},"end":{"line":296,"column":3}},"77":{"start":{"line":293,"column":4},"end":{"line":293,"column":66}},"78":{"start":{"line":295,"column":4},"end":{"line":295,"column":45}},"79":{"start":{"line":299,"column":0},"end":{"line":301,"column":2}},"80":{"start":{"line":300,"column":2},"end":{"line":300,"column":43}},"81":{"start":{"line":303,"column":0},"end":{"line":305,"column":2}},"82":{"start":{"line":304,"column":2},"end":{"line":304,"column":28}},"83":{"start":{"line":307,"column":0},"end":{"line":307,"column":44}},"84":{"start":{"line":312,"column":0},"end":{"line":312,"column":36}},"85":{"start":{"line":313,"column":0},"end":{"line":313,"column":24}},"86":{"start":{"line":314,"column":0},"end":{"line":314,"column":42}},"87":{"start":{"line":315,"column":0},"end":{"line":315,"column":44}},"88":{"start":{"line":316,"column":0},"end":{"line":316,"column":42}},"89":{"start":{"line":321,"column":0},"end":{"line":362,"column":1}},"90":{"start":{"line":322,"column":2},"end":{"line":322,"column":26}},"91":{"start":{"line":324,"column":2},"end":{"line":324,"column":74}},"92":{"start":{"line":325,"column":2},"end":{"line":325,"column":36}},"93":{"start":{"line":327,"column":2},"end":{"line":327,"column":37}},"94":{"start":{"line":328,"column":2},"end":{"line":328,"column":43}},"95":{"start":{"line":331,"column":2},"end":{"line":359,"column":3}},"96":{"start":{"line":332,"column":4},"end":{"line":332,"column":58}},"97":{"start":{"line":333,"column":4},"end":{"line":333,"column":23}},"98":{"start":{"line":334,"column":4},"end":{"line":334,"column":72}},"99":{"start":{"line":335,"column":4},"end":{"line":335,"column":47}},"100":{"start":{"line":336,"column":4},"end":{"line":336,"column":79}},"101":{"start":{"line":337,"column":4},"end":{"line":337,"column":56}},"102":{"start":{"line":338,"column":4},"end":{"line":344,"column":7}},"103":{"start":{"line":339,"column":6},"end":{"line":343,"column":7}},"104":{"start":{"line":340,"column":8},"end":{"line":340,"column":22}},"105":{"start":{"line":342,"column":8},"end":{"line":342,"column":25}},"106":{"start":{"line":345,"column":4},"end":{"line":345,"column":64}},"107":{"start":{"line":349,"column":7},"end":{"line":359,"column":3}},"108":{"start":{"line":350,"column":4},"end":{"line":350,"column":60}},"109":{"start":{"line":351,"column":4},"end":{"line":351,"column":25}},"110":{"start":{"line":352,"column":4},"end":{"line":352,"column":43}},"111":{"start":{"line":357,"column":4},"end":{"line":357,"column":81}},"112":{"start":{"line":358,"column":4},"end":{"line":358,"column":95}},"113":{"start":{"line":361,"column":2},"end":{"line":361,"column":58}},"114":{"start":{"line":363,"column":0},"end":{"line":363,"column":93}},"115":{"start":{"line":366,"column":0},"end":{"line":387,"column":2}},"116":{"start":{"line":367,"column":2},"end":{"line":367,"column":67}},"117":{"start":{"line":369,"column":2},"end":{"line":372,"column":54}},"118":{"start":{"line":374,"column":2},"end":{"line":374,"column":39}},"119":{"start":{"line":376,"column":2},"end":{"line":376,"column":18}},"120":{"start":{"line":377,"column":2},"end":{"line":382,"column":5}},"121":{"start":{"line":378,"column":4},"end":{"line":378,"column":48}},"122":{"start":{"line":379,"column":4},"end":{"line":379,"column":46}},"123":{"start":{"line":381,"column":4},"end":{"line":381,"column":78}},"124":{"start":{"line":384,"column":2},"end":{"line":384,"column":60}},"125":{"start":{"line":386,"column":2},"end":{"line":386,"column":44}},"126":{"start":{"line":389,"column":0},"end":{"line":400,"column":2}},"127":{"start":{"line":390,"column":2},"end":{"line":393,"column":52}},"128":{"start":{"line":395,"column":2},"end":{"line":397,"column":3}},"129":{"start":{"line":396,"column":4},"end":{"line":396,"column":64}},"130":{"start":{"line":399,"column":2},"end":{"line":399,"column":34}},"131":{"start":{"line":405,"column":0},"end":{"line":409,"column":2}},"132":{"start":{"line":406,"column":2},"end":{"line":407,"column":55}},"133":{"start":{"line":408,"column":2},"end":{"line":408,"column":53}},"134":{"start":{"line":411,"column":0},"end":{"line":414,"column":2}},"135":{"start":{"line":412,"column":2},"end":{"line":412,"column":35}},"136":{"start":{"line":413,"column":2},"end":{"line":413,"column":31}},"137":{"start":{"line":416,"column":0},"end":{"line":420,"column":2}},"138":{"start":{"line":417,"column":2},"end":{"line":419,"column":3}},"139":{"start":{"line":418,"column":4},"end":{"line":418,"column":47}},"140":{"start":{"line":422,"column":0},"end":{"line":435,"column":3}},"141":{"start":{"line":424,"column":4},"end":{"line":428,"column":5}},"142":{"start":{"line":425,"column":6},"end":{"line":425,"column":34}},"143":{"start":{"line":427,"column":6},"end":{"line":427,"column":23}},"144":{"start":{"line":431,"column":4},"end":{"line":433,"column":5}},"145":{"start":{"line":432,"column":6},"end":{"line":432,"column":37}},"146":{"start":{"line":441,"column":0},"end":{"line":447,"column":2}},"147":{"start":{"line":442,"column":2},"end":{"line":446,"column":3}},"148":{"start":{"line":443,"column":4},"end":{"line":443,"column":48}},"149":{"start":{"line":445,"column":4},"end":{"line":445,"column":58}},"150":{"start":{"line":450,"column":0},"end":{"line":454,"column":2}},"151":{"start":{"line":451,"column":2},"end":{"line":453,"column":3}},"152":{"start":{"line":452,"column":4},"end":{"line":452,"column":51}},"153":{"start":{"line":456,"column":0},"end":{"line":469,"column":1}},"154":{"start":{"line":457,"column":2},"end":{"line":460,"column":3}},"155":{"start":{"line":458,"column":4},"end":{"line":458,"column":30}},"156":{"start":{"line":459,"column":4},"end":{"line":459,"column":24}},"157":{"start":{"line":462,"column":2},"end":{"line":462,"column":35}},"158":{"start":{"line":464,"column":2},"end":{"line":466,"column":3}},"159":{"start":{"line":465,"column":4},"end":{"line":465,"column":42}},"160":{"start":{"line":468,"column":2},"end":{"line":468,"column":16}},"161":{"start":{"line":474,"column":0},"end":{"line":476,"column":1}},"162":{"start":{"line":475,"column":2},"end":{"line":475,"column":37}},"163":{"start":{"line":477,"column":0},"end":{"line":477,"column":114}},"164":{"start":{"line":483,"column":0},"end":{"line":520,"column":2}},"165":{"start":{"line":494,"column":2},"end":{"line":499,"column":4}},"166":{"start":{"line":500,"column":2},"end":{"line":508,"column":3}},"167":{"start":{"line":501,"column":4},"end":{"line":501,"column":30}},"168":{"start":{"line":502,"column":4},"end":{"line":506,"column":5}},"169":{"start":{"line":503,"column":6},"end":{"line":503,"column":94}},"170":{"start":{"line":504,"column":6},"end":{"line":504,"column":50}},"171":{"start":{"line":505,"column":6},"end":{"line":505,"column":13}},"172":{"start":{"line":507,"column":4},"end":{"line":507,"column":32}},"173":{"start":{"line":511,"column":2},"end":{"line":511,"column":32}},"174":{"start":{"line":514,"column":2},"end":{"line":514,"column":59}},"175":{"start":{"line":517,"column":2},"end":{"line":518,"column":80}},"176":{"start":{"line":519,"column":2},"end":{"line":519,"column":21}},"177":{"start":{"line":525,"column":0},"end":{"line":535,"column":1}},"178":{"start":{"line":526,"column":2},"end":{"line":526,"column":29}},"179":{"start":{"line":528,"column":2},"end":{"line":528,"column":55}},"180":{"start":{"line":530,"column":2},"end":{"line":530,"column":23}},"181":{"start":{"line":531,"column":2},"end":{"line":531,"column":24}},"182":{"start":{"line":532,"column":2},"end":{"line":532,"column":23}},"183":{"start":{"line":534,"column":2},"end":{"line":534,"column":65}},"184":{"start":{"line":536,"column":0},"end":{"line":536,"column":116}},"185":{"start":{"line":538,"column":0},"end":{"line":560,"column":2}},"186":{"start":{"line":539,"column":2},"end":{"line":543,"column":3}},"187":{"start":{"line":540,"column":4},"end":{"line":540,"column":93}},"188":{"start":{"line":542,"column":4},"end":{"line":542,"column":27}},"189":{"start":{"line":545,"column":2},"end":{"line":547,"column":3}},"190":{"start":{"line":546,"column":4},"end":{"line":546,"column":40}},"191":{"start":{"line":548,"column":2},"end":{"line":548,"column":26}},"192":{"start":{"line":550,"column":2},"end":{"line":552,"column":3}},"193":{"start":{"line":551,"column":4},"end":{"line":551,"column":46}},"194":{"start":{"line":554,"column":2},"end":{"line":554,"column":92}},"195":{"start":{"line":556,"column":2},"end":{"line":556,"column":52}},"196":{"start":{"line":558,"column":2},"end":{"line":558,"column":31}},"197":{"start":{"line":559,"column":2},"end":{"line":559,"column":26}},"198":{"start":{"line":562,"column":0},"end":{"line":566,"column":2}},"199":{"start":{"line":563,"column":2},"end":{"line":565,"column":3}},"200":{"start":{"line":564,"column":4},"end":{"line":564,"column":36}},"201":{"start":{"line":568,"column":0},"end":{"line":571,"column":2}},"202":{"start":{"line":569,"column":2},"end":{"line":569,"column":26}},"203":{"start":{"line":570,"column":2},"end":{"line":570,"column":64}},"204":{"start":{"line":573,"column":0},"end":{"line":576,"column":2}},"205":{"start":{"line":574,"column":2},"end":{"line":574,"column":26}},"206":{"start":{"line":575,"column":2},"end":{"line":575,"column":62}},"207":{"start":{"line":578,"column":0},"end":{"line":580,"column":2}},"208":{"start":{"line":579,"column":2},"end":{"line":579,"column":33}},"209":{"start":{"line":582,"column":0},"end":{"line":604,"column":2}},"210":{"start":{"line":583,"column":2},"end":{"line":585,"column":3}},"211":{"start":{"line":584,"column":4},"end":{"line":584,"column":33}},"212":{"start":{"line":587,"column":2},"end":{"line":589,"column":3}},"213":{"start":{"line":588,"column":4},"end":{"line":588,"column":51}},"214":{"start":{"line":591,"column":2},"end":{"line":596,"column":22}},"215":{"start":{"line":598,"column":2},"end":{"line":599,"column":96}},"216":{"start":{"line":601,"column":2},"end":{"line":601,"column":48}},"217":{"start":{"line":603,"column":2},"end":{"line":603,"column":42}},"218":{"start":{"line":608,"column":0},"end":{"line":614,"column":2}},"219":{"start":{"line":609,"column":2},"end":{"line":613,"column":3}},"220":{"start":{"line":610,"column":4},"end":{"line":610,"column":48}},"221":{"start":{"line":612,"column":4},"end":{"line":612,"column":61}},"222":{"start":{"line":619,"column":0},"end":{"line":619,"column":40}},"223":{"start":{"line":620,"column":0},"end":{"line":620,"column":42}},"224":{"start":{"line":621,"column":0},"end":{"line":621,"column":44}},"225":{"start":{"line":622,"column":0},"end":{"line":622,"column":22}},"226":{"start":{"line":623,"column":0},"end":{"line":623,"column":32}},"227":{"start":{"line":624,"column":0},"end":{"line":626,"column":2}},"228":{"start":{"line":625,"column":2},"end":{"line":625,"column":75}},"229":{"start":{"line":627,"column":0},"end":{"line":629,"column":2}},"230":{"start":{"line":628,"column":2},"end":{"line":628,"column":71}},"231":{"start":{"line":634,"column":0},"end":{"line":653,"column":1}},"232":{"start":{"line":635,"column":2},"end":{"line":635,"column":26}},"233":{"start":{"line":637,"column":2},"end":{"line":637,"column":26}},"234":{"start":{"line":639,"column":2},"end":{"line":639,"column":36}},"235":{"start":{"line":640,"column":2},"end":{"line":640,"column":74}},"236":{"start":{"line":641,"column":2},"end":{"line":641,"column":22}},"237":{"start":{"line":647,"column":2},"end":{"line":649,"column":5}},"238":{"start":{"line":651,"column":2},"end":{"line":651,"column":42}},"239":{"start":{"line":652,"column":2},"end":{"line":652,"column":44}},"240":{"start":{"line":654,"column":0},"end":{"line":654,"column":91}},"241":{"start":{"line":656,"column":0},"end":{"line":757,"column":2}},"242":{"start":{"line":657,"column":2},"end":{"line":659,"column":3}},"243":{"start":{"line":658,"column":4},"end":{"line":658,"column":33}},"244":{"start":{"line":661,"column":2},"end":{"line":661,"column":59}},"245":{"start":{"line":662,"column":2},"end":{"line":662,"column":50}},"246":{"start":{"line":663,"column":2},"end":{"line":663,"column":65}},"247":{"start":{"line":664,"column":2},"end":{"line":664,"column":37}},"248":{"start":{"line":665,"column":2},"end":{"line":665,"column":37}},"249":{"start":{"line":667,"column":2},"end":{"line":670,"column":3}},"250":{"start":{"line":668,"column":4},"end":{"line":668,"column":85}},"251":{"start":{"line":669,"column":4},"end":{"line":669,"column":70}},"252":{"start":{"line":672,"column":2},"end":{"line":672,"column":47}},"253":{"start":{"line":674,"column":2},"end":{"line":676,"column":3}},"254":{"start":{"line":675,"column":4},"end":{"line":675,"column":37}},"255":{"start":{"line":678,"column":2},"end":{"line":682,"column":14}},"256":{"start":{"line":685,"column":2},"end":{"line":754,"column":3}},"257":{"start":{"line":686,"column":4},"end":{"line":686,"column":39}},"258":{"start":{"line":687,"column":4},"end":{"line":687,"column":53}},"259":{"start":{"line":691,"column":7},"end":{"line":754,"column":3}},"260":{"start":{"line":692,"column":4},"end":{"line":692,"column":65}},"261":{"start":{"line":693,"column":4},"end":{"line":697,"column":7}},"262":{"start":{"line":698,"column":4},"end":{"line":698,"column":50}},"263":{"start":{"line":699,"column":4},"end":{"line":699,"column":53}},"264":{"start":{"line":704,"column":4},"end":{"line":704,"column":24}},"265":{"start":{"line":705,"column":4},"end":{"line":705,"column":72}},"266":{"start":{"line":706,"column":4},"end":{"line":706,"column":38}},"267":{"start":{"line":707,"column":4},"end":{"line":707,"column":37}},"268":{"start":{"line":708,"column":4},"end":{"line":708,"column":46}},"269":{"start":{"line":710,"column":4},"end":{"line":716,"column":7}},"270":{"start":{"line":711,"column":6},"end":{"line":715,"column":7}},"271":{"start":{"line":712,"column":8},"end":{"line":712,"column":21}},"272":{"start":{"line":714,"column":8},"end":{"line":714,"column":47}},"273":{"start":{"line":718,"column":4},"end":{"line":718,"column":20}},"274":{"start":{"line":719,"column":4},"end":{"line":744,"column":5}},"275":{"start":{"line":720,"column":6},"end":{"line":720,"column":19}},"276":{"start":{"line":721,"column":6},"end":{"line":727,"column":7}},"277":{"start":{"line":722,"column":8},"end":{"line":722,"column":48}},"278":{"start":{"line":723,"column":8},"end":{"line":723,"column":44}},"279":{"start":{"line":724,"column":8},"end":{"line":724,"column":69}},"280":{"start":{"line":725,"column":8},"end":{"line":725,"column":46}},"281":{"start":{"line":726,"column":8},"end":{"line":726,"column":54}},"282":{"start":{"line":728,"column":6},"end":{"line":743,"column":7}},"283":{"start":{"line":729,"column":8},"end":{"line":733,"column":9}},"284":{"start":{"line":730,"column":10},"end":{"line":730,"column":27}},"285":{"start":{"line":732,"column":10},"end":{"line":732,"column":31}},"286":{"start":{"line":735,"column":8},"end":{"line":742,"column":9}},"287":{"start":{"line":736,"column":10},"end":{"line":737,"column":59}},"288":{"start":{"line":738,"column":10},"end":{"line":738,"column":41}},"289":{"start":{"line":739,"column":10},"end":{"line":739,"column":35}},"290":{"start":{"line":741,"column":10},"end":{"line":741,"column":36}},"291":{"start":{"line":746,"column":4},"end":{"line":753,"column":7}},"292":{"start":{"line":747,"column":6},"end":{"line":747,"column":21}},"293":{"start":{"line":748,"column":6},"end":{"line":752,"column":7}},"294":{"start":{"line":749,"column":8},"end":{"line":749,"column":57}},"295":{"start":{"line":751,"column":8},"end":{"line":751,"column":40}},"296":{"start":{"line":756,"column":2},"end":{"line":756,"column":17}},"297":{"start":{"line":759,"column":0},"end":{"line":763,"column":2}},"298":{"start":{"line":760,"column":2},"end":{"line":760,"column":48}},"299":{"start":{"line":761,"column":2},"end":{"line":761,"column":16}},"300":{"start":{"line":762,"column":2},"end":{"line":762,"column":17}},"301":{"start":{"line":765,"column":0},"end":{"line":774,"column":1}},"302":{"start":{"line":766,"column":2},"end":{"line":766,"column":36}},"303":{"start":{"line":767,"column":2},"end":{"line":767,"column":35}},"304":{"start":{"line":768,"column":2},"end":{"line":768,"column":40}},"305":{"start":{"line":769,"column":2},"end":{"line":769,"column":37}},"306":{"start":{"line":770,"column":2},"end":{"line":770,"column":37}},"307":{"start":{"line":771,"column":2},"end":{"line":771,"column":18}},"308":{"start":{"line":772,"column":2},"end":{"line":772,"column":23}},"309":{"start":{"line":773,"column":2},"end":{"line":773,"column":22}},"310":{"start":{"line":776,"column":0},"end":{"line":783,"column":3}},"311":{"start":{"line":778,"column":4},"end":{"line":778,"column":39}},"312":{"start":{"line":781,"column":4},"end":{"line":781,"column":40}},"313":{"start":{"line":785,"column":0},"end":{"line":785,"column":34}},"314":{"start":{"line":790,"column":0},"end":{"line":796,"column":1}},"315":{"start":{"line":791,"column":2},"end":{"line":791,"column":29}},"316":{"start":{"line":793,"column":2},"end":{"line":793,"column":24}},"317":{"start":{"line":795,"column":2},"end":{"line":795,"column":26}},"318":{"start":{"line":797,"column":0},"end":{"line":797,"column":114}},"319":{"start":{"line":799,"column":0},"end":{"line":830,"column":2}},"320":{"start":{"line":800,"column":2},"end":{"line":800,"column":23}},"321":{"start":{"line":802,"column":2},"end":{"line":802,"column":55}},"322":{"start":{"line":804,"column":2},"end":{"line":806,"column":3}},"323":{"start":{"line":805,"column":4},"end":{"line":805,"column":46}},"324":{"start":{"line":807,"column":2},"end":{"line":807,"column":30}},"325":{"start":{"line":808,"column":2},"end":{"line":808,"column":22}},"326":{"start":{"line":810,"column":2},"end":{"line":812,"column":3}},"327":{"start":{"line":811,"column":4},"end":{"line":811,"column":83}},"328":{"start":{"line":814,"column":2},"end":{"line":814,"column":53}},"329":{"start":{"line":815,"column":2},"end":{"line":815,"column":38}},"330":{"start":{"line":816,"column":2},"end":{"line":816,"column":34}},"331":{"start":{"line":817,"column":2},"end":{"line":817,"column":34}},"332":{"start":{"line":819,"column":2},"end":{"line":820,"column":98}},"333":{"start":{"line":821,"column":2},"end":{"line":821,"column":31}},"334":{"start":{"line":822,"column":2},"end":{"line":822,"column":26}},"335":{"start":{"line":824,"column":2},"end":{"line":824,"column":35}},"336":{"start":{"line":826,"column":2},"end":{"line":826,"column":51}},"337":{"start":{"line":827,"column":2},"end":{"line":827,"column":69}},"338":{"start":{"line":829,"column":2},"end":{"line":829,"column":56}},"339":{"start":{"line":832,"column":0},"end":{"line":836,"column":2}},"340":{"start":{"line":833,"column":2},"end":{"line":833,"column":59}},"341":{"start":{"line":834,"column":2},"end":{"line":834,"column":39}},"342":{"start":{"line":835,"column":2},"end":{"line":835,"column":35}},"343":{"start":{"line":838,"column":0},"end":{"line":844,"column":2}},"344":{"start":{"line":839,"column":2},"end":{"line":843,"column":3}},"345":{"start":{"line":840,"column":4},"end":{"line":840,"column":35}},"346":{"start":{"line":842,"column":4},"end":{"line":842,"column":63}},"347":{"start":{"line":848,"column":0},"end":{"line":854,"column":2}},"348":{"start":{"line":849,"column":2},"end":{"line":853,"column":3}},"349":{"start":{"line":850,"column":4},"end":{"line":850,"column":48}},"350":{"start":{"line":852,"column":4},"end":{"line":852,"column":61}},"351":{"start":{"line":857,"column":0},"end":{"line":863,"column":2}},"352":{"start":{"line":858,"column":2},"end":{"line":862,"column":3}},"353":{"start":{"line":859,"column":4},"end":{"line":859,"column":37}},"354":{"start":{"line":860,"column":9},"end":{"line":862,"column":3}},"355":{"start":{"line":861,"column":4},"end":{"line":861,"column":59}},"356":{"start":{"line":865,"column":0},"end":{"line":871,"column":2}},"357":{"start":{"line":866,"column":2},"end":{"line":870,"column":3}},"358":{"start":{"line":867,"column":4},"end":{"line":867,"column":58}},"359":{"start":{"line":868,"column":9},"end":{"line":870,"column":3}},"360":{"start":{"line":869,"column":4},"end":{"line":869,"column":80}},"361":{"start":{"line":873,"column":0},"end":{"line":879,"column":2}},"362":{"start":{"line":874,"column":2},"end":{"line":878,"column":3}},"363":{"start":{"line":875,"column":4},"end":{"line":875,"column":47}},"364":{"start":{"line":876,"column":9},"end":{"line":878,"column":3}},"365":{"start":{"line":877,"column":4},"end":{"line":877,"column":69}},"366":{"start":{"line":882,"column":0},"end":{"line":890,"column":2}},"367":{"start":{"line":883,"column":2},"end":{"line":889,"column":3}},"368":{"start":{"line":884,"column":4},"end":{"line":884,"column":25}},"369":{"start":{"line":885,"column":9},"end":{"line":889,"column":3}},"370":{"start":{"line":886,"column":4},"end":{"line":886,"column":32}},"371":{"start":{"line":888,"column":4},"end":{"line":888,"column":45}},"372":{"start":{"line":893,"column":0},"end":{"line":903,"column":2}},"373":{"start":{"line":894,"column":2},"end":{"line":894,"column":71}},"374":{"start":{"line":896,"column":2},"end":{"line":896,"column":53}},"375":{"start":{"line":898,"column":2},"end":{"line":902,"column":3}},"376":{"start":{"line":899,"column":4},"end":{"line":899,"column":31}},"377":{"start":{"line":901,"column":4},"end":{"line":901,"column":21}},"378":{"start":{"line":908,"column":0},"end":{"line":910,"column":1}},"379":{"start":{"line":909,"column":2},"end":{"line":909,"column":37}},"380":{"start":{"line":911,"column":0},"end":{"line":911,"column":116}},"381":{"start":{"line":917,"column":0},"end":{"line":938,"column":2}},"382":{"start":{"line":924,"column":2},"end":{"line":924,"column":38}},"383":{"start":{"line":925,"column":2},"end":{"line":929,"column":3}},"384":{"start":{"line":926,"column":4},"end":{"line":926,"column":83}},"385":{"start":{"line":927,"column":4},"end":{"line":927,"column":48}},"386":{"start":{"line":928,"column":4},"end":{"line":928,"column":11}},"387":{"start":{"line":930,"column":2},"end":{"line":930,"column":31}},"388":{"start":{"line":933,"column":2},"end":{"line":933,"column":59}},"389":{"start":{"line":936,"column":2},"end":{"line":936,"column":89}},"390":{"start":{"line":937,"column":2},"end":{"line":937,"column":21}},"391":{"start":{"line":943,"column":0},"end":{"line":959,"column":1}},"392":{"start":{"line":944,"column":2},"end":{"line":944,"column":30}},"393":{"start":{"line":945,"column":2},"end":{"line":945,"column":22}},"394":{"start":{"line":946,"column":2},"end":{"line":946,"column":20}},"395":{"start":{"line":947,"column":2},"end":{"line":947,"column":36}},"396":{"start":{"line":949,"column":2},"end":{"line":949,"column":37}},"397":{"start":{"line":951,"column":2},"end":{"line":951,"column":34}},"398":{"start":{"line":953,"column":2},"end":{"line":953,"column":40}},"399":{"start":{"line":955,"column":2},"end":{"line":955,"column":60}},"400":{"start":{"line":956,"column":2},"end":{"line":956,"column":69}},"401":{"start":{"line":958,"column":2},"end":{"line":958,"column":56}},"402":{"start":{"line":960,"column":0},"end":{"line":960,"column":114}},"403":{"start":{"line":962,"column":0},"end":{"line":964,"column":2}},"404":{"start":{"line":963,"column":2},"end":{"line":963,"column":39}},"405":{"start":{"line":966,"column":0},"end":{"line":968,"column":2}},"406":{"start":{"line":967,"column":2},"end":{"line":967,"column":42}},"407":{"start":{"line":970,"column":0},"end":{"line":970,"column":76}}},"branchMap":{"1":{"line":217,"type":"if","locations":[{"start":{"line":217,"column":4},"end":{"line":217,"column":4}},{"start":{"line":217,"column":4},"end":{"line":217,"column":4}}]},"2":{"line":226,"type":"if","locations":[{"start":{"line":226,"column":4},"end":{"line":226,"column":4}},{"start":{"line":226,"column":4},"end":{"line":226,"column":4}}]},"3":{"line":257,"type":"if","locations":[{"start":{"line":257,"column":2},"end":{"line":257,"column":2}},{"start":{"line":257,"column":2},"end":{"line":257,"column":2}}]},"4":{"line":265,"type":"if","locations":[{"start":{"line":265,"column":2},"end":{"line":265,"column":2}},{"start":{"line":265,"column":2},"end":{"line":265,"column":2}}]},"5":{"line":266,"type":"if","locations":[{"start":{"line":266,"column":4},"end":{"line":266,"column":4}},{"start":{"line":266,"column":4},"end":{"line":266,"column":4}}]},"6":{"line":267,"type":"if","locations":[{"start":{"line":267,"column":6},"end":{"line":267,"column":6}},{"start":{"line":267,"column":6},"end":{"line":267,"column":6}}]},"7":{"line":280,"type":"if","locations":[{"start":{"line":280,"column":2},"end":{"line":280,"column":2}},{"start":{"line":280,"column":2},"end":{"line":280,"column":2}}]},"8":{"line":284,"type":"if","locations":[{"start":{"line":284,"column":4},"end":{"line":284,"column":4}},{"start":{"line":284,"column":4},"end":{"line":284,"column":4}}]},"9":{"line":292,"type":"if","locations":[{"start":{"line":292,"column":2},"end":{"line":292,"column":2}},{"start":{"line":292,"column":2},"end":{"line":292,"column":2}}]},"10":{"line":322,"type":"binary-expr","locations":[{"start":{"line":322,"column":12},"end":{"line":322,"column":19}},{"start":{"line":322,"column":23},"end":{"line":322,"column":25}}]},"11":{"line":324,"type":"binary-expr","locations":[{"start":{"line":324,"column":15},"end":{"line":324,"column":26}},{"start":{"line":324,"column":30},"end":{"line":324,"column":43}}]},"12":{"line":331,"type":"if","locations":[{"start":{"line":331,"column":2},"end":{"line":331,"column":2}},{"start":{"line":331,"column":2},"end":{"line":331,"column":2}}]},"13":{"line":331,"type":"binary-expr","locations":[{"start":{"line":331,"column":7},"end":{"line":331,"column":18}},{"start":{"line":331,"column":22},"end":{"line":331,"column":34}},{"start":{"line":331,"column":39},"end":{"line":331,"column":50}}]},"14":{"line":339,"type":"if","locations":[{"start":{"line":339,"column":6},"end":{"line":339,"column":6}},{"start":{"line":339,"column":6},"end":{"line":339,"column":6}}]},"15":{"line":339,"type":"binary-expr","locations":[{"start":{"line":339,"column":10},"end":{"line":339,"column":51}},{"start":{"line":339,"column":55},"end":{"line":339,"column":72}}]},"16":{"line":349,"type":"if","locations":[{"start":{"line":349,"column":7},"end":{"line":349,"column":7}},{"start":{"line":349,"column":7},"end":{"line":349,"column":7}}]},"17":{"line":406,"type":"cond-expr","locations":[{"start":{"line":406,"column":58},"end":{"line":406,"column":79}},{"start":{"line":406,"column":83},"end":{"line":406,"column":87}}]},"18":{"line":417,"type":"if","locations":[{"start":{"line":417,"column":2},"end":{"line":417,"column":2}},{"start":{"line":417,"column":2},"end":{"line":417,"column":2}}]},"19":{"line":424,"type":"if","locations":[{"start":{"line":424,"column":4},"end":{"line":424,"column":4}},{"start":{"line":424,"column":4},"end":{"line":424,"column":4}}]},"20":{"line":431,"type":"if","locations":[{"start":{"line":431,"column":4},"end":{"line":431,"column":4}},{"start":{"line":431,"column":4},"end":{"line":431,"column":4}}]},"21":{"line":442,"type":"if","locations":[{"start":{"line":442,"column":2},"end":{"line":442,"column":2}},{"start":{"line":442,"column":2},"end":{"line":442,"column":2}}]},"22":{"line":442,"type":"binary-expr","locations":[{"start":{"line":442,"column":7},"end":{"line":442,"column":26}},{"start":{"line":442,"column":32},"end":{"line":442,"column":51}}]},"23":{"line":451,"type":"if","locations":[{"start":{"line":451,"column":2},"end":{"line":451,"column":2}},{"start":{"line":451,"column":2},"end":{"line":451,"column":2}}]},"24":{"line":457,"type":"if","locations":[{"start":{"line":457,"column":2},"end":{"line":457,"column":2}},{"start":{"line":457,"column":2},"end":{"line":457,"column":2}}]},"25":{"line":464,"type":"if","locations":[{"start":{"line":464,"column":2},"end":{"line":464,"column":2}},{"start":{"line":464,"column":2},"end":{"line":464,"column":2}}]},"26":{"line":502,"type":"if","locations":[{"start":{"line":502,"column":4},"end":{"line":502,"column":4}},{"start":{"line":502,"column":4},"end":{"line":502,"column":4}}]},"27":{"line":502,"type":"binary-expr","locations":[{"start":{"line":502,"column":9},"end":{"line":502,"column":34}},{"start":{"line":502,"column":40},"end":{"line":502,"column":58}}]},"28":{"line":539,"type":"if","locations":[{"start":{"line":539,"column":2},"end":{"line":539,"column":2}},{"start":{"line":539,"column":2},"end":{"line":539,"column":2}}]},"29":{"line":550,"type":"if","locations":[{"start":{"line":550,"column":2},"end":{"line":550,"column":2}},{"start":{"line":550,"column":2},"end":{"line":550,"column":2}}]},"30":{"line":550,"type":"binary-expr","locations":[{"start":{"line":550,"column":6},"end":{"line":550,"column":19}},{"start":{"line":550,"column":23},"end":{"line":550,"column":49}}]},"31":{"line":563,"type":"if","locations":[{"start":{"line":563,"column":2},"end":{"line":563,"column":2}},{"start":{"line":563,"column":2},"end":{"line":563,"column":2}}]},"32":{"line":583,"type":"if","locations":[{"start":{"line":583,"column":2},"end":{"line":583,"column":2}},{"start":{"line":583,"column":2},"end":{"line":583,"column":2}}]},"33":{"line":587,"type":"if","locations":[{"start":{"line":587,"column":2},"end":{"line":587,"column":2}},{"start":{"line":587,"column":2},"end":{"line":587,"column":2}}]},"34":{"line":592,"type":"binary-expr","locations":[{"start":{"line":592,"column":16},"end":{"line":592,"column":30}},{"start":{"line":592,"column":34},"end":{"line":592,"column":39}}]},"35":{"line":593,"type":"binary-expr","locations":[{"start":{"line":593,"column":16},"end":{"line":593,"column":32}},{"start":{"line":593,"column":36},"end":{"line":593,"column":65}},{"start":{"line":593,"column":70},"end":{"line":593,"column":101}}]},"36":{"line":594,"type":"binary-expr","locations":[{"start":{"line":594,"column":13},"end":{"line":594,"column":29}},{"start":{"line":594,"column":33},"end":{"line":594,"column":45}},{"start":{"line":594,"column":49},"end":{"line":594,"column":78}}]},"37":{"line":609,"type":"if","locations":[{"start":{"line":609,"column":2},"end":{"line":609,"column":2}},{"start":{"line":609,"column":2},"end":{"line":609,"column":2}}]},"38":{"line":609,"type":"binary-expr","locations":[{"start":{"line":609,"column":6},"end":{"line":609,"column":18}},{"start":{"line":609,"column":23},"end":{"line":609,"column":42}}]},"39":{"line":625,"type":"binary-expr","locations":[{"start":{"line":625,"column":10},"end":{"line":625,"column":23}},{"start":{"line":625,"column":27},"end":{"line":625,"column":46}}]},"40":{"line":628,"type":"binary-expr","locations":[{"start":{"line":628,"column":10},"end":{"line":628,"column":23}},{"start":{"line":628,"column":27},"end":{"line":628,"column":46}}]},"41":{"line":637,"type":"binary-expr","locations":[{"start":{"line":637,"column":12},"end":{"line":637,"column":19}},{"start":{"line":637,"column":23},"end":{"line":637,"column":25}}]},"42":{"line":640,"type":"binary-expr","locations":[{"start":{"line":640,"column":15},"end":{"line":640,"column":26}},{"start":{"line":640,"column":30},"end":{"line":640,"column":43}}]},"43":{"line":657,"type":"if","locations":[{"start":{"line":657,"column":2},"end":{"line":657,"column":2}},{"start":{"line":657,"column":2},"end":{"line":657,"column":2}}]},"44":{"line":661,"type":"binary-expr","locations":[{"start":{"line":661,"column":20},"end":{"line":661,"column":34}},{"start":{"line":661,"column":38},"end":{"line":661,"column":43}}]},"45":{"line":662,"type":"binary-expr","locations":[{"start":{"line":662,"column":21},"end":{"line":662,"column":37}},{"start":{"line":662,"column":41},"end":{"line":662,"column":49}}]},"46":{"line":663,"type":"binary-expr","locations":[{"start":{"line":663,"column":17},"end":{"line":663,"column":33}},{"start":{"line":663,"column":37},"end":{"line":663,"column":49}},{"start":{"line":663,"column":53},"end":{"line":663,"column":64}}]},"47":{"line":664,"type":"binary-expr","locations":[{"start":{"line":664,"column":17},"end":{"line":664,"column":29}},{"start":{"line":664,"column":33},"end":{"line":664,"column":36}}]},"48":{"line":665,"type":"binary-expr","locations":[{"start":{"line":665,"column":17},"end":{"line":665,"column":29}},{"start":{"line":665,"column":33},"end":{"line":665,"column":36}}]},"49":{"line":667,"type":"if","locations":[{"start":{"line":667,"column":2},"end":{"line":667,"column":2}},{"start":{"line":667,"column":2},"end":{"line":667,"column":2}}]},"50":{"line":674,"type":"if","locations":[{"start":{"line":674,"column":2},"end":{"line":674,"column":2}},{"start":{"line":674,"column":2},"end":{"line":674,"column":2}}]},"51":{"line":685,"type":"if","locations":[{"start":{"line":685,"column":2},"end":{"line":685,"column":2}},{"start":{"line":685,"column":2},"end":{"line":685,"column":2}}]},"52":{"line":691,"type":"if","locations":[{"start":{"line":691,"column":7},"end":{"line":691,"column":7}},{"start":{"line":691,"column":7},"end":{"line":691,"column":7}}]},"53":{"line":711,"type":"if","locations":[{"start":{"line":711,"column":6},"end":{"line":711,"column":6}},{"start":{"line":711,"column":6},"end":{"line":711,"column":6}}]},"54":{"line":721,"type":"if","locations":[{"start":{"line":721,"column":6},"end":{"line":721,"column":6}},{"start":{"line":721,"column":6},"end":{"line":721,"column":6}}]},"55":{"line":728,"type":"if","locations":[{"start":{"line":728,"column":6},"end":{"line":728,"column":6}},{"start":{"line":728,"column":6},"end":{"line":728,"column":6}}]},"56":{"line":729,"type":"if","locations":[{"start":{"line":729,"column":8},"end":{"line":729,"column":8}},{"start":{"line":729,"column":8},"end":{"line":729,"column":8}}]},"57":{"line":735,"type":"if","locations":[{"start":{"line":735,"column":8},"end":{"line":735,"column":8}},{"start":{"line":735,"column":8},"end":{"line":735,"column":8}}]},"58":{"line":748,"type":"if","locations":[{"start":{"line":748,"column":6},"end":{"line":748,"column":6}},{"start":{"line":748,"column":6},"end":{"line":748,"column":6}}]},"59":{"line":810,"type":"if","locations":[{"start":{"line":810,"column":2},"end":{"line":810,"column":2}},{"start":{"line":810,"column":2},"end":{"line":810,"column":2}}]},"60":{"line":820,"type":"binary-expr","locations":[{"start":{"line":820,"column":53},"end":{"line":820,"column":68}},{"start":{"line":820,"column":72},"end":{"line":820,"column":74}}]},"61":{"line":839,"type":"if","locations":[{"start":{"line":839,"column":2},"end":{"line":839,"column":2}},{"start":{"line":839,"column":2},"end":{"line":839,"column":2}}]},"62":{"line":849,"type":"if","locations":[{"start":{"line":849,"column":2},"end":{"line":849,"column":2}},{"start":{"line":849,"column":2},"end":{"line":849,"column":2}}]},"63":{"line":849,"type":"binary-expr","locations":[{"start":{"line":849,"column":6},"end":{"line":849,"column":18}},{"start":{"line":849,"column":23},"end":{"line":849,"column":42}}]},"64":{"line":858,"type":"if","locations":[{"start":{"line":858,"column":2},"end":{"line":858,"column":2}},{"start":{"line":858,"column":2},"end":{"line":858,"column":2}}]},"65":{"line":860,"type":"if","locations":[{"start":{"line":860,"column":9},"end":{"line":860,"column":9}},{"start":{"line":860,"column":9},"end":{"line":860,"column":9}}]},"66":{"line":866,"type":"if","locations":[{"start":{"line":866,"column":2},"end":{"line":866,"column":2}},{"start":{"line":866,"column":2},"end":{"line":866,"column":2}}]},"67":{"line":868,"type":"if","locations":[{"start":{"line":868,"column":9},"end":{"line":868,"column":9}},{"start":{"line":868,"column":9},"end":{"line":868,"column":9}}]},"68":{"line":874,"type":"if","locations":[{"start":{"line":874,"column":2},"end":{"line":874,"column":2}},{"start":{"line":874,"column":2},"end":{"line":874,"column":2}}]},"69":{"line":876,"type":"if","locations":[{"start":{"line":876,"column":9},"end":{"line":876,"column":9}},{"start":{"line":876,"column":9},"end":{"line":876,"column":9}}]},"70":{"line":883,"type":"if","locations":[{"start":{"line":883,"column":2},"end":{"line":883,"column":2}},{"start":{"line":883,"column":2},"end":{"line":883,"column":2}}]},"71":{"line":885,"type":"if","locations":[{"start":{"line":885,"column":9},"end":{"line":885,"column":9}},{"start":{"line":885,"column":9},"end":{"line":885,"column":9}}]},"72":{"line":898,"type":"if","locations":[{"start":{"line":898,"column":2},"end":{"line":898,"column":2}},{"start":{"line":898,"column":2},"end":{"line":898,"column":2}}]},"73":{"line":925,"type":"if","locations":[{"start":{"line":925,"column":2},"end":{"line":925,"column":2}},{"start":{"line":925,"column":2},"end":{"line":925,"column":2}}]},"74":{"line":925,"type":"binary-expr","locations":[{"start":{"line":925,"column":7},"end":{"line":925,"column":37}},{"start":{"line":925,"column":43},"end":{"line":925,"column":66}}]}}}} \ No newline at end of file diff --git a/coverage/lcov-report/index.html b/coverage/lcov-report/index.html index 19ae3fb3..d712ccc4 100644 --- a/coverage/lcov-report/index.html +++ b/coverage/lcov-report/index.html @@ -183,16 +183,16 @@

Code coverage report for All files

- Statements: 93.44% (1482 / 1586)      + Statements: 93.33% (1538 / 1648)      - Branches: 86.13% (559 / 649)      + Branches: 84.91% (585 / 689)      - Functions: 92.34% (193 / 209)      + Functions: 95.65% (198 / 207)      - Lines: 93.42% (1476 / 1580)      + Lines: 93.3% (1532 / 1642)     

@@ -216,15 +216,15 @@

lib/ - - 93.44% - (1482 / 1586) - 86.13% - (559 / 649) - 92.34% - (193 / 209) - 93.42% - (1476 / 1580) + + 93.33% + (1538 / 1648) + 84.91% + (585 / 689) + 95.65% + (198 / 207) + 93.3% + (1532 / 1642) @@ -232,7 +232,7 @@

diff --git a/coverage/lcov-report/lib/compressor.js.html b/coverage/lcov-report/lib/compressor.js.html index bd2dbdc4..f3a88e0d 100644 --- a/coverage/lcov-report/lib/compressor.js.html +++ b/coverage/lcov-report/lib/compressor.js.html @@ -186,10 +186,10 @@

Statements: 94.72% (323 / 341)      - Branches: 93.75% (120 / 128)      + Branches: 94.44% (119 / 126)      - Functions: 96.55% (28 / 29)      + Functions: 100% (28 / 28)      Lines: 94.72% (323 / 341)      @@ -1107,7 +1107,43 @@

906 907 908 -909  +909 +910 +911 +912 +913 +914 +915 +916 +917 +918 +919 +920 +921 +922 +923 +924 +925 +926 +927 +928 +929 +930 +931 +932 +933 +934 +935 +936 +937 +938 +939 +940 +941 +942 +943 +944 +945        @@ -1163,6 +1199,21 @@

      +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  1 1806 1806 @@ -1347,10 +1398,10 @@

    1 -163 +151     -163 +151       @@ -1359,17 +1410,17 @@

      -163 -66 -66 +151 +54 +54   -66 -38 +54 +32   -28 -28 -28 -28 +22 +22 +22 +22       @@ -1409,14 +1460,14 @@

  49 49 -163 +151       49 1559 1559 -40 +46   1559   @@ -1446,13 +1497,13 @@

    1 -159 +147     -159 -155 +147 +143   -159 +147       @@ -1479,16 +1530,37 @@

      +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  159 65   65 -25 -25 -25 +19 +19 +19     -40 +46       @@ -1497,13 +1569,13 @@

      -40 +46 4 4       -36 +42       @@ -1548,8 +1620,8 @@

47 1488 1488 -32 -32 +26 +26   1488 1488 @@ -1575,9 +1647,9 @@

    1 -363 -363 -161 +351 +351 +149     202 @@ -1616,14 +1688,14 @@

    1 -375 +363   -375 -375 -173 +363 +363 +161     -375 +363 207 207 217 @@ -1632,7 +1704,7 @@

      -375 +363       @@ -1703,10 +1775,10 @@

    1 -163 +151   -163 -63 +151 +51 100 5 95 @@ -1715,8 +1787,8 @@

77     -163 -63 +151 +51     100 @@ -1733,17 +1805,17 @@

100     -163 +151   -163 +151     1 -171 +159   -171 -171 -68 +159 +159 +56 103 28 6 @@ -1754,9 +1826,9 @@

75     -171 -68 -68 +159 +56 +56     103 @@ -1775,7 +1847,7 @@

103     -171 +159       @@ -1837,7 +1909,7 @@

  47 47 -459 +447   47   @@ -1851,7 +1923,7 @@

      -98 +75 37   37 @@ -1883,10 +1955,10 @@

      -61 +38     -98 +75       @@ -1943,7 +2015,7 @@

1     -95 +73 3 1 1 @@ -1954,7 +2026,7 @@

      -92 +70 37 37 37 @@ -1962,13 +2034,13 @@

      -55 +33           -94 +72 36 38   @@ -1983,7 +2055,7 @@

36     -94 +72       @@ -1993,12 +2065,12 @@

1 132 132 -546 +534     132 132 -546 +534     132 @@ -2039,7 +2111,7 @@

exports.Decompressor = Decompressor;   var TransformStream = require('stream').Transform; -var assert = process.env.HTTP2_ASSERT ? require('assert') : function noop() {}; +var assert = require('assert'); var util = require('util');   // Header compression @@ -2071,6 +2143,21 @@

// (not part of the spec, `keep` flag) // // [referenceset]: http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-03#section-3.1.3 +// +// Relations of the sets: +// +// ,----------------------------------. +// | Header Table | +// | | +// | ,----------------------------. | +// | | Reference Set | | +// | | | | +// | | ,---------. ,---------. | | +// | | | Keep | | Emitted | | | +// | | | | | | | | +// | | `---------' `---------' | | +// | `----------------------------' | +// `----------------------------------' function entryFromPair(pair) { var entry = pair.slice(); entry.reference = false; @@ -2091,7 +2178,7 @@

var DEFAULT_HEADER_TABLE_LIMIT = 4096;   function size(entry) { - return new Buffer(entry[0] + entry[1], 'utf8').length + 32; + return (new Buffer(entry[0] + entry[1], 'utf8')).length + 32; }   function tableSize(table) { @@ -2386,7 +2473,28 @@

}   // * if there's full match, it will be an indexed representation (or more than one) depending - // on its presence in the reference, the emitted and the keep set + // on its presence in the reference, the emitted and the keep set: + // + // * If the entry is outside the reference set, then a single indexed representation puts the + // entry into it and emits the header. + // + // * If it's already in the keep set, then 4 indexed representations are needed: + // + // 1. removes it from the reference set + // 2. puts it back in the reference set and emits the header once + // 3. removes it again + // 4. puts it back and emits it again for the second time + // + // It won't be emitted at the end of the decoding process since it's now in the emitted set. + // + // * If it's in the emitted set, then 2 indexed representations are needed: + // + // 1. removes it from the reference set + // 2. puts it back in the reference set and emits the header once + // + // * If it's in the reference set, but outside the keep set and the emitted set, then this + // header is common with the previous header set, and is still untouched. We mark it to keep + // in the reference set (that means don't remove at the end of the encoding process). if (fullMatch !== -1) { rep = { name: fullMatch, value: fullMatch, index: -1 };   @@ -2781,7 +2889,7 @@

}; } if (chunkFrame.type !== 'PUSH_PROMISE') { - chunkFrame.flags.END_STREAM = last && frame.END_STREAM; + chunkFrame.flags.END_STREAM = last && frame.flags.END_STREAM; } chunkFrame.data = chunks[i];   @@ -2928,7 +3036,7 @@

diff --git a/coverage/lcov-report/lib/connection.js.html b/coverage/lcov-report/lib/connection.js.html index 03c57e15..1c0ba1b7 100644 --- a/coverage/lcov-report/lib/connection.js.html +++ b/coverage/lcov-report/lib/connection.js.html @@ -183,16 +183,16 @@

Code coverage report for lib/connection.js

- Statements: 92.79% (193 / 208)      + Statements: 92.41% (219 / 237)      - Branches: 81.25% (52 / 64)      + Branches: 79.76% (67 / 84)      - Functions: 94.12% (32 / 34)      + Functions: 100% (33 / 33)      - Lines: 92.79% (193 / 208)      + Lines: 92.41% (219 / 237)     

All files » lib/ » connection.js
@@ -726,7 +726,60 @@

525 526 527 -5281 +528 +529 +530 +531 +532 +533 +534 +535 +536 +537 +538 +539 +540 +541 +542 +543 +544 +545 +546 +547 +548 +549 +550 +551 +552 +553 +554 +555 +556 +557 +558 +559 +560 +561 +562 +563 +564 +565 +566 +567 +568 +569 +570 +571 +572 +573 +574 +575 +576 +577 +578 +579 +580 +5811       @@ -761,6 +814,9 @@

      +  +  +  1   45 @@ -781,6 +837,7 @@

45     +45   1   @@ -859,13 +916,21 @@

1 18 18 +18 +18 +  +      1 -130 -39 -39 -39 +89 +43 +  +43 +43 +43 +  +        @@ -903,6 +968,10 @@

45 45 45 +45 +  +  +45   45   @@ -918,9 +987,9 @@

  1 75 -27 +24   -48 +51       @@ -930,7 +999,7 @@

10 10 10 -8 +7     10 @@ -963,16 +1032,33 @@

      +1 +45 +45 +45 +  +      1 -448   +205 +86 +  +119 +86 +86 +  +119 +  +  +86   -448 -448 -388   +86 +86 +62 +62       @@ -982,81 +1068,85 @@

      -388 -388 -622 -622 -622   -622 -537     -85 +62 +111 +144 +144 +  +144 +87 +57         +57   -85 -85 -18 -  -67 +57 +27     -85 +57 5 5     -85 -85 -85 +57 +57 +57 +  +57 +57     -85 -85     -85 -  -85 -  +111 +111   -85       +86 +58     -448 +86         1 -125 +98     -125 +98 +36 +36 +      -125 +98 +  +  +98 17       -125 +98 5     -125 +98     -125 +98   -125 +98       @@ -1074,6 +1164,10 @@

    45 +  +  +  +1 36 36   @@ -1083,10 +1177,6 @@

      -45 -  -  -  1 36 54 @@ -1100,6 +1190,7 @@

      +  45 70   @@ -1119,6 +1210,7 @@

45 45 45 +45       @@ -1157,6 +1249,9 @@

2 2 2 +2 +  +2   1   @@ -1177,18 +1272,29 @@

  1 3 +  +  +  +  +3 3           +  +3 3     1 2 2 +2 +2 +  +        @@ -1225,7 +1331,7 @@

40 40 40 -54 +47       @@ -1253,7 +1359,7 @@

      - 
var assert = process.env.HTTP2_ASSERT ? require('assert') : function noop() {};
+ 
var assert = require('assert');
  
 // The Connection class
 // ====================
@@ -1271,7 +1377,10 @@ 

  // * **new Connection(firstStreamId, settings, [log])**: create a new Connection // -// * **Event: 'error' (type)**: signals a connection level error +// * **Event: 'error' (type)**: signals a connection level error made by the other end +// +// * **Event: 'peerError' (type)**: signals the receipt of a GOAWAY frame that contains an error +// code other than NO_ERROR // // * **Event: 'stream' (stream)**: signals that there's an incoming stream // @@ -1280,7 +1389,7 @@

// * **set(settings)**: change the value of one or more settings according to the key-value pairs // of `settings` // -// * **ping(callback)**: send a ping and call callback when the answer arrives +// * **ping([callback])**: send a ping and call callback when the answer arrives // // * **close([error])**: close the stream with an error code   @@ -1308,6 +1417,7 @@

this._initializeSettingsManagement(settings);   // * multiplexing + this._initializeMultiplexing(); } Connection.prototype = Object.create(Flow.prototype, { constructor: { value: Connection } });   @@ -1364,7 +1474,7 @@

  // * By default, the number of concurrent outbound streams is not limited. The `_streamLimit` can // be set by the SETTINGS_MAX_CONCURRENT_STREAMS setting. - this._streamCount = 0; + this._streamSlotsFree = Infinity; this._streamLimit = Infinity; this.on('RECEIVING_SETTINGS_MAX_CONCURRENT_STREAMS', this._updateStreamLimit); }; @@ -1382,17 +1492,25 @@

} };   -// Method to manage the stream slot pool: +// Methods to manage the stream slot pool: Connection.prototype._updateStreamLimit = function _updateStreamLimit(newStreamLimit) { + var wakeup = (this._streamSlotsFree === 0) && (newStreamLimit > this._streamLimit); + this._streamSlotsFree += newStreamLimit - this._streamLimit; this._streamLimit = newStreamLimit; - this.read(0); + Iif (wakeup) { + this.emit('wakeup'); + } };   Connection.prototype._changeStreamCount = function _changeStreamCount(change) { if (change) { - this._log.trace({ count: this._streamCount, change: change }, 'Changing active stream count.'); - this._streamCount += change; - this.read(0); + this._log.trace({ free: this._streamSlotsFree, change: change }, + 'Changing active stream count.'); + var wakeup = (this._streamSlotsFree === 0) && (change < 0); + this._streamSlotsFree -= change; + Iif (wakeup) { + this.emit('wakeup'); + } } };   @@ -1427,20 +1545,24 @@

assert(!(id in this._streamIds));   // * adding to `this._streamIds` - this._log.trace({ s: stream, stream_id: id }, 'Allocation ID for stream.'); + this._log.trace({ s: stream, stream_id: id }, 'Allocating ID for stream.'); this._streamIds[id] = stream; + stream.id = id; this.emit('new_stream', stream, id); +  + // * handling stream errors as connection errors + stream.on('error', this.emit.bind(this, 'error'));   return id; };   // Allocating a priority to a stream, and managing priority changes Connection.prototype._allocatePriority = function _allocatePriority(stream) { - this._log.trace({ s: stream }, 'Allocation priority for stream.'); + this._log.trace({ s: stream }, 'Allocating priority for stream.'); this._insert(stream, stream._priority); stream.on('priority', this._reprioritize.bind(this, stream)); - stream.upstream.on('readable', this.read.bind(this, 0)); - this.read(0); + stream.upstream.on('readable', this.emit.bind(this, 'wakeup')); + this.emit('wakeup'); };   Connection.prototype._insert = function _insert(stream, priority) { @@ -1490,46 +1612,61 @@

// Multiplexing // ------------   +Connection.prototype._initializeMultiplexing = function _initializeMultiplexing() { + this.on('window_update', this.emit.bind(this, 'wakeup')); + this._sendScheduled = false; + this._firstFrameReceived = false; +}; +  // The `_send` method is a virtual method of the [Flow class](flow.html) that has to be implemented // by child classes. It reads frames from streams and pushes them to the output buffer. -Connection.prototype._send = function _send() { +Connection.prototype._send = function _send(immediate) { + // * Collapsing multiple calls in a turn into a single deferred call + if (immediate) { + this._sendScheduled = false; + } else { + if (!this._sendScheduled) { + this._sendScheduled = true; + setImmediate(this._send.bind(this, true)); + } + return; + } +  this._log.trace('Starting forwarding frames from streams.');   // * Looping through priority `bucket`s in priority order. priority_loop: for (var priority in this._streamPriorities) { - var bucket = this._streamPriorities[priority].slice(); + var bucket = this._streamPriorities[priority]; + var nextBucket = [];   // * Forwarding frames from buckets with round-robin scheduling. // 1. pulling out frame - // 2. if there's no frame, remove this stream from `buckets` - // 3. if forwarding this frame would make `streamCount` greater than `streamLimit`, remove + // 2. if there's no frame, skip this stream + // 3. if forwarding this frame would make `streamCount` greater than `streamLimit`, skip // this stream - // 4. assigning an ID to the frame (allocating an ID to the stream if there isn't already) - // 5. if forwarding a PUSH_PROMISE, allocate ID to the promised stream - // 6. forwarding the frame, changing `streamCount` as appropriate - // 7. stepping to the next stream if there's still more frame needed in the output buffer - var index = 0; + // 4. adding stream to the bucket of the next round + // 5. assigning an ID to the frame (allocating an ID to the stream if there isn't already) + // 6. if forwarding a PUSH_PROMISE, allocate ID to the promised stream + // 7. forwarding the frame, changing `streamCount` as appropriate + // 8. stepping to the next stream if there's still more frame needed in the output buffer + // 9. switching to the bucket of the next round while (bucket.length > 0) { - index = index % bucket.length; - var stream = bucket[index]; - var frame = stream.upstream.read(); -  - if (!frame) { - bucket.splice(index, 1); - } + for (var index = 0; index < bucket.length; index++) { + var stream = bucket[index]; + var frame = stream.upstream.read((this._window > 0) ? this._window : -1); +  + if (!frame) { + continue; + } else Iif (frame.count_change > this._streamSlotsFree) { + stream.upstream.unshift(frame); + continue; + }   - else Iif (this._streamCount + frame.count_change > this._streamLimit) { - stream.upstream.unshift(frame); - bucket.splice(index, 1); - } + nextBucket.push(stream);   - else { - var id = this._streamIds.indexOf(stream); - if (id === -1) { - frame.stream = this._allocateId(stream); - } else { - frame.stream = id; + if (frame.stream === undefined) { + frame.stream = stream.id || this._allocateId(stream); }   if (frame.type === 'PUSH_PROMISE') { @@ -1537,25 +1674,25 @@

frame.promised_stream = this._allocateId(frame.promised_stream); }   - this._log.trace({ s: stream, frame: frame }, 'Trying to forward outgoing frame'); - var remainder = null; - var moreNeeded = this._push(frame, function(remainderFrame) { - stream.upstream.unshift(remainder = remainderFrame); - }); - Eif (!remainder) { - this._changeStreamCount(frame.count_change); - } + this._log.trace({ s: stream, frame: frame }, 'Forwarding outgoing frame'); + var moreNeeded = this.push(frame); + this._changeStreamCount(frame.count_change);   - Iif (moreNeeded === null) { - bucket.splice(index, 1); - } else Iif (moreNeeded === false) { + assert(moreNeeded !== null); // The frame shouldn't be unforwarded + Iif (moreNeeded === false) { break priority_loop; - } else { - index += 1; } } +  + bucket = nextBucket; + nextBucket = []; } } +  + // * if we couldn't forward any frame, then sleep until window update, or some other wakeup event + if (moreNeeded === undefined) { + this.once('wakeup', this._send.bind(this)); + }   this._log.trace({ moreNeeded: moreNeeded }, 'Stopping forwarding frames from streams.'); }; @@ -1564,6 +1701,12 @@

// implemented by child classes. It forwards the given frame to the appropriate stream: Connection.prototype._receive = function _receive(frame, done) { this._log.trace({ frame: frame }, 'Forwarding incoming frame'); +  + // * first frame needs to be checked by the `_onFirstFrameReceived` method + if (!this._firstFrameReceived) { + this._firstFrameReceived = true; + this._onFirstFrameReceived(frame); + }   // * gets the appropriate stream from the stream registry var stream = this._streamIds[frame.stream]; @@ -1598,21 +1741,21 @@

// * Sending the initial settings. this._log.debug('Sending the first SETTINGS frame as part of the connection header.'); this.set(settings || defaultSettings); -  - // * Checking that the first frame the other endpoint sends is SETTINGS - this.once('receiving', function(frame) { - Eif ((frame.stream === 0) && (frame.type === 'SETTINGS')) { - this._log.debug('Receiving the first SETTINGS frame as part of the connection header.'); - } else { - this._log.fatal({ frame: frame }, 'Invalid connection header: first frame is not SETTINGS.'); - this.emit('error'); - } - });   // * Forwarding SETTINGS frames to the `_receiveSettings` method this.on('SETTINGS', this._receiveSettings); };   +// * Checking that the first frame the other endpoint sends is SETTINGS +Connection.prototype._onFirstFrameReceived = function _onFirstFrameReceived(frame) { + Eif ((frame.stream === 0) && (frame.type === 'SETTINGS')) { + this._log.debug('Receiving the first SETTINGS frame as part of the connection header.'); + } else { + this._log.fatal({ frame: frame }, 'Invalid connection header: first frame is not SETTINGS.'); + this.emit('error'); + } +}; +  // Handling of incoming SETTINGS frames. Connection.prototype._receiveSettings = function _receiveSettings(frame) { for (var name in frame.settings) { @@ -1623,8 +1766,9 @@

// Changing one or more settings value and sending out a SETTINGS frame Connection.prototype.set = function set(settings) { this.push({ - stream: 0, type: 'SETTINGS', + flags: {}, + stream: 0, settings: settings }); for (var name in settings) { @@ -1646,6 +1790,7 @@

this._pings = {}; this.on('PING', this._receivePing); this.on('GOAWAY', this._receiveGoaway); + this._closed = false; };   // Generating a string of length 16 with random hexadecimal digits @@ -1667,11 +1812,11 @@

  this._log.debug({ data: data }, 'Sending PING.'); this.push({ - stream: 0, type: 'PING', flags: { PONG: false }, + stream: 0, data: data }); }; @@ -1682,7 +1827,10 @@

var id = frame.data.toString('hex'); if (id in this._pings) { this._log.debug({ data: frame.data }, 'Receiving answer for a PING.'); - this._pings[id](); + var callback = this._pings[id]; + Eif (callback) { + callback(); + } delete this._pings[id]; } else { this._log.warn({ data: frame.data }, 'Unsolicited PING answer.'); @@ -1691,11 +1839,11 @@

} else { this._log.debug({ data: frame.data }, 'Answering PING.'); this.push({ - stream: 0, type: 'PING', flags: { PONG: true }, + stream: 0, data: frame.data }); } @@ -1703,19 +1851,30 @@

  // Terminating the connection Connection.prototype.close = function close(error) { - this._log.info({ error: error }, 'Closing the connection'); + Iif (this._closed) { + this._log.warn('Trying to close an already closed connection'); + return; + } +  + this._log.debug({ error: error }, 'Closing the connection'); this.push({ - stream: 0, type: 'GOAWAY', + flags: {}, + stream: 0, last_stream: this._lastIncomingStream, error: error || 'NO_ERROR' }); this.push(null); + this._closed = true; };   Connection.prototype._receiveGoaway = function _receiveGoaway(frame) { - this._log.info({ error: frame.error }, 'Other end closed the connection'); + this._log.debug({ error: frame.error }, 'Other end closed the connection'); this.push(null); + this._closed = true; + Iif (frame.error !== 'NO_ERROR') { + this.emit('peerError', frame.error); + } };   // Flow control @@ -1785,7 +1944,7 @@

diff --git a/coverage/lcov-report/lib/endpoint.js.html b/coverage/lcov-report/lib/endpoint.js.html index ad89fb50..29cad5dc 100644 --- a/coverage/lcov-report/lib/endpoint.js.html +++ b/coverage/lcov-report/lib/endpoint.js.html @@ -183,16 +183,16 @@

Code coverage report for lib/endpoint.js

- Statements: 100% (84 / 84)      + Statements: 100% (90 / 90)      - Branches: 88.89% (16 / 18)      + Branches: 94.44% (17 / 18)      - Functions: 92.86% (13 / 14)      + Functions: 100% (13 / 13)      - Lines: 100% (84 / 84)      + Lines: 100% (90 / 90)     

All files » lib/ » endpoint.js
@@ -398,7 +398,14 @@

197 198 199 -2001 +200 +201 +202 +203 +204 +205 +206 +2071   1 1 @@ -539,18 +546,22 @@

24 24   -24 -    1 -293 -293 -178 +1 +155 +155 +155 +130   +155 +67 +  +155     1 -51 +50       @@ -574,10 +585,13 @@

24 24   +24 +    1 1 1 +1     1 @@ -597,7 +611,7 @@

  6   - 
var assert = process.env.HTTP2_ASSERT ? require('assert') : function noop() {};
+ 
var assert = require('assert');
  
 var Serializer   = require('./framer').Serializer;
 var Deserializer = require('./framer').Deserializer;
@@ -737,15 +751,19 @@ 

  this._connection.pipe(this._compressor).pipe(this._serializer); this._deserializer.pipe(this._decompressor).pipe(this._connection); -  - this._serializer.on('readable', this._read.bind(this)); };   +var noread = {}; Endpoint.prototype._read = function _read() { - var moreNeeded = true, chunk; + this._readableState.sync = true; + var moreNeeded = noread, chunk; while (moreNeeded && (chunk = this._serializer.read())) { moreNeeded = this.push(chunk); } + if (moreNeeded === noread) { + this._serializer.once('readable', this._read.bind(this)); + } + this._readableState.sync = false; };   Endpoint.prototype._write = function _write(chunk, encoding, done) { @@ -772,11 +790,14 @@

this._compressor.on('error', this._error.bind(this, 'compressor')); this._decompressor.on('error', this._error.bind(this, 'decompressor')); this._connection.on('error', this._error.bind(this, 'connection')); +  + this._connection.on('peerError', this.emit.bind(this, 'peerError')); };   Endpoint.prototype._error = function _error(component, error) { - this._log.fatal({ component: component, message: error }, 'Fatal error, closing connection'); + this._log.fatal({ source: component, message: error }, 'Fatal error, closing connection'); this.close(error); + setImmediate(this.emit.bind(this, 'error', error)); };   Endpoint.prototype.close = function close(error) { @@ -801,7 +822,7 @@

diff --git a/coverage/lcov-report/lib/flow.js.html b/coverage/lcov-report/lib/flow.js.html index e44a34d3..a56536e9 100644 --- a/coverage/lcov-report/lib/flow.js.html +++ b/coverage/lcov-report/lib/flow.js.html @@ -183,16 +183,16 @@

Code coverage report for lib/flow.js

- Statements: 100% (105 / 105)      + Statements: 95.87% (116 / 121)      - Branches: 97.06% (66 / 68)      + Branches: 91.86% (79 / 86)      - Functions: 93.75% (15 / 16)      + Functions: 100% (17 / 17)      - Lines: 100% (105 / 105)      + Lines: 95.87% (116 / 121)     

All files » lib/ » flow.js
@@ -530,7 +530,38 @@

329 330 331 -3321 +332 +333 +334 +335 +336 +337 +338 +339 +340 +341 +342 +343 +344 +345 +346 +347 +348 +349 +350 +351 +352 +353 +354 +355 +356 +357 +358 +359 +360 +361 +362 +3631       @@ -589,15 +620,6 @@

      -  -  -  -  -  -  -  -  -  1     @@ -607,7 +629,6 @@

164 164 164 -  164 164 164 @@ -627,13 +648,11 @@

    1 -329 -  -329 +275 63     -329 +275 106 106 106 @@ -644,10 +663,10 @@

      -223 +169     -329 +275   5   @@ -663,6 +682,7 @@

      +  6     @@ -701,103 +721,145 @@

  1   -1392 -1291 +246 +231         -101 -7 -7 +15 7 7 8 +8 +7     7   +7       -1392       +8       +1         1 +628 +146 +482 +  +482 +482   -1 -285 -378 -378   -278     -100 -7 +482 +482   +482 +394 +191   +394   -93 -93   +88 +  +    +        +88   -93 +88   -93 -93     -378 -378 -371 -371 -144   -144 -144   -371 +88   +88 +    -378 +88     -285 -7     -285 +1 +227 +  +227 +28 +  +28 +28 +  +  +227 +  +  +        1 -193 +228 +  +228 +221 +  +  +7 +1 +  +  +  +6 +  +6 +6 +  +  +  +  +  6   -187 -187 -187     -193 -192   1 -1 +221 +6 +  +215 +  +  +221 +221 +220 +  +  +221 +7 +    +221       @@ -821,17 +883,17 @@

1   1 -94 +87 1 1   -93 -93 -93 +86 +86 +86 1 1   -92 +85       @@ -853,15 +915,15 @@

    1 -59 -59 +52 +52       1 1   - 
var assert = process.env.HTTP2_ASSERT ? require('assert') : function noop() {};
+ 
var assert = require('assert');
  
 // The Flow class
 // ==============
@@ -894,10 +956,6 @@ 

// * **new Flow([flowControlId])**: creating a new flow that will listen for WINDOW_UPDATES frames // with the given `flowControlId` (or every update frame if not given) // -// * **Event: 'receiving' (frame)**: there's an incoming frame -// -// * **Event: 'sending' (frame)**: a frame was added to the output queue -// // * **_send()**: called when more frames should be pushed. The child class is expected to override // this (instead of the `_read` method of the Duplex class). // @@ -910,15 +968,10 @@

// full, and `null` if did not push the frame into the output queue (instead, it pushed it into // the flow control queue). // -// * **_push(frame, remainderCallback): bool**: like push, but never puts the frame into the -// flow control queue. -// -// Instead, it pushes directly into the output queue if possible (according to the flow control -// window) and calls `remainderCallback` with the remaining non-pushable part of the frame. It is -// capable of dividing DATA frames into multiple chunks. -// -// Use this instead of `push` if you always want to have empty flow control queue (but never mix -// the two). +// * **read(limit): frame**: like the regular `read`, but the 'flow control size' (0 for non-DATA +// frames, length of the payload for DATA frames) of the returned frame will be under `limit`. +// Small exception: pass -1 as `limit` if the max. flow control size is 0. `read(0)` means the +// same thing as [in the original API](http://nodejs.org/api/stream.html#stream_stream_read_0). // // * **getLastQueuedFrame(): frame**: returns the last frame in output buffers // @@ -938,7 +991,6 @@

this._window = this._initialWindow = INITIAL_WINDOW_SIZE; this._flowControlId = flowControlId; this._queue = []; -  this._ended = false; this._received = 0; this._remoteFlowControlDisabled = false; @@ -958,8 +1010,6 @@

// incoming frame is a WINDOW_UPDATE. // [1]: http://nodejs.org/api/stream.html#stream_writable_write_chunk_encoding_callback_1 Flow.prototype._write = function _write(frame, encoding, callback) { - this.emit('receiving', frame); -  if (frame.flags.END_STREAM) { this._ended = true; } @@ -991,6 +1041,7 @@

if (!this._ended && !this._remoteFlowControlDisabled && (this._received > 0)) { this.push({ type: 'WINDOW_UPDATE', + flags: {}, stream: this._flowControlId, window_size: this._received }); @@ -1039,78 +1090,118 @@

// * if there are items in the flow control queue, then let's put them into the output queue (to // the extent it is possible with respect to the window size and output queue feedback) else if (this._window > 0) { - var frame; - var moreNeeded = true; - var unshiftRemainder = this._queue.unshift.bind(this._queue); - while (moreNeeded && (frame = this._queue.shift())) { - moreNeeded = this._push(frame, unshiftRemainder); - } + this._readableState.sync = true; // to avoid reentrant calls + do { + var moreNeeded = this._push(this._queue[0]); + if (moreNeeded !== null) { + this._queue.shift(); + } + } while (moreNeeded && (this._queue.length > 0)); + this._readableState.sync = false;   - assert((moreNeeded == false) || // output queue is full - (this._queue.length === 0) || // flow control queue is empty - ((this._window === 0) && (this._queue[0].type === 'DATA'))); // waiting for window update + assert((moreNeeded == false) || // * output queue is full + (this._queue.length === 0) || // * flow control queue is empty + (!this._window && (this._queue[0].type === 'DATA'))); // * waiting for window update }   - this._readableState.reading = false; + // * otherwise, come back when the flow control window is positive + else { + this.once('window_update', this._read); + } };   -// `_push(frame)` is the low-level version of `push`. Use this instead of `push` if you always want -// to have empty flow control queue (but never mix the two). It pushes `frame` into the output queue -// and decreases the flow control window size. It is capable of splitting DATA frames into smaller -// parts, if the window size is not enough to push the whole frame. It calls `remainderCallback` -// synchronously before returning with the frame it was not able to push to the output queue. The -// remainder may be the whole frame or the remaining part of a DATA frame. The return value is -// similar to `push` except that it returns `null` if it did not push anything to the output queue. -  var MAX_PAYLOAD_SIZE = 4096; // Must not be greater than MAX_HTTP_PAYLOAD_SIZE which is 16383   -Flow.prototype._push = function _push(frame, remainderCallback) { - do { - var forwardable = undefined, remainder = undefined; - if ((frame === null) || (frame.type !== 'DATA') || - ((frame.data.length <= this._window) && (frame.data.length <= MAX_PAYLOAD_SIZE))) { - forwardable = frame; +// `read(limit)` is like the `read` of the Readable class, but it guarantess that the 'flow control +// size' (0 for non-DATA frames, length of the payload for DATA frames) of the returned frame will +// be under `limit`. +Flow.prototype.read = function read(limit) { + if (limit === 0) { + return Duplex.prototype.read.call(this, 0); + } else Iif (limit === -1) { + limit = 0; + } else Eif ((limit === undefined) || (limit > MAX_PAYLOAD_SIZE)) { + limit = MAX_PAYLOAD_SIZE; + } +  + // * Looking at the first frame in the queue without pulling it out if possible. This will save + // a costly unshift if the frame proves to be too large to return. + var firstInQueue = this._readableState.buffer[0]; + var frame = firstInQueue || Duplex.prototype.read.call(this); +  + if ((frame === null) || (frame.type !== 'DATA') || (frame.data.length <= limit)) { + if (firstInQueue) { + Duplex.prototype.read.call(this); } + return frame; + }   - else if (this._window <= 0) { - remainder = frame; + else Iif (limit <= 0) { + if (!firstInQueue) { + this.unshift(frame); } + return null; + }   - else { - var chunkSize = Math.min(this._window, MAX_PAYLOAD_SIZE); - forwardable = { - stream: frame.stream, - type: 'DATA', - flags: {}, - data: frame.data.slice(0, chunkSize) - }; + else { + this._log.trace({ frame: frame, size: frame.data.length, forwardable: limit }, + 'Splitting out forwardable part of a DATA frame.'); + var forwardable = { + type: 'DATA', + flags: {}, + stream: frame.stream, + data: frame.data.slice(0, limit) + }; + frame.data = frame.data.slice(limit);   - this._log.trace({ frame: frame, size: frame.data.length, forwardable: chunkSize }, - 'Splitting out forwardable part of a DATA frame.'); - frame.data = frame.data.slice(chunkSize); - remainder = frame; + Iif (!firstInQueue) { + this.unshift(frame); } + return forwardable; + } +};   - var moreNeeded = null; - if (forwardable !== undefined) { - this._log.trace({ frame: forwardable }, 'Pushing frame into the output queue'); - if (forwardable && (forwardable.type === 'DATA') && (this._window !== Infinity)) { - this._log.trace({ window: this._window, by: forwardable.data.length }, - 'Decreasing flow control window size.'); - this._window -= forwardable.data.length; - assert(this._window >= 0); - } - moreNeeded = Duplex.prototype.push.call(this, forwardable); - } +// `_parentPush` pushes the given `frame` into the output queue +Flow.prototype._parentPush = function _parentPush(frame) { + this._log.trace({ frame: frame }, 'Pushing frame into the output queue'); +  + if (frame && (frame.type === 'DATA') && (this._window !== Infinity)) { + this._log.trace({ window: this._window, by: frame.data.length }, + 'Decreasing flow control window size.'); + this._window -= frame.data.length; + assert(this._window >= 0); + } +  + return Duplex.prototype.push.call(this, frame); +};   - frame = remainder; - } while (remainder && moreNeeded); +// `_push(frame)` pushes `frame` into the output queue and decreases the flow control window size. +// It is capable of splitting DATA frames into smaller parts, if the window size is not enough to +// push the whole frame. The return value is similar to `push` except that it returns `null` if it +// did not push the whole frame to the output queue (but maybe it did push part of the frame). +Flow.prototype._push = function _push(frame) { + var data = frame && (frame.type === 'DATA') && frame.data;   - if (remainder !== undefined) { - remainderCallback(remainder); + if (!data || (data.length <= this._window)) { + return this._parentPush(frame); }   - return moreNeeded; + else if (this._window <= 0) { + return null; + } +  + else { + this._log.trace({ frame: frame, size: frame.data.length, forwardable: this._window }, + 'Splitting out forwardable part of a DATA frame.'); + frame.data = data.slice(this._window); + this._parentPush({ + type: 'DATA', + flags: {}, + stream: frame.stream, + data: data.slice(0, this._window) + }); + return null; + } };   // Push `frame` into the flow control queue, or if it's empty, then directly into the output queue @@ -1118,17 +1209,19 @@

if (frame === null) { this._log.debug('Enqueueing outgoing End Of Stream'); } else { - frame.flags = frame.flags || {}; this._log.debug({ frame: frame }, 'Enqueueing outgoing frame'); - this.emit('sending', frame); }   + var moreNeeded = null; if (this._queue.length === 0) { - return this._push(frame, this._queue.push.bind(this._queue)); - } else { + moreNeeded = this._push(frame); + } +  + if (moreNeeded === null) { this._queue.push(frame); - return null; } +  + return moreNeeded; };   // `getLastQueuedFrame` returns the last frame in output buffers. This is primarily used by the @@ -1162,7 +1255,7 @@

this._log.error('Flow control window grew too large.'); this.emit('error', 'FLOW_CONTROL_ERROR'); } else { - this.read(0); + this.emit('window_update'); } } }; @@ -1197,7 +1290,7 @@

diff --git a/coverage/lcov-report/lib/framer.js.html b/coverage/lcov-report/lib/framer.js.html index e75a4cb7..e123b2fb 100644 --- a/coverage/lcov-report/lib/framer.js.html +++ b/coverage/lcov-report/lib/framer.js.html @@ -183,16 +183,16 @@

Code coverage report for lib/framer.js

- Statements: 94.26% (230 / 244)      + Statements: 94.35% (234 / 248)      - Branches: 82.43% (61 / 74)      + Branches: 83.33% (60 / 72)      - Functions: 90.91% (30 / 33)      + Functions: 93.75% (30 / 32)      - Lines: 94.26% (230 / 244)      + Lines: 94.35% (234 / 248)     

All files » lib/ » framer.js
@@ -936,7 +936,16 @@

735 736 737 -738  +738 +739 +740 +741 +742 +743 +744 +745 +746 +747        @@ -971,24 +980,24 @@

    1 -99 +76   -99 +76   -99 -99 -99 +76 +76 +76   -99 +76   -99 -202 +76 +156     -202 +156     -99 +76       @@ -1016,42 +1025,43 @@

    1 -209 -209 -209 -209 -117 +165 +165 +165 +165 +95           1 -68 +66   -68 +66       -68 +66     -171 -171 -171 -171 +148 +148 +148 +148             -171 -92 -92 -92 +148 +70 +70 +70     +        @@ -1060,24 +1070,24 @@

      -171 -92 -92 -92 +148 +70 +70 +70       -92 -92 +70 +70         -92 +70       -68 +66       @@ -1137,47 +1147,49 @@

1   1 -110 +87   -110 -110 -114 +87 +87 +91   -110 -110 +87 +87   -110 -110 +87 +87   -110 -110 -105 -105 -105 +87 +87 +93 +93 +93 54     -110 +87   -110 -110 +87 +87   -110 +87     1 -103 +81 +  +81   -103 +81 +81 +81 +81 +152   -103 -103 -103 -103 -196   +81   -103 +81       @@ -1211,11 +1223,11 @@

1   1 -37 +14     1 -36 +14       @@ -1456,9 +1468,12 @@

  1 4 +  4 4 4 +  +4 4     @@ -1488,7 +1503,6 @@

  1 2 -2     1 @@ -1531,6 +1545,7 @@

  4 4 +4   4 4 @@ -1564,10 +1579,13 @@

  1 2 +  2 2 2   +2 +    1 2 @@ -1643,7 +1661,7 @@

  2 2 -10 +8     2 @@ -1654,7 +1672,7 @@

    1 -  +1       @@ -1677,7 +1695,7 @@

// the Serializer and the Deserializer // [1]: http://nodejs.org/api/stream.html#stream_class_stream_transform // [2]: http://nodejs.org/api/stream.html#stream_new_stream_readable_options -var assert = process.env.HTTP2_ASSERT ? require('assert') : function noop() {}; +var assert = require('assert');   var Transform = require('stream').Transform;   @@ -1784,11 +1802,12 @@

// If it's header then the parsed data is stored in a temporary variable and then the // deserializer waits for the specified length payload. if ((this._cursor === this._buffer.length) && this._waitingForHeader) { - Deserializer.commonHeader(this._buffer, this._frame); - Eif (this._frame.length <= this._sizeLimit) { - this._next(this._frame.length); + var payloadSize = Deserializer.commonHeader(this._buffer, this._frame); + Eif (payloadSize <= this._sizeLimit) { + this._next(payloadSize); } else { this.emit('error', 'FRAME_TOO_LARGE'); + return; } }   @@ -1801,7 +1820,7 @@

Eif (this._frame.type) { var error = Deserializer[this._frame.type](this._buffer, this._frame); Iif (error) { - this._log.error('Incoming frame parsing error'); + this._log.error('Incoming frame parsing error: ' + error); this.emit('error', 'PROTOCOL_ERROR'); } else { this._log.trace({ frame: this._frame }, 'Incoming frame'); @@ -1869,7 +1888,7 @@

  var frameFlags = {};   -var genericAttributes = ['length', 'type', 'flags', 'stream']; +var genericAttributes = ['type', 'flags', 'stream'];   var typeSpecificAttributes = {};   @@ -1880,7 +1899,7 @@

for (var i = 0; i < buffers.length; i++) { size += buffers[i].length; } - assert(size <= MAX_PAYLOAD_SIZE, 'Frame too large!'); + assert(size <= MAX_PAYLOAD_SIZE, size); headerBuffer.writeUInt16BE(size, 0);   var typeId = frameTypes.indexOf(frame.type); // If we are here then the type is valid for sure @@ -1896,14 +1915,14 @@

} headerBuffer.writeUInt8(flagByte, 3);   - assert(frame.stream < 0x7fffffff, 'Too large stream ID: ' + frame.stream); + assert((0 <= frame.stream) && (frame.stream < 0x7fffffff), frame.stream); headerBuffer.writeUInt32BE(frame.stream || 0, 4);   buffers.unshift(headerBuffer); };   Deserializer.commonHeader = function readCommonHeader(buffer, frame) { - frame.length = buffer.readUInt16BE(0); + var length = buffer.readUInt16BE(0);   frame.type = frameTypes[buffer.readUInt8(2)];   @@ -1915,6 +1934,8 @@

}   frame.stream = buffer.readUInt32BE(4) & 0x7fffffff; +  + return length; };   // Frame types @@ -1993,7 +2014,7 @@

Serializer.HEADERS = function writeHeadersPriority(frame, buffers) { if (frame.flags.PRIORITY) { var buffer = new Buffer(4); - assert((0 <= frame.priority) && (frame.priority <= 0xffffffff)); + assert((0 <= frame.priority) && (frame.priority <= 0xffffffff), frame.priority); buffer.writeUInt32BE(frame.priority, 0); buffers.push(buffer); } @@ -2065,7 +2086,7 @@

Serializer.RST_STREAM = function writeRstStream(frame, buffers) { var buffer = new Buffer(4); var code = errorCodes.indexOf(frame.error); - assert((0 <= code) && (code <= 0xffffffff)); + assert((0 <= code) && (code <= 0xffffffff), code); buffer.writeUInt32BE(code, 0); buffers.push(buffer); }; @@ -2193,8 +2214,11 @@

  Serializer.PUSH_PROMISE = function writePushPromise(frame, buffers) { var buffer = new Buffer(4); - assert((0 <= frame.promised_stream) && (frame.promised_stream <= 0x7fffffff)); - buffer.writeUInt32BE(frame.promised_stream, 0); +  + var promised_stream = frame.promised_stream; + assert((0 <= promised_stream) && (promised_stream <= 0x7fffffff), promised_stream); + buffer.writeUInt32BE(promised_stream, 0); +  buffers.push(buffer); buffers.push(frame.data); }; @@ -2224,7 +2248,6 @@

// In addition to the frame header, PING frames MUST contain 8 additional octets of opaque data.   Serializer.PING = function writePing(frame, buffers) { - assert(('data' in frame) && (frame.data.length === 8), 'PING frames must carry an 8 byte payload'); buffers.push(frame.data); };   @@ -2266,11 +2289,12 @@

Serializer.GOAWAY = function writeGoaway(frame, buffers) { var buffer = new Buffer(8);   - assert((0 <= frame.last_stream) && (frame.last_stream <= 0x7fffffff)); - buffer.writeUInt32BE(frame.last_stream, 0); + var last_stream = frame.last_stream; + assert((0 <= last_stream) && (last_stream <= 0x7fffffff), last_stream); + buffer.writeUInt32BE(last_stream, 0);   var code = errorCodes.indexOf(frame.error); - assert((0 <= code) && (code <= 0xffffffff)); + assert((0 <= code) && (code <= 0xffffffff), code); buffer.writeUInt32BE(code, 4);   buffers.push(buffer); @@ -2301,8 +2325,11 @@

  Serializer.WINDOW_UPDATE = function writeWindowUpdate(frame, buffers) { var buffer = new Buffer(4); - assert((0 <= frame.window_size) && (frame.window_size <= 0x7fffffff)); - buffer.writeUInt32BE(frame.window_size, 0); +  + var window_size = frame.window_size; + assert((0 <= window_size) && (window_size <= 0x7fffffff), window_size); + buffer.writeUInt32BE(window_size, 0); +  buffers.push(buffer); };   @@ -2390,8 +2417,8 @@

logEntry.data = frame.data.toString('hex'); }   - Iif (!('length' in logEntry)) { - logEntry.length = frame.data.length; + Eif (!('length' in logEntry)) { + logEntry.length = frame.data.length; } }   @@ -2415,7 +2442,7 @@

diff --git a/coverage/lcov-report/lib/http.js.html b/coverage/lcov-report/lib/http.js.html index 35fe6217..166d7834 100644 --- a/coverage/lcov-report/lib/http.js.html +++ b/coverage/lcov-report/lib/http.js.html @@ -183,16 +183,16 @@

Code coverage report for lib/http.js

- Statements: 91.15% (371 / 407)      + Statements: 92.1% (373 / 405)      - Branches: 80.26% (122 / 152)      + Branches: 77.27% (119 / 154)      - Functions: 91.94% (57 / 62)      + Functions: 92.06% (58 / 63)      - Lines: 91.15% (371 / 407)      + Lines: 92.1% (373 / 405)     

All files » lib/ » http.js
@@ -1165,11 +1165,7 @@

964 965 966 -967 -968 -969 -970 -971  +967        @@ -1310,6 +1306,7 @@

1 1 1 +1   1   @@ -1409,6 +1406,16 @@

  1   +1 +60 +  +  +  +  +60 +  +  +        @@ -1477,6 +1484,8 @@

  1   +1 +        @@ -1663,20 +1672,9 @@

    12 -  -  -  -  -  12 -48 -48 -  -  -  -  -48 -  +12 +12     12 @@ -2093,12 +2091,6 @@

    12 -12 -  -  -  -  -12     12 @@ -2230,7 +2222,7 @@

// - **Event: 'timeout'**: HTTP/2 sockets won't timeout because of application level keepalive // (PING frames) // - **Event: 'connect'**: not in the spec, yet (see [http-spec#230][connect]) -// - **server.setTimeout(msecs, callback)** +// - **server.setTimeout(msecs, [callback])** // - **server.timeout** // // - **Class: http2.ServerResponse** @@ -2280,6 +2272,7 @@

exports.STATUS_CODES = http.STATUS_CODES; exports.IncomingMessage = IncomingMessage; exports.OutgoingMessage = OutgoingMessage; +exports.Endpoint = Endpoint;   var deprecatedHeaders = [ 'connection', @@ -2379,6 +2372,16 @@

  IncomingMessage.prototype.setTimeout = noop;   +IncomingMessage.prototype._checkSpecialHeader = function _checkSpecialHeader(key, value) { + Iif ((typeof value !== 'string') || (value.length === 0)) { + this._log.error({ key: key, value: value }, 'Invalid special header field'); + this.stream.emit('error', 'PROTOCOL_ERROR'); + } +  + return value; +} +; +  // OutgoingMessage class // ---------------------   @@ -2390,7 +2393,7 @@

this._trailers = undefined; this.headersSent = false;   - this.on('finish', this._finish.bind(this)); + this.on('finish', this._finish); } OutgoingMessage.prototype = Object.create(Writable.prototype, { constructor: { value: OutgoingMessage } });   @@ -2447,6 +2450,8 @@

  OutgoingMessage.prototype.setTimeout = noop;   +OutgoingMessage.prototype._checkSpecialHeader = IncomingMessage.prototype._checkSpecialHeader; +  // Server side // ===========   @@ -2581,7 +2586,7 @@

// `server` to `this` since that means a listener. Instead, we forward the subscriptions. Server.prototype.on = function on(event, listener) { Iif ((event === 'upgrade') || (event === 'timeout')) { - this._server.on(event, listener.bind(this)); + this._server.on(event, listener && listener.bind(this)); } else { EventEmitter.prototype.on.call(this, event, listener); } @@ -2632,21 +2637,10 @@

// * All HTTP/2.0 requests MUST include exactly one valid value for all of these header fields. A // server MUST treat the absence of any of these header fields, presence of multiple values, or // an invalid value as a stream error of type PROTOCOL_ERROR. - var mapping = { - ':method': 'method', - ':scheme': 'scheme', - ':host': 'host', - ':path': 'url' - }; - for (var name in mapping) { - var value = headers[name]; - Iif ((typeof value !== 'string') || (value.length === 0)) { - this._log.error({ key: name, value: value }, 'Invalid or missing special header field'); - this.stream.emit('error', 'PROTOCOL_ERROR'); - return; - } - this[mapping[name]] = value; - } + this.method = this._checkSpecialHeader(':method', headers[':method']); + this.scheme = this._checkSpecialHeader(':scheme', headers[':scheme']); + this.host = this._checkSpecialHeader(':host' , headers[':host'] ); + this.url = this._checkSpecialHeader(':path' , headers[':path'] );   // * Host header is included in the headers object for backwards compatibility. this.headers.host = this.host; @@ -2748,7 +2742,7 @@

// `request`. See `Server.prototype.on` for explanation. OutgoingResponse.prototype.on = function on(event, listener) { Iif (this.request && (event === 'timeout')) { - this.request.on(event, listener.bind(this)); + this.request.on(event, listener && listener.bind(this)); } else { OutgoingMessage.prototype.on.call(this, event, listener); } @@ -2988,7 +2982,7 @@

// `request`. See `Server.prototype.on` for explanation. OutgoingRequest.prototype.on = function on(event, listener) { Iif (this.request && (event === 'upgrade')) { - this.request.on(event, listener.bind(this)); + this.request.on(event, listener && listener.bind(this)); } else { OutgoingMessage.prototype.on.call(this, event, listener); } @@ -3062,13 +3056,7 @@

// values, or an invalid value as a stream error of type PROTOCOL_ERROR. // * HTTP/2.0 does not define a way to carry the reason phrase that is included in an HTTP/1.1 // status line. - var statusCode = headers[':status']; - Iif ((typeof statusCode !== 'string') || (statusCode.length === 0)) { - this._log.error({ key: ':status', value: statusCode }, 'Invalid header field'); - this.stream.emit('error', 'PROTOCOL_ERROR'); - return; - } - this.statusCode = statusCode; + this.statusCode = this._checkSpecialHeader(':status', headers[':status']);   // * Handling regular headers. IncomingMessage.prototype._onHeaders.call(this, headers); @@ -3114,7 +3102,7 @@

diff --git a/coverage/lcov-report/lib/index.html b/coverage/lcov-report/lib/index.html index a95bd29b..15c94e37 100644 --- a/coverage/lcov-report/lib/index.html +++ b/coverage/lcov-report/lib/index.html @@ -183,16 +183,16 @@

Code coverage report for lib/

- Statements: 93.44% (1482 / 1586)      + Statements: 93.33% (1538 / 1648)      - Branches: 86.13% (559 / 649)      + Branches: 84.91% (585 / 689)      - Functions: 92.34% (193 / 209)      + Functions: 95.65% (198 / 207)      - Lines: 93.42% (1476 / 1580)      + Lines: 93.3% (1532 / 1642)     

All files » lib/
@@ -219,90 +219,90 @@

94.72% (323 / 341) - 93.75% - (120 / 128) - 96.55% - (28 / 29) + 94.44% + (119 / 126) + 100% + (28 / 28) 94.72% (323 / 341) connection.js - - 92.79% - (193 / 208) - 81.25% - (52 / 64) - 94.12% - (32 / 34) - 92.79% - (193 / 208) + + 92.41% + (219 / 237) + 79.76% + (67 / 84) + 100% + (33 / 33) + 92.41% + (219 / 237) endpoint.js 100% - (84 / 84) - 88.89% - (16 / 18) - 92.86% - (13 / 14) + (90 / 90) + 94.44% + (17 / 18) + 100% + (13 / 13) 100% - (84 / 84) + (90 / 90) flow.js - - 100% - (105 / 105) - 97.06% - (66 / 68) - 93.75% - (15 / 16) + + 95.87% + (116 / 121) + 91.86% + (79 / 86) 100% - (105 / 105) + (17 / 17) + 95.87% + (116 / 121) framer.js - - 94.26% - (230 / 244) - 82.43% - (61 / 74) - 90.91% - (30 / 33) - 94.26% - (230 / 244) + + 94.35% + (234 / 248) + 83.33% + (60 / 72) + 93.75% + (30 / 32) + 94.35% + (234 / 248) http.js - - 91.15% - (371 / 407) - 80.26% - (122 / 152) - 91.94% - (57 / 62) - 91.15% - (371 / 407) + + 92.1% + (373 / 405) + 77.27% + (119 / 154) + 92.06% + (58 / 63) + 92.1% + (373 / 405) stream.js - - 89.34% - (176 / 197) - 84.14% - (122 / 145) - 85.71% - (18 / 21) - 89.01% - (170 / 191) + + 88.83% + (183 / 206) + 83.22% + (124 / 149) + 90.48% + (19 / 21) + 88.5% + (177 / 200) @@ -310,7 +310,7 @@

diff --git a/coverage/lcov-report/lib/stream.js.html b/coverage/lcov-report/lib/stream.js.html index 7a2e75d1..83bd15ff 100644 --- a/coverage/lcov-report/lib/stream.js.html +++ b/coverage/lcov-report/lib/stream.js.html @@ -183,16 +183,16 @@

Code coverage report for lib/stream.js

- Statements: 89.34% (176 / 197)      + Statements: 88.83% (183 / 206)      - Branches: 84.14% (122 / 145)      + Branches: 83.22% (124 / 149)      - Functions: 85.71% (18 / 21)      + Functions: 90.48% (19 / 21)      - Lines: 89.01% (170 / 191)      + Lines: 88.5% (177 / 200)     

All files » lib/ » stream.js
@@ -769,7 +769,36 @@

568 569 570 -5711 +571 +572 +573 +574 +575 +576 +577 +578 +579 +580 +581 +582 +583 +584 +585 +586 +587 +588 +589 +590 +591 +592 +593 +594 +595 +596 +597 +598 +599 +6001       @@ -845,18 +874,6 @@

105 105 105 -105 -6 -  -105 -43 -  -  -43 -  -105 -  -      1 @@ -867,6 +884,12 @@

      +  +  +6 +  +  +1 6     @@ -877,6 +900,15 @@

      +  +  +1 +43 +  +  +43 +  +  1     @@ -893,12 +925,18 @@

      +  +              +1 +  +  +      1 @@ -944,11 +982,13 @@

      +  +  1   1 105 -105 +  105 105 105 @@ -958,34 +998,51 @@

105     +1 +89 +89 +  +    1 -97 +70   -97 +70   +70     -97 -48 -48 +  +70 +21 +21             -  49 +43 +6 +6 +  +  +  +  +  +  +  +        -97 +70 35     -97 -97 +70 +70       @@ -1008,21 +1065,23 @@

      -19 -19   +  +19     +19 +            1 -809 -  -  -  +107 +19 +19 +19       @@ -1031,19 +1090,20 @@

    1 +1 36         +  36 36 -7 -7 -7 -7 +35 +35 +35   -29 +1       @@ -1082,8 +1142,6 @@

105 105 105 -105 -105       @@ -1098,20 +1156,20 @@

    1 -234 +208           1 -285 -285 +258 +258   -285 -285 -285 -115 +258 +258 +258 +88 95 8 33 @@ -1119,9 +1177,9 @@

10     -285 +258   -285 +258       @@ -1131,7 +1189,7 @@

57 42 42 -3 +11   42 15 @@ -1191,14 +1249,14 @@

      -65 -29 -36 +37 +21 +16 2       -65 +37       @@ -1207,14 +1265,14 @@

      -62 -24 -38 +42 +21 +21     3   -62 +42       @@ -1227,14 +1285,14 @@

      -40 -22 -18 +61 +25 +36     3   -40 +61       @@ -1270,7 +1328,7 @@

      -285 +258 66 66   @@ -1281,7 +1339,7 @@

      -285 +258 13   13 @@ -1289,19 +1347,19 @@

      -285 -117 -117 +258 +104 +104 60   -57 +44   -168 +154 89       -285 +258 45     @@ -1339,7 +1397,7 @@

  6   - 
var assert = process.env.HTTP2_ASSERT ? require('assert') : function noop() {};
+ 
var assert = require('assert');
  
 // The Stream class
 // ================
@@ -1415,38 +1473,41 @@ 

this._resetSent = false; this._priority = DEFAULT_PRIORITY; this._letPeerPrioritize = true; - this.on('PUSH_PROMISE', function(frame) { - this.emit('promise', frame.promised_stream, frame.headers); - }); - this.on('HEADERS', function(frame) { - Iif (frame.priority !== undefined) { - this.priority(frame.priority, true); - } - this.emit('headers', frame.headers); - }); - this.on('PRIORITY', function(frame) { - this.priority(frame.priority, true); - }); };   Stream.prototype.promise = function promise(headers) { var stream = new Stream(this._log); stream._priority = Math.min(this._priority + 1, MAX_PRIORITY); - this.upstream.push({ + this._pushUpstream({ type: 'PUSH_PROMISE', + flags: {}, + stream: this.id, promised_stream: stream, headers: headers }); return stream; };   +Stream.prototype._onPromise = function _onPromise(frame) { + this.emit('promise', frame.promised_stream, frame.headers); +}; +  Stream.prototype.headers = function headers(headers) { - this.upstream.push({ + this._pushUpstream({ type: 'HEADERS', + flags: {}, + stream: this.id, headers: headers }); };   +Stream.prototype._onHeaders = function _onHeaders(frame) { + Iif (frame.priority !== undefined) { + this.priority(frame.priority, true); + } + this.emit('headers', frame.headers); +}; +  Stream.prototype.priority = function priority(priority, peer) { if ((peer && this._letPeerPrioritize) || !peer) { if (!peer) { @@ -1456,8 +1517,10 @@

if (lastFrame && ((lastFrame.type === 'HEADERS') || (lastFrame.type === 'PRIORITY'))) { lastFrame.priority = priority; } else { - this.upstream.push({ + this._pushUpstream({ type: 'PRIORITY', + flags: {}, + stream: this.id, priority: priority }); } @@ -1469,13 +1532,19 @@

} };   +Stream.prototype._onPriority = function _onPriority(frame) { + this.priority(frame.priority, true); +}; +  // Resetting the stream. Normally, an endpoint SHOULD NOT send more than one RST_STREAM frame for // any stream. Stream.prototype.reset = function reset(error) { if (!this._resetSent) { this._resetSent = true; - this.upstream.push({ + this._pushUpstream({ type: 'RST_STREAM', + flags: {}, + stream: this.id, error: error }); } @@ -1517,20 +1586,27 @@

var Flow = require('./flow').Flow;   Stream.prototype._initializeDataFlow = function _initializeDataFlow() { + this.id = undefined; +  this.upstream = new Flow(); this.upstream._log = this._log; this.upstream._send = this._send.bind(this); this.upstream._receive = this._receive.bind(this); - this.upstream.on('sending', this.emit.bind(this, 'sending')); - this.upstream.on('receiving', this.emit.bind(this, 'receiving')); this.upstream.on('error', this.emit.bind(this, 'error'));   this.on('finish', this._finishing); };   +Stream.prototype._pushUpstream = function _pushUpstream(frame) { + this.upstream.push(frame); + this._transition(true, frame); +}; +  // The `_receive` method (= `upstream._receive`) gets called when there's an incoming frame. Stream.prototype._receive = function _receive(frame, ready) { this._log.debug({ frame: frame }, 'Receiving frame'); +  + this._transition(false, frame);   var callReady = true;   @@ -1544,9 +1620,19 @@

} }   - // * Otherwise it's a control frame. Emit an event to notify interested parties. - else { - this.emit(frame.type, frame); + // * Otherwise it's a control frame. Call the appropriate handler method. + else if (frame.type === 'HEADERS') { + this._onHeaders(frame); + } else Eif (frame.type === 'PUSH_PROMISE') { + this._onPromise(frame); + } else if (frame.type === 'PRIORITY') { + this._onPriority(frame); + } +  + // * If it's an invalid stream level frame, emit error + else if (frame.type !== 'WINDOW_UPDATE') { + this._log.error({ frame: frame }, 'Invalid stream level frame'); + this.emit('error', 'PROTOCOL_ERROR'); }   // * Any frame may signal the end of the stream with the END_STREAM flag @@ -1572,16 +1658,18 @@

// The `write` method gets called when there's a write request from the user. Stream.prototype._write = function _write(buffer, encoding, ready) { // * Chunking is done by the upstream Flow. - var moreNeeded = this.upstream.push({ + var moreNeeded = this._pushUpstream({ type: 'DATA', + flags: {}, + stream: this.id, data: buffer });   // * Call ready when upstream is ready to receive more frames. - Eif (moreNeeded) { - ready(); + Iif (moreNeeded) { + ready(); } else { - this._sendMore = ready; + this._sendMore = ready; } };   @@ -1589,10 +1677,10 @@

// If there's a pending write on the user side, then call its pending ready callback to receive more // writes. Stream.prototype._send = function _send() { - Iif (this._sendMore) { - var sendMore = this._sendMore; - delete this._sendMore; - sendMore(); + if (this._sendMore) { + var sendMore = this._sendMore; + delete this._sendMore; + sendMore(); } };   @@ -1600,20 +1688,21 @@

// flag on the last frame. If there's no frame in the queue, or if it doesn't support this flag, // then we create a 0 length DATA frame. We could do this all the time, but putting the flag on an // existing frame is a nice optimization. +var emptyBuffer = new Buffer(0); Stream.prototype._finishing = function _finishing() { var endFrame = { type: 'DATA', flags: { END_STREAM: true }, - data: new Buffer(0) + stream: this.id, + data: emptyBuffer }; var lastFrame = this.upstream.getLastQueuedFrame(); if (lastFrame && ((lastFrame.type === 'DATA') || (lastFrame.type === 'HEADERS'))) { this._log.debug({ frame: lastFrame }, 'Marking last frame with END_STREAM flag.'); - lastFrame.flags = lastFrame.flags || {}; lastFrame.flags.END_STREAM = true; this._transition(true, endFrame); } else { - this.upstream.push(endFrame); + this._pushUpstream(endFrame); } };   @@ -1652,8 +1741,6 @@

this._initiated = undefined; this._closedByUs = undefined; this._closedWithRst = undefined; - this.on('sending', this._transition.bind(this, true)); - this.on('receiving', this._transition.bind(this, false)); };   // Only `_setState` should change `this.state` directly. It also logs the state change and notifies @@ -1903,18 +1990,18 @@

  var nextId = 0; exports.serializers.s = function(stream) { - if (!('id' in stream)) { - stream.id = nextId; + if (!('_id' in stream)) { + stream._id = nextId; nextId += 1; } - return stream.id; + return stream._id; };  

diff --git a/coverage/lcov.info b/coverage/lcov.info deleted file mode 100644 index 9d4bd0eb..00000000 --- a/coverage/lcov.info +++ /dev/null @@ -1,2710 +0,0 @@ -TN: -SF:/data/upstream/node-http2/lib/compressor.js -FN:25,noop -FN:37,HeaderTable -FN:57,entryFromPair -FN:76,size -FN:80,tableSize -FN:96,(anonymous_6) -FN:203,HeaderSetDecompressor -FN:214,_transform -FN:240,_execute -FN:297,_flush -FN:331,HeaderSetCompressor -FN:339,send -FN:352,_transform -FN:437,_flush -FN:468,writeInteger -FN:509,readInteger -FN:538,writeString -FN:544,readString -FN:596,writeHeader -FN:632,readHeader -FN:701,Compressor -FN:715,compress -FN:737,_transform -FN:793,Decompressor -FN:810,decompress -FN:834,_transform -FN:863,(anonymous_27) -FN:884,concat -FN:899,cut -FNF:29 -FNH:28 -FNDA:0,noop -FNDA:54,HeaderTable -FNDA:1806,entryFromPair -FNDA:1806,size -FNDA:54,tableSize -FNDA:182,(anonymous_6) -FNDA:49,HeaderSetDecompressor -FNDA:49,_transform -FNDA:163,_execute -FNDA:49,_flush -FNDA:47,HeaderSetCompressor -FNDA:159,send -FNDA:159,_transform -FNDA:47,_flush -FNDA:363,writeInteger -FNDA:375,readInteger -FNDA:123,writeString -FNDA:125,readString -FNDA:163,writeHeader -FNDA:171,readHeader -FNDA:26,Compressor -FNDA:47,compress -FNDA:98,_transform -FNDA:28,Decompressor -FNDA:49,decompress -FNDA:95,_transform -FNDA:38,(anonymous_27) -FNDA:132,concat -FNDA:37,cut -DA:18,1 -DA:19,1 -DA:20,1 -DA:21,1 -DA:22,1 -DA:24,1 -DA:25,1 -DA:26,1 -DA:37,1 -DA:38,54 -DA:39,54 -DA:40,54 -DA:41,54 -DA:42,54 -DA:43,54 -DA:57,1 -DA:58,1806 -DA:59,1806 -DA:60,1806 -DA:61,1806 -DA:62,1806 -DA:63,1806 -DA:74,1 -DA:76,1 -DA:77,1806 -DA:80,1 -DA:81,54 -DA:82,54 -DA:83,1620 -DA:85,54 -DA:96,1 -DA:97,182 -DA:98,182 -DA:100,182 -DA:101,0 -DA:102,0 -DA:103,0 -DA:106,182 -DA:107,182 -DA:108,182 -DA:109,0 -DA:111,182 -DA:113,182 -DA:116,182 -DA:124,1 -DA:159,1 -DA:202,1 -DA:203,1 -DA:204,49 -DA:206,49 -DA:207,49 -DA:208,49 -DA:214,1 -DA:215,49 -DA:216,49 -DA:240,1 -DA:241,163 -DA:244,163 -DA:253,163 -DA:254,66 -DA:255,66 -DA:257,66 -DA:258,38 -DA:260,28 -DA:261,28 -DA:262,28 -DA:263,28 -DA:275,97 -DA:276,78 -DA:278,19 -DA:281,97 -DA:282,97 -DA:283,92 -DA:284,92 -DA:285,92 -DA:286,92 -DA:289,97 -DA:297,1 -DA:298,49 -DA:301,49 -DA:302,49 -DA:303,163 -DA:307,49 -DA:308,1559 -DA:309,1559 -DA:310,40 -DA:312,1559 -DA:315,49 -DA:330,1 -DA:331,1 -DA:332,47 -DA:334,47 -DA:335,47 -DA:336,47 -DA:339,1 -DA:340,159 -DA:343,159 -DA:344,155 -DA:346,159 -DA:352,1 -DA:353,159 -DA:354,159 -DA:355,159 -DA:358,159 -DA:359,159 -DA:360,3760 -DA:361,3760 -DA:362,152 -DA:363,65 -DA:364,65 -DA:365,87 -DA:366,87 -DA:373,159 -DA:374,65 -DA:376,65 -DA:377,25 -DA:378,25 -DA:379,25 -DA:382,40 -DA:383,0 -DA:384,0 -DA:385,0 -DA:386,0 -DA:387,0 -DA:388,0 -DA:391,40 -DA:392,4 -DA:393,4 -DA:397,36 -DA:403,94 -DA:404,94 -DA:406,94 -DA:407,94 -DA:408,4 -DA:409,90 -DA:410,76 -DA:412,14 -DA:415,94 -DA:416,90 -DA:417,90 -DA:418,90 -DA:419,0 -DA:420,0 -DA:421,0 -DA:422,0 -DA:423,0 -DA:428,94 -DA:431,159 -DA:437,1 -DA:439,47 -DA:440,1488 -DA:441,1488 -DA:442,32 -DA:443,32 -DA:445,1488 -DA:446,1488 -DA:449,47 -DA:468,1 -DA:469,363 -DA:470,363 -DA:471,161 -DA:474,202 -DA:475,202 -DA:476,2 -DA:478,202 -DA:480,202 -DA:481,202 -DA:482,210 -DA:483,210 -DA:485,210 -DA:486,8 -DA:488,210 -DA:490,210 -DA:493,202 -DA:509,1 -DA:510,375 -DA:512,375 -DA:513,375 -DA:514,173 -DA:517,375 -DA:518,207 -DA:519,207 -DA:520,217 -DA:521,217 -DA:522,217 -DA:526,375 -DA:538,1 -DA:539,123 -DA:540,123 -DA:541,123 -DA:544,1 -DA:545,125 -DA:546,125 -DA:547,125 -DA:548,125 -DA:589,1 -DA:596,1 -DA:597,163 -DA:599,163 -DA:600,63 -DA:601,100 -DA:602,5 -DA:603,95 -DA:604,18 -DA:606,77 -DA:609,163 -DA:610,63 -DA:613,100 -DA:614,81 -DA:616,19 -DA:617,19 -DA:620,100 -DA:621,77 -DA:624,100 -DA:627,163 -DA:629,163 -DA:632,1 -DA:633,171 -DA:635,171 -DA:636,171 -DA:637,68 -DA:638,103 -DA:639,28 -DA:640,6 -DA:642,22 -DA:645,75 -DA:648,171 -DA:649,68 -DA:650,68 -DA:653,103 -DA:654,103 -DA:655,20 -DA:658,103 -DA:659,75 -DA:660,28 -DA:661,22 -DA:663,6 -DA:666,103 -DA:669,171 -DA:694,1 -DA:700,1 -DA:701,1 -DA:702,26 -DA:704,26 -DA:706,26 -DA:707,26 -DA:709,26 -DA:715,1 -DA:716,47 -DA:717,47 -DA:718,143 -DA:719,143 -DA:720,8 -DA:721,24 -DA:724,135 -DA:727,47 -DA:729,47 -DA:730,47 -DA:731,459 -DA:733,47 -DA:737,1 -DA:745,98 -DA:746,37 -DA:748,37 -DA:750,37 -DA:751,39 -DA:752,39 -DA:753,39 -DA:755,39 -DA:756,37 -DA:757,37 -DA:758,37 -DA:760,2 -DA:766,39 -DA:767,32 -DA:769,39 -DA:771,39 -DA:777,61 -DA:780,98 -DA:792,1 -DA:793,1 -DA:794,28 -DA:796,28 -DA:798,28 -DA:799,28 -DA:801,28 -DA:803,28 -DA:804,28 -DA:810,1 -DA:811,49 -DA:812,49 -DA:814,49 -DA:815,49 -DA:816,49 -DA:817,165 -DA:818,165 -DA:819,165 -DA:820,17 -DA:821,8 -DA:823,9 -DA:826,148 -DA:830,49 -DA:834,1 -DA:837,95 -DA:838,3 -DA:839,1 -DA:840,1 -DA:841,1 -DA:843,2 -DA:848,92 -DA:849,37 -DA:850,37 -DA:851,37 -DA:856,55 -DA:862,94 -DA:863,36 -DA:864,38 -DA:866,36 -DA:867,36 -DA:869,0 -DA:870,0 -DA:871,0 -DA:873,36 -DA:874,36 -DA:877,94 -DA:884,1 -DA:885,132 -DA:886,132 -DA:887,546 -DA:890,132 -DA:891,132 -DA:892,546 -DA:895,132 -DA:899,1 -DA:900,37 -DA:901,37 -DA:902,37 -DA:903,39 -DA:904,39 -DA:905,39 -DA:907,37 -LF:341 -LH:323 -BRDA:25,1,0,1 -BRDA:25,1,1,0 -BRDA:40,2,0,54 -BRDA:40,2,1,54 -BRDA:100,3,0,182 -BRDA:100,3,1,0 -BRDA:106,4,0,182 -BRDA:106,4,1,0 -BRDA:108,5,0,0 -BRDA:108,5,1,182 -BRDA:253,6,0,66 -BRDA:253,6,1,97 -BRDA:257,7,0,38 -BRDA:257,7,1,28 -BRDA:275,8,0,78 -BRDA:275,8,1,19 -BRDA:282,9,0,92 -BRDA:282,9,1,5 -BRDA:309,10,0,40 -BRDA:309,10,1,1519 -BRDA:309,11,0,1559 -BRDA:309,11,1,144 -BRDA:343,12,0,155 -BRDA:343,12,1,4 -BRDA:361,13,0,152 -BRDA:361,13,1,3608 -BRDA:362,14,0,65 -BRDA:362,14,1,87 -BRDA:365,15,0,87 -BRDA:365,15,1,0 -BRDA:373,16,0,65 -BRDA:373,16,1,94 -BRDA:376,17,0,25 -BRDA:376,17,1,40 -BRDA:382,18,0,0 -BRDA:382,18,1,40 -BRDA:391,19,0,4 -BRDA:391,19,1,36 -BRDA:407,20,0,4 -BRDA:407,20,1,90 -BRDA:409,21,0,76 -BRDA:409,21,1,14 -BRDA:415,22,0,90 -BRDA:415,22,1,4 -BRDA:420,23,0,0 -BRDA:420,23,1,0 -BRDA:428,24,0,76 -BRDA:428,24,1,18 -BRDA:441,25,0,32 -BRDA:441,25,1,1456 -BRDA:441,26,0,1488 -BRDA:441,26,1,171 -BRDA:441,26,2,135 -BRDA:470,27,0,161 -BRDA:470,27,1,202 -BRDA:475,28,0,2 -BRDA:475,28,1,200 -BRDA:485,29,0,8 -BRDA:485,29,1,202 -BRDA:513,30,0,173 -BRDA:513,30,1,202 -BRDA:517,31,0,207 -BRDA:517,31,1,168 -BRDA:599,32,0,63 -BRDA:599,32,1,100 -BRDA:601,33,0,5 -BRDA:601,33,1,95 -BRDA:603,34,0,18 -BRDA:603,34,1,77 -BRDA:609,35,0,63 -BRDA:609,35,1,100 -BRDA:613,36,0,81 -BRDA:613,36,1,19 -BRDA:620,37,0,77 -BRDA:620,37,1,23 -BRDA:636,38,0,68 -BRDA:636,38,1,103 -BRDA:638,39,0,28 -BRDA:638,39,1,75 -BRDA:639,40,0,6 -BRDA:639,40,1,22 -BRDA:648,41,0,68 -BRDA:648,41,1,103 -BRDA:654,42,0,20 -BRDA:654,42,1,83 -BRDA:658,43,0,75 -BRDA:658,43,1,28 -BRDA:660,44,0,22 -BRDA:660,44,1,6 -BRDA:706,45,0,26 -BRDA:706,45,1,13 -BRDA:707,46,0,13 -BRDA:707,46,1,13 -BRDA:719,47,0,8 -BRDA:719,47,1,135 -BRDA:745,48,0,37 -BRDA:745,48,1,61 -BRDA:745,49,0,98 -BRDA:745,49,1,68 -BRDA:755,50,0,37 -BRDA:755,50,1,2 -BRDA:766,51,0,32 -BRDA:766,51,1,7 -BRDA:767,52,0,32 -BRDA:767,52,1,30 -BRDA:798,53,0,28 -BRDA:798,53,1,13 -BRDA:799,54,0,15 -BRDA:799,54,1,13 -BRDA:819,55,0,17 -BRDA:819,55,1,148 -BRDA:820,56,0,8 -BRDA:820,56,1,9 -BRDA:837,57,0,3 -BRDA:837,57,1,92 -BRDA:838,58,0,1 -BRDA:838,58,1,2 -BRDA:838,59,0,3 -BRDA:838,59,1,2 -BRDA:848,60,0,37 -BRDA:848,60,1,55 -BRDA:848,61,0,92 -BRDA:848,61,1,62 -BRDA:862,62,0,36 -BRDA:862,62,1,58 -BRDA:862,63,0,94 -BRDA:862,63,1,39 -BRDA:862,63,2,10 -BRF:128 -BRH:120 -end_of_record -TN: -SF:/data/upstream/node-http2/lib/connection.js -FN:1,noop -FN:36,Connection -FN:96,_initializeStreamManagement -FN:119,_writeControlFrame -FN:131,_updateStreamLimit -FN:136,_changeStreamCount -FN:152,_allocateId -FN:183,_allocatePriority -FN:191,_insert -FN:199,_reprioritize -FN:213,_createIncomingStream -FN:225,createStream -FN:240,_send -FN:287,(anonymous_14) -FN:310,_receive -FN:342,_initializeSettingsManagement -FN:348,(anonymous_17) -FN:362,_receiveSettings -FN:369,set -FN:390,_initializeLifecycleManagement -FN:397,_generatePingId -FN:408,ping -FN:425,_receivePing -FN:450,close -FN:461,_receiveGoaway -FN:469,_initializeFlowControl -FN:472,(anonymous_27) -FN:481,noop -FN:482,noop -FN:492,_setInitialStreamWindowSize -FN:499,(anonymous_31) -FN:507,_setLocalFlowControl -FN:517,_setRemoteFlowControl -FN:520,(anonymous_34) -FNF:34 -FNH:32 -FNDA:0,noop -FNDA:45,Connection -FNDA:45,_initializeStreamManagement -FNDA:42,_writeControlFrame -FNDA:18,_updateStreamLimit -FNDA:130,_changeStreamCount -FNDA:45,_allocateId -FNDA:45,_allocatePriority -FNDA:75,_insert -FNDA:10,_reprioritize -FNDA:22,_createIncomingStream -FNDA:18,createStream -FNDA:448,_send -FNDA:0,(anonymous_14) -FNDA:125,_receive -FNDA:45,_initializeSettingsManagement -FNDA:36,(anonymous_17) -FNDA:36,_receiveSettings -FNDA:45,set -FNDA:45,_initializeLifecycleManagement -FNDA:2,_generatePingId -FNDA:2,ping -FNDA:5,_receivePing -FNDA:3,close -FNDA:2,_receiveGoaway -FNDA:45,_initializeFlowControl -FNDA:45,(anonymous_27) -FNDA:40,noop -FNDA:20,noop -FNDA:41,_setInitialStreamWindowSize -FNDA:54,(anonymous_31) -FNDA:24,_setLocalFlowControl -FNDA:20,_setRemoteFlowControl -FNDA:20,(anonymous_34) -DA:1,1 -DA:10,1 -DA:12,1 -DA:36,1 -DA:38,45 -DA:41,45 -DA:44,45 -DA:47,45 -DA:50,45 -DA:53,45 -DA:57,1 -DA:93,1 -DA:96,1 -DA:100,45 -DA:101,45 -DA:104,45 -DA:105,45 -DA:108,45 -DA:112,45 -DA:113,45 -DA:114,45 -DA:119,1 -DA:120,42 -DA:122,42 -DA:123,42 -DA:125,0 -DA:126,0 -DA:131,1 -DA:132,18 -DA:133,18 -DA:136,1 -DA:137,130 -DA:138,39 -DA:139,39 -DA:140,39 -DA:152,1 -DA:154,45 -DA:155,23 -DA:156,23 -DA:160,22 -DA:161,22 -DA:166,0 -DA:168,0 -DA:169,0 -DA:172,45 -DA:175,45 -DA:176,45 -DA:177,45 -DA:179,45 -DA:183,1 -DA:184,45 -DA:185,45 -DA:186,45 -DA:187,45 -DA:188,45 -DA:191,1 -DA:192,75 -DA:193,27 -DA:195,48 -DA:199,1 -DA:200,10 -DA:201,10 -DA:202,10 -DA:203,10 -DA:204,10 -DA:205,8 -DA:208,10 -DA:213,1 -DA:214,22 -DA:216,22 -DA:217,22 -DA:218,22 -DA:219,22 -DA:221,22 -DA:225,1 -DA:226,18 -DA:229,18 -DA:230,18 -DA:232,18 -DA:240,1 -DA:241,448 -DA:244,448 -DA:245,448 -DA:246,388 -DA:257,388 -DA:258,388 -DA:259,622 -DA:260,622 -DA:261,622 -DA:263,622 -DA:264,537 -DA:267,85 -DA:268,0 -DA:269,0 -DA:273,85 -DA:274,85 -DA:275,18 -DA:277,67 -DA:280,85 -DA:281,5 -DA:282,5 -DA:285,85 -DA:286,85 -DA:287,85 -DA:288,0 -DA:290,85 -DA:291,85 -DA:294,85 -DA:295,0 -DA:296,85 -DA:297,0 -DA:299,85 -DA:305,448 -DA:310,1 -DA:311,125 -DA:314,125 -DA:317,125 -DA:318,17 -DA:322,125 -DA:323,5 -DA:326,125 -DA:329,125 -DA:331,125 -DA:337,1 -DA:342,1 -DA:344,45 -DA:345,45 -DA:348,45 -DA:349,36 -DA:350,36 -DA:352,0 -DA:353,0 -DA:358,45 -DA:362,1 -DA:363,36 -DA:364,54 -DA:369,1 -DA:370,45 -DA:375,45 -DA:376,70 -DA:390,1 -DA:391,45 -DA:392,45 -DA:393,45 -DA:397,1 -DA:398,2 -DA:399,2 -DA:400,2 -DA:401,32 -DA:404,2 -DA:408,1 -DA:409,2 -DA:410,2 -DA:411,2 -DA:413,2 -DA:414,2 -DA:425,1 -DA:426,5 -DA:427,3 -DA:428,3 -DA:429,2 -DA:430,2 -DA:431,2 -DA:433,1 -DA:437,2 -DA:438,2 -DA:450,1 -DA:451,3 -DA:452,3 -DA:458,3 -DA:461,1 -DA:462,2 -DA:463,2 -DA:469,1 -DA:471,45 -DA:472,45 -DA:473,45 -DA:474,45 -DA:475,25 -DA:478,45 -DA:479,45 -DA:480,45 -DA:481,45 -DA:482,45 -DA:486,1 -DA:492,1 -DA:493,41 -DA:494,1 -DA:495,1 -DA:497,40 -DA:498,40 -DA:499,40 -DA:500,54 -DA:507,1 -DA:508,24 -DA:509,22 -DA:510,22 -DA:511,2 -DA:512,1 -DA:513,1 -DA:517,1 -DA:518,20 -DA:519,20 -DA:520,20 -DA:521,20 -DA:523,0 -DA:524,0 -DA:525,0 -LF:208 -LH:193 -BRDA:1,1,0,1 -BRDA:1,1,1,0 -BRDA:120,2,0,42 -BRDA:120,2,1,0 -BRDA:120,3,0,42 -BRDA:120,3,1,6 -BRDA:120,3,2,2 -BRDA:120,3,3,0 -BRDA:137,4,0,39 -BRDA:137,4,1,91 -BRDA:154,5,0,23 -BRDA:154,5,1,22 -BRDA:160,6,0,22 -BRDA:160,6,1,0 -BRDA:160,7,0,22 -BRDA:160,7,1,22 -BRDA:192,8,0,27 -BRDA:192,8,1,48 -BRDA:204,9,0,8 -BRDA:204,9,1,2 -BRDA:263,10,0,537 -BRDA:263,10,1,85 -BRDA:267,11,0,0 -BRDA:267,11,1,85 -BRDA:274,12,0,18 -BRDA:274,12,1,67 -BRDA:280,13,0,5 -BRDA:280,13,1,80 -BRDA:290,14,0,85 -BRDA:290,14,1,0 -BRDA:294,15,0,0 -BRDA:294,15,1,85 -BRDA:296,16,0,0 -BRDA:296,16,1,85 -BRDA:317,17,0,17 -BRDA:317,17,1,108 -BRDA:322,18,0,5 -BRDA:322,18,1,120 -BRDA:345,19,0,45 -BRDA:345,19,1,20 -BRDA:349,20,0,36 -BRDA:349,20,1,0 -BRDA:349,21,0,36 -BRDA:349,21,1,36 -BRDA:426,22,0,3 -BRDA:426,22,1,2 -BRDA:428,23,0,2 -BRDA:428,23,1,1 -BRDA:456,24,0,3 -BRDA:456,24,1,2 -BRDA:474,25,0,25 -BRDA:474,25,1,20 -BRDA:493,26,0,1 -BRDA:493,26,1,40 -BRDA:493,27,0,41 -BRDA:493,27,1,2 -BRDA:508,28,0,22 -BRDA:508,28,1,2 -BRDA:511,29,0,1 -BRDA:511,29,1,1 -BRDA:518,30,0,20 -BRDA:518,30,1,0 -BRDA:523,31,0,0 -BRDA:523,31,1,0 -BRF:64 -BRH:52 -end_of_record -TN: -SF:/data/upstream/node-http2/lib/flow.js -FN:1,noop -FN:72,Flow -FN:89,_receive -FN:97,_write -FN:105,(anonymous_5) -FN:126,_restoreWindow -FN:139,disableRemoteFlowControl -FN:163,_send -FN:170,_read -FN:204,_push -FN:254,push -FN:273,getLastQueuedFrame -FN:291,_increaseWindow -FN:315,_updateWindow -FN:323,setInitialWindow -FN:329,disableLocalFlowControl -FNF:16 -FNH:15 -FNDA:0,noop -FNDA:164,Flow -FNDA:1,_receive -FNDA:329,_write -FNDA:106,(anonymous_5) -FNDA:12,_restoreWindow -FNDA:45,disableRemoteFlowControl -FNDA:1,_send -FNDA:1392,_read -FNDA:285,_push -FNDA:193,push -FNDA:36,getLastQueuedFrame -FNDA:94,_increaseWindow -FNDA:5,_updateWindow -FNDA:59,setInitialWindow -FNDA:1,disableLocalFlowControl -DA:1,1 -DA:10,1 -DA:12,1 -DA:69,1 -DA:72,1 -DA:73,164 -DA:75,164 -DA:76,164 -DA:77,164 -DA:79,164 -DA:80,164 -DA:81,164 -DA:83,1 -DA:89,1 -DA:90,1 -DA:97,1 -DA:98,329 -DA:100,329 -DA:101,63 -DA:104,329 -DA:105,106 -DA:106,106 -DA:107,106 -DA:108,12 -DA:110,106 -DA:115,223 -DA:118,329 -DA:120,5 -DA:126,1 -DA:127,12 -DA:128,12 -DA:129,6 -DA:134,6 -DA:139,1 -DA:140,45 -DA:141,45 -DA:163,1 -DA:164,1 -DA:170,1 -DA:172,1392 -DA:173,1291 -DA:178,101 -DA:179,7 -DA:180,7 -DA:181,7 -DA:182,7 -DA:183,8 -DA:186,7 -DA:191,1392 -DA:202,1 -DA:204,1 -DA:205,285 -DA:206,378 -DA:207,378 -DA:209,278 -DA:212,100 -DA:213,7 -DA:217,93 -DA:218,93 -DA:225,93 -DA:227,93 -DA:228,93 -DA:231,378 -DA:232,378 -DA:233,371 -DA:234,371 -DA:235,144 -DA:237,144 -DA:238,144 -DA:240,371 -DA:243,378 -DA:246,285 -DA:247,7 -DA:250,285 -DA:254,1 -DA:255,193 -DA:256,6 -DA:258,187 -DA:259,187 -DA:260,187 -DA:263,193 -DA:264,192 -DA:266,1 -DA:267,1 -DA:273,1 -DA:274,36 -DA:275,36 -DA:289,1 -DA:291,1 -DA:292,94 -DA:293,1 -DA:294,1 -DA:296,93 -DA:297,93 -DA:298,93 -DA:299,1 -DA:300,1 -DA:302,92 -DA:315,1 -DA:316,5 -DA:323,1 -DA:324,59 -DA:325,59 -DA:329,1 -DA:330,1 -LF:105 -LH:105 -BRDA:1,1,0,1 -BRDA:1,1,1,0 -BRDA:100,2,0,63 -BRDA:100,2,1,266 -BRDA:104,3,0,106 -BRDA:104,3,1,223 -BRDA:104,4,0,329 -BRDA:104,4,1,192 -BRDA:104,4,2,135 -BRDA:107,5,0,12 -BRDA:107,5,1,94 -BRDA:118,6,0,5 -BRDA:118,6,1,324 -BRDA:118,7,0,329 -BRDA:118,7,1,5 -BRDA:118,7,2,5 -BRDA:128,8,0,6 -BRDA:128,8,1,6 -BRDA:128,9,0,12 -BRDA:128,9,1,6 -BRDA:128,9,2,6 -BRDA:172,10,0,1291 -BRDA:172,10,1,101 -BRDA:178,11,0,7 -BRDA:178,11,1,94 -BRDA:182,12,0,15 -BRDA:182,12,1,14 -BRDA:186,13,0,7 -BRDA:186,13,1,7 -BRDA:186,13,2,1 -BRDA:186,13,3,1 -BRDA:244,14,0,378 -BRDA:244,14,1,100 -BRDA:207,15,0,278 -BRDA:207,15,1,100 -BRDA:207,16,0,378 -BRDA:207,16,1,372 -BRDA:207,16,2,202 -BRDA:207,16,3,154 -BRDA:212,17,0,7 -BRDA:212,17,1,93 -BRDA:232,18,0,371 -BRDA:232,18,1,7 -BRDA:234,19,0,144 -BRDA:234,19,1,227 -BRDA:234,20,0,371 -BRDA:234,20,1,365 -BRDA:234,20,2,195 -BRDA:246,21,0,7 -BRDA:246,21,1,278 -BRDA:255,22,0,6 -BRDA:255,22,1,187 -BRDA:258,23,0,187 -BRDA:258,23,1,142 -BRDA:263,24,0,192 -BRDA:263,24,1,1 -BRDA:275,25,0,36 -BRDA:275,25,1,36 -BRDA:292,26,0,1 -BRDA:292,26,1,93 -BRDA:292,27,0,94 -BRDA:292,27,1,2 -BRDA:298,28,0,1 -BRDA:298,28,1,92 -BRDA:298,29,0,93 -BRDA:298,29,1,44 -BRDA:316,30,0,0 -BRDA:316,30,1,5 -BRF:68 -BRH:66 -end_of_record -TN: -SF:/data/upstream/node-http2/lib/stream.js -FN:1,noop -FN:47,Stream -FN:73,_initializeManagement -FN:77,(anonymous_4) -FN:80,(anonymous_5) -FN:86,(anonymous_6) -FN:91,promise -FN:102,headers -FN:109,priority -FN:133,reset -FN:178,_initializeDataFlow -FN:191,_receive -FN:223,_read -FN:232,_write -FN:250,_send -FN:262,_finishing -FN:309,_initializeState -FN:320,transition -FN:329,activeState -FN:336,transition -FN:564,(anonymous_21) -FNF:21 -FNH:18 -FNDA:0,noop -FNDA:105,Stream -FNDA:105,_initializeManagement -FNDA:6,(anonymous_4) -FNDA:43,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:6,promise -FNDA:44,headers -FNDA:0,priority -FNDA:26,reset -FNDA:105,_initializeDataFlow -FNDA:97,_receive -FNDA:38,_read -FNDA:19,_write -FNDA:809,_send -FNDA:36,_finishing -FNDA:105,_initializeState -FNDA:161,transition -FNDA:234,activeState -FNDA:285,transition -FNDA:6,(anonymous_21) -DA:1,1 -DA:12,1 -DA:14,1 -DA:47,1 -DA:48,105 -DA:51,105 -DA:54,105 -DA:57,105 -DA:60,105 -DA:63,1 -DA:69,1 -DA:70,1 -DA:73,1 -DA:74,105 -DA:75,105 -DA:76,105 -DA:77,105 -DA:78,6 -DA:80,105 -DA:81,43 -DA:82,0 -DA:84,43 -DA:86,105 -DA:87,0 -DA:91,1 -DA:92,6 -DA:93,6 -DA:94,6 -DA:99,6 -DA:102,1 -DA:103,44 -DA:109,1 -DA:110,0 -DA:111,0 -DA:112,0 -DA:114,0 -DA:115,0 -DA:116,0 -DA:118,0 -DA:125,0 -DA:126,0 -DA:127,0 -DA:133,1 -DA:134,26 -DA:135,19 -DA:136,19 -DA:176,1 -DA:178,1 -DA:179,105 -DA:180,105 -DA:181,105 -DA:182,105 -DA:183,105 -DA:184,105 -DA:185,105 -DA:187,105 -DA:191,1 -DA:192,97 -DA:194,97 -DA:198,97 -DA:199,48 -DA:200,48 -DA:201,0 -DA:202,0 -DA:208,49 -DA:212,97 -DA:213,35 -DA:216,97 -DA:217,97 -DA:223,1 -DA:224,38 -DA:225,0 -DA:226,0 -DA:227,0 -DA:232,1 -DA:234,19 -DA:240,19 -DA:241,19 -DA:243,0 -DA:250,1 -DA:251,809 -DA:252,0 -DA:253,0 -DA:254,0 -DA:262,1 -DA:263,36 -DA:268,36 -DA:269,36 -DA:270,7 -DA:271,7 -DA:272,7 -DA:273,7 -DA:275,29 -DA:309,1 -DA:310,105 -DA:311,105 -DA:312,105 -DA:313,105 -DA:314,105 -DA:315,105 -DA:320,1 -DA:321,161 -DA:322,161 -DA:323,161 -DA:324,161 -DA:329,1 -DA:330,234 -DA:336,1 -DA:337,285 -DA:338,285 -DA:340,285 -DA:341,285 -DA:342,285 -DA:343,115 -DA:344,95 -DA:345,8 -DA:346,33 -DA:347,24 -DA:348,10 -DA:351,285 -DA:353,285 -DA:360,57 -DA:361,42 -DA:362,42 -DA:363,3 -DA:365,42 -DA:366,15 -DA:367,6 -DA:369,9 -DA:371,57 -DA:383,18 -DA:384,4 -DA:385,14 -DA:386,6 -DA:387,8 -DA:390,8 -DA:392,18 -DA:402,18 -DA:403,6 -DA:404,12 -DA:405,4 -DA:406,8 -DA:409,8 -DA:411,18 -DA:423,65 -DA:424,29 -DA:425,36 -DA:426,2 -DA:430,65 -DA:439,62 -DA:440,24 -DA:441,38 -DA:444,3 -DA:446,62 -DA:459,40 -DA:460,22 -DA:461,18 -DA:464,3 -DA:466,40 -DA:489,25 -DA:494,14 -DA:496,25 -DA:502,285 -DA:503,66 -DA:504,66 -DA:513,285 -DA:514,13 -DA:516,13 -DA:517,13 -DA:521,285 -DA:522,117 -DA:523,117 -DA:524,60 -DA:526,57 -DA:528,168 -DA:529,89 -DA:533,285 -DA:534,45 -DA:543,45 -DA:544,20 -DA:545,20 -DA:551,25 -DA:552,25 -DA:553,25 -DA:561,1 -DA:563,1 -DA:564,1 -DA:565,6 -DA:566,2 -DA:567,2 -DA:569,6 -LF:191 -LH:170 -BRDA:1,1,0,1 -BRDA:1,1,1,0 -BRDA:81,2,0,0 -BRDA:81,2,1,43 -BRDA:110,3,0,0 -BRDA:110,3,1,0 -BRDA:110,4,0,0 -BRDA:110,4,1,0 -BRDA:110,4,2,0 -BRDA:111,5,0,0 -BRDA:111,5,1,0 -BRDA:115,6,0,0 -BRDA:115,6,1,0 -BRDA:115,7,0,0 -BRDA:115,7,1,0 -BRDA:115,7,2,0 -BRDA:134,8,0,19 -BRDA:134,8,1,7 -BRDA:198,9,0,48 -BRDA:198,9,1,49 -BRDA:200,10,0,0 -BRDA:200,10,1,48 -BRDA:212,11,0,35 -BRDA:212,11,1,62 -BRDA:216,12,0,97 -BRDA:216,12,1,0 -BRDA:224,13,0,0 -BRDA:224,13,1,38 -BRDA:240,14,0,19 -BRDA:240,14,1,0 -BRDA:251,15,0,0 -BRDA:251,15,1,809 -BRDA:269,16,0,7 -BRDA:269,16,1,29 -BRDA:269,17,0,36 -BRDA:269,17,1,7 -BRDA:269,17,2,4 -BRDA:271,18,0,7 -BRDA:271,18,1,0 -BRDA:330,19,0,234 -BRDA:330,19,1,139 -BRDA:330,19,2,123 -BRDA:342,20,0,115 -BRDA:342,20,1,95 -BRDA:342,20,2,8 -BRDA:342,20,3,33 -BRDA:342,20,4,24 -BRDA:342,20,5,10 -BRDA:353,21,0,57 -BRDA:353,21,1,18 -BRDA:353,21,2,18 -BRDA:353,21,3,65 -BRDA:353,21,4,62 -BRDA:353,21,5,40 -BRDA:353,21,6,25 -BRDA:360,22,0,42 -BRDA:360,22,1,15 -BRDA:362,23,0,3 -BRDA:362,23,1,39 -BRDA:363,24,0,0 -BRDA:363,24,1,3 -BRDA:366,25,0,6 -BRDA:366,25,1,9 -BRDA:366,26,0,15 -BRDA:366,26,1,10 -BRDA:383,27,0,4 -BRDA:383,27,1,14 -BRDA:383,28,0,18 -BRDA:383,28,1,13 -BRDA:385,29,0,6 -BRDA:385,29,1,8 -BRDA:387,30,0,0 -BRDA:387,30,1,8 -BRDA:387,31,0,8 -BRDA:387,31,1,4 -BRDA:402,32,0,6 -BRDA:402,32,1,12 -BRDA:404,33,0,4 -BRDA:404,33,1,8 -BRDA:404,34,0,12 -BRDA:404,34,1,8 -BRDA:406,35,0,0 -BRDA:406,35,1,8 -BRDA:406,36,0,8 -BRDA:406,36,1,4 -BRDA:423,37,0,29 -BRDA:423,37,1,36 -BRDA:424,38,0,19 -BRDA:424,38,1,10 -BRDA:425,39,0,2 -BRDA:425,39,1,34 -BRDA:439,40,0,24 -BRDA:439,40,1,38 -BRDA:439,41,0,62 -BRDA:439,41,1,60 -BRDA:439,41,2,57 -BRDA:441,42,0,35 -BRDA:441,42,1,3 -BRDA:441,43,0,38 -BRDA:441,43,1,3 -BRDA:441,43,2,3 -BRDA:441,43,3,3 -BRDA:459,44,0,22 -BRDA:459,44,1,18 -BRDA:459,45,0,40 -BRDA:459,45,1,35 -BRDA:459,45,2,32 -BRDA:461,46,0,15 -BRDA:461,46,1,3 -BRDA:461,47,0,18 -BRDA:461,47,1,3 -BRDA:461,47,2,3 -BRDA:461,47,3,3 -BRDA:489,48,0,11 -BRDA:489,48,1,14 -BRDA:489,49,0,25 -BRDA:489,49,1,7 -BRDA:489,49,2,23 -BRDA:489,49,3,18 -BRDA:489,49,4,12 -BRDA:489,49,5,6 -BRDA:489,49,6,5 -BRDA:489,49,7,4 -BRDA:502,50,0,66 -BRDA:502,50,1,219 -BRDA:502,51,0,285 -BRDA:502,51,1,91 -BRDA:513,52,0,13 -BRDA:513,52,1,272 -BRDA:513,53,0,285 -BRDA:513,53,1,24 -BRDA:516,54,0,6 -BRDA:516,54,1,7 -BRDA:521,55,0,117 -BRDA:521,55,1,168 -BRDA:523,56,0,60 -BRDA:523,56,1,57 -BRDA:528,57,0,89 -BRDA:528,57,1,79 -BRDA:533,58,0,45 -BRDA:533,58,1,240 -BRDA:543,59,0,20 -BRDA:543,59,1,25 -BRDA:565,60,0,2 -BRDA:565,60,1,4 -BRF:145 -BRH:122 -end_of_record -TN: -SF:/data/upstream/node-http2/lib/endpoint.js -FN:1,noop -FN:16,Endpoint -FN:50,_writePrelude -FN:56,_readPrelude -FN:61,_temporalWrite -FN:121,_initializeDataFlow -FN:145,_read -FN:152,_write -FN:159,_initializeManagement -FN:163,createStream -FN:170,_initializeErrorHandling -FN:178,_error -FN:183,close -FN:193,(anonymous_14) -FNF:14 -FNH:13 -FNDA:0,noop -FNDA:24,Endpoint -FNDA:12,_writePrelude -FNDA:12,_readPrelude -FNDA:11,_temporalWrite -FNDA:24,_initializeDataFlow -FNDA:293,_read -FNDA:51,_write -FNDA:24,_initializeManagement -FNDA:11,createStream -FNDA:24,_initializeErrorHandling -FNDA:1,_error -FNDA:2,close -FNDA:6,(anonymous_14) -DA:1,1 -DA:3,1 -DA:4,1 -DA:5,1 -DA:6,1 -DA:7,1 -DA:8,1 -DA:10,1 -DA:16,1 -DA:17,24 -DA:20,24 -DA:24,24 -DA:25,24 -DA:26,12 -DA:28,12 -DA:34,24 -DA:37,24 -DA:40,24 -DA:42,1 -DA:47,1 -DA:50,1 -DA:51,12 -DA:52,12 -DA:56,1 -DA:58,12 -DA:61,12 -DA:64,11 -DA:65,11 -DA:66,241 -DA:67,1 -DA:69,1 -DA:70,1 -DA:72,240 -DA:77,10 -DA:78,10 -DA:79,10 -DA:80,10 -DA:81,10 -DA:119,1 -DA:121,1 -DA:122,24 -DA:123,24 -DA:124,12 -DA:125,12 -DA:126,12 -DA:128,12 -DA:129,12 -DA:130,12 -DA:133,24 -DA:134,24 -DA:135,24 -DA:136,24 -DA:137,24 -DA:139,24 -DA:140,24 -DA:142,24 -DA:145,1 -DA:146,293 -DA:147,293 -DA:148,178 -DA:152,1 -DA:153,51 -DA:159,1 -DA:160,24 -DA:163,1 -DA:164,11 -DA:170,1 -DA:171,24 -DA:172,24 -DA:173,24 -DA:174,24 -DA:175,24 -DA:178,1 -DA:179,1 -DA:180,1 -DA:183,1 -DA:184,2 -DA:190,1 -DA:192,1 -DA:193,1 -DA:194,6 -DA:195,2 -DA:196,2 -DA:198,6 -LF:84 -LH:84 -BRDA:1,1,0,1 -BRDA:1,1,1,0 -BRDA:24,2,0,24 -BRDA:24,2,1,12 -BRDA:25,3,0,12 -BRDA:25,3,1,12 -BRDA:65,4,0,251 -BRDA:65,4,1,241 -BRDA:66,5,0,1 -BRDA:66,5,1,240 -BRDA:77,6,0,10 -BRDA:77,6,1,0 -BRDA:123,7,0,12 -BRDA:123,7,1,12 -BRDA:147,8,0,471 -BRDA:147,8,1,471 -BRDA:194,9,0,2 -BRDA:194,9,1,4 -BRF:18 -BRH:16 -end_of_record -TN: -SF:/data/upstream/node-http2/lib/framer.js -FN:5,noop -FN:25,Serializer -FN:35,_transform -FN:67,Deserializer -FN:80,(anonymous_5) -FN:91,_transform -FN:201,writeCommonHeader -FN:230,readCommonHeader -FN:275,writeData -FN:279,readData -FN:318,writeHeadersPriority -FN:328,readHeadersPriority -FN:358,writePriority -FN:364,readPriority -FN:390,writeRstStream -FN:398,readRstStream -FN:434,writeSettings -FN:436,(anonymous_18) -FN:454,readSettings -FN:519,writePushPromise -FN:527,readPushPromise -FN:551,writePing -FN:556,readPing -FN:591,writeGoaway -FN:604,readGoaway -FN:627,writeWindowUpdate -FN:634,readWindowUpdate -FN:660,writeContinuation -FN:664,readContinuation -FN:694,(anonymous_30) -FN:707,(anonymous_31) -FN:727,(anonymous_32) -FN:735,(anonymous_33) -FNF:33 -FNH:30 -FNDA:0,noop -FNDA:25,Serializer -FNDA:99,_transform -FNDA:25,Deserializer -FNDA:209,(anonymous_5) -FNDA:68,_transform -FNDA:110,writeCommonHeader -FNDA:103,readCommonHeader -FNDA:37,writeData -FNDA:36,readData -FNDA:29,writeHeadersPriority -FNDA:28,readHeadersPriority -FNDA:2,writePriority -FNDA:2,readPriority -FNDA:2,writeRstStream -FNDA:2,readRstStream -FNDA:26,writeSettings -FNDA:78,(anonymous_18) -FNDA:22,readSettings -FNDA:4,writePushPromise -FNDA:4,readPushPromise -FNDA:2,writePing -FNDA:2,readPing -FNDA:4,writeGoaway -FNDA:3,readGoaway -FNDA:2,writeWindowUpdate -FNDA:2,readWindowUpdate -FNDA:2,writeContinuation -FNDA:2,readContinuation -FNDA:6,(anonymous_30) -FNDA:10,(anonymous_31) -FNDA:0,(anonymous_32) -FNDA:0,(anonymous_33) -DA:5,1 -DA:7,1 -DA:9,1 -DA:10,1 -DA:12,1 -DA:25,1 -DA:26,25 -DA:27,25 -DA:28,25 -DA:30,1 -DA:35,1 -DA:36,99 -DA:38,99 -DA:40,99 -DA:41,99 -DA:42,99 -DA:44,99 -DA:46,99 -DA:47,202 -DA:48,0 -DA:50,202 -DA:53,99 -DA:67,1 -DA:68,25 -DA:69,25 -DA:70,25 -DA:71,25 -DA:73,1 -DA:80,1 -DA:81,209 -DA:82,209 -DA:83,209 -DA:84,209 -DA:85,117 -DA:91,1 -DA:92,68 -DA:94,68 -DA:95,0 -DA:98,68 -DA:101,171 -DA:102,171 -DA:103,171 -DA:104,171 -DA:111,171 -DA:112,92 -DA:113,92 -DA:114,92 -DA:116,0 -DA:125,171 -DA:126,92 -DA:127,92 -DA:128,92 -DA:129,0 -DA:130,0 -DA:132,92 -DA:133,92 -DA:136,0 -DA:138,92 -DA:142,68 -DA:190,1 -DA:191,1 -DA:193,1 -DA:195,1 -DA:197,1 -DA:199,1 -DA:201,1 -DA:202,110 -DA:204,110 -DA:205,110 -DA:206,114 -DA:208,110 -DA:209,110 -DA:211,110 -DA:212,110 -DA:214,110 -DA:215,110 -DA:216,105 -DA:217,105 -DA:218,105 -DA:219,54 -DA:222,110 -DA:224,110 -DA:225,110 -DA:227,110 -DA:230,1 -DA:231,103 -DA:233,103 -DA:235,103 -DA:236,103 -DA:237,103 -DA:238,103 -DA:239,196 -DA:242,103 -DA:269,1 -DA:271,1 -DA:273,1 -DA:275,1 -DA:276,37 -DA:279,1 -DA:280,36 -DA:302,1 -DA:304,1 -DA:306,1 -DA:318,1 -DA:319,29 -DA:320,2 -DA:321,2 -DA:322,2 -DA:323,2 -DA:325,29 -DA:328,1 -DA:329,28 -DA:330,2 -DA:331,2 -DA:333,26 -DA:344,1 -DA:346,1 -DA:348,1 -DA:358,1 -DA:359,2 -DA:360,2 -DA:361,2 -DA:364,1 -DA:365,2 -DA:375,1 -DA:377,1 -DA:379,1 -DA:390,1 -DA:391,2 -DA:392,2 -DA:393,2 -DA:394,2 -DA:395,2 -DA:398,1 -DA:399,2 -DA:410,1 -DA:412,1 -DA:414,1 -DA:434,1 -DA:435,26 -DA:436,26 -DA:437,78 -DA:438,34 -DA:439,34 -DA:440,34 -DA:443,26 -DA:445,26 -DA:446,26 -DA:447,34 -DA:448,34 -DA:451,26 -DA:454,1 -DA:455,22 -DA:457,22 -DA:458,0 -DA:460,22 -DA:461,28 -DA:462,28 -DA:463,28 -DA:464,28 -DA:465,28 -DA:473,1 -DA:477,1 -DA:481,1 -DA:487,1 -DA:501,1 -DA:503,1 -DA:505,1 -DA:519,1 -DA:520,4 -DA:521,4 -DA:522,4 -DA:523,4 -DA:524,4 -DA:527,1 -DA:528,4 -DA:529,4 -DA:543,1 -DA:545,1 -DA:547,1 -DA:551,1 -DA:552,2 -DA:553,2 -DA:556,1 -DA:557,2 -DA:558,0 -DA:560,2 -DA:570,1 -DA:572,1 -DA:574,1 -DA:591,1 -DA:592,4 -DA:594,4 -DA:595,4 -DA:597,4 -DA:598,4 -DA:599,4 -DA:601,4 -DA:604,1 -DA:605,3 -DA:606,3 -DA:616,1 -DA:618,1 -DA:620,1 -DA:627,1 -DA:628,2 -DA:629,2 -DA:630,2 -DA:631,2 -DA:634,1 -DA:635,2 -DA:654,1 -DA:656,1 -DA:658,1 -DA:660,1 -DA:661,2 -DA:664,1 -DA:665,2 -DA:671,1 -DA:689,1 -DA:693,1 -DA:694,1 -DA:695,6 -DA:696,0 -DA:699,6 -DA:700,4 -DA:703,2 -DA:704,2 -DA:706,2 -DA:707,2 -DA:708,10 -DA:711,2 -DA:712,1 -DA:713,0 -DA:715,1 -DA:718,1 -DA:719,0 -DA:723,2 -DA:724,0 -DA:727,2 -DA:728,0 -DA:731,2 -DA:735,1 -DA:736,0 -LF:244 -LH:230 -BRDA:5,1,0,1 -BRDA:5,1,1,0 -BRDA:27,2,0,25 -BRDA:27,2,1,1 -BRDA:47,3,0,0 -BRDA:47,3,1,202 -BRDA:69,4,0,25 -BRDA:69,4,1,1 -BRDA:84,5,0,117 -BRDA:84,5,1,92 -BRDA:94,6,0,0 -BRDA:94,6,1,68 -BRDA:111,7,0,92 -BRDA:111,7,1,79 -BRDA:111,8,0,171 -BRDA:111,8,1,157 -BRDA:113,9,0,92 -BRDA:113,9,1,0 -BRDA:125,10,0,92 -BRDA:125,10,1,79 -BRDA:125,11,0,171 -BRDA:125,11,1,92 -BRDA:126,12,0,92 -BRDA:126,12,1,0 -BRDA:128,13,0,0 -BRDA:128,13,1,92 -BRDA:218,14,0,54 -BRDA:218,14,1,51 -BRDA:225,15,0,110 -BRDA:225,15,1,26 -BRDA:319,16,0,2 -BRDA:319,16,1,27 -BRDA:321,17,0,2 -BRDA:321,17,1,2 -BRDA:329,18,0,2 -BRDA:329,18,1,26 -BRDA:393,19,0,2 -BRDA:393,19,1,2 -BRDA:437,20,0,34 -BRDA:437,20,1,44 -BRDA:440,21,0,22 -BRDA:440,21,1,12 -BRDA:457,22,0,0 -BRDA:457,22,1,22 -BRDA:463,23,0,28 -BRDA:463,23,1,0 -BRDA:465,24,0,20 -BRDA:465,24,1,8 -BRDA:521,25,0,4 -BRDA:521,25,1,4 -BRDA:552,26,0,2 -BRDA:552,26,1,2 -BRDA:557,27,0,0 -BRDA:557,27,1,2 -BRDA:594,28,0,4 -BRDA:594,28,1,4 -BRDA:598,29,0,4 -BRDA:598,29,1,4 -BRDA:629,30,0,2 -BRDA:629,30,1,2 -BRDA:695,31,0,0 -BRDA:695,31,1,6 -BRDA:699,32,0,4 -BRDA:699,32,1,2 -BRDA:711,33,0,1 -BRDA:711,33,1,1 -BRDA:712,34,0,0 -BRDA:712,34,1,1 -BRDA:718,35,0,0 -BRDA:718,35,1,1 -BRDA:723,36,0,0 -BRDA:723,36,1,2 -BRDA:727,37,0,2 -BRDA:727,37,1,2 -BRF:74 -BRH:61 -end_of_record -TN: -SF:/data/upstream/node-http2/lib/http.js -FN:161,noop -FN:170,(anonymous_2) -FN:176,(anonymous_3) -FN:183,IncomingMessage -FN:210,_onHeaders -FN:235,_onTrailers -FN:244,OutgoingMessage -FN:256,_write -FN:264,_finish -FN:279,setHeader -FN:291,removeHeader -FN:299,getHeader -FN:303,addTrailers -FN:321,Server -FN:338,(anonymous_15) -FN:366,_start -FN:377,_onStream -FN:389,_fallback -FN:405,listen -FN:411,close -FN:416,setTimeout -FN:423,getTimeout -FN:430,setTimeout -FN:441,on -FN:450,addContext -FN:456,createServer -FN:474,IncomingRequest -FN:483,_onHeaders -FN:525,OutgoingResponse -FN:538,writeHead -FN:562,_implicitHeaders -FN:568,write -FN:573,end -FN:578,_onRequestHeaders -FN:582,push -FN:608,on -FN:624,request -FN:627,get -FN:634,Agent -FN:656,request -FN:710,(anonymous_41) -FN:719,negotiated -FN:746,(anonymous_43) -FN:759,get -FN:765,unbundleSocket -FN:777,getMaxSockets -FN:780,setMaxSockets -FN:790,OutgoingRequest -FN:799,_start -FN:832,_fallback -FN:838,setPriority -FN:848,on -FN:857,setNoDelay -FN:865,setSocketKeepAlive -FN:873,setTimeout -FN:882,abort -FN:893,_onPromise -FN:908,IncomingResponse -FN:917,_onHeaders -FN:943,IncomingPromise -FN:962,cancel -FN:966,setPriority -FNF:62 -FNH:57 -FNDA:2,noop -FNDA:3,(anonymous_2) -FNDA:6,(anonymous_3) -FNDA:25,IncomingMessage -FNDA:24,_onHeaders -FNDA:2,_onTrailers -FNDA:27,OutgoingMessage -FNDA:13,_write -FNDA:31,_finish -FNDA:4,setHeader -FNDA:1,removeHeader -FNDA:3,getHeader -FNDA:2,addTrailers -FNDA:13,Server -FNDA:9,(anonymous_15) -FNDA:10,_start -FNDA:10,_onStream -FNDA:0,_fallback -FNDA:9,listen -FNDA:4,close -FNDA:1,setTimeout -FNDA:1,getTimeout -FNDA:1,setTimeout -FNDA:9,on -FNDA:0,addContext -FNDA:10,createServer -FNDA:12,IncomingRequest -FNDA:12,_onHeaders -FNDA:12,OutgoingResponse -FNDA:12,writeHead -FNDA:23,_implicitHeaders -FNDA:11,write -FNDA:12,end -FNDA:10,_onRequestHeaders -FNDA:2,push -FNDA:12,on -FNDA:4,request -FNDA:7,get -FNDA:4,Agent -FNDA:12,request -FNDA:9,(anonymous_41) -FNDA:9,negotiated -FNDA:9,(anonymous_43) -FNDA:7,get -FNDA:9,unbundleSocket -FNDA:1,getMaxSockets -FNDA:1,setMaxSockets -FNDA:15,OutgoingRequest -FNDA:11,_start -FNDA:4,_fallback -FNDA:0,setPriority -FNDA:40,on -FNDA:3,setNoDelay -FNDA:3,setSocketKeepAlive -FNDA:3,setTimeout -FNDA:3,abort -FNDA:2,_onPromise -FNDA:13,IncomingResponse -FNDA:12,_onHeaders -FNDA:2,IncomingPromise -FNDA:0,cancel -FNDA:0,setPriority -DA:128,1 -DA:129,1 -DA:130,1 -DA:131,1 -DA:132,1 -DA:133,1 -DA:134,1 -DA:135,1 -DA:136,1 -DA:137,1 -DA:139,1 -DA:140,1 -DA:141,1 -DA:143,1 -DA:155,1 -DA:161,1 -DA:162,1 -DA:170,3 -DA:174,1 -DA:175,1 -DA:176,1 -DA:177,6 -DA:183,1 -DA:185,25 -DA:186,25 -DA:187,25 -DA:189,25 -DA:193,25 -DA:194,25 -DA:195,25 -DA:198,25 -DA:199,25 -DA:202,25 -DA:204,1 -DA:210,1 -DA:215,24 -DA:216,168 -DA:217,168 -DA:218,0 -DA:219,0 -DA:220,0 -DA:225,24 -DA:226,73 -DA:227,13 -DA:232,24 -DA:235,1 -DA:236,2 -DA:239,1 -DA:244,1 -DA:246,27 -DA:248,27 -DA:249,27 -DA:250,27 -DA:252,27 -DA:254,1 -DA:256,1 -DA:257,13 -DA:258,12 -DA:260,1 -DA:264,1 -DA:265,31 -DA:266,23 -DA:267,2 -DA:268,0 -DA:270,2 -DA:273,23 -DA:275,8 -DA:279,1 -DA:280,4 -DA:281,0 -DA:283,4 -DA:284,4 -DA:285,0 -DA:287,4 -DA:291,1 -DA:292,1 -DA:293,0 -DA:295,1 -DA:299,1 -DA:300,3 -DA:303,1 -DA:304,2 -DA:307,1 -DA:312,1 -DA:313,1 -DA:314,1 -DA:315,1 -DA:316,1 -DA:321,1 -DA:322,13 -DA:324,13 -DA:325,13 -DA:327,13 -DA:328,13 -DA:331,13 -DA:332,10 -DA:333,10 -DA:334,10 -DA:335,10 -DA:336,10 -DA:337,10 -DA:338,10 -DA:339,9 -DA:340,9 -DA:342,0 -DA:345,10 -DA:349,3 -DA:350,1 -DA:351,1 -DA:352,1 -DA:357,2 -DA:358,2 -DA:361,11 -DA:363,1 -DA:366,1 -DA:367,10 -DA:369,10 -DA:374,10 -DA:376,10 -DA:377,10 -DA:378,10 -DA:379,10 -DA:381,10 -DA:384,10 -DA:386,10 -DA:389,1 -DA:390,0 -DA:395,0 -DA:396,0 -DA:399,0 -DA:405,1 -DA:406,9 -DA:408,9 -DA:411,1 -DA:412,4 -DA:413,4 -DA:416,1 -DA:417,1 -DA:418,1 -DA:422,1 -DA:424,1 -DA:425,1 -DA:427,0 -DA:431,1 -DA:432,1 -DA:441,1 -DA:442,9 -DA:443,0 -DA:445,9 -DA:450,1 -DA:451,0 -DA:452,0 -DA:456,1 -DA:457,10 -DA:458,1 -DA:459,1 -DA:462,10 -DA:464,9 -DA:465,9 -DA:468,9 -DA:474,1 -DA:475,12 -DA:477,1 -DA:483,1 -DA:494,12 -DA:500,12 -DA:501,48 -DA:502,48 -DA:503,0 -DA:504,0 -DA:505,0 -DA:507,48 -DA:511,12 -DA:514,12 -DA:517,12 -DA:519,12 -DA:525,1 -DA:526,12 -DA:528,12 -DA:530,12 -DA:531,12 -DA:532,12 -DA:534,12 -DA:536,1 -DA:538,1 -DA:539,12 -DA:540,1 -DA:542,11 -DA:545,12 -DA:546,1 -DA:548,12 -DA:550,12 -DA:551,11 -DA:554,12 -DA:556,12 -DA:558,12 -DA:559,12 -DA:562,1 -DA:563,23 -DA:564,11 -DA:568,1 -DA:569,11 -DA:570,11 -DA:573,1 -DA:574,12 -DA:575,12 -DA:578,1 -DA:579,10 -DA:582,1 -DA:583,2 -DA:584,1 -DA:587,2 -DA:588,0 -DA:591,2 -DA:598,2 -DA:601,2 -DA:603,2 -DA:608,1 -DA:609,12 -DA:610,0 -DA:612,12 -DA:619,1 -DA:620,1 -DA:621,1 -DA:622,1 -DA:623,1 -DA:624,1 -DA:625,4 -DA:627,1 -DA:628,7 -DA:634,1 -DA:635,4 -DA:637,4 -DA:639,4 -DA:640,4 -DA:641,4 -DA:647,4 -DA:651,4 -DA:652,4 -DA:654,1 -DA:656,1 -DA:657,12 -DA:658,8 -DA:661,12 -DA:662,12 -DA:663,12 -DA:664,12 -DA:665,12 -DA:667,12 -DA:668,1 -DA:669,1 -DA:672,11 -DA:674,11 -DA:675,7 -DA:678,11 -DA:685,11 -DA:686,1 -DA:687,1 -DA:691,10 -DA:692,1 -DA:693,1 -DA:698,1 -DA:699,1 -DA:704,9 -DA:705,9 -DA:706,9 -DA:707,9 -DA:708,9 -DA:710,9 -DA:711,9 -DA:712,0 -DA:714,9 -DA:718,9 -DA:719,1 -DA:720,9 -DA:721,9 -DA:722,9 -DA:723,9 -DA:724,9 -DA:725,9 -DA:726,9 -DA:728,9 -DA:729,1 -DA:730,1 -DA:732,0 -DA:735,8 -DA:736,8 -DA:738,8 -DA:739,8 -DA:741,0 -DA:746,9 -DA:747,9 -DA:748,9 -DA:749,9 -DA:751,0 -DA:756,11 -DA:759,1 -DA:760,7 -DA:761,7 -DA:762,7 -DA:765,1 -DA:766,9 -DA:767,9 -DA:768,9 -DA:769,9 -DA:770,9 -DA:771,9 -DA:772,9 -DA:773,9 -DA:776,1 -DA:778,1 -DA:781,1 -DA:785,1 -DA:790,1 -DA:791,15 -DA:793,15 -DA:795,15 -DA:797,1 -DA:799,1 -DA:800,11 -DA:802,11 -DA:804,11 -DA:805,1 -DA:807,11 -DA:808,11 -DA:810,11 -DA:811,0 -DA:814,11 -DA:815,11 -DA:816,11 -DA:817,11 -DA:819,11 -DA:821,11 -DA:822,11 -DA:824,11 -DA:826,11 -DA:827,11 -DA:829,11 -DA:832,1 -DA:833,4 -DA:834,4 -DA:835,4 -DA:838,1 -DA:839,0 -DA:840,0 -DA:842,0 -DA:848,1 -DA:849,40 -DA:850,0 -DA:852,40 -DA:857,1 -DA:858,3 -DA:859,1 -DA:860,2 -DA:861,1 -DA:865,1 -DA:866,3 -DA:867,1 -DA:868,2 -DA:869,1 -DA:873,1 -DA:874,3 -DA:875,1 -DA:876,2 -DA:877,1 -DA:882,1 -DA:883,3 -DA:884,1 -DA:885,2 -DA:886,1 -DA:888,1 -DA:893,1 -DA:894,2 -DA:896,2 -DA:898,2 -DA:899,2 -DA:901,0 -DA:908,1 -DA:909,13 -DA:911,1 -DA:917,1 -DA:924,12 -DA:925,12 -DA:926,0 -DA:927,0 -DA:928,0 -DA:930,12 -DA:933,12 -DA:936,12 -DA:937,12 -DA:943,1 -DA:944,2 -DA:945,2 -DA:946,2 -DA:947,2 -DA:949,2 -DA:951,2 -DA:953,2 -DA:955,2 -DA:956,2 -DA:958,2 -DA:960,1 -DA:962,1 -DA:963,0 -DA:966,1 -DA:967,0 -DA:970,1 -LF:407 -LH:371 -BRDA:217,1,0,0 -BRDA:217,1,1,168 -BRDA:226,2,0,13 -BRDA:226,2,1,60 -BRDA:257,3,0,12 -BRDA:257,3,1,1 -BRDA:265,4,0,23 -BRDA:265,4,1,8 -BRDA:266,5,0,2 -BRDA:266,5,1,21 -BRDA:267,6,0,0 -BRDA:267,6,1,2 -BRDA:280,7,0,0 -BRDA:280,7,1,4 -BRDA:284,8,0,0 -BRDA:284,8,1,4 -BRDA:292,9,0,0 -BRDA:292,9,1,1 -BRDA:322,10,0,13 -BRDA:322,10,1,2 -BRDA:324,11,0,13 -BRDA:324,11,1,2 -BRDA:331,12,0,10 -BRDA:331,12,1,3 -BRDA:331,13,0,13 -BRDA:331,13,1,10 -BRDA:331,13,2,3 -BRDA:339,14,0,9 -BRDA:339,14,1,0 -BRDA:339,15,0,9 -BRDA:339,15,1,9 -BRDA:349,16,0,1 -BRDA:349,16,1,2 -BRDA:406,17,0,0 -BRDA:406,17,1,9 -BRDA:417,18,0,1 -BRDA:417,18,1,0 -BRDA:424,19,0,1 -BRDA:424,19,1,0 -BRDA:431,20,0,1 -BRDA:431,20,1,0 -BRDA:442,21,0,0 -BRDA:442,21,1,9 -BRDA:442,22,0,9 -BRDA:442,22,1,9 -BRDA:451,23,0,0 -BRDA:451,23,1,0 -BRDA:457,24,0,1 -BRDA:457,24,1,9 -BRDA:464,25,0,9 -BRDA:464,25,1,0 -BRDA:502,26,0,0 -BRDA:502,26,1,48 -BRDA:502,27,0,48 -BRDA:502,27,1,48 -BRDA:539,28,0,1 -BRDA:539,28,1,11 -BRDA:550,29,0,11 -BRDA:550,29,1,1 -BRDA:550,30,0,12 -BRDA:550,30,1,11 -BRDA:563,31,0,11 -BRDA:563,31,1,12 -BRDA:583,32,0,1 -BRDA:583,32,1,1 -BRDA:587,33,0,0 -BRDA:587,33,1,2 -BRDA:592,34,0,2 -BRDA:592,34,1,2 -BRDA:593,35,0,2 -BRDA:593,35,1,1 -BRDA:593,35,2,1 -BRDA:594,36,0,2 -BRDA:594,36,1,2 -BRDA:594,36,2,2 -BRDA:609,37,0,0 -BRDA:609,37,1,12 -BRDA:609,38,0,12 -BRDA:609,38,1,0 -BRDA:625,39,0,4 -BRDA:625,39,1,4 -BRDA:628,40,0,7 -BRDA:628,40,1,7 -BRDA:637,41,0,4 -BRDA:637,41,1,1 -BRDA:640,42,0,4 -BRDA:640,42,1,1 -BRDA:657,43,0,8 -BRDA:657,43,1,4 -BRDA:661,44,0,12 -BRDA:661,44,1,12 -BRDA:662,45,0,12 -BRDA:662,45,1,3 -BRDA:663,46,0,12 -BRDA:663,46,1,4 -BRDA:663,46,2,1 -BRDA:664,47,0,12 -BRDA:664,47,1,1 -BRDA:665,48,0,12 -BRDA:665,48,1,1 -BRDA:667,49,0,1 -BRDA:667,49,1,11 -BRDA:674,50,0,7 -BRDA:674,50,1,4 -BRDA:685,51,0,1 -BRDA:685,51,1,10 -BRDA:691,52,0,1 -BRDA:691,52,1,9 -BRDA:711,53,0,0 -BRDA:711,53,1,9 -BRDA:721,54,0,9 -BRDA:721,54,1,0 -BRDA:728,55,0,1 -BRDA:728,55,1,8 -BRDA:729,56,0,1 -BRDA:729,56,1,0 -BRDA:735,57,0,8 -BRDA:735,57,1,0 -BRDA:748,58,0,9 -BRDA:748,58,1,0 -BRDA:810,59,0,0 -BRDA:810,59,1,11 -BRDA:820,60,0,11 -BRDA:820,60,1,10 -BRDA:839,61,0,0 -BRDA:839,61,1,0 -BRDA:849,62,0,0 -BRDA:849,62,1,40 -BRDA:849,63,0,40 -BRDA:849,63,1,0 -BRDA:858,64,0,1 -BRDA:858,64,1,2 -BRDA:860,65,0,1 -BRDA:860,65,1,1 -BRDA:866,66,0,1 -BRDA:866,66,1,2 -BRDA:868,67,0,1 -BRDA:868,67,1,1 -BRDA:874,68,0,1 -BRDA:874,68,1,2 -BRDA:876,69,0,1 -BRDA:876,69,1,1 -BRDA:883,70,0,1 -BRDA:883,70,1,2 -BRDA:885,71,0,1 -BRDA:885,71,1,1 -BRDA:898,72,0,2 -BRDA:898,72,1,0 -BRDA:925,73,0,0 -BRDA:925,73,1,12 -BRDA:925,74,0,12 -BRDA:925,74,1,12 -BRF:152 -BRH:122 -end_of_record From f7bf054c68e8178ee222b3f670091e4d049c884a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Moln=C3=A1r?= Date: Mon, 23 Sep 2013 21:52:25 +0200 Subject: [PATCH 13/20] Updating test coverage statistics. --- coverage/coverage.json | 1 + coverage/lcov-report/index.html | 28 +- coverage/lcov-report/lib/compressor.js.html | 6 +- coverage/lcov-report/lib/connection.js.html | 79 +- coverage/lcov-report/lib/endpoint.js.html | 191 +- coverage/lcov-report/lib/flow.js.html | 138 +- coverage/lcov-report/lib/framer.js.html | 22 +- coverage/lcov-report/lib/http.js.html | 10 +- coverage/lcov-report/lib/index.html | 64 +- coverage/lcov-report/lib/stream.js.html | 228 +- coverage/lcov.info | 2850 +++++++++++++++++++ 11 files changed, 3345 insertions(+), 272 deletions(-) create mode 100644 coverage/coverage.json create mode 100644 coverage/lcov.info diff --git a/coverage/coverage.json b/coverage/coverage.json new file mode 100644 index 00000000..0d4550c9 --- /dev/null +++ b/coverage/coverage.json @@ -0,0 +1 @@ +{"/data/upstream/node-http2/lib/compressor.js":{"path":"/data/upstream/node-http2/lib/compressor.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":54,"11":54,"12":54,"13":54,"14":54,"15":54,"16":1,"17":1806,"18":1806,"19":1806,"20":1806,"21":1806,"22":1806,"23":1,"24":1,"25":1806,"26":1,"27":54,"28":54,"29":1620,"30":54,"31":1,"32":182,"33":182,"34":182,"35":0,"36":0,"37":0,"38":182,"39":182,"40":182,"41":0,"42":182,"43":182,"44":182,"45":1,"46":1,"47":1,"48":1,"49":49,"50":49,"51":49,"52":49,"53":1,"54":49,"55":49,"56":1,"57":151,"58":151,"59":151,"60":54,"61":54,"62":54,"63":32,"64":22,"65":22,"66":22,"67":22,"68":97,"69":78,"70":19,"71":97,"72":97,"73":92,"74":92,"75":92,"76":92,"77":97,"78":1,"79":49,"80":49,"81":49,"82":151,"83":49,"84":1559,"85":1559,"86":46,"87":1559,"88":49,"89":1,"90":1,"91":47,"92":47,"93":47,"94":47,"95":1,"96":147,"97":147,"98":143,"99":147,"100":1,"101":159,"102":159,"103":159,"104":159,"105":159,"106":3760,"107":3760,"108":152,"109":65,"110":65,"111":87,"112":87,"113":159,"114":65,"115":65,"116":19,"117":19,"118":19,"119":46,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":46,"127":4,"128":4,"129":42,"130":94,"131":94,"132":94,"133":94,"134":4,"135":90,"136":76,"137":14,"138":94,"139":90,"140":90,"141":90,"142":0,"143":0,"144":0,"145":0,"146":0,"147":94,"148":159,"149":1,"150":47,"151":1488,"152":1488,"153":26,"154":26,"155":1488,"156":1488,"157":47,"158":1,"159":351,"160":351,"161":149,"162":202,"163":202,"164":2,"165":202,"166":202,"167":202,"168":210,"169":210,"170":210,"171":8,"172":210,"173":210,"174":202,"175":1,"176":363,"177":363,"178":363,"179":161,"180":363,"181":207,"182":207,"183":217,"184":217,"185":217,"186":363,"187":1,"188":123,"189":123,"190":123,"191":1,"192":125,"193":125,"194":125,"195":125,"196":1,"197":1,"198":151,"199":151,"200":51,"201":100,"202":5,"203":95,"204":18,"205":77,"206":151,"207":51,"208":100,"209":81,"210":19,"211":19,"212":100,"213":77,"214":100,"215":151,"216":151,"217":1,"218":159,"219":159,"220":159,"221":56,"222":103,"223":28,"224":6,"225":22,"226":75,"227":159,"228":56,"229":56,"230":103,"231":103,"232":20,"233":103,"234":75,"235":28,"236":22,"237":6,"238":103,"239":159,"240":1,"241":1,"242":1,"243":26,"244":26,"245":26,"246":26,"247":26,"248":1,"249":47,"250":47,"251":143,"252":143,"253":8,"254":24,"255":135,"256":47,"257":47,"258":47,"259":447,"260":47,"261":1,"262":75,"263":37,"264":37,"265":37,"266":39,"267":39,"268":39,"269":39,"270":37,"271":37,"272":37,"273":2,"274":39,"275":32,"276":39,"277":39,"278":38,"279":75,"280":1,"281":1,"282":28,"283":28,"284":28,"285":28,"286":28,"287":28,"288":28,"289":1,"290":49,"291":49,"292":49,"293":49,"294":49,"295":165,"296":165,"297":165,"298":17,"299":8,"300":9,"301":148,"302":49,"303":1,"304":73,"305":3,"306":1,"307":1,"308":1,"309":2,"310":70,"311":37,"312":37,"313":37,"314":33,"315":72,"316":36,"317":38,"318":36,"319":36,"320":0,"321":0,"322":0,"323":36,"324":36,"325":72,"326":1,"327":132,"328":132,"329":534,"330":132,"331":132,"332":534,"333":132,"334":1,"335":37,"336":37,"337":37,"338":39,"339":39,"340":39,"341":37},"b":{"1":[54,54],"2":[182,0],"3":[182,0],"4":[0,182],"5":[54,97],"6":[32,22],"7":[78,19],"8":[92,5],"9":[46,1513],"10":[1559,144],"11":[143,4],"12":[152,3608],"13":[65,87],"14":[87,0],"15":[65,94],"16":[19,46],"17":[0,46],"18":[4,42],"19":[4,90],"20":[76,14],"21":[90,4],"22":[0,0],"23":[76,18],"24":[26,1462],"25":[1488,165,123],"26":[149,202],"27":[2,200],"28":[8,202],"29":[161,202],"30":[207,156],"31":[51,100],"32":[5,95],"33":[18,77],"34":[51,100],"35":[81,19],"36":[77,23],"37":[56,103],"38":[28,75],"39":[6,22],"40":[56,103],"41":[20,83],"42":[75,28],"43":[22,6],"44":[26,13],"45":[13,13],"46":[8,135],"47":[37,38],"48":[75,45],"49":[37,2],"50":[32,7],"51":[32,30],"52":[28,13],"53":[15,13],"54":[17,148],"55":[8,9],"56":[3,70],"57":[1,2],"58":[3,2],"59":[37,33],"60":[70,40],"61":[36,36],"62":[72,39,10]},"f":{"1":54,"2":1806,"3":1806,"4":54,"5":182,"6":49,"7":49,"8":151,"9":49,"10":47,"11":147,"12":159,"13":47,"14":351,"15":363,"16":123,"17":125,"18":151,"19":159,"20":26,"21":47,"22":75,"23":28,"24":49,"25":73,"26":38,"27":132,"28":37},"fnMap":{"1":{"name":"HeaderTable","line":37,"loc":{"start":{"line":37,"column":0},"end":{"line":37,"column":40}}},"2":{"name":"entryFromPair","line":72,"loc":{"start":{"line":72,"column":0},"end":{"line":72,"column":29}}},"3":{"name":"size","line":91,"loc":{"start":{"line":91,"column":0},"end":{"line":91,"column":21}}},"4":{"name":"tableSize","line":95,"loc":{"start":{"line":95,"column":0},"end":{"line":95,"column":26}}},"5":{"name":"(anonymous_5)","line":111,"loc":{"start":{"line":111,"column":28},"end":{"line":111,"column":51}}},"6":{"name":"HeaderSetDecompressor","line":218,"loc":{"start":{"line":218,"column":0},"end":{"line":218,"column":43}}},"7":{"name":"_transform","line":229,"loc":{"start":{"line":229,"column":45},"end":{"line":229,"column":92}}},"8":{"name":"_execute","line":255,"loc":{"start":{"line":255,"column":43},"end":{"line":255,"column":66}}},"9":{"name":"_flush","line":312,"loc":{"start":{"line":312,"column":41},"end":{"line":312,"column":67}}},"10":{"name":"HeaderSetCompressor","line":346,"loc":{"start":{"line":346,"column":0},"end":{"line":346,"column":41}}},"11":{"name":"send","line":354,"loc":{"start":{"line":354,"column":37},"end":{"line":354,"column":56}}},"12":{"name":"_transform","line":367,"loc":{"start":{"line":367,"column":43},"end":{"line":367,"column":89}}},"13":{"name":"_flush","line":473,"loc":{"start":{"line":473,"column":39},"end":{"line":473,"column":65}}},"14":{"name":"writeInteger","line":504,"loc":{"start":{"line":504,"column":30},"end":{"line":504,"column":58}}},"15":{"name":"readInteger","line":545,"loc":{"start":{"line":545,"column":32},"end":{"line":545,"column":64}}},"16":{"name":"writeString","line":574,"loc":{"start":{"line":574,"column":29},"end":{"line":574,"column":55}}},"17":{"name":"readString","line":580,"loc":{"start":{"line":580,"column":31},"end":{"line":580,"column":59}}},"18":{"name":"writeHeader","line":632,"loc":{"start":{"line":632,"column":29},"end":{"line":632,"column":58}}},"19":{"name":"readHeader","line":668,"loc":{"start":{"line":668,"column":31},"end":{"line":668,"column":59}}},"20":{"name":"Compressor","line":737,"loc":{"start":{"line":737,"column":0},"end":{"line":737,"column":31}}},"21":{"name":"compress","line":751,"loc":{"start":{"line":751,"column":32},"end":{"line":751,"column":59}}},"22":{"name":"_transform","line":773,"loc":{"start":{"line":773,"column":34},"end":{"line":773,"column":77}}},"23":{"name":"Decompressor","line":829,"loc":{"start":{"line":829,"column":0},"end":{"line":829,"column":33}}},"24":{"name":"decompress","line":846,"loc":{"start":{"line":846,"column":36},"end":{"line":846,"column":63}}},"25":{"name":"_transform","line":870,"loc":{"start":{"line":870,"column":36},"end":{"line":870,"column":79}}},"26":{"name":"(anonymous_26)","line":899,"loc":{"start":{"line":899,"column":41},"end":{"line":899,"column":57}}},"27":{"name":"concat","line":920,"loc":{"start":{"line":920,"column":0},"end":{"line":920,"column":25}}},"28":{"name":"cut","line":935,"loc":{"start":{"line":935,"column":0},"end":{"line":935,"column":27}}}},"statementMap":{"1":{"start":{"line":18,"column":0},"end":{"line":18,"column":34}},"2":{"start":{"line":19,"column":0},"end":{"line":19,"column":50}},"3":{"start":{"line":20,"column":0},"end":{"line":20,"column":54}},"4":{"start":{"line":21,"column":0},"end":{"line":21,"column":32}},"5":{"start":{"line":22,"column":0},"end":{"line":22,"column":36}},"6":{"start":{"line":24,"column":0},"end":{"line":24,"column":50}},"7":{"start":{"line":25,"column":0},"end":{"line":25,"column":31}},"8":{"start":{"line":26,"column":0},"end":{"line":26,"column":27}},"9":{"start":{"line":37,"column":0},"end":{"line":44,"column":1}},"10":{"start":{"line":38,"column":2},"end":{"line":38,"column":38}},"11":{"start":{"line":39,"column":2},"end":{"line":39,"column":18}},"12":{"start":{"line":40,"column":2},"end":{"line":40,"column":52}},"13":{"start":{"line":41,"column":2},"end":{"line":41,"column":31}},"14":{"start":{"line":42,"column":2},"end":{"line":42,"column":39}},"15":{"start":{"line":43,"column":2},"end":{"line":43,"column":14}},"16":{"start":{"line":72,"column":0},"end":{"line":79,"column":1}},"17":{"start":{"line":73,"column":2},"end":{"line":73,"column":27}},"18":{"start":{"line":74,"column":2},"end":{"line":74,"column":26}},"19":{"start":{"line":75,"column":2},"end":{"line":75,"column":24}},"20":{"start":{"line":76,"column":2},"end":{"line":76,"column":21}},"21":{"start":{"line":77,"column":2},"end":{"line":77,"column":28}},"22":{"start":{"line":78,"column":2},"end":{"line":78,"column":15}},"23":{"start":{"line":89,"column":0},"end":{"line":89,"column":38}},"24":{"start":{"line":91,"column":0},"end":{"line":93,"column":1}},"25":{"start":{"line":92,"column":2},"end":{"line":92,"column":63}},"26":{"start":{"line":95,"column":0},"end":{"line":101,"column":1}},"27":{"start":{"line":96,"column":2},"end":{"line":96,"column":15}},"28":{"start":{"line":97,"column":2},"end":{"line":99,"column":3}},"29":{"start":{"line":98,"column":4},"end":{"line":98,"column":27}},"30":{"start":{"line":100,"column":2},"end":{"line":100,"column":14}},"31":{"start":{"line":111,"column":0},"end":{"line":132,"column":2}},"32":{"start":{"line":112,"column":2},"end":{"line":112,"column":40}},"33":{"start":{"line":113,"column":2},"end":{"line":113,"column":26}},"34":{"start":{"line":115,"column":2},"end":{"line":119,"column":3}},"35":{"start":{"line":116,"column":4},"end":{"line":116,"column":31}},"36":{"start":{"line":117,"column":4},"end":{"line":117,"column":32}},"37":{"start":{"line":118,"column":4},"end":{"line":118,"column":33}},"38":{"start":{"line":121,"column":2},"end":{"line":129,"column":3}},"39":{"start":{"line":122,"column":4},"end":{"line":122,"column":35}},"40":{"start":{"line":123,"column":4},"end":{"line":127,"column":5}},"41":{"start":{"line":124,"column":6},"end":{"line":124,"column":26}},"42":{"start":{"line":126,"column":6},"end":{"line":126,"column":35}},"43":{"start":{"line":128,"column":4},"end":{"line":128,"column":30}},"44":{"start":{"line":131,"column":2},"end":{"line":131,"column":24}},"45":{"start":{"line":139,"column":0},"end":{"line":170,"column":2}},"46":{"start":{"line":174,"column":0},"end":{"line":205,"column":2}},"47":{"start":{"line":217,"column":0},"end":{"line":217,"column":54}},"48":{"start":{"line":218,"column":0},"end":{"line":224,"column":1}},"49":{"start":{"line":219,"column":2},"end":{"line":219,"column":51}},"50":{"start":{"line":221,"column":2},"end":{"line":221,"column":53}},"51":{"start":{"line":222,"column":2},"end":{"line":222,"column":22}},"52":{"start":{"line":223,"column":2},"end":{"line":223,"column":20}},"53":{"start":{"line":229,"column":0},"end":{"line":232,"column":2}},"54":{"start":{"line":230,"column":2},"end":{"line":230,"column":27}},"55":{"start":{"line":231,"column":2},"end":{"line":231,"column":13}},"56":{"start":{"line":255,"column":0},"end":{"line":306,"column":2}},"57":{"start":{"line":256,"column":2},"end":{"line":257,"column":53}},"58":{"start":{"line":259,"column":2},"end":{"line":259,"column":25}},"59":{"start":{"line":268,"column":2},"end":{"line":305,"column":3}},"60":{"start":{"line":269,"column":4},"end":{"line":269,"column":22}},"61":{"start":{"line":270,"column":4},"end":{"line":270,"column":31}},"62":{"start":{"line":272,"column":4},"end":{"line":279,"column":5}},"63":{"start":{"line":273,"column":6},"end":{"line":273,"column":30}},"64":{"start":{"line":275,"column":6},"end":{"line":275,"column":29}},"65":{"start":{"line":276,"column":6},"end":{"line":276,"column":27}},"66":{"start":{"line":277,"column":6},"end":{"line":277,"column":27}},"67":{"start":{"line":278,"column":6},"end":{"line":278,"column":22}},"68":{"start":{"line":290,"column":4},"end":{"line":294,"column":5}},"69":{"start":{"line":291,"column":6},"end":{"line":291,"column":51}},"70":{"start":{"line":293,"column":6},"end":{"line":293,"column":35}},"71":{"start":{"line":296,"column":4},"end":{"line":296,"column":22}},"72":{"start":{"line":297,"column":4},"end":{"line":302,"column":5}},"73":{"start":{"line":298,"column":6},"end":{"line":298,"column":34}},"74":{"start":{"line":299,"column":6},"end":{"line":299,"column":29}},"75":{"start":{"line":300,"column":6},"end":{"line":300,"column":27}},"76":{"start":{"line":301,"column":6},"end":{"line":301,"column":36}},"77":{"start":{"line":304,"column":4},"end":{"line":304,"column":20}},"78":{"start":{"line":312,"column":0},"end":{"line":331,"column":2}},"79":{"start":{"line":313,"column":2},"end":{"line":313,"column":36}},"80":{"start":{"line":316,"column":2},"end":{"line":316,"column":20}},"81":{"start":{"line":317,"column":2},"end":{"line":319,"column":3}},"82":{"start":{"line":318,"column":4},"end":{"line":318,"column":56}},"83":{"start":{"line":322,"column":2},"end":{"line":328,"column":3}},"84":{"start":{"line":323,"column":4},"end":{"line":323,"column":35}},"85":{"start":{"line":324,"column":4},"end":{"line":326,"column":5}},"86":{"start":{"line":325,"column":6},"end":{"line":325,"column":31}},"87":{"start":{"line":327,"column":4},"end":{"line":327,"column":26}},"88":{"start":{"line":330,"column":2},"end":{"line":330,"column":13}},"89":{"start":{"line":345,"column":0},"end":{"line":345,"column":52}},"90":{"start":{"line":346,"column":0},"end":{"line":352,"column":1}},"91":{"start":{"line":347,"column":2},"end":{"line":347,"column":51}},"92":{"start":{"line":349,"column":2},"end":{"line":349,"column":53}},"93":{"start":{"line":350,"column":2},"end":{"line":350,"column":22}},"94":{"start":{"line":351,"column":2},"end":{"line":351,"column":56}},"95":{"start":{"line":354,"column":0},"end":{"line":362,"column":2}},"96":{"start":{"line":355,"column":2},"end":{"line":356,"column":52}},"97":{"start":{"line":358,"column":2},"end":{"line":360,"column":3}},"98":{"start":{"line":359,"column":4},"end":{"line":359,"column":49}},"99":{"start":{"line":361,"column":2},"end":{"line":361,"column":32}},"100":{"start":{"line":367,"column":0},"end":{"line":468,"column":2}},"101":{"start":{"line":368,"column":2},"end":{"line":368,"column":35}},"102":{"start":{"line":369,"column":2},"end":{"line":369,"column":22}},"103":{"start":{"line":370,"column":2},"end":{"line":370,"column":17}},"104":{"start":{"line":373,"column":2},"end":{"line":373,"column":37}},"105":{"start":{"line":374,"column":2},"end":{"line":384,"column":3}},"106":{"start":{"line":375,"column":4},"end":{"line":375,"column":31}},"107":{"start":{"line":376,"column":4},"end":{"line":383,"column":5}},"108":{"start":{"line":377,"column":6},"end":{"line":382,"column":7}},"109":{"start":{"line":378,"column":8},"end":{"line":378,"column":26}},"110":{"start":{"line":379,"column":8},"end":{"line":379,"column":14}},"111":{"start":{"line":380,"column":13},"end":{"line":382,"column":7}},"112":{"start":{"line":381,"column":8},"end":{"line":381,"column":26}},"113":{"start":{"line":409,"column":2},"end":{"line":465,"column":3}},"114":{"start":{"line":410,"column":4},"end":{"line":410,"column":59}},"115":{"start":{"line":412,"column":4},"end":{"line":434,"column":5}},"116":{"start":{"line":413,"column":6},"end":{"line":413,"column":21}},"117":{"start":{"line":414,"column":6},"end":{"line":414,"column":29}},"118":{"start":{"line":415,"column":6},"end":{"line":415,"column":27}},"119":{"start":{"line":418,"column":9},"end":{"line":434,"column":5}},"120":{"start":{"line":419,"column":6},"end":{"line":419,"column":21}},"121":{"start":{"line":420,"column":6},"end":{"line":420,"column":21}},"122":{"start":{"line":421,"column":6},"end":{"line":421,"column":21}},"123":{"start":{"line":422,"column":6},"end":{"line":422,"column":21}},"124":{"start":{"line":423,"column":6},"end":{"line":423,"column":25}},"125":{"start":{"line":424,"column":6},"end":{"line":424,"column":27}},"126":{"start":{"line":427,"column":9},"end":{"line":434,"column":5}},"127":{"start":{"line":428,"column":6},"end":{"line":428,"column":21}},"128":{"start":{"line":429,"column":6},"end":{"line":429,"column":21}},"129":{"start":{"line":433,"column":6},"end":{"line":433,"column":24}},"130":{"start":{"line":439,"column":4},"end":{"line":439,"column":32}},"131":{"start":{"line":440,"column":4},"end":{"line":440,"column":25}},"132":{"start":{"line":442,"column":4},"end":{"line":442,"column":20}},"133":{"start":{"line":443,"column":4},"end":{"line":449,"column":5}},"134":{"start":{"line":444,"column":6},"end":{"line":444,"column":23}},"135":{"start":{"line":445,"column":11},"end":{"line":449,"column":5}},"136":{"start":{"line":446,"column":6},"end":{"line":446,"column":30}},"137":{"start":{"line":448,"column":6},"end":{"line":448,"column":29}},"138":{"start":{"line":451,"column":4},"end":{"line":462,"column":5}},"139":{"start":{"line":452,"column":6},"end":{"line":452,"column":29}},"140":{"start":{"line":453,"column":6},"end":{"line":453,"column":63}},"141":{"start":{"line":454,"column":6},"end":{"line":461,"column":7}},"142":{"start":{"line":455,"column":8},"end":{"line":455,"column":44}},"143":{"start":{"line":456,"column":8},"end":{"line":460,"column":9}},"144":{"start":{"line":457,"column":10},"end":{"line":457,"column":57}},"145":{"start":{"line":458,"column":10},"end":{"line":458,"column":25}},"146":{"start":{"line":459,"column":10},"end":{"line":459,"column":25}},"147":{"start":{"line":464,"column":4},"end":{"line":464,"column":97}},"148":{"start":{"line":467,"column":2},"end":{"line":467,"column":13}},"149":{"start":{"line":473,"column":0},"end":{"line":486,"column":2}},"150":{"start":{"line":475,"column":2},"end":{"line":483,"column":3}},"151":{"start":{"line":476,"column":4},"end":{"line":476,"column":35}},"152":{"start":{"line":477,"column":4},"end":{"line":480,"column":5}},"153":{"start":{"line":478,"column":6},"end":{"line":478,"column":58}},"154":{"start":{"line":479,"column":6},"end":{"line":479,"column":30}},"155":{"start":{"line":481,"column":4},"end":{"line":481,"column":23}},"156":{"start":{"line":482,"column":4},"end":{"line":482,"column":26}},"157":{"start":{"line":485,"column":2},"end":{"line":485,"column":13}},"158":{"start":{"line":504,"column":0},"end":{"line":530,"column":2}},"159":{"start":{"line":505,"column":2},"end":{"line":505,"column":32}},"160":{"start":{"line":506,"column":2},"end":{"line":508,"column":3}},"161":{"start":{"line":507,"column":4},"end":{"line":507,"column":29}},"162":{"start":{"line":510,"column":2},"end":{"line":510,"column":17}},"163":{"start":{"line":511,"column":2},"end":{"line":513,"column":3}},"164":{"start":{"line":512,"column":4},"end":{"line":512,"column":22}},"165":{"start":{"line":514,"column":2},"end":{"line":514,"column":13}},"166":{"start":{"line":516,"column":2},"end":{"line":516,"column":15}},"167":{"start":{"line":517,"column":2},"end":{"line":527,"column":3}},"168":{"start":{"line":518,"column":4},"end":{"line":518,"column":28}},"169":{"start":{"line":519,"column":4},"end":{"line":519,"column":16}},"170":{"start":{"line":521,"column":4},"end":{"line":523,"column":5}},"171":{"start":{"line":522,"column":6},"end":{"line":522,"column":15}},"172":{"start":{"line":524,"column":4},"end":{"line":524,"column":18}},"173":{"start":{"line":526,"column":4},"end":{"line":526,"column":10}},"174":{"start":{"line":529,"column":2},"end":{"line":529,"column":29}},"175":{"start":{"line":545,"column":0},"end":{"line":563,"column":2}},"176":{"start":{"line":546,"column":2},"end":{"line":546,"column":32}},"177":{"start":{"line":548,"column":2},"end":{"line":548,"column":40}},"178":{"start":{"line":549,"column":2},"end":{"line":551,"column":3}},"179":{"start":{"line":550,"column":4},"end":{"line":550,"column":23}},"180":{"start":{"line":553,"column":2},"end":{"line":560,"column":3}},"181":{"start":{"line":554,"column":4},"end":{"line":554,"column":14}},"182":{"start":{"line":555,"column":4},"end":{"line":559,"column":46}},"183":{"start":{"line":556,"column":6},"end":{"line":556,"column":46}},"184":{"start":{"line":557,"column":6},"end":{"line":557,"column":13}},"185":{"start":{"line":558,"column":6},"end":{"line":558,"column":25}},"186":{"start":{"line":562,"column":2},"end":{"line":562,"column":11}},"187":{"start":{"line":574,"column":0},"end":{"line":578,"column":2}},"188":{"start":{"line":575,"column":2},"end":{"line":575,"column":46}},"189":{"start":{"line":576,"column":2},"end":{"line":576,"column":75}},"190":{"start":{"line":577,"column":2},"end":{"line":577,"column":45}},"191":{"start":{"line":580,"column":0},"end":{"line":585,"column":2}},"192":{"start":{"line":581,"column":2},"end":{"line":581,"column":56}},"193":{"start":{"line":582,"column":2},"end":{"line":582,"column":75}},"194":{"start":{"line":583,"column":2},"end":{"line":583,"column":26}},"195":{"start":{"line":584,"column":2},"end":{"line":584,"column":13}},"196":{"start":{"line":625,"column":0},"end":{"line":630,"column":2}},"197":{"start":{"line":632,"column":0},"end":{"line":666,"column":2}},"198":{"start":{"line":633,"column":2},"end":{"line":633,"column":35}},"199":{"start":{"line":635,"column":2},"end":{"line":643,"column":3}},"200":{"start":{"line":636,"column":4},"end":{"line":636,"column":45}},"201":{"start":{"line":637,"column":9},"end":{"line":643,"column":3}},"202":{"start":{"line":638,"column":4},"end":{"line":638,"column":45}},"203":{"start":{"line":639,"column":9},"end":{"line":643,"column":3}},"204":{"start":{"line":640,"column":4},"end":{"line":640,"column":56}},"205":{"start":{"line":642,"column":4},"end":{"line":642,"column":57}},"206":{"start":{"line":645,"column":2},"end":{"line":661,"column":3}},"207":{"start":{"line":646,"column":4},"end":{"line":646,"column":83}},"208":{"start":{"line":649,"column":4},"end":{"line":654,"column":5}},"209":{"start":{"line":650,"column":6},"end":{"line":650,"column":88}},"210":{"start":{"line":652,"column":6},"end":{"line":652,"column":74}},"211":{"start":{"line":653,"column":6},"end":{"line":653,"column":60}},"212":{"start":{"line":656,"column":4},"end":{"line":658,"column":5}},"213":{"start":{"line":657,"column":6},"end":{"line":657,"column":65}},"214":{"start":{"line":660,"column":4},"end":{"line":660,"column":59}},"215":{"start":{"line":663,"column":2},"end":{"line":663,"column":45}},"216":{"start":{"line":665,"column":2},"end":{"line":665,"column":51}},"217":{"start":{"line":668,"column":0},"end":{"line":706,"column":2}},"218":{"start":{"line":669,"column":2},"end":{"line":669,"column":34}},"219":{"start":{"line":671,"column":2},"end":{"line":671,"column":40}},"220":{"start":{"line":672,"column":2},"end":{"line":682,"column":3}},"221":{"start":{"line":673,"column":4},"end":{"line":673,"column":45}},"222":{"start":{"line":674,"column":9},"end":{"line":682,"column":3}},"223":{"start":{"line":675,"column":4},"end":{"line":679,"column":5}},"224":{"start":{"line":676,"column":6},"end":{"line":676,"column":47}},"225":{"start":{"line":678,"column":6},"end":{"line":678,"column":58}},"226":{"start":{"line":681,"column":4},"end":{"line":681,"column":57}},"227":{"start":{"line":684,"column":2},"end":{"line":703,"column":3}},"228":{"start":{"line":685,"column":4},"end":{"line":685,"column":94}},"229":{"start":{"line":686,"column":4},"end":{"line":686,"column":22}},"230":{"start":{"line":689,"column":4},"end":{"line":689,"column":83}},"231":{"start":{"line":690,"column":4},"end":{"line":692,"column":5}},"232":{"start":{"line":691,"column":6},"end":{"line":691,"column":57}},"233":{"start":{"line":694,"column":4},"end":{"line":700,"column":5}},"234":{"start":{"line":695,"column":6},"end":{"line":695,"column":62}},"235":{"start":{"line":696,"column":11},"end":{"line":700,"column":5}},"236":{"start":{"line":697,"column":6},"end":{"line":697,"column":30}},"237":{"start":{"line":699,"column":6},"end":{"line":699,"column":24}},"238":{"start":{"line":702,"column":4},"end":{"line":702,"column":56}},"239":{"start":{"line":705,"column":2},"end":{"line":705,"column":16}},"240":{"start":{"line":730,"column":0},"end":{"line":730,"column":34}},"241":{"start":{"line":736,"column":0},"end":{"line":736,"column":43}},"242":{"start":{"line":737,"column":0},"end":{"line":746,"column":1}},"243":{"start":{"line":738,"column":2},"end":{"line":738,"column":51}},"244":{"start":{"line":740,"column":2},"end":{"line":740,"column":53}},"245":{"start":{"line":742,"column":2},"end":{"line":742,"column":56}},"246":{"start":{"line":743,"column":2},"end":{"line":744,"column":77}},"247":{"start":{"line":745,"column":2},"end":{"line":745,"column":57}},"248":{"start":{"line":751,"column":0},"end":{"line":770,"column":2}},"249":{"start":{"line":752,"column":2},"end":{"line":752,"column":67}},"250":{"start":{"line":753,"column":2},"end":{"line":762,"column":3}},"251":{"start":{"line":754,"column":4},"end":{"line":754,"column":30}},"252":{"start":{"line":755,"column":4},"end":{"line":761,"column":5}},"253":{"start":{"line":756,"column":6},"end":{"line":758,"column":7}},"254":{"start":{"line":757,"column":8},"end":{"line":757,"column":59}},"255":{"start":{"line":760,"column":6},"end":{"line":760,"column":54}},"256":{"start":{"line":763,"column":2},"end":{"line":763,"column":19}},"257":{"start":{"line":765,"column":2},"end":{"line":765,"column":25}},"258":{"start":{"line":766,"column":2},"end":{"line":768,"column":3}},"259":{"start":{"line":767,"column":4},"end":{"line":767,"column":23}},"260":{"start":{"line":769,"column":2},"end":{"line":769,"column":24}},"261":{"start":{"line":773,"column":0},"end":{"line":817,"column":2}},"262":{"start":{"line":781,"column":2},"end":{"line":814,"column":3}},"263":{"start":{"line":782,"column":4},"end":{"line":782,"column":46}},"264":{"start":{"line":784,"column":4},"end":{"line":784,"column":52}},"265":{"start":{"line":786,"column":4},"end":{"line":808,"column":5}},"266":{"start":{"line":787,"column":6},"end":{"line":787,"column":21}},"267":{"start":{"line":788,"column":6},"end":{"line":788,"column":28}},"268":{"start":{"line":789,"column":6},"end":{"line":789,"column":43}},"269":{"start":{"line":791,"column":6},"end":{"line":801,"column":7}},"270":{"start":{"line":792,"column":8},"end":{"line":792,"column":45}},"271":{"start":{"line":793,"column":8},"end":{"line":793,"column":57}},"272":{"start":{"line":794,"column":8},"end":{"line":794,"column":53}},"273":{"start":{"line":796,"column":8},"end":{"line":800,"column":10}},"274":{"start":{"line":802,"column":6},"end":{"line":804,"column":7}},"275":{"start":{"line":803,"column":8},"end":{"line":803,"column":69}},"276":{"start":{"line":805,"column":6},"end":{"line":805,"column":34}},"277":{"start":{"line":807,"column":6},"end":{"line":807,"column":28}},"278":{"start":{"line":813,"column":4},"end":{"line":813,"column":21}},"279":{"start":{"line":816,"column":2},"end":{"line":816,"column":9}},"280":{"start":{"line":828,"column":0},"end":{"line":828,"column":45}},"281":{"start":{"line":829,"column":0},"end":{"line":841,"column":1}},"282":{"start":{"line":830,"column":2},"end":{"line":830,"column":51}},"283":{"start":{"line":832,"column":2},"end":{"line":832,"column":53}},"284":{"start":{"line":834,"column":2},"end":{"line":834,"column":56}},"285":{"start":{"line":835,"column":2},"end":{"line":836,"column":77}},"286":{"start":{"line":837,"column":2},"end":{"line":837,"column":57}},"287":{"start":{"line":839,"column":2},"end":{"line":839,"column":27}},"288":{"start":{"line":840,"column":2},"end":{"line":840,"column":25}},"289":{"start":{"line":846,"column":0},"end":{"line":867,"column":2}},"290":{"start":{"line":847,"column":2},"end":{"line":847,"column":71}},"291":{"start":{"line":848,"column":2},"end":{"line":848,"column":26}},"292":{"start":{"line":850,"column":2},"end":{"line":850,"column":19}},"293":{"start":{"line":851,"column":2},"end":{"line":851,"column":11}},"294":{"start":{"line":852,"column":2},"end":{"line":864,"column":3}},"295":{"start":{"line":853,"column":4},"end":{"line":853,"column":23}},"296":{"start":{"line":854,"column":4},"end":{"line":854,"column":24}},"297":{"start":{"line":855,"column":4},"end":{"line":863,"column":5}},"298":{"start":{"line":856,"column":6},"end":{"line":860,"column":7}},"299":{"start":{"line":857,"column":8},"end":{"line":857,"column":34}},"300":{"start":{"line":859,"column":8},"end":{"line":859,"column":47}},"301":{"start":{"line":862,"column":6},"end":{"line":862,"column":28}},"302":{"start":{"line":866,"column":2},"end":{"line":866,"column":17}},"303":{"start":{"line":870,"column":0},"end":{"line":914,"column":2}},"304":{"start":{"line":873,"column":2},"end":{"line":893,"column":3}},"305":{"start":{"line":874,"column":4},"end":{"line":878,"column":5}},"306":{"start":{"line":875,"column":6},"end":{"line":875,"column":71}},"307":{"start":{"line":876,"column":6},"end":{"line":876,"column":43}},"308":{"start":{"line":877,"column":6},"end":{"line":877,"column":13}},"309":{"start":{"line":879,"column":4},"end":{"line":879,"column":29}},"310":{"start":{"line":884,"column":7},"end":{"line":893,"column":3}},"311":{"start":{"line":885,"column":4},"end":{"line":885,"column":28}},"312":{"start":{"line":886,"column":4},"end":{"line":886,"column":23}},"313":{"start":{"line":887,"column":4},"end":{"line":887,"column":27}},"314":{"start":{"line":892,"column":4},"end":{"line":892,"column":21}},"315":{"start":{"line":898,"column":2},"end":{"line":911,"column":3}},"316":{"start":{"line":899,"column":4},"end":{"line":901,"column":8}},"317":{"start":{"line":900,"column":6},"end":{"line":900,"column":24}},"318":{"start":{"line":902,"column":4},"end":{"line":908,"column":5}},"319":{"start":{"line":903,"column":6},"end":{"line":903,"column":44}},"320":{"start":{"line":905,"column":6},"end":{"line":905,"column":68}},"321":{"start":{"line":906,"column":6},"end":{"line":906,"column":46}},"322":{"start":{"line":907,"column":6},"end":{"line":907,"column":13}},"323":{"start":{"line":909,"column":4},"end":{"line":909,"column":62}},"324":{"start":{"line":910,"column":4},"end":{"line":910,"column":29}},"325":{"start":{"line":913,"column":2},"end":{"line":913,"column":9}},"326":{"start":{"line":920,"column":0},"end":{"line":932,"column":1}},"327":{"start":{"line":921,"column":2},"end":{"line":921,"column":15}},"328":{"start":{"line":922,"column":2},"end":{"line":924,"column":3}},"329":{"start":{"line":923,"column":4},"end":{"line":923,"column":30}},"330":{"start":{"line":926,"column":2},"end":{"line":926,"column":38}},"331":{"start":{"line":927,"column":2},"end":{"line":929,"column":3}},"332":{"start":{"line":928,"column":4},"end":{"line":928,"column":42}},"333":{"start":{"line":931,"column":2},"end":{"line":931,"column":22}},"334":{"start":{"line":935,"column":0},"end":{"line":944,"column":1}},"335":{"start":{"line":936,"column":2},"end":{"line":936,"column":18}},"336":{"start":{"line":937,"column":2},"end":{"line":937,"column":17}},"337":{"start":{"line":938,"column":2},"end":{"line":942,"column":34}},"338":{"start":{"line":939,"column":4},"end":{"line":939,"column":59}},"339":{"start":{"line":940,"column":4},"end":{"line":940,"column":58}},"340":{"start":{"line":941,"column":4},"end":{"line":941,"column":24}},"341":{"start":{"line":943,"column":2},"end":{"line":943,"column":16}}},"branchMap":{"1":{"line":40,"type":"binary-expr","locations":[{"start":{"line":40,"column":16},"end":{"line":40,"column":21}},{"start":{"line":40,"column":25},"end":{"line":40,"column":51}}]},"2":{"line":115,"type":"binary-expr","locations":[{"start":{"line":115,"column":10},"end":{"line":115,"column":28}},{"start":{"line":115,"column":34},"end":{"line":115,"column":49}}]},"3":{"line":121,"type":"if","locations":[{"start":{"line":121,"column":2},"end":{"line":121,"column":2}},{"start":{"line":121,"column":2},"end":{"line":121,"column":2}}]},"4":{"line":123,"type":"if","locations":[{"start":{"line":123,"column":4},"end":{"line":123,"column":4}},{"start":{"line":123,"column":4},"end":{"line":123,"column":4}}]},"5":{"line":268,"type":"if","locations":[{"start":{"line":268,"column":2},"end":{"line":268,"column":2}},{"start":{"line":268,"column":2},"end":{"line":268,"column":2}}]},"6":{"line":272,"type":"if","locations":[{"start":{"line":272,"column":4},"end":{"line":272,"column":4}},{"start":{"line":272,"column":4},"end":{"line":272,"column":4}}]},"7":{"line":290,"type":"if","locations":[{"start":{"line":290,"column":4},"end":{"line":290,"column":4}},{"start":{"line":290,"column":4},"end":{"line":290,"column":4}}]},"8":{"line":297,"type":"if","locations":[{"start":{"line":297,"column":4},"end":{"line":297,"column":4}},{"start":{"line":297,"column":4},"end":{"line":297,"column":4}}]},"9":{"line":324,"type":"if","locations":[{"start":{"line":324,"column":4},"end":{"line":324,"column":4}},{"start":{"line":324,"column":4},"end":{"line":324,"column":4}}]},"10":{"line":324,"type":"binary-expr","locations":[{"start":{"line":324,"column":8},"end":{"line":324,"column":23}},{"start":{"line":324,"column":27},"end":{"line":324,"column":41}}]},"11":{"line":358,"type":"if","locations":[{"start":{"line":358,"column":2},"end":{"line":358,"column":2}},{"start":{"line":358,"column":2},"end":{"line":358,"column":2}}]},"12":{"line":376,"type":"if","locations":[{"start":{"line":376,"column":4},"end":{"line":376,"column":4}},{"start":{"line":376,"column":4},"end":{"line":376,"column":4}}]},"13":{"line":377,"type":"if","locations":[{"start":{"line":377,"column":6},"end":{"line":377,"column":6}},{"start":{"line":377,"column":6},"end":{"line":377,"column":6}}]},"14":{"line":380,"type":"if","locations":[{"start":{"line":380,"column":13},"end":{"line":380,"column":13}},{"start":{"line":380,"column":13},"end":{"line":380,"column":13}}]},"15":{"line":409,"type":"if","locations":[{"start":{"line":409,"column":2},"end":{"line":409,"column":2}},{"start":{"line":409,"column":2},"end":{"line":409,"column":2}}]},"16":{"line":412,"type":"if","locations":[{"start":{"line":412,"column":4},"end":{"line":412,"column":4}},{"start":{"line":412,"column":4},"end":{"line":412,"column":4}}]},"17":{"line":418,"type":"if","locations":[{"start":{"line":418,"column":9},"end":{"line":418,"column":9}},{"start":{"line":418,"column":9},"end":{"line":418,"column":9}}]},"18":{"line":427,"type":"if","locations":[{"start":{"line":427,"column":9},"end":{"line":427,"column":9}},{"start":{"line":427,"column":9},"end":{"line":427,"column":9}}]},"19":{"line":443,"type":"if","locations":[{"start":{"line":443,"column":4},"end":{"line":443,"column":4}},{"start":{"line":443,"column":4},"end":{"line":443,"column":4}}]},"20":{"line":445,"type":"if","locations":[{"start":{"line":445,"column":11},"end":{"line":445,"column":11}},{"start":{"line":445,"column":11},"end":{"line":445,"column":11}}]},"21":{"line":451,"type":"if","locations":[{"start":{"line":451,"column":4},"end":{"line":451,"column":4}},{"start":{"line":451,"column":4},"end":{"line":451,"column":4}}]},"22":{"line":456,"type":"if","locations":[{"start":{"line":456,"column":8},"end":{"line":456,"column":8}},{"start":{"line":456,"column":8},"end":{"line":456,"column":8}}]},"23":{"line":464,"type":"cond-expr","locations":[{"start":{"line":464,"column":43},"end":{"line":464,"column":52}},{"start":{"line":464,"column":55},"end":{"line":464,"column":59}}]},"24":{"line":477,"type":"if","locations":[{"start":{"line":477,"column":4},"end":{"line":477,"column":4}},{"start":{"line":477,"column":4},"end":{"line":477,"column":4}}]},"25":{"line":477,"type":"binary-expr","locations":[{"start":{"line":477,"column":8},"end":{"line":477,"column":23}},{"start":{"line":477,"column":27},"end":{"line":477,"column":38}},{"start":{"line":477,"column":42},"end":{"line":477,"column":56}}]},"26":{"line":506,"type":"if","locations":[{"start":{"line":506,"column":2},"end":{"line":506,"column":2}},{"start":{"line":506,"column":2},"end":{"line":506,"column":2}}]},"27":{"line":511,"type":"if","locations":[{"start":{"line":511,"column":2},"end":{"line":511,"column":2}},{"start":{"line":511,"column":2},"end":{"line":511,"column":2}}]},"28":{"line":521,"type":"if","locations":[{"start":{"line":521,"column":4},"end":{"line":521,"column":4}},{"start":{"line":521,"column":4},"end":{"line":521,"column":4}}]},"29":{"line":549,"type":"if","locations":[{"start":{"line":549,"column":2},"end":{"line":549,"column":2}},{"start":{"line":549,"column":2},"end":{"line":549,"column":2}}]},"30":{"line":553,"type":"if","locations":[{"start":{"line":553,"column":2},"end":{"line":553,"column":2}},{"start":{"line":553,"column":2},"end":{"line":553,"column":2}}]},"31":{"line":635,"type":"if","locations":[{"start":{"line":635,"column":2},"end":{"line":635,"column":2}},{"start":{"line":635,"column":2},"end":{"line":635,"column":2}}]},"32":{"line":637,"type":"if","locations":[{"start":{"line":637,"column":9},"end":{"line":637,"column":9}},{"start":{"line":637,"column":9},"end":{"line":637,"column":9}}]},"33":{"line":639,"type":"if","locations":[{"start":{"line":639,"column":9},"end":{"line":639,"column":9}},{"start":{"line":639,"column":9},"end":{"line":639,"column":9}}]},"34":{"line":645,"type":"if","locations":[{"start":{"line":645,"column":2},"end":{"line":645,"column":2}},{"start":{"line":645,"column":2},"end":{"line":645,"column":2}}]},"35":{"line":649,"type":"if","locations":[{"start":{"line":649,"column":4},"end":{"line":649,"column":4}},{"start":{"line":649,"column":4},"end":{"line":649,"column":4}}]},"36":{"line":656,"type":"if","locations":[{"start":{"line":656,"column":4},"end":{"line":656,"column":4}},{"start":{"line":656,"column":4},"end":{"line":656,"column":4}}]},"37":{"line":672,"type":"if","locations":[{"start":{"line":672,"column":2},"end":{"line":672,"column":2}},{"start":{"line":672,"column":2},"end":{"line":672,"column":2}}]},"38":{"line":674,"type":"if","locations":[{"start":{"line":674,"column":9},"end":{"line":674,"column":9}},{"start":{"line":674,"column":9},"end":{"line":674,"column":9}}]},"39":{"line":675,"type":"if","locations":[{"start":{"line":675,"column":4},"end":{"line":675,"column":4}},{"start":{"line":675,"column":4},"end":{"line":675,"column":4}}]},"40":{"line":684,"type":"if","locations":[{"start":{"line":684,"column":2},"end":{"line":684,"column":2}},{"start":{"line":684,"column":2},"end":{"line":684,"column":2}}]},"41":{"line":690,"type":"if","locations":[{"start":{"line":690,"column":4},"end":{"line":690,"column":4}},{"start":{"line":690,"column":4},"end":{"line":690,"column":4}}]},"42":{"line":694,"type":"if","locations":[{"start":{"line":694,"column":4},"end":{"line":694,"column":4}},{"start":{"line":694,"column":4},"end":{"line":694,"column":4}}]},"43":{"line":696,"type":"if","locations":[{"start":{"line":696,"column":11},"end":{"line":696,"column":11}},{"start":{"line":696,"column":11},"end":{"line":696,"column":11}}]},"44":{"line":742,"type":"binary-expr","locations":[{"start":{"line":742,"column":10},"end":{"line":742,"column":28}},{"start":{"line":742,"column":34},"end":{"line":742,"column":53}}]},"45":{"line":743,"type":"cond-expr","locations":[{"start":{"line":743,"column":44},"end":{"line":743,"column":75}},{"start":{"line":744,"column":44},"end":{"line":744,"column":76}}]},"46":{"line":755,"type":"if","locations":[{"start":{"line":755,"column":4},"end":{"line":755,"column":4}},{"start":{"line":755,"column":4},"end":{"line":755,"column":4}}]},"47":{"line":781,"type":"if","locations":[{"start":{"line":781,"column":2},"end":{"line":781,"column":2}},{"start":{"line":781,"column":2},"end":{"line":781,"column":2}}]},"48":{"line":781,"type":"binary-expr","locations":[{"start":{"line":781,"column":6},"end":{"line":781,"column":30}},{"start":{"line":781,"column":34},"end":{"line":781,"column":63}}]},"49":{"line":791,"type":"if","locations":[{"start":{"line":791,"column":6},"end":{"line":791,"column":6}},{"start":{"line":791,"column":6},"end":{"line":791,"column":6}}]},"50":{"line":802,"type":"if","locations":[{"start":{"line":802,"column":6},"end":{"line":802,"column":6}},{"start":{"line":802,"column":6},"end":{"line":802,"column":6}}]},"51":{"line":803,"type":"binary-expr","locations":[{"start":{"line":803,"column":38},"end":{"line":803,"column":42}},{"start":{"line":803,"column":46},"end":{"line":803,"column":68}}]},"52":{"line":834,"type":"binary-expr","locations":[{"start":{"line":834,"column":10},"end":{"line":834,"column":28}},{"start":{"line":834,"column":34},"end":{"line":834,"column":53}}]},"53":{"line":835,"type":"cond-expr","locations":[{"start":{"line":835,"column":44},"end":{"line":835,"column":75}},{"start":{"line":836,"column":44},"end":{"line":836,"column":76}}]},"54":{"line":855,"type":"if","locations":[{"start":{"line":855,"column":4},"end":{"line":855,"column":4}},{"start":{"line":855,"column":4},"end":{"line":855,"column":4}}]},"55":{"line":856,"type":"if","locations":[{"start":{"line":856,"column":6},"end":{"line":856,"column":6}},{"start":{"line":856,"column":6},"end":{"line":856,"column":6}}]},"56":{"line":873,"type":"if","locations":[{"start":{"line":873,"column":2},"end":{"line":873,"column":2}},{"start":{"line":873,"column":2},"end":{"line":873,"column":2}}]},"57":{"line":874,"type":"if","locations":[{"start":{"line":874,"column":4},"end":{"line":874,"column":4}},{"start":{"line":874,"column":4},"end":{"line":874,"column":4}}]},"58":{"line":874,"type":"binary-expr","locations":[{"start":{"line":874,"column":9},"end":{"line":874,"column":38}},{"start":{"line":874,"column":44},"end":{"line":874,"column":78}}]},"59":{"line":884,"type":"if","locations":[{"start":{"line":884,"column":7},"end":{"line":884,"column":7}},{"start":{"line":884,"column":7},"end":{"line":884,"column":7}}]},"60":{"line":884,"type":"binary-expr","locations":[{"start":{"line":884,"column":12},"end":{"line":884,"column":36}},{"start":{"line":884,"column":42},"end":{"line":884,"column":71}}]},"61":{"line":898,"type":"if","locations":[{"start":{"line":898,"column":2},"end":{"line":898,"column":2}},{"start":{"line":898,"column":2},"end":{"line":898,"column":2}}]},"62":{"line":898,"type":"binary-expr","locations":[{"start":{"line":898,"column":6},"end":{"line":898,"column":22}},{"start":{"line":898,"column":27},"end":{"line":898,"column":50}},{"start":{"line":898,"column":54},"end":{"line":898,"column":82}}]}}},"/data/upstream/node-http2/lib/connection.js":{"path":"/data/upstream/node-http2/lib/connection.js","s":{"1":1,"2":1,"3":1,"4":1,"5":45,"6":45,"7":45,"8":45,"9":45,"10":45,"11":45,"12":1,"13":1,"14":1,"15":45,"16":45,"17":45,"18":45,"19":45,"20":45,"21":45,"22":45,"23":1,"24":42,"25":42,"26":42,"27":0,"28":0,"29":1,"30":18,"31":18,"32":18,"33":18,"34":0,"35":1,"36":89,"37":43,"38":43,"39":43,"40":43,"41":0,"42":1,"43":45,"44":23,"45":23,"46":22,"47":22,"48":0,"49":0,"50":0,"51":45,"52":45,"53":45,"54":45,"55":45,"56":45,"57":45,"58":1,"59":45,"60":45,"61":45,"62":45,"63":45,"64":1,"65":75,"66":27,"67":48,"68":1,"69":10,"70":10,"71":10,"72":10,"73":10,"74":6,"75":10,"76":1,"77":22,"78":22,"79":22,"80":22,"81":22,"82":22,"83":1,"84":18,"85":18,"86":18,"87":18,"88":1,"89":45,"90":45,"91":45,"92":1,"93":231,"94":4,"95":227,"96":97,"97":130,"98":101,"99":101,"100":130,"101":97,"102":97,"103":97,"104":64,"105":64,"106":64,"107":113,"108":146,"109":146,"110":146,"111":89,"112":57,"113":0,"114":0,"115":57,"116":57,"117":27,"118":57,"119":5,"120":5,"121":57,"122":57,"123":57,"124":57,"125":57,"126":0,"127":113,"128":113,"129":97,"130":69,"131":97,"132":1,"133":98,"134":98,"135":36,"136":36,"137":98,"138":98,"139":17,"140":98,"141":5,"142":98,"143":98,"144":98,"145":1,"146":1,"147":45,"148":45,"149":45,"150":1,"151":36,"152":36,"153":0,"154":0,"155":1,"156":36,"157":54,"158":1,"159":45,"160":45,"161":70,"162":1,"163":45,"164":45,"165":45,"166":45,"167":1,"168":2,"169":2,"170":2,"171":32,"172":2,"173":1,"174":2,"175":2,"176":2,"177":2,"178":2,"179":1,"180":5,"181":3,"182":3,"183":2,"184":2,"185":2,"186":2,"187":2,"188":1,"189":2,"190":2,"191":1,"192":3,"193":0,"194":0,"195":3,"196":3,"197":3,"198":3,"199":1,"200":2,"201":2,"202":2,"203":2,"204":0,"205":1,"206":45,"207":45,"208":45,"209":45,"210":25,"211":45,"212":45,"213":45,"214":45,"215":45,"216":1,"217":1,"218":41,"219":1,"220":1,"221":40,"222":40,"223":40,"224":47,"225":1,"226":24,"227":22,"228":22,"229":2,"230":1,"231":1,"232":1,"233":20,"234":20,"235":20,"236":20,"237":0,"238":0,"239":0},"b":{"1":[42,0],"2":[42,6,2,0],"3":[18,0],"4":[0,18],"5":[43,46],"6":[43,0],"7":[0,43],"8":[23,22],"9":[22,0],"10":[22,22],"11":[27,48],"12":[6,4],"13":[4,227],"14":[97,130],"15":[101,29],"16":[146,0],"17":[89,57],"18":[0,57],"19":[27,30],"20":[27,18],"21":[5,52],"22":[0,57],"23":[69,28],"24":[36,62],"25":[17,81],"26":[5,93],"27":[45,20],"28":[36,0],"29":[36,36],"30":[3,2],"31":[2,1],"32":[2,0],"33":[0,3],"34":[3,2],"35":[0,2],"36":[25,20],"37":[1,40],"38":[41,2],"39":[22,2],"40":[1,1],"41":[20,0],"42":[0,0]},"f":{"1":45,"2":45,"3":42,"4":18,"5":89,"6":45,"7":45,"8":75,"9":10,"10":22,"11":18,"12":45,"13":231,"14":98,"15":45,"16":36,"17":36,"18":45,"19":45,"20":2,"21":2,"22":5,"23":3,"24":2,"25":45,"26":45,"27":40,"28":20,"29":41,"30":47,"31":24,"32":20,"33":20},"fnMap":{"1":{"name":"Connection","line":39,"loc":{"start":{"line":39,"column":0},"end":{"line":39,"column":50}}},"2":{"name":"_initializeStreamManagement","line":100,"loc":{"start":{"line":100,"column":51},"end":{"line":100,"column":103}}},"3":{"name":"_writeControlFrame","line":123,"loc":{"start":{"line":123,"column":42},"end":{"line":123,"column":77}}},"4":{"name":"_updateStreamLimit","line":135,"loc":{"start":{"line":135,"column":42},"end":{"line":135,"column":86}}},"5":{"name":"_changeStreamCount","line":144,"loc":{"start":{"line":144,"column":42},"end":{"line":144,"column":78}}},"6":{"name":"_allocateId","line":164,"loc":{"start":{"line":164,"column":35},"end":{"line":164,"column":68}}},"7":{"name":"_allocatePriority","line":199,"loc":{"start":{"line":199,"column":41},"end":{"line":199,"column":76}}},"8":{"name":"_insert","line":207,"loc":{"start":{"line":207,"column":31},"end":{"line":207,"column":66}}},"9":{"name":"_reprioritize","line":215,"loc":{"start":{"line":215,"column":37},"end":{"line":215,"column":78}}},"10":{"name":"_createIncomingStream","line":229,"loc":{"start":{"line":229,"column":45},"end":{"line":229,"column":80}}},"11":{"name":"createStream","line":241,"loc":{"start":{"line":241,"column":36},"end":{"line":241,"column":60}}},"12":{"name":"_initializeMultiplexing","line":254,"loc":{"start":{"line":254,"column":47},"end":{"line":254,"column":82}}},"13":{"name":"_send","line":262,"loc":{"start":{"line":262,"column":29},"end":{"line":262,"column":55}}},"14":{"name":"_receive","line":346,"loc":{"start":{"line":346,"column":32},"end":{"line":346,"column":63}}},"15":{"name":"_initializeSettingsManagement","line":384,"loc":{"start":{"line":384,"column":53},"end":{"line":384,"column":102}}},"16":{"name":"_onFirstFrameReceived","line":394,"loc":{"start":{"line":394,"column":45},"end":{"line":394,"column":83}}},"17":{"name":"_receiveSettings","line":404,"loc":{"start":{"line":404,"column":40},"end":{"line":404,"column":73}}},"18":{"name":"set","line":411,"loc":{"start":{"line":411,"column":27},"end":{"line":411,"column":50}}},"19":{"name":"_initializeLifecycleManagement","line":433,"loc":{"start":{"line":433,"column":54},"end":{"line":433,"column":96}}},"20":{"name":"_generatePingId","line":441,"loc":{"start":{"line":441,"column":39},"end":{"line":441,"column":66}}},"21":{"name":"ping","line":452,"loc":{"start":{"line":452,"column":28},"end":{"line":452,"column":52}}},"22":{"name":"_receivePing","line":469,"loc":{"start":{"line":469,"column":36},"end":{"line":469,"column":65}}},"23":{"name":"close","line":497,"loc":{"start":{"line":497,"column":29},"end":{"line":497,"column":51}}},"24":{"name":"_receiveGoaway","line":515,"loc":{"start":{"line":515,"column":38},"end":{"line":515,"column":69}}},"25":{"name":"_initializeFlowControl","line":527,"loc":{"start":{"line":527,"column":46},"end":{"line":527,"column":80}}},"26":{"name":"(anonymous_26)","line":530,"loc":{"start":{"line":530,"column":24},"end":{"line":530,"column":41}}},"27":{"name":"noop","line":539,"loc":{"start":{"line":539,"column":49},"end":{"line":539,"column":65}}},"28":{"name":"noop","line":540,"loc":{"start":{"line":540,"column":57},"end":{"line":540,"column":73}}},"29":{"name":"_setInitialStreamWindowSize","line":550,"loc":{"start":{"line":550,"column":51},"end":{"line":550,"column":94}}},"30":{"name":"(anonymous_30)","line":557,"loc":{"start":{"line":557,"column":28},"end":{"line":557,"column":45}}},"31":{"name":"_setLocalFlowControl","line":565,"loc":{"start":{"line":565,"column":44},"end":{"line":565,"column":83}}},"32":{"name":"_setRemoteFlowControl","line":575,"loc":{"start":{"line":575,"column":45},"end":{"line":575,"column":85}}},"33":{"name":"(anonymous_33)","line":578,"loc":{"start":{"line":578,"column":28},"end":{"line":578,"column":45}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":31}},"2":{"start":{"line":10,"column":0},"end":{"line":10,"column":34}},"3":{"start":{"line":12,"column":0},"end":{"line":12,"column":32}},"4":{"start":{"line":39,"column":0},"end":{"line":60,"column":1}},"5":{"start":{"line":41,"column":2},"end":{"line":41,"column":21}},"6":{"start":{"line":44,"column":2},"end":{"line":44,"column":53}},"7":{"start":{"line":47,"column":2},"end":{"line":47,"column":50}},"8":{"start":{"line":50,"column":2},"end":{"line":50,"column":40}},"9":{"start":{"line":53,"column":2},"end":{"line":53,"column":32}},"10":{"start":{"line":56,"column":2},"end":{"line":56,"column":47}},"11":{"start":{"line":59,"column":2},"end":{"line":59,"column":33}},"12":{"start":{"line":61,"column":0},"end":{"line":61,"column":93}},"13":{"start":{"line":97,"column":0},"end":{"line":97,"column":41}},"14":{"start":{"line":100,"column":0},"end":{"line":119,"column":2}},"15":{"start":{"line":104,"column":2},"end":{"line":104,"column":23}},"16":{"start":{"line":105,"column":2},"end":{"line":105,"column":30}},"17":{"start":{"line":108,"column":2},"end":{"line":108,"column":37}},"18":{"start":{"line":109,"column":2},"end":{"line":109,"column":31}},"19":{"start":{"line":112,"column":2},"end":{"line":112,"column":83}},"20":{"start":{"line":116,"column":2},"end":{"line":116,"column":35}},"21":{"start":{"line":117,"column":2},"end":{"line":117,"column":31}},"22":{"start":{"line":118,"column":2},"end":{"line":118,"column":80}},"23":{"start":{"line":123,"column":0},"end":{"line":132,"column":2}},"24":{"start":{"line":124,"column":2},"end":{"line":131,"column":3}},"25":{"start":{"line":126,"column":4},"end":{"line":126,"column":74}},"26":{"start":{"line":127,"column":4},"end":{"line":127,"column":33}},"27":{"start":{"line":129,"column":4},"end":{"line":129,"column":72}},"28":{"start":{"line":130,"column":4},"end":{"line":130,"column":41}},"29":{"start":{"line":135,"column":0},"end":{"line":142,"column":2}},"30":{"start":{"line":136,"column":2},"end":{"line":136,"column":85}},"31":{"start":{"line":137,"column":2},"end":{"line":137,"column":62}},"32":{"start":{"line":138,"column":2},"end":{"line":138,"column":37}},"33":{"start":{"line":139,"column":2},"end":{"line":141,"column":3}},"34":{"start":{"line":140,"column":4},"end":{"line":140,"column":24}},"35":{"start":{"line":144,"column":0},"end":{"line":154,"column":2}},"36":{"start":{"line":145,"column":2},"end":{"line":153,"column":3}},"37":{"start":{"line":146,"column":4},"end":{"line":147,"column":53}},"38":{"start":{"line":148,"column":4},"end":{"line":148,"column":63}},"39":{"start":{"line":149,"column":4},"end":{"line":149,"column":36}},"40":{"start":{"line":150,"column":4},"end":{"line":152,"column":5}},"41":{"start":{"line":151,"column":6},"end":{"line":151,"column":26}},"42":{"start":{"line":164,"column":0},"end":{"line":196,"column":2}},"43":{"start":{"line":166,"column":2},"end":{"line":182,"column":3}},"44":{"start":{"line":167,"column":4},"end":{"line":167,"column":28}},"45":{"start":{"line":168,"column":4},"end":{"line":168,"column":28}},"46":{"start":{"line":172,"column":7},"end":{"line":182,"column":3}},"47":{"start":{"line":173,"column":4},"end":{"line":173,"column":34}},"48":{"start":{"line":178,"column":4},"end":{"line":179,"column":51}},"49":{"start":{"line":180,"column":4},"end":{"line":180,"column":41}},"50":{"start":{"line":181,"column":4},"end":{"line":181,"column":21}},"51":{"start":{"line":184,"column":2},"end":{"line":184,"column":35}},"52":{"start":{"line":187,"column":2},"end":{"line":187,"column":77}},"53":{"start":{"line":188,"column":2},"end":{"line":188,"column":31}},"54":{"start":{"line":189,"column":2},"end":{"line":189,"column":17}},"55":{"start":{"line":190,"column":2},"end":{"line":190,"column":38}},"56":{"start":{"line":193,"column":2},"end":{"line":193,"column":52}},"57":{"start":{"line":195,"column":2},"end":{"line":195,"column":12}},"58":{"start":{"line":199,"column":0},"end":{"line":205,"column":2}},"59":{"start":{"line":200,"column":2},"end":{"line":200,"column":68}},"60":{"start":{"line":201,"column":2},"end":{"line":201,"column":41}},"61":{"start":{"line":202,"column":2},"end":{"line":202,"column":63}},"62":{"start":{"line":203,"column":2},"end":{"line":203,"column":65}},"63":{"start":{"line":204,"column":2},"end":{"line":204,"column":22}},"64":{"start":{"line":207,"column":0},"end":{"line":213,"column":2}},"65":{"start":{"line":208,"column":2},"end":{"line":212,"column":3}},"66":{"start":{"line":209,"column":4},"end":{"line":209,"column":50}},"67":{"start":{"line":211,"column":4},"end":{"line":211,"column":48}},"68":{"start":{"line":215,"column":0},"end":{"line":225,"column":2}},"69":{"start":{"line":216,"column":2},"end":{"line":216,"column":56}},"70":{"start":{"line":217,"column":2},"end":{"line":217,"column":37}},"71":{"start":{"line":218,"column":2},"end":{"line":218,"column":23}},"72":{"start":{"line":219,"column":2},"end":{"line":219,"column":26}},"73":{"start":{"line":220,"column":2},"end":{"line":222,"column":3}},"74":{"start":{"line":221,"column":4},"end":{"line":221,"column":52}},"75":{"start":{"line":224,"column":2},"end":{"line":224,"column":33}},"76":{"start":{"line":229,"column":0},"end":{"line":238,"column":2}},"77":{"start":{"line":230,"column":2},"end":{"line":230,"column":61}},"78":{"start":{"line":232,"column":2},"end":{"line":232,"column":37}},"79":{"start":{"line":233,"column":2},"end":{"line":233,"column":31}},"80":{"start":{"line":234,"column":2},"end":{"line":234,"column":33}},"81":{"start":{"line":235,"column":2},"end":{"line":235,"column":34}},"82":{"start":{"line":237,"column":2},"end":{"line":237,"column":16}},"83":{"start":{"line":241,"column":0},"end":{"line":249,"column":2}},"84":{"start":{"line":242,"column":2},"end":{"line":242,"column":51}},"85":{"start":{"line":245,"column":2},"end":{"line":245,"column":37}},"86":{"start":{"line":246,"column":2},"end":{"line":246,"column":33}},"87":{"start":{"line":248,"column":2},"end":{"line":248,"column":16}},"88":{"start":{"line":254,"column":0},"end":{"line":258,"column":2}},"89":{"start":{"line":255,"column":2},"end":{"line":255,"column":59}},"90":{"start":{"line":256,"column":2},"end":{"line":256,"column":30}},"91":{"start":{"line":257,"column":2},"end":{"line":257,"column":35}},"92":{"start":{"line":262,"column":0},"end":{"line":342,"column":2}},"93":{"start":{"line":264,"column":2},"end":{"line":266,"column":3}},"94":{"start":{"line":265,"column":4},"end":{"line":265,"column":11}},"95":{"start":{"line":269,"column":2},"end":{"line":277,"column":3}},"96":{"start":{"line":270,"column":4},"end":{"line":270,"column":32}},"97":{"start":{"line":272,"column":4},"end":{"line":275,"column":5}},"98":{"start":{"line":273,"column":6},"end":{"line":273,"column":33}},"99":{"start":{"line":274,"column":6},"end":{"line":274,"column":48}},"100":{"start":{"line":276,"column":4},"end":{"line":276,"column":11}},"101":{"start":{"line":279,"column":2},"end":{"line":279,"column":62}},"102":{"start":{"line":282,"column":0},"end":{"line":334,"column":3}},"103":{"start":{"line":283,"column":2},"end":{"line":334,"column":3}},"104":{"start":{"line":284,"column":4},"end":{"line":284,"column":50}},"105":{"start":{"line":285,"column":4},"end":{"line":285,"column":24}},"106":{"start":{"line":298,"column":4},"end":{"line":333,"column":5}},"107":{"start":{"line":299,"column":6},"end":{"line":329,"column":7}},"108":{"start":{"line":300,"column":8},"end":{"line":300,"column":35}},"109":{"start":{"line":301,"column":8},"end":{"line":301,"column":81}},"110":{"start":{"line":303,"column":8},"end":{"line":308,"column":9}},"111":{"start":{"line":304,"column":10},"end":{"line":304,"column":19}},"112":{"start":{"line":305,"column":15},"end":{"line":308,"column":9}},"113":{"start":{"line":306,"column":10},"end":{"line":306,"column":41}},"114":{"start":{"line":307,"column":10},"end":{"line":307,"column":19}},"115":{"start":{"line":310,"column":8},"end":{"line":310,"column":32}},"116":{"start":{"line":312,"column":8},"end":{"line":314,"column":9}},"117":{"start":{"line":313,"column":10},"end":{"line":313,"column":63}},"118":{"start":{"line":316,"column":8},"end":{"line":319,"column":9}},"119":{"start":{"line":317,"column":10},"end":{"line":317,"column":56}},"120":{"start":{"line":318,"column":10},"end":{"line":318,"column":74}},"121":{"start":{"line":321,"column":8},"end":{"line":321,"column":82}},"122":{"start":{"line":322,"column":8},"end":{"line":322,"column":42}},"123":{"start":{"line":323,"column":8},"end":{"line":323,"column":52}},"124":{"start":{"line":325,"column":8},"end":{"line":325,"column":36}},"125":{"start":{"line":326,"column":8},"end":{"line":328,"column":9}},"126":{"start":{"line":327,"column":10},"end":{"line":327,"column":30}},"127":{"start":{"line":331,"column":6},"end":{"line":331,"column":26}},"128":{"start":{"line":332,"column":6},"end":{"line":332,"column":22}},"129":{"start":{"line":337,"column":2},"end":{"line":339,"column":3}},"130":{"start":{"line":338,"column":4},"end":{"line":338,"column":47}},"131":{"start":{"line":341,"column":2},"end":{"line":341,"column":90}},"132":{"start":{"line":346,"column":0},"end":{"line":374,"column":2}},"133":{"start":{"line":347,"column":2},"end":{"line":347,"column":65}},"134":{"start":{"line":350,"column":2},"end":{"line":353,"column":3}},"135":{"start":{"line":351,"column":4},"end":{"line":351,"column":36}},"136":{"start":{"line":352,"column":4},"end":{"line":352,"column":38}},"137":{"start":{"line":356,"column":2},"end":{"line":356,"column":45}},"138":{"start":{"line":359,"column":2},"end":{"line":361,"column":3}},"139":{"start":{"line":360,"column":4},"end":{"line":360,"column":54}},"140":{"start":{"line":364,"column":2},"end":{"line":366,"column":3}},"141":{"start":{"line":365,"column":4},"end":{"line":365,"column":78}},"142":{"start":{"line":368,"column":2},"end":{"line":368,"column":58}},"143":{"start":{"line":371,"column":2},"end":{"line":371,"column":31}},"144":{"start":{"line":373,"column":2},"end":{"line":373,"column":9}},"145":{"start":{"line":379,"column":0},"end":{"line":381,"column":2}},"146":{"start":{"line":384,"column":0},"end":{"line":391,"column":2}},"147":{"start":{"line":386,"column":2},"end":{"line":386,"column":88}},"148":{"start":{"line":387,"column":2},"end":{"line":387,"column":40}},"149":{"start":{"line":390,"column":2},"end":{"line":390,"column":45}},"150":{"start":{"line":394,"column":0},"end":{"line":401,"column":2}},"151":{"start":{"line":395,"column":2},"end":{"line":400,"column":3}},"152":{"start":{"line":396,"column":4},"end":{"line":396,"column":92}},"153":{"start":{"line":398,"column":4},"end":{"line":398,"column":97}},"154":{"start":{"line":399,"column":4},"end":{"line":399,"column":23}},"155":{"start":{"line":404,"column":0},"end":{"line":408,"column":2}},"156":{"start":{"line":405,"column":2},"end":{"line":407,"column":3}},"157":{"start":{"line":406,"column":4},"end":{"line":406,"column":57}},"158":{"start":{"line":411,"column":0},"end":{"line":421,"column":2}},"159":{"start":{"line":412,"column":2},"end":{"line":417,"column":5}},"160":{"start":{"line":418,"column":2},"end":{"line":420,"column":3}},"161":{"start":{"line":419,"column":4},"end":{"line":419,"column":49}},"162":{"start":{"line":433,"column":0},"end":{"line":438,"column":2}},"163":{"start":{"line":434,"column":2},"end":{"line":434,"column":19}},"164":{"start":{"line":435,"column":2},"end":{"line":435,"column":37}},"165":{"start":{"line":436,"column":2},"end":{"line":436,"column":41}},"166":{"start":{"line":437,"column":2},"end":{"line":437,"column":23}},"167":{"start":{"line":441,"column":0},"end":{"line":449,"column":2}},"168":{"start":{"line":442,"column":2},"end":{"line":447,"column":29}},"169":{"start":{"line":443,"column":4},"end":{"line":443,"column":16}},"170":{"start":{"line":444,"column":4},"end":{"line":446,"column":5}},"171":{"start":{"line":445,"column":6},"end":{"line":445,"column":54}},"172":{"start":{"line":448,"column":2},"end":{"line":448,"column":12}},"173":{"start":{"line":452,"column":0},"end":{"line":466,"column":2}},"174":{"start":{"line":453,"column":2},"end":{"line":453,"column":34}},"175":{"start":{"line":454,"column":2},"end":{"line":454,"column":35}},"176":{"start":{"line":455,"column":2},"end":{"line":455,"column":29}},"177":{"start":{"line":457,"column":2},"end":{"line":457,"column":51}},"178":{"start":{"line":458,"column":2},"end":{"line":465,"column":5}},"179":{"start":{"line":469,"column":0},"end":{"line":494,"column":2}},"180":{"start":{"line":470,"column":2},"end":{"line":493,"column":3}},"181":{"start":{"line":471,"column":4},"end":{"line":471,"column":40}},"182":{"start":{"line":472,"column":4},"end":{"line":481,"column":5}},"183":{"start":{"line":473,"column":6},"end":{"line":473,"column":76}},"184":{"start":{"line":474,"column":6},"end":{"line":474,"column":37}},"185":{"start":{"line":475,"column":6},"end":{"line":477,"column":7}},"186":{"start":{"line":476,"column":8},"end":{"line":476,"column":19}},"187":{"start":{"line":478,"column":6},"end":{"line":478,"column":29}},"188":{"start":{"line":480,"column":6},"end":{"line":480,"column":71}},"189":{"start":{"line":484,"column":4},"end":{"line":484,"column":61}},"190":{"start":{"line":485,"column":4},"end":{"line":492,"column":7}},"191":{"start":{"line":497,"column":0},"end":{"line":513,"column":2}},"192":{"start":{"line":498,"column":2},"end":{"line":501,"column":3}},"193":{"start":{"line":499,"column":4},"end":{"line":499,"column":67}},"194":{"start":{"line":500,"column":4},"end":{"line":500,"column":11}},"195":{"start":{"line":503,"column":2},"end":{"line":503,"column":62}},"196":{"start":{"line":504,"column":2},"end":{"line":510,"column":5}},"197":{"start":{"line":511,"column":2},"end":{"line":511,"column":18}},"198":{"start":{"line":512,"column":2},"end":{"line":512,"column":22}},"199":{"start":{"line":515,"column":0},"end":{"line":522,"column":2}},"200":{"start":{"line":516,"column":2},"end":{"line":516,"column":77}},"201":{"start":{"line":517,"column":2},"end":{"line":517,"column":18}},"202":{"start":{"line":518,"column":2},"end":{"line":518,"column":22}},"203":{"start":{"line":519,"column":2},"end":{"line":521,"column":3}},"204":{"start":{"line":520,"column":4},"end":{"line":520,"column":40}},"205":{"start":{"line":527,"column":0},"end":{"line":541,"column":2}},"206":{"start":{"line":529,"column":2},"end":{"line":529,"column":61}},"207":{"start":{"line":530,"column":2},"end":{"line":535,"column":5}},"208":{"start":{"line":531,"column":4},"end":{"line":531,"column":68}},"209":{"start":{"line":532,"column":4},"end":{"line":534,"column":5}},"210":{"start":{"line":533,"column":6},"end":{"line":533,"column":49}},"211":{"start":{"line":536,"column":2},"end":{"line":536,"column":86}},"212":{"start":{"line":537,"column":2},"end":{"line":537,"column":80}},"213":{"start":{"line":538,"column":2},"end":{"line":538,"column":79}},"214":{"start":{"line":539,"column":2},"end":{"line":539,"column":68}},"215":{"start":{"line":540,"column":2},"end":{"line":540,"column":76}},"216":{"start":{"line":544,"column":0},"end":{"line":544,"column":39}},"217":{"start":{"line":550,"column":0},"end":{"line":561,"column":2}},"218":{"start":{"line":551,"column":2},"end":{"line":560,"column":3}},"219":{"start":{"line":552,"column":4},"end":{"line":552,"column":112}},"220":{"start":{"line":553,"column":4},"end":{"line":553,"column":45}},"221":{"start":{"line":555,"column":4},"end":{"line":555,"column":76}},"222":{"start":{"line":556,"column":4},"end":{"line":556,"column":41}},"223":{"start":{"line":557,"column":4},"end":{"line":559,"column":7}},"224":{"start":{"line":558,"column":6},"end":{"line":558,"column":45}},"225":{"start":{"line":565,"column":0},"end":{"line":573,"column":2}},"226":{"start":{"line":566,"column":2},"end":{"line":572,"column":3}},"227":{"start":{"line":567,"column":4},"end":{"line":567,"column":35}},"228":{"start":{"line":568,"column":4},"end":{"line":568,"column":47}},"229":{"start":{"line":569,"column":9},"end":{"line":572,"column":3}},"230":{"start":{"line":570,"column":4},"end":{"line":570,"column":81}},"231":{"start":{"line":571,"column":4},"end":{"line":571,"column":45}},"232":{"start":{"line":575,"column":0},"end":{"line":585,"column":2}},"233":{"start":{"line":576,"column":2},"end":{"line":584,"column":3}},"234":{"start":{"line":577,"column":4},"end":{"line":577,"column":36}},"235":{"start":{"line":578,"column":4},"end":{"line":580,"column":7}},"236":{"start":{"line":579,"column":6},"end":{"line":579,"column":49}},"237":{"start":{"line":581,"column":9},"end":{"line":584,"column":3}},"238":{"start":{"line":582,"column":4},"end":{"line":582,"column":81}},"239":{"start":{"line":583,"column":4},"end":{"line":583,"column":81}}},"branchMap":{"1":{"line":124,"type":"if","locations":[{"start":{"line":124,"column":2},"end":{"line":124,"column":2}},{"start":{"line":124,"column":2},"end":{"line":124,"column":2}}]},"2":{"line":124,"type":"binary-expr","locations":[{"start":{"line":124,"column":7},"end":{"line":124,"column":32}},{"start":{"line":124,"column":38},"end":{"line":124,"column":59}},{"start":{"line":125,"column":7},"end":{"line":125,"column":30}},{"start":{"line":125,"column":36},"end":{"line":125,"column":66}}]},"3":{"line":136,"type":"binary-expr","locations":[{"start":{"line":136,"column":16},"end":{"line":136,"column":43}},{"start":{"line":136,"column":49},"end":{"line":136,"column":83}}]},"4":{"line":139,"type":"if","locations":[{"start":{"line":139,"column":2},"end":{"line":139,"column":2}},{"start":{"line":139,"column":2},"end":{"line":139,"column":2}}]},"5":{"line":145,"type":"if","locations":[{"start":{"line":145,"column":2},"end":{"line":145,"column":2}},{"start":{"line":145,"column":2},"end":{"line":145,"column":2}}]},"6":{"line":148,"type":"binary-expr","locations":[{"start":{"line":148,"column":18},"end":{"line":148,"column":45}},{"start":{"line":148,"column":51},"end":{"line":148,"column":61}}]},"7":{"line":150,"type":"if","locations":[{"start":{"line":150,"column":4},"end":{"line":150,"column":4}},{"start":{"line":150,"column":4},"end":{"line":150,"column":4}}]},"8":{"line":166,"type":"if","locations":[{"start":{"line":166,"column":2},"end":{"line":166,"column":2}},{"start":{"line":166,"column":2},"end":{"line":166,"column":2}}]},"9":{"line":172,"type":"if","locations":[{"start":{"line":172,"column":7},"end":{"line":172,"column":7}},{"start":{"line":172,"column":7},"end":{"line":172,"column":7}}]},"10":{"line":172,"type":"binary-expr","locations":[{"start":{"line":172,"column":12},"end":{"line":172,"column":41}},{"start":{"line":172,"column":47},"end":{"line":172,"column":82}}]},"11":{"line":208,"type":"if","locations":[{"start":{"line":208,"column":2},"end":{"line":208,"column":2}},{"start":{"line":208,"column":2},"end":{"line":208,"column":2}}]},"12":{"line":220,"type":"if","locations":[{"start":{"line":220,"column":2},"end":{"line":220,"column":2}},{"start":{"line":220,"column":2},"end":{"line":220,"column":2}}]},"13":{"line":264,"type":"if","locations":[{"start":{"line":264,"column":2},"end":{"line":264,"column":2}},{"start":{"line":264,"column":2},"end":{"line":264,"column":2}}]},"14":{"line":269,"type":"if","locations":[{"start":{"line":269,"column":2},"end":{"line":269,"column":2}},{"start":{"line":269,"column":2},"end":{"line":269,"column":2}}]},"15":{"line":272,"type":"if","locations":[{"start":{"line":272,"column":4},"end":{"line":272,"column":4}},{"start":{"line":272,"column":4},"end":{"line":272,"column":4}}]},"16":{"line":301,"type":"cond-expr","locations":[{"start":{"line":301,"column":62},"end":{"line":301,"column":74}},{"start":{"line":301,"column":77},"end":{"line":301,"column":79}}]},"17":{"line":303,"type":"if","locations":[{"start":{"line":303,"column":8},"end":{"line":303,"column":8}},{"start":{"line":303,"column":8},"end":{"line":303,"column":8}}]},"18":{"line":305,"type":"if","locations":[{"start":{"line":305,"column":15},"end":{"line":305,"column":15}},{"start":{"line":305,"column":15},"end":{"line":305,"column":15}}]},"19":{"line":312,"type":"if","locations":[{"start":{"line":312,"column":8},"end":{"line":312,"column":8}},{"start":{"line":312,"column":8},"end":{"line":312,"column":8}}]},"20":{"line":313,"type":"binary-expr","locations":[{"start":{"line":313,"column":25},"end":{"line":313,"column":34}},{"start":{"line":313,"column":38},"end":{"line":313,"column":62}}]},"21":{"line":316,"type":"if","locations":[{"start":{"line":316,"column":8},"end":{"line":316,"column":8}},{"start":{"line":316,"column":8},"end":{"line":316,"column":8}}]},"22":{"line":326,"type":"if","locations":[{"start":{"line":326,"column":8},"end":{"line":326,"column":8}},{"start":{"line":326,"column":8},"end":{"line":326,"column":8}}]},"23":{"line":337,"type":"if","locations":[{"start":{"line":337,"column":2},"end":{"line":337,"column":2}},{"start":{"line":337,"column":2},"end":{"line":337,"column":2}}]},"24":{"line":350,"type":"if","locations":[{"start":{"line":350,"column":2},"end":{"line":350,"column":2}},{"start":{"line":350,"column":2},"end":{"line":350,"column":2}}]},"25":{"line":359,"type":"if","locations":[{"start":{"line":359,"column":2},"end":{"line":359,"column":2}},{"start":{"line":359,"column":2},"end":{"line":359,"column":2}}]},"26":{"line":364,"type":"if","locations":[{"start":{"line":364,"column":2},"end":{"line":364,"column":2}},{"start":{"line":364,"column":2},"end":{"line":364,"column":2}}]},"27":{"line":387,"type":"binary-expr","locations":[{"start":{"line":387,"column":11},"end":{"line":387,"column":19}},{"start":{"line":387,"column":23},"end":{"line":387,"column":38}}]},"28":{"line":395,"type":"if","locations":[{"start":{"line":395,"column":2},"end":{"line":395,"column":2}},{"start":{"line":395,"column":2},"end":{"line":395,"column":2}}]},"29":{"line":395,"type":"binary-expr","locations":[{"start":{"line":395,"column":7},"end":{"line":395,"column":25}},{"start":{"line":395,"column":31},"end":{"line":395,"column":56}}]},"30":{"line":470,"type":"if","locations":[{"start":{"line":470,"column":2},"end":{"line":470,"column":2}},{"start":{"line":470,"column":2},"end":{"line":470,"column":2}}]},"31":{"line":472,"type":"if","locations":[{"start":{"line":472,"column":4},"end":{"line":472,"column":4}},{"start":{"line":472,"column":4},"end":{"line":472,"column":4}}]},"32":{"line":475,"type":"if","locations":[{"start":{"line":475,"column":6},"end":{"line":475,"column":6}},{"start":{"line":475,"column":6},"end":{"line":475,"column":6}}]},"33":{"line":498,"type":"if","locations":[{"start":{"line":498,"column":2},"end":{"line":498,"column":2}},{"start":{"line":498,"column":2},"end":{"line":498,"column":2}}]},"34":{"line":509,"type":"binary-expr","locations":[{"start":{"line":509,"column":11},"end":{"line":509,"column":16}},{"start":{"line":509,"column":20},"end":{"line":509,"column":30}}]},"35":{"line":519,"type":"if","locations":[{"start":{"line":519,"column":2},"end":{"line":519,"column":2}},{"start":{"line":519,"column":2},"end":{"line":519,"column":2}}]},"36":{"line":532,"type":"if","locations":[{"start":{"line":532,"column":4},"end":{"line":532,"column":4}},{"start":{"line":532,"column":4},"end":{"line":532,"column":4}}]},"37":{"line":551,"type":"if","locations":[{"start":{"line":551,"column":2},"end":{"line":551,"column":2}},{"start":{"line":551,"column":2},"end":{"line":551,"column":2}}]},"38":{"line":551,"type":"binary-expr","locations":[{"start":{"line":551,"column":7},"end":{"line":551,"column":49}},{"start":{"line":551,"column":55},"end":{"line":551,"column":72}}]},"39":{"line":566,"type":"if","locations":[{"start":{"line":566,"column":2},"end":{"line":566,"column":2}},{"start":{"line":566,"column":2},"end":{"line":566,"column":2}}]},"40":{"line":569,"type":"if","locations":[{"start":{"line":569,"column":9},"end":{"line":569,"column":9}},{"start":{"line":569,"column":9},"end":{"line":569,"column":9}}]},"41":{"line":576,"type":"if","locations":[{"start":{"line":576,"column":2},"end":{"line":576,"column":2}},{"start":{"line":576,"column":2},"end":{"line":576,"column":2}}]},"42":{"line":581,"type":"if","locations":[{"start":{"line":581,"column":9},"end":{"line":581,"column":9}},{"start":{"line":581,"column":9},"end":{"line":581,"column":9}}]}}},"/data/upstream/node-http2/lib/flow.js":{"path":"/data/upstream/node-http2/lib/flow.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":164,"7":164,"8":164,"9":164,"10":164,"11":164,"12":164,"13":1,"14":1,"15":1,"16":1,"17":281,"18":63,"19":281,"20":111,"21":111,"22":111,"23":13,"24":111,"25":170,"26":281,"27":6,"28":1,"29":13,"30":13,"31":7,"32":7,"33":1,"34":45,"35":45,"36":1,"37":1,"38":1,"39":234,"40":217,"41":17,"42":8,"43":8,"44":9,"45":9,"46":7,"47":8,"48":8,"49":9,"50":1,"51":1,"52":627,"53":130,"54":497,"55":0,"56":497,"57":497,"58":497,"59":497,"60":497,"61":405,"62":193,"63":405,"64":92,"65":0,"66":0,"67":0,"68":92,"69":92,"70":92,"71":92,"72":0,"73":92,"74":1,"75":211,"76":211,"77":29,"78":29,"79":29,"80":211,"81":1,"82":212,"83":212,"84":204,"85":8,"86":1,"87":7,"88":7,"89":7,"90":7,"91":1,"92":204,"93":6,"94":198,"95":204,"96":204,"97":203,"98":204,"99":7,"100":204,"101":1,"102":36,"103":36,"104":1,"105":1,"106":88,"107":1,"108":1,"109":87,"110":87,"111":87,"112":1,"113":1,"114":86,"115":1,"116":6,"117":1,"118":52,"119":52,"120":1,"121":1},"b":{"1":[63,218],"2":[281,218],"3":[111,170],"4":[281,143,140],"5":[13,98],"6":[6,275],"7":[281,6,6],"8":[7,6],"9":[13,7,7],"10":[217,17],"11":[8,9],"12":[9,7],"13":[7,2],"14":[8,8,2,2],"15":[130,497],"16":[0,497],"17":[497,0],"18":[497,146],"19":[497,212],"20":[405,92],"21":[497,288,144],"22":[193,212],"23":[0,92],"24":[0,0],"25":[0,92],"26":[29,182],"27":[211,205,52],"28":[212,206,53],"29":[204,8],"30":[212,53],"31":[1,7],"32":[6,198],"33":[203,1],"34":[7,197],"35":[36,36],"36":[1,87],"37":[88,2],"38":[1,86],"39":[87,38],"40":[0,6]},"f":{"1":164,"2":1,"3":281,"4":111,"5":13,"6":45,"7":1,"8":234,"9":627,"10":211,"11":212,"12":204,"13":36,"14":88,"15":6,"16":52,"17":1},"fnMap":{"1":{"name":"Flow","line":63,"loc":{"start":{"line":63,"column":0},"end":{"line":63,"column":29}}},"2":{"name":"_receive","line":79,"loc":{"start":{"line":79,"column":26},"end":{"line":79,"column":61}}},"3":{"name":"_write","line":87,"loc":{"start":{"line":87,"column":24},"end":{"line":87,"column":67}}},"4":{"name":"(anonymous_4)","line":93,"loc":{"start":{"line":93,"column":25},"end":{"line":93,"column":36}}},"5":{"name":"_restoreWindow","line":114,"loc":{"start":{"line":114,"column":32},"end":{"line":114,"column":58}}},"6":{"name":"disableRemoteFlowControl","line":128,"loc":{"start":{"line":128,"column":42},"end":{"line":128,"column":78}}},"7":{"name":"_send","line":152,"loc":{"start":{"line":152,"column":23},"end":{"line":152,"column":40}}},"8":{"name":"_read","line":159,"loc":{"start":{"line":159,"column":23},"end":{"line":159,"column":40}}},"9":{"name":"read","line":193,"loc":{"start":{"line":193,"column":22},"end":{"line":193,"column":43}}},"10":{"name":"_parentPush","line":240,"loc":{"start":{"line":240,"column":29},"end":{"line":240,"column":57}}},"11":{"name":"_push","line":257,"loc":{"start":{"line":257,"column":23},"end":{"line":257,"column":45}}},"12":{"name":"push","line":283,"loc":{"start":{"line":283,"column":22},"end":{"line":283,"column":43}}},"13":{"name":"getLastQueuedFrame","line":304,"loc":{"start":{"line":304,"column":36},"end":{"line":304,"column":66}}},"14":{"name":"_increaseWindow","line":322,"loc":{"start":{"line":322,"column":33},"end":{"line":322,"column":64}}},"15":{"name":"_updateWindow","line":346,"loc":{"start":{"line":346,"column":31},"end":{"line":346,"column":61}}},"16":{"name":"setInitialWindow","line":354,"loc":{"start":{"line":354,"column":34},"end":{"line":354,"column":75}}},"17":{"name":"disableLocalFlowControl","line":360,"loc":{"start":{"line":360,"column":41},"end":{"line":360,"column":76}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":31}},"2":{"start":{"line":10,"column":0},"end":{"line":10,"column":39}},"3":{"start":{"line":12,"column":0},"end":{"line":12,"column":20}},"4":{"start":{"line":60,"column":0},"end":{"line":60,"column":32}},"5":{"start":{"line":63,"column":0},"end":{"line":72,"column":1}},"6":{"start":{"line":64,"column":2},"end":{"line":64,"column":42}},"7":{"start":{"line":66,"column":2},"end":{"line":66,"column":59}},"8":{"start":{"line":67,"column":2},"end":{"line":67,"column":38}},"9":{"start":{"line":68,"column":2},"end":{"line":68,"column":19}},"10":{"start":{"line":69,"column":2},"end":{"line":69,"column":22}},"11":{"start":{"line":70,"column":2},"end":{"line":70,"column":21}},"12":{"start":{"line":71,"column":2},"end":{"line":71,"column":42}},"13":{"start":{"line":73,"column":0},"end":{"line":73,"column":83}},"14":{"start":{"line":79,"column":0},"end":{"line":81,"column":2}},"15":{"start":{"line":80,"column":2},"end":{"line":80,"column":99}},"16":{"start":{"line":87,"column":0},"end":{"line":110,"column":2}},"17":{"start":{"line":88,"column":2},"end":{"line":90,"column":3}},"18":{"start":{"line":89,"column":4},"end":{"line":89,"column":23}},"19":{"start":{"line":92,"column":2},"end":{"line":104,"column":3}},"20":{"start":{"line":93,"column":4},"end":{"line":99,"column":18}},"21":{"start":{"line":94,"column":6},"end":{"line":94,"column":42}},"22":{"start":{"line":95,"column":6},"end":{"line":97,"column":7}},"23":{"start":{"line":96,"column":8},"end":{"line":96,"column":80}},"24":{"start":{"line":98,"column":6},"end":{"line":98,"column":17}},"25":{"start":{"line":103,"column":4},"end":{"line":103,"column":35}},"26":{"start":{"line":106,"column":2},"end":{"line":109,"column":3}},"27":{"start":{"line":108,"column":4},"end":{"line":108,"column":30}},"28":{"start":{"line":114,"column":0},"end":{"line":125,"column":2}},"29":{"start":{"line":115,"column":2},"end":{"line":115,"column":34}},"30":{"start":{"line":116,"column":2},"end":{"line":124,"column":3}},"31":{"start":{"line":117,"column":4},"end":{"line":122,"column":7}},"32":{"start":{"line":123,"column":4},"end":{"line":123,"column":23}},"33":{"start":{"line":128,"column":0},"end":{"line":131,"column":2}},"34":{"start":{"line":129,"column":2},"end":{"line":129,"column":53}},"35":{"start":{"line":130,"column":2},"end":{"line":130,"column":41}},"36":{"start":{"line":152,"column":0},"end":{"line":154,"column":2}},"37":{"start":{"line":153,"column":2},"end":{"line":153,"column":81}},"38":{"start":{"line":159,"column":0},"end":{"line":186,"column":2}},"39":{"start":{"line":161,"column":2},"end":{"line":185,"column":3}},"40":{"start":{"line":162,"column":4},"end":{"line":162,"column":17}},"41":{"start":{"line":167,"column":7},"end":{"line":185,"column":3}},"42":{"start":{"line":168,"column":4},"end":{"line":168,"column":36}},"43":{"start":{"line":169,"column":4},"end":{"line":174,"column":53}},"44":{"start":{"line":170,"column":6},"end":{"line":170,"column":50}},"45":{"start":{"line":171,"column":6},"end":{"line":173,"column":7}},"46":{"start":{"line":172,"column":8},"end":{"line":172,"column":28}},"47":{"start":{"line":175,"column":4},"end":{"line":175,"column":37}},"48":{"start":{"line":177,"column":4},"end":{"line":179,"column":64}},"49":{"start":{"line":184,"column":4},"end":{"line":184,"column":43}},"50":{"start":{"line":188,"column":0},"end":{"line":188,"column":28}},"51":{"start":{"line":193,"column":0},"end":{"line":237,"column":2}},"52":{"start":{"line":194,"column":2},"end":{"line":200,"column":3}},"53":{"start":{"line":195,"column":4},"end":{"line":195,"column":47}},"54":{"start":{"line":196,"column":9},"end":{"line":200,"column":3}},"55":{"start":{"line":197,"column":4},"end":{"line":197,"column":14}},"56":{"start":{"line":198,"column":9},"end":{"line":200,"column":3}},"57":{"start":{"line":199,"column":4},"end":{"line":199,"column":29}},"58":{"start":{"line":204,"column":2},"end":{"line":204,"column":51}},"59":{"start":{"line":205,"column":2},"end":{"line":205,"column":63}},"60":{"start":{"line":207,"column":2},"end":{"line":236,"column":3}},"61":{"start":{"line":208,"column":4},"end":{"line":210,"column":5}},"62":{"start":{"line":209,"column":6},"end":{"line":209,"column":39}},"63":{"start":{"line":211,"column":4},"end":{"line":211,"column":17}},"64":{"start":{"line":214,"column":7},"end":{"line":236,"column":3}},"65":{"start":{"line":215,"column":4},"end":{"line":217,"column":5}},"66":{"start":{"line":216,"column":6},"end":{"line":216,"column":26}},"67":{"start":{"line":218,"column":4},"end":{"line":218,"column":16}},"68":{"start":{"line":222,"column":4},"end":{"line":223,"column":71}},"69":{"start":{"line":224,"column":4},"end":{"line":229,"column":6}},"70":{"start":{"line":230,"column":4},"end":{"line":230,"column":41}},"71":{"start":{"line":232,"column":4},"end":{"line":234,"column":5}},"72":{"start":{"line":233,"column":6},"end":{"line":233,"column":26}},"73":{"start":{"line":235,"column":4},"end":{"line":235,"column":23}},"74":{"start":{"line":240,"column":0},"end":{"line":251,"column":2}},"75":{"start":{"line":241,"column":2},"end":{"line":241,"column":75}},"76":{"start":{"line":243,"column":2},"end":{"line":248,"column":3}},"77":{"start":{"line":244,"column":4},"end":{"line":245,"column":60}},"78":{"start":{"line":246,"column":4},"end":{"line":246,"column":38}},"79":{"start":{"line":247,"column":4},"end":{"line":247,"column":30}},"80":{"start":{"line":250,"column":2},"end":{"line":250,"column":49}},"81":{"start":{"line":257,"column":0},"end":{"line":280,"column":2}},"82":{"start":{"line":258,"column":2},"end":{"line":258,"column":60}},"83":{"start":{"line":260,"column":2},"end":{"line":279,"column":3}},"84":{"start":{"line":261,"column":4},"end":{"line":261,"column":35}},"85":{"start":{"line":264,"column":7},"end":{"line":279,"column":3}},"86":{"start":{"line":265,"column":4},"end":{"line":265,"column":16}},"87":{"start":{"line":269,"column":4},"end":{"line":270,"column":71}},"88":{"start":{"line":271,"column":4},"end":{"line":271,"column":42}},"89":{"start":{"line":272,"column":4},"end":{"line":277,"column":7}},"90":{"start":{"line":278,"column":4},"end":{"line":278,"column":16}},"91":{"start":{"line":283,"column":0},"end":{"line":300,"column":2}},"92":{"start":{"line":284,"column":2},"end":{"line":288,"column":3}},"93":{"start":{"line":285,"column":4},"end":{"line":285,"column":57}},"94":{"start":{"line":287,"column":4},"end":{"line":287,"column":67}},"95":{"start":{"line":290,"column":2},"end":{"line":290,"column":24}},"96":{"start":{"line":291,"column":2},"end":{"line":293,"column":3}},"97":{"start":{"line":292,"column":4},"end":{"line":292,"column":35}},"98":{"start":{"line":295,"column":2},"end":{"line":297,"column":3}},"99":{"start":{"line":296,"column":4},"end":{"line":296,"column":28}},"100":{"start":{"line":299,"column":2},"end":{"line":299,"column":20}},"101":{"start":{"line":304,"column":0},"end":{"line":307,"column":2}},"102":{"start":{"line":305,"column":2},"end":{"line":305,"column":49}},"103":{"start":{"line":306,"column":2},"end":{"line":306,"column":88}},"104":{"start":{"line":320,"column":0},"end":{"line":320,"column":44}},"105":{"start":{"line":322,"column":0},"end":{"line":336,"column":2}},"106":{"start":{"line":323,"column":2},"end":{"line":335,"column":3}},"107":{"start":{"line":324,"column":4},"end":{"line":324,"column":97}},"108":{"start":{"line":325,"column":4},"end":{"line":325,"column":45}},"109":{"start":{"line":327,"column":4},"end":{"line":327,"column":96}},"110":{"start":{"line":328,"column":4},"end":{"line":328,"column":25}},"111":{"start":{"line":329,"column":4},"end":{"line":334,"column":5}},"112":{"start":{"line":330,"column":6},"end":{"line":330,"column":61}},"113":{"start":{"line":331,"column":6},"end":{"line":331,"column":47}},"114":{"start":{"line":333,"column":6},"end":{"line":333,"column":33}},"115":{"start":{"line":346,"column":0},"end":{"line":348,"column":2}},"116":{"start":{"line":347,"column":2},"end":{"line":347,"column":84}},"117":{"start":{"line":354,"column":0},"end":{"line":357,"column":2}},"118":{"start":{"line":355,"column":2},"end":{"line":355,"column":60}},"119":{"start":{"line":356,"column":2},"end":{"line":356,"column":38}},"120":{"start":{"line":360,"column":0},"end":{"line":362,"column":2}},"121":{"start":{"line":361,"column":2},"end":{"line":361,"column":33}}},"branchMap":{"1":{"line":88,"type":"if","locations":[{"start":{"line":88,"column":2},"end":{"line":88,"column":2}},{"start":{"line":88,"column":2},"end":{"line":88,"column":2}}]},"2":{"line":88,"type":"binary-expr","locations":[{"start":{"line":88,"column":6},"end":{"line":88,"column":28}},{"start":{"line":88,"column":33},"end":{"line":88,"column":60}}]},"3":{"line":92,"type":"if","locations":[{"start":{"line":92,"column":2},"end":{"line":92,"column":2}},{"start":{"line":92,"column":2},"end":{"line":92,"column":2}}]},"4":{"line":92,"type":"binary-expr","locations":[{"start":{"line":92,"column":7},"end":{"line":92,"column":28}},{"start":{"line":92,"column":34},"end":{"line":92,"column":55}},{"start":{"line":92,"column":60},"end":{"line":92,"column":92}}]},"5":{"line":95,"type":"if","locations":[{"start":{"line":95,"column":6},"end":{"line":95,"column":6}},{"start":{"line":95,"column":6},"end":{"line":95,"column":6}}]},"6":{"line":106,"type":"if","locations":[{"start":{"line":106,"column":2},"end":{"line":106,"column":2}},{"start":{"line":106,"column":2},"end":{"line":106,"column":2}}]},"7":{"line":106,"type":"binary-expr","locations":[{"start":{"line":106,"column":7},"end":{"line":106,"column":37}},{"start":{"line":107,"column":8},"end":{"line":107,"column":41}},{"start":{"line":107,"column":47},"end":{"line":107,"column":83}}]},"8":{"line":116,"type":"if","locations":[{"start":{"line":116,"column":2},"end":{"line":116,"column":2}},{"start":{"line":116,"column":2},"end":{"line":116,"column":2}}]},"9":{"line":116,"type":"binary-expr","locations":[{"start":{"line":116,"column":6},"end":{"line":116,"column":18}},{"start":{"line":116,"column":22},"end":{"line":116,"column":54}},{"start":{"line":116,"column":59},"end":{"line":116,"column":77}}]},"10":{"line":161,"type":"if","locations":[{"start":{"line":161,"column":2},"end":{"line":161,"column":2}},{"start":{"line":161,"column":2},"end":{"line":161,"column":2}}]},"11":{"line":167,"type":"if","locations":[{"start":{"line":167,"column":7},"end":{"line":167,"column":7}},{"start":{"line":167,"column":7},"end":{"line":167,"column":7}}]},"12":{"line":174,"type":"binary-expr","locations":[{"start":{"line":174,"column":13},"end":{"line":174,"column":23}},{"start":{"line":174,"column":28},"end":{"line":174,"column":50}}]},"13":{"line":171,"type":"if","locations":[{"start":{"line":171,"column":6},"end":{"line":171,"column":6}},{"start":{"line":171,"column":6},"end":{"line":171,"column":6}}]},"14":{"line":177,"type":"binary-expr","locations":[{"start":{"line":177,"column":12},"end":{"line":177,"column":31}},{"start":{"line":178,"column":12},"end":{"line":178,"column":36}},{"start":{"line":179,"column":12},"end":{"line":179,"column":25}},{"start":{"line":179,"column":30},"end":{"line":179,"column":60}}]},"15":{"line":194,"type":"if","locations":[{"start":{"line":194,"column":2},"end":{"line":194,"column":2}},{"start":{"line":194,"column":2},"end":{"line":194,"column":2}}]},"16":{"line":196,"type":"if","locations":[{"start":{"line":196,"column":9},"end":{"line":196,"column":9}},{"start":{"line":196,"column":9},"end":{"line":196,"column":9}}]},"17":{"line":198,"type":"if","locations":[{"start":{"line":198,"column":9},"end":{"line":198,"column":9}},{"start":{"line":198,"column":9},"end":{"line":198,"column":9}}]},"18":{"line":198,"type":"binary-expr","locations":[{"start":{"line":198,"column":14},"end":{"line":198,"column":33}},{"start":{"line":198,"column":39},"end":{"line":198,"column":63}}]},"19":{"line":205,"type":"binary-expr","locations":[{"start":{"line":205,"column":14},"end":{"line":205,"column":26}},{"start":{"line":205,"column":30},"end":{"line":205,"column":62}}]},"20":{"line":207,"type":"if","locations":[{"start":{"line":207,"column":2},"end":{"line":207,"column":2}},{"start":{"line":207,"column":2},"end":{"line":207,"column":2}}]},"21":{"line":207,"type":"binary-expr","locations":[{"start":{"line":207,"column":7},"end":{"line":207,"column":21}},{"start":{"line":207,"column":27},"end":{"line":207,"column":48}},{"start":{"line":207,"column":54},"end":{"line":207,"column":80}}]},"22":{"line":208,"type":"if","locations":[{"start":{"line":208,"column":4},"end":{"line":208,"column":4}},{"start":{"line":208,"column":4},"end":{"line":208,"column":4}}]},"23":{"line":214,"type":"if","locations":[{"start":{"line":214,"column":7},"end":{"line":214,"column":7}},{"start":{"line":214,"column":7},"end":{"line":214,"column":7}}]},"24":{"line":215,"type":"if","locations":[{"start":{"line":215,"column":4},"end":{"line":215,"column":4}},{"start":{"line":215,"column":4},"end":{"line":215,"column":4}}]},"25":{"line":232,"type":"if","locations":[{"start":{"line":232,"column":4},"end":{"line":232,"column":4}},{"start":{"line":232,"column":4},"end":{"line":232,"column":4}}]},"26":{"line":243,"type":"if","locations":[{"start":{"line":243,"column":2},"end":{"line":243,"column":2}},{"start":{"line":243,"column":2},"end":{"line":243,"column":2}}]},"27":{"line":243,"type":"binary-expr","locations":[{"start":{"line":243,"column":6},"end":{"line":243,"column":11}},{"start":{"line":243,"column":16},"end":{"line":243,"column":37}},{"start":{"line":243,"column":43},"end":{"line":243,"column":68}}]},"28":{"line":258,"type":"binary-expr","locations":[{"start":{"line":258,"column":13},"end":{"line":258,"column":18}},{"start":{"line":258,"column":23},"end":{"line":258,"column":44}},{"start":{"line":258,"column":49},"end":{"line":258,"column":59}}]},"29":{"line":260,"type":"if","locations":[{"start":{"line":260,"column":2},"end":{"line":260,"column":2}},{"start":{"line":260,"column":2},"end":{"line":260,"column":2}}]},"30":{"line":260,"type":"binary-expr","locations":[{"start":{"line":260,"column":6},"end":{"line":260,"column":11}},{"start":{"line":260,"column":16},"end":{"line":260,"column":43}}]},"31":{"line":264,"type":"if","locations":[{"start":{"line":264,"column":7},"end":{"line":264,"column":7}},{"start":{"line":264,"column":7},"end":{"line":264,"column":7}}]},"32":{"line":284,"type":"if","locations":[{"start":{"line":284,"column":2},"end":{"line":284,"column":2}},{"start":{"line":284,"column":2},"end":{"line":284,"column":2}}]},"33":{"line":291,"type":"if","locations":[{"start":{"line":291,"column":2},"end":{"line":291,"column":2}},{"start":{"line":291,"column":2},"end":{"line":291,"column":2}}]},"34":{"line":295,"type":"if","locations":[{"start":{"line":295,"column":2},"end":{"line":295,"column":2}},{"start":{"line":295,"column":2},"end":{"line":295,"column":2}}]},"35":{"line":306,"type":"binary-expr","locations":[{"start":{"line":306,"column":9},"end":{"line":306,"column":44}},{"start":{"line":306,"column":48},"end":{"line":306,"column":87}}]},"36":{"line":323,"type":"if","locations":[{"start":{"line":323,"column":2},"end":{"line":323,"column":2}},{"start":{"line":323,"column":2},"end":{"line":323,"column":2}}]},"37":{"line":323,"type":"binary-expr","locations":[{"start":{"line":323,"column":7},"end":{"line":323,"column":32}},{"start":{"line":323,"column":38},"end":{"line":323,"column":55}}]},"38":{"line":329,"type":"if","locations":[{"start":{"line":329,"column":4},"end":{"line":329,"column":4}},{"start":{"line":329,"column":4},"end":{"line":329,"column":4}}]},"39":{"line":329,"type":"binary-expr","locations":[{"start":{"line":329,"column":9},"end":{"line":329,"column":34}},{"start":{"line":329,"column":40},"end":{"line":329,"column":72}}]},"40":{"line":347,"type":"cond-expr","locations":[{"start":{"line":347,"column":54},"end":{"line":347,"column":62}},{"start":{"line":347,"column":65},"end":{"line":347,"column":82}}]}}},"/data/upstream/node-http2/lib/stream.js":{"path":"/data/upstream/node-http2/lib/stream.js","s":{"1":1,"2":1,"3":1,"4":1,"5":105,"6":105,"7":105,"8":105,"9":105,"10":1,"11":1,"12":1,"13":1,"14":105,"15":105,"16":105,"17":1,"18":6,"19":6,"20":6,"21":6,"22":1,"23":6,"24":1,"25":44,"26":1,"27":43,"28":0,"29":43,"30":1,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":1,"42":0,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":105,"50":105,"51":105,"52":105,"53":105,"54":105,"55":105,"56":105,"57":105,"58":1,"59":71,"60":71,"61":1,"62":70,"63":70,"64":70,"65":70,"66":43,"67":27,"68":6,"69":21,"70":0,"71":21,"72":0,"73":0,"74":70,"75":1,"76":70,"77":21,"78":21,"79":0,"80":70,"81":35,"82":35,"83":70,"84":70,"85":1,"86":38,"87":0,"88":0,"89":0,"90":1,"91":19,"92":19,"93":0,"94":19,"95":1,"96":91,"97":19,"98":19,"99":19,"100":1,"101":1,"102":36,"103":36,"104":36,"105":35,"106":35,"107":35,"108":1,"109":1,"110":105,"111":105,"112":105,"113":105,"114":1,"115":145,"116":145,"117":145,"118":145,"119":1,"120":206,"121":1,"122":240,"123":240,"124":240,"125":240,"126":240,"127":88,"128":88,"129":95,"130":95,"131":8,"132":8,"133":15,"134":15,"135":24,"136":24,"137":10,"138":10,"139":240,"140":240,"141":52,"142":42,"143":42,"144":11,"145":42,"146":10,"147":1,"148":9,"149":52,"150":14,"151":4,"152":10,"153":2,"154":8,"155":8,"156":14,"157":14,"158":2,"159":12,"160":4,"161":8,"162":8,"163":14,"164":37,"165":21,"166":16,"167":2,"168":37,"169":42,"170":21,"171":21,"172":3,"173":42,"174":58,"175":22,"176":36,"177":3,"178":58,"179":23,"180":14,"181":23,"182":240,"183":50,"184":50,"185":240,"186":13,"187":13,"188":13,"189":240,"190":103,"191":103,"192":59,"193":44,"194":137,"195":72,"196":240,"197":45,"198":45,"199":20,"200":20,"201":25,"202":25,"203":1,"204":1,"205":1,"206":6,"207":2,"208":2,"209":6},"b":{"1":[0,43],"2":[0,0],"3":[0,0,0],"4":[0,0],"5":[0,0],"6":[0,0,0],"7":[1,0],"8":[43,27],"9":[6,21],"10":[0,21],"11":[0,21],"12":[21,0,0],"13":[21,49],"14":[70,70],"15":[0,21],"16":[35,35],"17":[70,70,35],"18":[70,0],"19":[0,38],"20":[0,19],"21":[19,72],"22":[35,1],"23":[36,35,17],"24":[206,139,121],"25":[88,95,8,15,24,10],"26":[52,14,14,37,42,58,23],"27":[42,10],"28":[11,31],"29":[0,11],"30":[1,9],"31":[10,5],"32":[4,10],"33":[14,9],"34":[2,8],"35":[0,8],"36":[8,4],"37":[2,12],"38":[4,8],"39":[12,8],"40":[0,8],"41":[8,4],"42":[21,16],"43":[16,5],"44":[2,14],"45":[21,21],"46":[42,40,37],"47":[18,3],"48":[21,3,3,3],"49":[22,36],"50":[58,56,53],"51":[33,3],"52":[36,3,3,3],"53":[9,14],"54":[23,5,23,18,12,6,5,4],"55":[50,190],"56":[240,73],"57":[13,227],"58":[240,24],"59":[6,7],"60":[103,137],"61":[59,44],"62":[72,65],"63":[45,195],"64":[20,25],"65":[2,4]},"f":{"1":105,"2":105,"3":6,"4":6,"5":44,"6":43,"7":0,"8":0,"9":1,"10":105,"11":71,"12":70,"13":70,"14":38,"15":19,"16":91,"17":36,"18":105,"19":145,"20":206,"21":240,"22":6},"fnMap":{"1":{"name":"Stream","line":49,"loc":{"start":{"line":49,"column":0},"end":{"line":49,"column":21}}},"2":{"name":"_initializeManagement","line":75,"loc":{"start":{"line":75,"column":41},"end":{"line":75,"column":74}}},"3":{"name":"promise","line":81,"loc":{"start":{"line":81,"column":27},"end":{"line":81,"column":53}}},"4":{"name":"_onPromise","line":94,"loc":{"start":{"line":94,"column":30},"end":{"line":94,"column":57}}},"5":{"name":"headers","line":98,"loc":{"start":{"line":98,"column":27},"end":{"line":98,"column":53}}},"6":{"name":"_onHeaders","line":107,"loc":{"start":{"line":107,"column":30},"end":{"line":107,"column":57}}},"7":{"name":"priority","line":114,"loc":{"start":{"line":114,"column":28},"end":{"line":114,"column":62}}},"8":{"name":"_onPriority","line":138,"loc":{"start":{"line":138,"column":31},"end":{"line":138,"column":59}}},"9":{"name":"reset","line":144,"loc":{"start":{"line":144,"column":25},"end":{"line":144,"column":47}}},"10":{"name":"_initializeDataFlow","line":191,"loc":{"start":{"line":191,"column":39},"end":{"line":191,"column":70}}},"11":{"name":"_pushUpstream","line":206,"loc":{"start":{"line":206,"column":33},"end":{"line":206,"column":63}}},"12":{"name":"_writeUpstream","line":213,"loc":{"start":{"line":213,"column":34},"end":{"line":213,"column":65}}},"13":{"name":"_receive","line":242,"loc":{"start":{"line":242,"column":28},"end":{"line":242,"column":60}}},"14":{"name":"_read","line":266,"loc":{"start":{"line":266,"column":25},"end":{"line":266,"column":42}}},"15":{"name":"_write","line":275,"loc":{"start":{"line":275,"column":26},"end":{"line":275,"column":67}}},"16":{"name":"_send","line":295,"loc":{"start":{"line":295,"column":25},"end":{"line":295,"column":42}}},"17":{"name":"_finishing","line":308,"loc":{"start":{"line":308,"column":30},"end":{"line":308,"column":52}}},"18":{"name":"_initializeState","line":355,"loc":{"start":{"line":355,"column":36},"end":{"line":355,"column":64}}},"19":{"name":"transition","line":364,"loc":{"start":{"line":364,"column":29},"end":{"line":364,"column":56}}},"20":{"name":"activeState","line":373,"loc":{"start":{"line":373,"column":0},"end":{"line":373,"column":28}}},"21":{"name":"transition","line":380,"loc":{"start":{"line":380,"column":31},"end":{"line":380,"column":67}}},"22":{"name":"(anonymous_22)","line":609,"loc":{"start":{"line":609,"column":24},"end":{"line":609,"column":41}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":31}},"2":{"start":{"line":12,"column":0},"end":{"line":12,"column":38}},"3":{"start":{"line":14,"column":0},"end":{"line":14,"column":24}},"4":{"start":{"line":49,"column":0},"end":{"line":63,"column":1}},"5":{"start":{"line":50,"column":2},"end":{"line":50,"column":20}},"6":{"start":{"line":53,"column":2},"end":{"line":53,"column":58}},"7":{"start":{"line":56,"column":2},"end":{"line":56,"column":31}},"8":{"start":{"line":59,"column":2},"end":{"line":59,"column":29}},"9":{"start":{"line":62,"column":2},"end":{"line":62,"column":26}},"10":{"start":{"line":65,"column":0},"end":{"line":65,"column":87}},"11":{"start":{"line":71,"column":0},"end":{"line":71,"column":39}},"12":{"start":{"line":72,"column":0},"end":{"line":72,"column":39}},"13":{"start":{"line":75,"column":0},"end":{"line":79,"column":2}},"14":{"start":{"line":76,"column":2},"end":{"line":76,"column":26}},"15":{"start":{"line":77,"column":2},"end":{"line":77,"column":36}},"16":{"start":{"line":78,"column":2},"end":{"line":78,"column":33}},"17":{"start":{"line":81,"column":0},"end":{"line":92,"column":2}},"18":{"start":{"line":82,"column":2},"end":{"line":82,"column":37}},"19":{"start":{"line":83,"column":2},"end":{"line":83,"column":64}},"20":{"start":{"line":84,"column":2},"end":{"line":90,"column":5}},"21":{"start":{"line":91,"column":2},"end":{"line":91,"column":16}},"22":{"start":{"line":94,"column":0},"end":{"line":96,"column":2}},"23":{"start":{"line":95,"column":2},"end":{"line":95,"column":61}},"24":{"start":{"line":98,"column":0},"end":{"line":105,"column":2}},"25":{"start":{"line":99,"column":2},"end":{"line":104,"column":5}},"26":{"start":{"line":107,"column":0},"end":{"line":112,"column":2}},"27":{"start":{"line":108,"column":2},"end":{"line":110,"column":3}},"28":{"start":{"line":109,"column":4},"end":{"line":109,"column":40}},"29":{"start":{"line":111,"column":2},"end":{"line":111,"column":38}},"30":{"start":{"line":114,"column":0},"end":{"line":136,"column":2}},"31":{"start":{"line":115,"column":2},"end":{"line":135,"column":3}},"32":{"start":{"line":116,"column":4},"end":{"line":130,"column":5}},"33":{"start":{"line":117,"column":6},"end":{"line":117,"column":38}},"34":{"start":{"line":119,"column":6},"end":{"line":119,"column":57}},"35":{"start":{"line":120,"column":6},"end":{"line":129,"column":7}},"36":{"start":{"line":121,"column":8},"end":{"line":121,"column":38}},"37":{"start":{"line":123,"column":8},"end":{"line":128,"column":11}},"38":{"start":{"line":132,"column":4},"end":{"line":132,"column":65}},"39":{"start":{"line":133,"column":4},"end":{"line":133,"column":36}},"40":{"start":{"line":134,"column":4},"end":{"line":134,"column":30}},"41":{"start":{"line":138,"column":0},"end":{"line":140,"column":2}},"42":{"start":{"line":139,"column":2},"end":{"line":139,"column":38}},"43":{"start":{"line":144,"column":0},"end":{"line":154,"column":2}},"44":{"start":{"line":145,"column":2},"end":{"line":153,"column":3}},"45":{"start":{"line":146,"column":4},"end":{"line":146,"column":27}},"46":{"start":{"line":147,"column":4},"end":{"line":152,"column":7}},"47":{"start":{"line":189,"column":0},"end":{"line":189,"column":34}},"48":{"start":{"line":191,"column":0},"end":{"line":204,"column":2}},"49":{"start":{"line":192,"column":2},"end":{"line":192,"column":22}},"50":{"start":{"line":194,"column":2},"end":{"line":194,"column":22}},"51":{"start":{"line":196,"column":2},"end":{"line":196,"column":29}},"52":{"start":{"line":197,"column":2},"end":{"line":197,"column":33}},"53":{"start":{"line":198,"column":2},"end":{"line":198,"column":46}},"54":{"start":{"line":199,"column":2},"end":{"line":199,"column":52}},"55":{"start":{"line":200,"column":2},"end":{"line":200,"column":55}},"56":{"start":{"line":201,"column":2},"end":{"line":201,"column":59}},"57":{"start":{"line":203,"column":2},"end":{"line":203,"column":37}},"58":{"start":{"line":206,"column":0},"end":{"line":209,"column":2}},"59":{"start":{"line":207,"column":2},"end":{"line":207,"column":28}},"60":{"start":{"line":208,"column":2},"end":{"line":208,"column":32}},"61":{"start":{"line":213,"column":0},"end":{"line":239,"column":2}},"62":{"start":{"line":214,"column":2},"end":{"line":214,"column":55}},"63":{"start":{"line":216,"column":2},"end":{"line":216,"column":67}},"64":{"start":{"line":219,"column":2},"end":{"line":219,"column":33}},"65":{"start":{"line":222,"column":2},"end":{"line":236,"column":3}},"66":{"start":{"line":223,"column":4},"end":{"line":223,"column":27}},"67":{"start":{"line":224,"column":9},"end":{"line":236,"column":3}},"68":{"start":{"line":225,"column":4},"end":{"line":225,"column":27}},"69":{"start":{"line":226,"column":9},"end":{"line":236,"column":3}},"70":{"start":{"line":227,"column":4},"end":{"line":227,"column":28}},"71":{"start":{"line":231,"column":7},"end":{"line":236,"column":3}},"72":{"start":{"line":234,"column":4},"end":{"line":234,"column":68}},"73":{"start":{"line":235,"column":4},"end":{"line":235,"column":41}},"74":{"start":{"line":238,"column":2},"end":{"line":238,"column":20}},"75":{"start":{"line":242,"column":0},"end":{"line":262,"column":2}},"76":{"start":{"line":245,"column":2},"end":{"line":250,"column":3}},"77":{"start":{"line":246,"column":4},"end":{"line":246,"column":43}},"78":{"start":{"line":247,"column":4},"end":{"line":249,"column":5}},"79":{"start":{"line":248,"column":6},"end":{"line":248,"column":32}},"80":{"start":{"line":253,"column":2},"end":{"line":256,"column":3}},"81":{"start":{"line":254,"column":4},"end":{"line":254,"column":20}},"82":{"start":{"line":255,"column":4},"end":{"line":255,"column":23}},"83":{"start":{"line":259,"column":2},"end":{"line":261,"column":3}},"84":{"start":{"line":260,"column":4},"end":{"line":260,"column":12}},"85":{"start":{"line":266,"column":0},"end":{"line":272,"column":2}},"86":{"start":{"line":267,"column":2},"end":{"line":271,"column":3}},"87":{"start":{"line":268,"column":4},"end":{"line":268,"column":40}},"88":{"start":{"line":269,"column":4},"end":{"line":269,"column":29}},"89":{"start":{"line":270,"column":4},"end":{"line":270,"column":18}},"90":{"start":{"line":275,"column":0},"end":{"line":290,"column":2}},"91":{"start":{"line":277,"column":2},"end":{"line":282,"column":5}},"92":{"start":{"line":285,"column":2},"end":{"line":289,"column":3}},"93":{"start":{"line":286,"column":4},"end":{"line":286,"column":12}},"94":{"start":{"line":288,"column":4},"end":{"line":288,"column":27}},"95":{"start":{"line":295,"column":0},"end":{"line":301,"column":2}},"96":{"start":{"line":296,"column":2},"end":{"line":300,"column":3}},"97":{"start":{"line":297,"column":4},"end":{"line":297,"column":34}},"98":{"start":{"line":298,"column":4},"end":{"line":298,"column":26}},"99":{"start":{"line":299,"column":4},"end":{"line":299,"column":15}},"100":{"start":{"line":307,"column":0},"end":{"line":307,"column":32}},"101":{"start":{"line":308,"column":0},"end":{"line":323,"column":2}},"102":{"start":{"line":309,"column":2},"end":{"line":314,"column":4}},"103":{"start":{"line":315,"column":2},"end":{"line":315,"column":53}},"104":{"start":{"line":316,"column":2},"end":{"line":322,"column":3}},"105":{"start":{"line":317,"column":4},"end":{"line":317,"column":86}},"106":{"start":{"line":318,"column":4},"end":{"line":318,"column":38}},"107":{"start":{"line":319,"column":4},"end":{"line":319,"column":37}},"108":{"start":{"line":321,"column":4},"end":{"line":321,"column":33}},"109":{"start":{"line":355,"column":0},"end":{"line":360,"column":2}},"110":{"start":{"line":356,"column":2},"end":{"line":356,"column":22}},"111":{"start":{"line":357,"column":2},"end":{"line":357,"column":30}},"112":{"start":{"line":358,"column":2},"end":{"line":358,"column":31}},"113":{"start":{"line":359,"column":2},"end":{"line":359,"column":34}},"114":{"start":{"line":364,"column":0},"end":{"line":369,"column":2}},"115":{"start":{"line":365,"column":2},"end":{"line":365,"column":31}},"116":{"start":{"line":366,"column":2},"end":{"line":366,"column":71}},"117":{"start":{"line":367,"column":2},"end":{"line":367,"column":21}},"118":{"start":{"line":368,"column":2},"end":{"line":368,"column":28}},"119":{"start":{"line":373,"column":0},"end":{"line":375,"column":1}},"120":{"start":{"line":374,"column":2},"end":{"line":374,"column":101}},"121":{"start":{"line":380,"column":0},"end":{"line":601,"column":2}},"122":{"start":{"line":381,"column":2},"end":{"line":381,"column":27}},"123":{"start":{"line":382,"column":2},"end":{"line":382,"column":24}},"124":{"start":{"line":384,"column":2},"end":{"line":384,"column":54}},"125":{"start":{"line":385,"column":2},"end":{"line":385,"column":70}},"126":{"start":{"line":386,"column":2},"end":{"line":393,"column":3}},"127":{"start":{"line":387,"column":26},"end":{"line":387,"column":47}},"128":{"start":{"line":387,"column":48},"end":{"line":387,"column":54}},"129":{"start":{"line":388,"column":26},"end":{"line":388,"column":47}},"130":{"start":{"line":388,"column":48},"end":{"line":388,"column":54}},"131":{"start":{"line":389,"column":26},"end":{"line":389,"column":47}},"132":{"start":{"line":389,"column":48},"end":{"line":389,"column":54}},"133":{"start":{"line":390,"column":26},"end":{"line":390,"column":47}},"134":{"start":{"line":390,"column":48},"end":{"line":390,"column":54}},"135":{"start":{"line":391,"column":26},"end":{"line":391,"column":47}},"136":{"start":{"line":391,"column":48},"end":{"line":391,"column":54}},"137":{"start":{"line":392,"column":26},"end":{"line":392,"column":47}},"138":{"start":{"line":392,"column":48},"end":{"line":392,"column":54}},"139":{"start":{"line":395,"column":2},"end":{"line":395,"column":33}},"140":{"start":{"line":397,"column":2},"end":{"line":541,"column":3}},"141":{"start":{"line":404,"column":6},"end":{"line":414,"column":7}},"142":{"start":{"line":405,"column":8},"end":{"line":405,"column":31}},"143":{"start":{"line":406,"column":8},"end":{"line":408,"column":9}},"144":{"start":{"line":407,"column":10},"end":{"line":407,"column":79}},"145":{"start":{"line":409,"column":8},"end":{"line":409,"column":34}},"146":{"start":{"line":410,"column":13},"end":{"line":414,"column":7}},"147":{"start":{"line":411,"column":8},"end":{"line":411,"column":33}},"148":{"start":{"line":413,"column":8},"end":{"line":413,"column":33}},"149":{"start":{"line":415,"column":6},"end":{"line":415,"column":12}},"150":{"start":{"line":427,"column":6},"end":{"line":435,"column":7}},"151":{"start":{"line":428,"column":8},"end":{"line":428,"column":45}},"152":{"start":{"line":429,"column":13},"end":{"line":435,"column":7}},"153":{"start":{"line":430,"column":8},"end":{"line":430,"column":33}},"154":{"start":{"line":431,"column":13},"end":{"line":435,"column":7}},"155":{"start":{"line":434,"column":8},"end":{"line":434,"column":33}},"156":{"start":{"line":436,"column":6},"end":{"line":436,"column":12}},"157":{"start":{"line":446,"column":6},"end":{"line":454,"column":7}},"158":{"start":{"line":447,"column":8},"end":{"line":447,"column":33}},"159":{"start":{"line":448,"column":13},"end":{"line":454,"column":7}},"160":{"start":{"line":449,"column":8},"end":{"line":449,"column":44}},"161":{"start":{"line":450,"column":13},"end":{"line":454,"column":7}},"162":{"start":{"line":453,"column":8},"end":{"line":453,"column":33}},"163":{"start":{"line":455,"column":6},"end":{"line":455,"column":12}},"164":{"start":{"line":467,"column":6},"end":{"line":473,"column":7}},"165":{"start":{"line":468,"column":8},"end":{"line":468,"column":77}},"166":{"start":{"line":469,"column":13},"end":{"line":473,"column":7}},"167":{"start":{"line":470,"column":8},"end":{"line":470,"column":33}},"168":{"start":{"line":474,"column":6},"end":{"line":474,"column":12}},"169":{"start":{"line":483,"column":6},"end":{"line":489,"column":7}},"170":{"start":{"line":484,"column":8},"end":{"line":484,"column":33}},"171":{"start":{"line":485,"column":13},"end":{"line":489,"column":7}},"172":{"start":{"line":488,"column":8},"end":{"line":488,"column":33}},"173":{"start":{"line":490,"column":6},"end":{"line":490,"column":12}},"174":{"start":{"line":503,"column":6},"end":{"line":509,"column":7}},"175":{"start":{"line":504,"column":8},"end":{"line":504,"column":33}},"176":{"start":{"line":505,"column":13},"end":{"line":509,"column":7}},"177":{"start":{"line":508,"column":8},"end":{"line":508,"column":33}},"178":{"start":{"line":510,"column":6},"end":{"line":510,"column":12}},"179":{"start":{"line":533,"column":6},"end":{"line":539,"column":7}},"180":{"start":{"line":538,"column":8},"end":{"line":538,"column":32}},"181":{"start":{"line":540,"column":6},"end":{"line":540,"column":12}},"182":{"start":{"line":546,"column":2},"end":{"line":549,"column":3}},"183":{"start":{"line":547,"column":4},"end":{"line":547,"column":31}},"184":{"start":{"line":548,"column":4},"end":{"line":548,"column":37}},"185":{"start":{"line":557,"column":2},"end":{"line":564,"column":3}},"186":{"start":{"line":561,"column":4},"end":{"line":561,"column":80}},"187":{"start":{"line":562,"column":4},"end":{"line":562,"column":84}},"188":{"start":{"line":563,"column":4},"end":{"line":563,"column":47}},"189":{"start":{"line":567,"column":2},"end":{"line":576,"column":3}},"190":{"start":{"line":568,"column":4},"end":{"line":568,"column":72}},"191":{"start":{"line":569,"column":4},"end":{"line":573,"column":5}},"192":{"start":{"line":570,"column":6},"end":{"line":570,"column":34}},"193":{"start":{"line":572,"column":6},"end":{"line":572,"column":33}},"194":{"start":{"line":574,"column":9},"end":{"line":576,"column":3}},"195":{"start":{"line":575,"column":4},"end":{"line":575,"column":27}},"196":{"start":{"line":579,"column":2},"end":{"line":600,"column":3}},"197":{"start":{"line":580,"column":4},"end":{"line":586,"column":6}},"198":{"start":{"line":589,"column":4},"end":{"line":599,"column":5}},"199":{"start":{"line":590,"column":6},"end":{"line":590,"column":54}},"200":{"start":{"line":591,"column":6},"end":{"line":591,"column":97}},"201":{"start":{"line":597,"column":6},"end":{"line":597,"column":55}},"202":{"start":{"line":598,"column":6},"end":{"line":598,"column":32}},"203":{"start":{"line":606,"column":0},"end":{"line":606,"column":25}},"204":{"start":{"line":608,"column":0},"end":{"line":608,"column":15}},"205":{"start":{"line":609,"column":0},"end":{"line":615,"column":2}},"206":{"start":{"line":610,"column":2},"end":{"line":613,"column":3}},"207":{"start":{"line":611,"column":4},"end":{"line":611,"column":24}},"208":{"start":{"line":612,"column":4},"end":{"line":612,"column":16}},"209":{"start":{"line":614,"column":2},"end":{"line":614,"column":20}}},"branchMap":{"1":{"line":108,"type":"if","locations":[{"start":{"line":108,"column":2},"end":{"line":108,"column":2}},{"start":{"line":108,"column":2},"end":{"line":108,"column":2}}]},"2":{"line":115,"type":"if","locations":[{"start":{"line":115,"column":2},"end":{"line":115,"column":2}},{"start":{"line":115,"column":2},"end":{"line":115,"column":2}}]},"3":{"line":115,"type":"binary-expr","locations":[{"start":{"line":115,"column":7},"end":{"line":115,"column":11}},{"start":{"line":115,"column":15},"end":{"line":115,"column":38}},{"start":{"line":115,"column":43},"end":{"line":115,"column":48}}]},"4":{"line":116,"type":"if","locations":[{"start":{"line":116,"column":4},"end":{"line":116,"column":4}},{"start":{"line":116,"column":4},"end":{"line":116,"column":4}}]},"5":{"line":120,"type":"if","locations":[{"start":{"line":120,"column":6},"end":{"line":120,"column":6}},{"start":{"line":120,"column":6},"end":{"line":120,"column":6}}]},"6":{"line":120,"type":"binary-expr","locations":[{"start":{"line":120,"column":10},"end":{"line":120,"column":19}},{"start":{"line":120,"column":25},"end":{"line":120,"column":53}},{"start":{"line":120,"column":59},"end":{"line":120,"column":88}}]},"7":{"line":145,"type":"if","locations":[{"start":{"line":145,"column":2},"end":{"line":145,"column":2}},{"start":{"line":145,"column":2},"end":{"line":145,"column":2}}]},"8":{"line":222,"type":"if","locations":[{"start":{"line":222,"column":2},"end":{"line":222,"column":2}},{"start":{"line":222,"column":2},"end":{"line":222,"column":2}}]},"9":{"line":224,"type":"if","locations":[{"start":{"line":224,"column":9},"end":{"line":224,"column":9}},{"start":{"line":224,"column":9},"end":{"line":224,"column":9}}]},"10":{"line":226,"type":"if","locations":[{"start":{"line":226,"column":9},"end":{"line":226,"column":9}},{"start":{"line":226,"column":9},"end":{"line":226,"column":9}}]},"11":{"line":231,"type":"if","locations":[{"start":{"line":231,"column":7},"end":{"line":231,"column":7}},{"start":{"line":231,"column":7},"end":{"line":231,"column":7}}]},"12":{"line":231,"type":"binary-expr","locations":[{"start":{"line":231,"column":12},"end":{"line":231,"column":33}},{"start":{"line":232,"column":12},"end":{"line":232,"column":42}},{"start":{"line":233,"column":12},"end":{"line":233,"column":39}}]},"13":{"line":245,"type":"if","locations":[{"start":{"line":245,"column":2},"end":{"line":245,"column":2}},{"start":{"line":245,"column":2},"end":{"line":245,"column":2}}]},"14":{"line":245,"type":"binary-expr","locations":[{"start":{"line":245,"column":6},"end":{"line":245,"column":18}},{"start":{"line":245,"column":23},"end":{"line":245,"column":44}}]},"15":{"line":247,"type":"if","locations":[{"start":{"line":247,"column":4},"end":{"line":247,"column":4}},{"start":{"line":247,"column":4},"end":{"line":247,"column":4}}]},"16":{"line":253,"type":"if","locations":[{"start":{"line":253,"column":2},"end":{"line":253,"column":2}},{"start":{"line":253,"column":2},"end":{"line":253,"column":2}}]},"17":{"line":253,"type":"binary-expr","locations":[{"start":{"line":253,"column":6},"end":{"line":253,"column":18}},{"start":{"line":253,"column":23},"end":{"line":253,"column":45}},{"start":{"line":253,"column":50},"end":{"line":253,"column":77}}]},"18":{"line":259,"type":"if","locations":[{"start":{"line":259,"column":2},"end":{"line":259,"column":2}},{"start":{"line":259,"column":2},"end":{"line":259,"column":2}}]},"19":{"line":267,"type":"if","locations":[{"start":{"line":267,"column":2},"end":{"line":267,"column":2}},{"start":{"line":267,"column":2},"end":{"line":267,"column":2}}]},"20":{"line":285,"type":"if","locations":[{"start":{"line":285,"column":2},"end":{"line":285,"column":2}},{"start":{"line":285,"column":2},"end":{"line":285,"column":2}}]},"21":{"line":296,"type":"if","locations":[{"start":{"line":296,"column":2},"end":{"line":296,"column":2}},{"start":{"line":296,"column":2},"end":{"line":296,"column":2}}]},"22":{"line":316,"type":"if","locations":[{"start":{"line":316,"column":2},"end":{"line":316,"column":2}},{"start":{"line":316,"column":2},"end":{"line":316,"column":2}}]},"23":{"line":316,"type":"binary-expr","locations":[{"start":{"line":316,"column":6},"end":{"line":316,"column":15}},{"start":{"line":316,"column":21},"end":{"line":316,"column":46}},{"start":{"line":316,"column":52},"end":{"line":316,"column":80}}]},"24":{"line":374,"type":"binary-expr","locations":[{"start":{"line":374,"column":11},"end":{"line":374,"column":40}},{"start":{"line":374,"column":46},"end":{"line":374,"column":76}},{"start":{"line":374,"column":82},"end":{"line":374,"column":98}}]},"25":{"line":386,"type":"switch","locations":[{"start":{"line":387,"column":4},"end":{"line":387,"column":54}},{"start":{"line":388,"column":4},"end":{"line":388,"column":54}},{"start":{"line":389,"column":4},"end":{"line":389,"column":54}},{"start":{"line":390,"column":4},"end":{"line":390,"column":54}},{"start":{"line":391,"column":4},"end":{"line":391,"column":54}},{"start":{"line":392,"column":4},"end":{"line":392,"column":54}}]},"26":{"line":397,"type":"switch","locations":[{"start":{"line":403,"column":4},"end":{"line":415,"column":12}},{"start":{"line":426,"column":4},"end":{"line":436,"column":12}},{"start":{"line":445,"column":4},"end":{"line":455,"column":12}},{"start":{"line":466,"column":4},"end":{"line":474,"column":12}},{"start":{"line":482,"column":4},"end":{"line":490,"column":12}},{"start":{"line":502,"column":4},"end":{"line":510,"column":12}},{"start":{"line":532,"column":4},"end":{"line":540,"column":12}}]},"27":{"line":404,"type":"if","locations":[{"start":{"line":404,"column":6},"end":{"line":404,"column":6}},{"start":{"line":404,"column":6},"end":{"line":404,"column":6}}]},"28":{"line":406,"type":"if","locations":[{"start":{"line":406,"column":8},"end":{"line":406,"column":8}},{"start":{"line":406,"column":8},"end":{"line":406,"column":8}}]},"29":{"line":407,"type":"cond-expr","locations":[{"start":{"line":407,"column":35},"end":{"line":407,"column":54}},{"start":{"line":407,"column":57},"end":{"line":407,"column":77}}]},"30":{"line":410,"type":"if","locations":[{"start":{"line":410,"column":13},"end":{"line":410,"column":13}},{"start":{"line":410,"column":13},"end":{"line":410,"column":13}}]},"31":{"line":410,"type":"binary-expr","locations":[{"start":{"line":410,"column":17},"end":{"line":410,"column":24}},{"start":{"line":410,"column":28},"end":{"line":410,"column":38}}]},"32":{"line":427,"type":"if","locations":[{"start":{"line":427,"column":6},"end":{"line":427,"column":6}},{"start":{"line":427,"column":6},"end":{"line":427,"column":6}}]},"33":{"line":427,"type":"binary-expr","locations":[{"start":{"line":427,"column":10},"end":{"line":427,"column":17}},{"start":{"line":427,"column":21},"end":{"line":427,"column":28}}]},"34":{"line":429,"type":"if","locations":[{"start":{"line":429,"column":13},"end":{"line":429,"column":13}},{"start":{"line":429,"column":13},"end":{"line":429,"column":13}}]},"35":{"line":431,"type":"if","locations":[{"start":{"line":431,"column":13},"end":{"line":431,"column":13}},{"start":{"line":431,"column":13},"end":{"line":431,"column":13}}]},"36":{"line":431,"type":"binary-expr","locations":[{"start":{"line":431,"column":17},"end":{"line":431,"column":26}},{"start":{"line":431,"column":30},"end":{"line":431,"column":38}}]},"37":{"line":446,"type":"if","locations":[{"start":{"line":446,"column":6},"end":{"line":446,"column":6}},{"start":{"line":446,"column":6},"end":{"line":446,"column":6}}]},"38":{"line":448,"type":"if","locations":[{"start":{"line":448,"column":13},"end":{"line":448,"column":13}},{"start":{"line":448,"column":13},"end":{"line":448,"column":13}}]},"39":{"line":448,"type":"binary-expr","locations":[{"start":{"line":448,"column":17},"end":{"line":448,"column":26}},{"start":{"line":448,"column":30},"end":{"line":448,"column":37}}]},"40":{"line":450,"type":"if","locations":[{"start":{"line":450,"column":13},"end":{"line":450,"column":13}},{"start":{"line":450,"column":13},"end":{"line":450,"column":13}}]},"41":{"line":450,"type":"binary-expr","locations":[{"start":{"line":450,"column":17},"end":{"line":450,"column":24}},{"start":{"line":450,"column":28},"end":{"line":450,"column":36}}]},"42":{"line":467,"type":"if","locations":[{"start":{"line":467,"column":6},"end":{"line":467,"column":6}},{"start":{"line":467,"column":6},"end":{"line":467,"column":6}}]},"43":{"line":468,"type":"cond-expr","locations":[{"start":{"line":468,"column":33},"end":{"line":468,"column":52}},{"start":{"line":468,"column":55},"end":{"line":468,"column":75}}]},"44":{"line":469,"type":"if","locations":[{"start":{"line":469,"column":13},"end":{"line":469,"column":13}},{"start":{"line":469,"column":13},"end":{"line":469,"column":13}}]},"45":{"line":483,"type":"if","locations":[{"start":{"line":483,"column":6},"end":{"line":483,"column":6}},{"start":{"line":483,"column":6},"end":{"line":483,"column":6}}]},"46":{"line":483,"type":"binary-expr","locations":[{"start":{"line":483,"column":10},"end":{"line":483,"column":20}},{"start":{"line":483,"column":25},"end":{"line":483,"column":34}},{"start":{"line":483,"column":38},"end":{"line":483,"column":60}}]},"47":{"line":485,"type":"if","locations":[{"start":{"line":485,"column":13},"end":{"line":485,"column":13}},{"start":{"line":485,"column":13},"end":{"line":485,"column":13}}]},"48":{"line":485,"type":"binary-expr","locations":[{"start":{"line":485,"column":17},"end":{"line":485,"column":26}},{"start":{"line":485,"column":31},"end":{"line":485,"column":38}},{"start":{"line":485,"column":43},"end":{"line":485,"column":51}},{"start":{"line":485,"column":55},"end":{"line":485,"column":68}}]},"49":{"line":503,"type":"if","locations":[{"start":{"line":503,"column":6},"end":{"line":503,"column":6}},{"start":{"line":503,"column":6},"end":{"line":503,"column":6}}]},"50":{"line":503,"type":"binary-expr","locations":[{"start":{"line":503,"column":10},"end":{"line":503,"column":20}},{"start":{"line":503,"column":25},"end":{"line":503,"column":32}},{"start":{"line":503,"column":36},"end":{"line":503,"column":58}}]},"51":{"line":505,"type":"if","locations":[{"start":{"line":505,"column":13},"end":{"line":505,"column":13}},{"start":{"line":505,"column":13},"end":{"line":505,"column":13}}]},"52":{"line":505,"type":"binary-expr","locations":[{"start":{"line":505,"column":17},"end":{"line":505,"column":24}},{"start":{"line":505,"column":29},"end":{"line":505,"column":38}},{"start":{"line":505,"column":43},"end":{"line":505,"column":56}},{"start":{"line":505,"column":60},"end":{"line":505,"column":68}}]},"53":{"line":533,"type":"if","locations":[{"start":{"line":533,"column":6},"end":{"line":533,"column":6}},{"start":{"line":533,"column":6},"end":{"line":533,"column":6}}]},"54":{"line":533,"type":"binary-expr","locations":[{"start":{"line":533,"column":11},"end":{"line":533,"column":18}},{"start":{"line":533,"column":22},"end":{"line":533,"column":32}},{"start":{"line":534,"column":11},"end":{"line":534,"column":20}},{"start":{"line":534,"column":24},"end":{"line":534,"column":40}},{"start":{"line":535,"column":12},"end":{"line":535,"column":31}},{"start":{"line":535,"column":35},"end":{"line":535,"column":48}},{"start":{"line":535,"column":52},"end":{"line":535,"column":60}},{"start":{"line":535,"column":64},"end":{"line":535,"column":74}}]},"55":{"line":546,"type":"if","locations":[{"start":{"line":546,"column":2},"end":{"line":546,"column":2}},{"start":{"line":546,"column":2},"end":{"line":546,"column":2}}]},"56":{"line":546,"type":"binary-expr","locations":[{"start":{"line":546,"column":7},"end":{"line":546,"column":30}},{"start":{"line":546,"column":36},"end":{"line":546,"column":62}}]},"57":{"line":557,"type":"if","locations":[{"start":{"line":557,"column":2},"end":{"line":557,"column":2}},{"start":{"line":557,"column":2},"end":{"line":557,"column":2}}]},"58":{"line":557,"type":"binary-expr","locations":[{"start":{"line":557,"column":6},"end":{"line":557,"column":18}},{"start":{"line":557,"column":22},"end":{"line":557,"column":28}}]},"59":{"line":562,"type":"cond-expr","locations":[{"start":{"line":562,"column":46},"end":{"line":562,"column":62}},{"start":{"line":562,"column":65},"end":{"line":562,"column":82}}]},"60":{"line":567,"type":"if","locations":[{"start":{"line":567,"column":2},"end":{"line":567,"column":2}},{"start":{"line":567,"column":2},"end":{"line":567,"column":2}}]},"61":{"line":569,"type":"if","locations":[{"start":{"line":569,"column":4},"end":{"line":569,"column":4}},{"start":{"line":569,"column":4},"end":{"line":569,"column":4}}]},"62":{"line":574,"type":"if","locations":[{"start":{"line":574,"column":9},"end":{"line":574,"column":9}},{"start":{"line":574,"column":9},"end":{"line":574,"column":9}}]},"63":{"line":579,"type":"if","locations":[{"start":{"line":579,"column":2},"end":{"line":579,"column":2}},{"start":{"line":579,"column":2},"end":{"line":579,"column":2}}]},"64":{"line":589,"type":"if","locations":[{"start":{"line":589,"column":4},"end":{"line":589,"column":4}},{"start":{"line":589,"column":4},"end":{"line":589,"column":4}}]},"65":{"line":610,"type":"if","locations":[{"start":{"line":610,"column":2},"end":{"line":610,"column":2}},{"start":{"line":610,"column":2},"end":{"line":610,"column":2}}]}}},"/data/upstream/node-http2/lib/endpoint.js":{"path":"/data/upstream/node-http2/lib/endpoint.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":24,"12":24,"13":24,"14":24,"15":12,"16":12,"17":24,"18":24,"19":24,"20":1,"21":1,"22":1,"23":12,"24":12,"25":1,"26":12,"27":12,"28":11,"29":11,"30":241,"31":1,"32":1,"33":1,"34":240,"35":10,"36":10,"37":10,"38":10,"39":10,"40":1,"41":0,"42":0,"43":0,"44":0,"45":0,"46":1,"47":96,"48":0,"49":96,"50":1,"51":1,"52":24,"53":24,"54":12,"55":12,"56":12,"57":12,"58":12,"59":12,"60":24,"61":24,"62":24,"63":24,"64":24,"65":24,"66":24,"67":24,"68":24,"69":1,"70":1,"71":155,"72":155,"73":155,"74":130,"75":155,"76":67,"77":155,"78":1,"79":50,"80":1,"81":24,"82":1,"83":11,"84":1,"85":24,"86":24,"87":24,"88":24,"89":24,"90":24,"91":1,"92":1,"93":1,"94":1,"95":1,"96":2,"97":1,"98":1,"99":1,"100":6,"101":2,"102":2,"103":6},"b":{"1":[24,12],"2":[12,12],"3":[24,24],"4":[251,241],"5":[1,240],"6":[10,0],"7":[0,96],"8":[12,12],"9":[285,285],"10":[67,88],"11":[2,4]},"f":{"1":24,"2":12,"3":12,"4":11,"5":0,"6":0,"7":96,"8":24,"9":155,"10":50,"11":24,"12":11,"13":24,"14":1,"15":2,"16":6},"fnMap":{"1":{"name":"Endpoint","line":50,"loc":{"start":{"line":50,"column":0},"end":{"line":50,"column":48}}},"2":{"name":"_writePrelude","line":84,"loc":{"start":{"line":84,"column":35},"end":{"line":84,"column":60}}},"3":{"name":"_readPrelude","line":90,"loc":{"start":{"line":90,"column":34},"end":{"line":90,"column":58}}},"4":{"name":"_temporalWrite","line":95,"loc":{"start":{"line":95,"column":16},"end":{"line":95,"column":63}}},"5":{"name":"createTransformStream","line":153,"loc":{"start":{"line":153,"column":0},"end":{"line":153,"column":39}}},"6":{"name":"(anonymous_6)","line":156,"loc":{"start":{"line":156,"column":25},"end":{"line":156,"column":57}}},"7":{"name":"pipeAndFilter","line":162,"loc":{"start":{"line":162,"column":0},"end":{"line":162,"column":49}}},"8":{"name":"_initializeDataFlow","line":172,"loc":{"start":{"line":172,"column":41},"end":{"line":172,"column":95}}},"9":{"name":"_read","line":197,"loc":{"start":{"line":197,"column":27},"end":{"line":197,"column":44}}},"10":{"name":"_write","line":209,"loc":{"start":{"line":209,"column":28},"end":{"line":209,"column":67}}},"11":{"name":"_initializeManagement","line":216,"loc":{"start":{"line":216,"column":43},"end":{"line":216,"column":76}}},"12":{"name":"createStream","line":220,"loc":{"start":{"line":220,"column":34},"end":{"line":220,"column":58}}},"13":{"name":"_initializeErrorHandling","line":227,"loc":{"start":{"line":227,"column":46},"end":{"line":227,"column":82}}},"14":{"name":"_error","line":237,"loc":{"start":{"line":237,"column":28},"end":{"line":237,"column":62}}},"15":{"name":"close","line":243,"loc":{"start":{"line":243,"column":27},"end":{"line":243,"column":49}}},"16":{"name":"(anonymous_16)","line":253,"loc":{"start":{"line":253,"column":24},"end":{"line":253,"column":43}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":31}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":50}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":52}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":54}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":56}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":54}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":44}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":47}},"9":{"start":{"line":11,"column":0},"end":{"line":11,"column":28}},"10":{"start":{"line":50,"column":0},"end":{"line":75,"column":1}},"11":{"start":{"line":51,"column":2},"end":{"line":51,"column":20}},"12":{"start":{"line":54,"column":2},"end":{"line":54,"column":60}},"13":{"start":{"line":58,"column":2},"end":{"line":58,"column":51}},"14":{"start":{"line":59,"column":2},"end":{"line":63,"column":3}},"15":{"start":{"line":60,"column":4},"end":{"line":60,"column":25}},"16":{"start":{"line":62,"column":4},"end":{"line":62,"column":24}},"17":{"start":{"line":68,"column":2},"end":{"line":68,"column":58}},"18":{"start":{"line":71,"column":2},"end":{"line":71,"column":31}},"19":{"start":{"line":74,"column":2},"end":{"line":74,"column":34}},"20":{"start":{"line":76,"column":0},"end":{"line":76,"column":91}},"21":{"start":{"line":81,"column":0},"end":{"line":81,"column":68}},"22":{"start":{"line":84,"column":0},"end":{"line":87,"column":2}},"23":{"start":{"line":85,"column":2},"end":{"line":85,"column":67}},"24":{"start":{"line":86,"column":2},"end":{"line":86,"column":28}},"25":{"start":{"line":90,"column":0},"end":{"line":118,"column":2}},"26":{"start":{"line":92,"column":2},"end":{"line":92,"column":17}},"27":{"start":{"line":95,"column":2},"end":{"line":117,"column":4}},"28":{"start":{"line":98,"column":4},"end":{"line":98,"column":24}},"29":{"start":{"line":99,"column":4},"end":{"line":107,"column":5}},"30":{"start":{"line":100,"column":6},"end":{"line":105,"column":7}},"31":{"start":{"line":101,"column":8},"end":{"line":102,"column":76}},"32":{"start":{"line":103,"column":8},"end":{"line":103,"column":51}},"33":{"start":{"line":104,"column":8},"end":{"line":104,"column":15}},"34":{"start":{"line":106,"column":6},"end":{"line":106,"column":18}},"35":{"start":{"line":111,"column":4},"end":{"line":116,"column":5}},"36":{"start":{"line":112,"column":6},"end":{"line":112,"column":85}},"37":{"start":{"line":113,"column":6},"end":{"line":113,"column":25}},"38":{"start":{"line":114,"column":6},"end":{"line":114,"column":43}},"39":{"start":{"line":115,"column":6},"end":{"line":115,"column":41}},"40":{"start":{"line":153,"column":0},"end":{"line":160,"column":1}},"41":{"start":{"line":154,"column":2},"end":{"line":154,"column":54}},"42":{"start":{"line":155,"column":2},"end":{"line":155,"column":44}},"43":{"start":{"line":156,"column":2},"end":{"line":158,"column":4}},"44":{"start":{"line":157,"column":4},"end":{"line":157,"column":30}},"45":{"start":{"line":159,"column":2},"end":{"line":159,"column":19}},"46":{"start":{"line":162,"column":0},"end":{"line":168,"column":1}},"47":{"start":{"line":163,"column":2},"end":{"line":167,"column":3}},"48":{"start":{"line":164,"column":4},"end":{"line":164,"column":62}},"49":{"start":{"line":166,"column":4},"end":{"line":166,"column":26}},"50":{"start":{"line":170,"column":0},"end":{"line":170,"column":34}},"51":{"start":{"line":172,"column":0},"end":{"line":194,"column":2}},"52":{"start":{"line":173,"column":2},"end":{"line":173,"column":54}},"53":{"start":{"line":174,"column":2},"end":{"line":182,"column":3}},"54":{"start":{"line":175,"column":4},"end":{"line":175,"column":22}},"55":{"start":{"line":176,"column":4},"end":{"line":176,"column":31}},"56":{"start":{"line":177,"column":4},"end":{"line":177,"column":34}},"57":{"start":{"line":179,"column":4},"end":{"line":179,"column":22}},"58":{"start":{"line":180,"column":4},"end":{"line":180,"column":32}},"59":{"start":{"line":181,"column":4},"end":{"line":181,"column":33}},"60":{"start":{"line":184,"column":2},"end":{"line":184,"column":72}},"61":{"start":{"line":185,"column":2},"end":{"line":185,"column":74}},"62":{"start":{"line":186,"column":2},"end":{"line":186,"column":65}},"63":{"start":{"line":187,"column":2},"end":{"line":187,"column":69}},"64":{"start":{"line":188,"column":2},"end":{"line":188,"column":74}},"65":{"start":{"line":190,"column":2},"end":{"line":190,"column":79}},"66":{"start":{"line":191,"column":2},"end":{"line":191,"column":81}},"67":{"start":{"line":192,"column":2},"end":{"line":192,"column":86}},"68":{"start":{"line":193,"column":2},"end":{"line":193,"column":82}},"69":{"start":{"line":196,"column":0},"end":{"line":196,"column":16}},"70":{"start":{"line":197,"column":0},"end":{"line":207,"column":2}},"71":{"start":{"line":198,"column":2},"end":{"line":198,"column":34}},"72":{"start":{"line":199,"column":2},"end":{"line":199,"column":33}},"73":{"start":{"line":200,"column":2},"end":{"line":202,"column":3}},"74":{"start":{"line":201,"column":4},"end":{"line":201,"column":34}},"75":{"start":{"line":203,"column":2},"end":{"line":205,"column":3}},"76":{"start":{"line":204,"column":4},"end":{"line":204,"column":61}},"77":{"start":{"line":206,"column":2},"end":{"line":206,"column":35}},"78":{"start":{"line":209,"column":0},"end":{"line":211,"column":2}},"79":{"start":{"line":210,"column":2},"end":{"line":210,"column":50}},"80":{"start":{"line":216,"column":0},"end":{"line":218,"column":2}},"81":{"start":{"line":217,"column":2},"end":{"line":217,"column":64}},"82":{"start":{"line":220,"column":0},"end":{"line":222,"column":2}},"83":{"start":{"line":221,"column":2},"end":{"line":221,"column":41}},"84":{"start":{"line":227,"column":0},"end":{"line":235,"column":2}},"85":{"start":{"line":228,"column":2},"end":{"line":228,"column":69}},"86":{"start":{"line":229,"column":2},"end":{"line":229,"column":73}},"87":{"start":{"line":230,"column":2},"end":{"line":230,"column":69}},"88":{"start":{"line":231,"column":2},"end":{"line":231,"column":73}},"89":{"start":{"line":232,"column":2},"end":{"line":232,"column":69}},"90":{"start":{"line":234,"column":2},"end":{"line":234,"column":70}},"91":{"start":{"line":237,"column":0},"end":{"line":241,"column":2}},"92":{"start":{"line":238,"column":2},"end":{"line":238,"column":92}},"93":{"start":{"line":239,"column":2},"end":{"line":239,"column":20}},"94":{"start":{"line":240,"column":2},"end":{"line":240,"column":53}},"95":{"start":{"line":243,"column":0},"end":{"line":245,"column":2}},"96":{"start":{"line":244,"column":2},"end":{"line":244,"column":32}},"97":{"start":{"line":250,"column":0},"end":{"line":250,"column":25}},"98":{"start":{"line":252,"column":0},"end":{"line":252,"column":15}},"99":{"start":{"line":253,"column":0},"end":{"line":259,"column":2}},"100":{"start":{"line":254,"column":2},"end":{"line":257,"column":3}},"101":{"start":{"line":255,"column":4},"end":{"line":255,"column":25}},"102":{"start":{"line":256,"column":4},"end":{"line":256,"column":16}},"103":{"start":{"line":258,"column":2},"end":{"line":258,"column":21}}},"branchMap":{"1":{"line":58,"type":"binary-expr","locations":[{"start":{"line":58,"column":10},"end":{"line":58,"column":27}},{"start":{"line":58,"column":32},"end":{"line":58,"column":49}}]},"2":{"line":59,"type":"if","locations":[{"start":{"line":59,"column":2},"end":{"line":59,"column":2}},{"start":{"line":59,"column":2},"end":{"line":59,"column":2}}]},"3":{"line":68,"type":"binary-expr","locations":[{"start":{"line":68,"column":43},"end":{"line":68,"column":50}},{"start":{"line":68,"column":54},"end":{"line":68,"column":56}}]},"4":{"line":99,"type":"binary-expr","locations":[{"start":{"line":99,"column":10},"end":{"line":99,"column":40}},{"start":{"line":99,"column":44},"end":{"line":99,"column":76}}]},"5":{"line":100,"type":"if","locations":[{"start":{"line":100,"column":6},"end":{"line":100,"column":6}},{"start":{"line":100,"column":6},"end":{"line":100,"column":6}}]},"6":{"line":111,"type":"if","locations":[{"start":{"line":111,"column":4},"end":{"line":111,"column":4}},{"start":{"line":111,"column":4},"end":{"line":111,"column":4}}]},"7":{"line":163,"type":"if","locations":[{"start":{"line":163,"column":2},"end":{"line":163,"column":2}},{"start":{"line":163,"column":2},"end":{"line":163,"column":2}}]},"8":{"line":174,"type":"if","locations":[{"start":{"line":174,"column":2},"end":{"line":174,"column":2}},{"start":{"line":174,"column":2},"end":{"line":174,"column":2}}]},"9":{"line":200,"type":"binary-expr","locations":[{"start":{"line":200,"column":9},"end":{"line":200,"column":19}},{"start":{"line":200,"column":24},"end":{"line":200,"column":55}}]},"10":{"line":203,"type":"if","locations":[{"start":{"line":203,"column":2},"end":{"line":203,"column":2}},{"start":{"line":203,"column":2},"end":{"line":203,"column":2}}]},"11":{"line":254,"type":"if","locations":[{"start":{"line":254,"column":2},"end":{"line":254,"column":2}},{"start":{"line":254,"column":2},"end":{"line":254,"column":2}}]}}},"/data/upstream/node-http2/lib/framer.js":{"path":"/data/upstream/node-http2/lib/framer.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":25,"8":25,"9":25,"10":1,"11":1,"12":76,"13":76,"14":76,"15":76,"16":76,"17":76,"18":76,"19":156,"20":0,"21":156,"22":76,"23":1,"24":25,"25":25,"26":25,"27":25,"28":1,"29":1,"30":165,"31":165,"32":165,"33":165,"34":95,"35":1,"36":68,"37":68,"38":0,"39":68,"40":149,"41":149,"42":149,"43":149,"44":149,"45":70,"46":70,"47":70,"48":0,"49":0,"50":149,"51":70,"52":70,"53":70,"54":0,"55":0,"56":70,"57":70,"58":0,"59":70,"60":68,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":87,"69":87,"70":87,"71":91,"72":87,"73":87,"74":87,"75":87,"76":87,"77":87,"78":93,"79":93,"80":93,"81":54,"82":87,"83":87,"84":87,"85":87,"86":1,"87":81,"88":81,"89":81,"90":81,"91":81,"92":81,"93":152,"94":81,"95":81,"96":1,"97":1,"98":1,"99":1,"100":14,"101":1,"102":14,"103":1,"104":1,"105":1,"106":1,"107":29,"108":2,"109":2,"110":2,"111":2,"112":29,"113":1,"114":28,"115":2,"116":2,"117":26,"118":1,"119":1,"120":1,"121":1,"122":2,"123":2,"124":2,"125":1,"126":2,"127":1,"128":1,"129":1,"130":1,"131":2,"132":2,"133":2,"134":2,"135":2,"136":1,"137":2,"138":1,"139":1,"140":1,"141":1,"142":26,"143":26,"144":78,"145":34,"146":34,"147":34,"148":26,"149":26,"150":26,"151":34,"152":34,"153":26,"154":1,"155":22,"156":22,"157":0,"158":22,"159":28,"160":28,"161":28,"162":28,"163":28,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"172":4,"173":4,"174":4,"175":4,"176":4,"177":4,"178":1,"179":4,"180":4,"181":1,"182":1,"183":1,"184":1,"185":2,"186":1,"187":2,"188":0,"189":2,"190":1,"191":1,"192":1,"193":1,"194":4,"195":4,"196":4,"197":4,"198":4,"199":4,"200":4,"201":4,"202":1,"203":3,"204":3,"205":1,"206":1,"207":1,"208":1,"209":2,"210":2,"211":2,"212":2,"213":2,"214":1,"215":2,"216":1,"217":1,"218":1,"219":1,"220":2,"221":1,"222":2,"223":1,"224":1,"225":1,"226":1,"227":6,"228":0,"229":6,"230":4,"231":2,"232":2,"233":2,"234":2,"235":8,"236":2,"237":1,"238":0,"239":1,"240":1,"241":1,"242":2,"243":0,"244":2,"245":0,"246":2,"247":1,"248":0},"b":{"1":[25,1],"2":[0,156],"3":[25,1],"4":[95,70],"5":[0,68],"6":[70,79],"7":[149,134],"8":[70,0],"9":[70,79],"10":[149,70],"11":[70,0],"12":[0,70],"13":[54,39],"14":[87,87],"15":[87,26],"16":[2,27],"17":[2,2],"18":[2,26],"19":[2,2],"20":[34,44],"21":[22,12],"22":[0,22],"23":[28,0],"24":[20,8],"25":[4,4],"26":[0,2],"27":[4,4],"28":[4,4],"29":[2,2],"30":[0,6],"31":[4,2],"32":[1,1],"33":[0,1],"34":[1,0],"35":[0,2],"36":[2,2]},"f":{"1":25,"2":76,"3":25,"4":165,"5":68,"6":87,"7":81,"8":14,"9":14,"10":29,"11":28,"12":2,"13":2,"14":2,"15":2,"16":26,"17":78,"18":22,"19":4,"20":4,"21":2,"22":2,"23":4,"24":3,"25":2,"26":2,"27":2,"28":2,"29":6,"30":8,"31":0,"32":0},"fnMap":{"1":{"name":"Serializer","line":25,"loc":{"start":{"line":25,"column":0},"end":{"line":25,"column":36}}},"2":{"name":"_transform","line":35,"loc":{"start":{"line":35,"column":34},"end":{"line":35,"column":77}}},"3":{"name":"Deserializer","line":67,"loc":{"start":{"line":67,"column":0},"end":{"line":67,"column":38}}},"4":{"name":"(anonymous_4)","line":80,"loc":{"start":{"line":80,"column":31},"end":{"line":80,"column":46}}},"5":{"name":"_transform","line":91,"loc":{"start":{"line":91,"column":36},"end":{"line":91,"column":79}}},"6":{"name":"writeCommonHeader","line":202,"loc":{"start":{"line":202,"column":26},"end":{"line":202,"column":69}}},"7":{"name":"readCommonHeader","line":231,"loc":{"start":{"line":231,"column":28},"end":{"line":231,"column":69}}},"8":{"name":"writeData","line":278,"loc":{"start":{"line":278,"column":18},"end":{"line":278,"column":53}}},"9":{"name":"readData","line":282,"loc":{"start":{"line":282,"column":20},"end":{"line":282,"column":53}}},"10":{"name":"writeHeadersPriority","line":321,"loc":{"start":{"line":321,"column":21},"end":{"line":321,"column":67}}},"11":{"name":"readHeadersPriority","line":331,"loc":{"start":{"line":331,"column":23},"end":{"line":331,"column":67}}},"12":{"name":"writePriority","line":361,"loc":{"start":{"line":361,"column":22},"end":{"line":361,"column":61}}},"13":{"name":"readPriority","line":367,"loc":{"start":{"line":367,"column":24},"end":{"line":367,"column":61}}},"14":{"name":"writeRstStream","line":393,"loc":{"start":{"line":393,"column":24},"end":{"line":393,"column":64}}},"15":{"name":"readRstStream","line":401,"loc":{"start":{"line":401,"column":26},"end":{"line":401,"column":64}}},"16":{"name":"writeSettings","line":437,"loc":{"start":{"line":437,"column":22},"end":{"line":437,"column":61}}},"17":{"name":"(anonymous_17)","line":439,"loc":{"start":{"line":439,"column":26},"end":{"line":439,"column":48}}},"18":{"name":"readSettings","line":457,"loc":{"start":{"line":457,"column":24},"end":{"line":457,"column":61}}},"19":{"name":"writePushPromise","line":522,"loc":{"start":{"line":522,"column":26},"end":{"line":522,"column":68}}},"20":{"name":"readPushPromise","line":533,"loc":{"start":{"line":533,"column":28},"end":{"line":533,"column":68}}},"21":{"name":"writePing","line":557,"loc":{"start":{"line":557,"column":18},"end":{"line":557,"column":53}}},"22":{"name":"readPing","line":561,"loc":{"start":{"line":561,"column":20},"end":{"line":561,"column":53}}},"23":{"name":"writeGoaway","line":596,"loc":{"start":{"line":596,"column":20},"end":{"line":596,"column":57}}},"24":{"name":"readGoaway","line":610,"loc":{"start":{"line":610,"column":22},"end":{"line":610,"column":57}}},"25":{"name":"writeWindowUpdate","line":633,"loc":{"start":{"line":633,"column":27},"end":{"line":633,"column":70}}},"26":{"name":"readWindowUpdate","line":643,"loc":{"start":{"line":643,"column":29},"end":{"line":643,"column":70}}},"27":{"name":"writeContinuation","line":669,"loc":{"start":{"line":669,"column":26},"end":{"line":669,"column":69}}},"28":{"name":"readContinuation","line":673,"loc":{"start":{"line":673,"column":28},"end":{"line":673,"column":69}}},"29":{"name":"(anonymous_29)","line":703,"loc":{"start":{"line":703,"column":28},"end":{"line":703,"column":44}}},"30":{"name":"(anonymous_30)","line":716,"loc":{"start":{"line":716,"column":71},"end":{"line":716,"column":86}}},"31":{"name":"(anonymous_31)","line":736,"loc":{"start":{"line":736,"column":57},"end":{"line":736,"column":72}}},"32":{"name":"(anonymous_32)","line":744,"loc":{"start":{"line":744,"column":27},"end":{"line":744,"column":42}}}},"statementMap":{"1":{"start":{"line":5,"column":0},"end":{"line":5,"column":31}},"2":{"start":{"line":7,"column":0},"end":{"line":7,"column":44}},"3":{"start":{"line":9,"column":0},"end":{"line":9,"column":32}},"4":{"start":{"line":10,"column":0},"end":{"line":10,"column":36}},"5":{"start":{"line":12,"column":0},"end":{"line":12,"column":50}},"6":{"start":{"line":25,"column":0},"end":{"line":29,"column":1}},"7":{"start":{"line":26,"column":2},"end":{"line":26,"column":53}},"8":{"start":{"line":27,"column":2},"end":{"line":27,"column":50}},"9":{"start":{"line":28,"column":2},"end":{"line":28,"column":45}},"10":{"start":{"line":30,"column":0},"end":{"line":30,"column":98}},"11":{"start":{"line":35,"column":0},"end":{"line":54,"column":2}},"12":{"start":{"line":36,"column":2},"end":{"line":36,"column":54}},"13":{"start":{"line":38,"column":2},"end":{"line":38,"column":72}},"14":{"start":{"line":40,"column":2},"end":{"line":40,"column":19}},"15":{"start":{"line":41,"column":2},"end":{"line":41,"column":41}},"16":{"start":{"line":42,"column":2},"end":{"line":42,"column":42}},"17":{"start":{"line":44,"column":2},"end":{"line":44,"column":76}},"18":{"start":{"line":46,"column":2},"end":{"line":51,"column":3}},"19":{"start":{"line":47,"column":4},"end":{"line":49,"column":5}},"20":{"start":{"line":48,"column":6},"end":{"line":48,"column":61}},"21":{"start":{"line":50,"column":4},"end":{"line":50,"column":26}},"22":{"start":{"line":53,"column":2},"end":{"line":53,"column":9}},"23":{"start":{"line":67,"column":0},"end":{"line":72,"column":1}},"24":{"start":{"line":68,"column":2},"end":{"line":68,"column":55}},"25":{"start":{"line":69,"column":2},"end":{"line":69,"column":50}},"26":{"start":{"line":70,"column":2},"end":{"line":70,"column":45}},"27":{"start":{"line":71,"column":2},"end":{"line":71,"column":33}},"28":{"start":{"line":73,"column":0},"end":{"line":73,"column":102}},"29":{"start":{"line":80,"column":0},"end":{"line":87,"column":2}},"30":{"start":{"line":81,"column":2},"end":{"line":81,"column":19}},"31":{"start":{"line":82,"column":2},"end":{"line":82,"column":34}},"32":{"start":{"line":83,"column":2},"end":{"line":83,"column":51}},"33":{"start":{"line":84,"column":2},"end":{"line":86,"column":3}},"34":{"start":{"line":85,"column":4},"end":{"line":85,"column":21}},"35":{"start":{"line":91,"column":0},"end":{"line":144,"column":2}},"36":{"start":{"line":92,"column":2},"end":{"line":92,"column":17}},"37":{"start":{"line":94,"column":2},"end":{"line":96,"column":3}},"38":{"start":{"line":95,"column":4},"end":{"line":95,"column":54}},"39":{"start":{"line":98,"column":2},"end":{"line":141,"column":3}},"40":{"start":{"line":101,"column":4},"end":{"line":101,"column":85}},"41":{"start":{"line":102,"column":4},"end":{"line":102,"column":68}},"42":{"start":{"line":103,"column":4},"end":{"line":103,"column":27}},"43":{"start":{"line":104,"column":4},"end":{"line":104,"column":21}},"44":{"start":{"line":111,"column":4},"end":{"line":119,"column":5}},"45":{"start":{"line":112,"column":6},"end":{"line":112,"column":77}},"46":{"start":{"line":113,"column":6},"end":{"line":118,"column":7}},"47":{"start":{"line":114,"column":8},"end":{"line":114,"column":32}},"48":{"start":{"line":116,"column":8},"end":{"line":116,"column":46}},"49":{"start":{"line":117,"column":8},"end":{"line":117,"column":15}},"50":{"start":{"line":126,"column":4},"end":{"line":140,"column":5}},"51":{"start":{"line":127,"column":6},"end":{"line":138,"column":7}},"52":{"start":{"line":128,"column":8},"end":{"line":128,"column":78}},"53":{"start":{"line":129,"column":8},"end":{"line":135,"column":9}},"54":{"start":{"line":130,"column":10},"end":{"line":130,"column":68}},"55":{"start":{"line":131,"column":10},"end":{"line":131,"column":47}},"56":{"start":{"line":133,"column":10},"end":{"line":133,"column":68}},"57":{"start":{"line":134,"column":10},"end":{"line":134,"column":33}},"58":{"start":{"line":137,"column":8},"end":{"line":137,"column":78}},"59":{"start":{"line":139,"column":6},"end":{"line":139,"column":37}},"60":{"start":{"line":143,"column":2},"end":{"line":143,"column":9}},"61":{"start":{"line":191,"column":0},"end":{"line":191,"column":27}},"62":{"start":{"line":192,"column":0},"end":{"line":192,"column":29}},"63":{"start":{"line":194,"column":0},"end":{"line":194,"column":20}},"64":{"start":{"line":196,"column":0},"end":{"line":196,"column":20}},"65":{"start":{"line":198,"column":0},"end":{"line":198,"column":52}},"66":{"start":{"line":200,"column":0},"end":{"line":200,"column":32}},"67":{"start":{"line":202,"column":0},"end":{"line":229,"column":2}},"68":{"start":{"line":203,"column":2},"end":{"line":203,"column":52}},"69":{"start":{"line":205,"column":2},"end":{"line":205,"column":15}},"70":{"start":{"line":206,"column":2},"end":{"line":208,"column":3}},"71":{"start":{"line":207,"column":4},"end":{"line":207,"column":30}},"72":{"start":{"line":209,"column":2},"end":{"line":209,"column":41}},"73":{"start":{"line":210,"column":2},"end":{"line":210,"column":38}},"74":{"start":{"line":212,"column":2},"end":{"line":212,"column":46}},"75":{"start":{"line":213,"column":2},"end":{"line":213,"column":37}},"76":{"start":{"line":215,"column":2},"end":{"line":215,"column":19}},"77":{"start":{"line":216,"column":2},"end":{"line":222,"column":3}},"78":{"start":{"line":217,"column":4},"end":{"line":217,"column":56}},"79":{"start":{"line":218,"column":4},"end":{"line":218,"column":87}},"80":{"start":{"line":219,"column":4},"end":{"line":221,"column":5}},"81":{"start":{"line":220,"column":6},"end":{"line":220,"column":34}},"82":{"start":{"line":223,"column":2},"end":{"line":223,"column":39}},"83":{"start":{"line":225,"column":2},"end":{"line":225,"column":75}},"84":{"start":{"line":226,"column":2},"end":{"line":226,"column":51}},"85":{"start":{"line":228,"column":2},"end":{"line":228,"column":32}},"86":{"start":{"line":231,"column":0},"end":{"line":246,"column":2}},"87":{"start":{"line":232,"column":2},"end":{"line":232,"column":38}},"88":{"start":{"line":234,"column":2},"end":{"line":234,"column":47}},"89":{"start":{"line":236,"column":2},"end":{"line":236,"column":19}},"90":{"start":{"line":237,"column":2},"end":{"line":237,"column":37}},"91":{"start":{"line":238,"column":2},"end":{"line":238,"column":44}},"92":{"start":{"line":239,"column":2},"end":{"line":241,"column":3}},"93":{"start":{"line":240,"column":4},"end":{"line":240,"column":64}},"94":{"start":{"line":243,"column":2},"end":{"line":243,"column":53}},"95":{"start":{"line":245,"column":2},"end":{"line":245,"column":16}},"96":{"start":{"line":272,"column":0},"end":{"line":272,"column":25}},"97":{"start":{"line":274,"column":0},"end":{"line":274,"column":45}},"98":{"start":{"line":276,"column":0},"end":{"line":276,"column":39}},"99":{"start":{"line":278,"column":0},"end":{"line":280,"column":2}},"100":{"start":{"line":279,"column":2},"end":{"line":279,"column":27}},"101":{"start":{"line":282,"column":0},"end":{"line":284,"column":2}},"102":{"start":{"line":283,"column":2},"end":{"line":283,"column":22}},"103":{"start":{"line":305,"column":0},"end":{"line":305,"column":28}},"104":{"start":{"line":307,"column":0},"end":{"line":307,"column":75}},"105":{"start":{"line":309,"column":0},"end":{"line":309,"column":65}},"106":{"start":{"line":321,"column":0},"end":{"line":329,"column":2}},"107":{"start":{"line":322,"column":2},"end":{"line":327,"column":3}},"108":{"start":{"line":323,"column":4},"end":{"line":323,"column":31}},"109":{"start":{"line":324,"column":4},"end":{"line":324,"column":84}},"110":{"start":{"line":325,"column":4},"end":{"line":325,"column":44}},"111":{"start":{"line":326,"column":4},"end":{"line":326,"column":25}},"112":{"start":{"line":328,"column":2},"end":{"line":328,"column":27}},"113":{"start":{"line":331,"column":0},"end":{"line":338,"column":2}},"114":{"start":{"line":332,"column":2},"end":{"line":337,"column":3}},"115":{"start":{"line":333,"column":4},"end":{"line":333,"column":57}},"116":{"start":{"line":334,"column":4},"end":{"line":334,"column":33}},"117":{"start":{"line":336,"column":4},"end":{"line":336,"column":24}},"118":{"start":{"line":347,"column":0},"end":{"line":347,"column":29}},"119":{"start":{"line":349,"column":0},"end":{"line":349,"column":25}},"120":{"start":{"line":351,"column":0},"end":{"line":351,"column":47}},"121":{"start":{"line":361,"column":0},"end":{"line":365,"column":2}},"122":{"start":{"line":362,"column":2},"end":{"line":362,"column":29}},"123":{"start":{"line":363,"column":2},"end":{"line":363,"column":42}},"124":{"start":{"line":364,"column":2},"end":{"line":364,"column":23}},"125":{"start":{"line":367,"column":0},"end":{"line":369,"column":2}},"126":{"start":{"line":368,"column":2},"end":{"line":368,"column":42}},"127":{"start":{"line":378,"column":0},"end":{"line":378,"column":31}},"128":{"start":{"line":380,"column":0},"end":{"line":380,"column":27}},"129":{"start":{"line":382,"column":0},"end":{"line":382,"column":46}},"130":{"start":{"line":393,"column":0},"end":{"line":399,"column":2}},"131":{"start":{"line":394,"column":2},"end":{"line":394,"column":29}},"132":{"start":{"line":395,"column":2},"end":{"line":395,"column":45}},"133":{"start":{"line":396,"column":2},"end":{"line":396,"column":52}},"134":{"start":{"line":397,"column":2},"end":{"line":397,"column":32}},"135":{"start":{"line":398,"column":2},"end":{"line":398,"column":23}},"136":{"start":{"line":401,"column":0},"end":{"line":403,"column":2}},"137":{"start":{"line":402,"column":2},"end":{"line":402,"column":51}},"138":{"start":{"line":413,"column":0},"end":{"line":413,"column":29}},"139":{"start":{"line":415,"column":0},"end":{"line":415,"column":25}},"140":{"start":{"line":417,"column":0},"end":{"line":417,"column":47}},"141":{"start":{"line":437,"column":0},"end":{"line":455,"column":2}},"142":{"start":{"line":438,"column":2},"end":{"line":438,"column":64}},"143":{"start":{"line":439,"column":2},"end":{"line":445,"column":5}},"144":{"start":{"line":440,"column":4},"end":{"line":444,"column":5}},"145":{"start":{"line":441,"column":6},"end":{"line":441,"column":65}},"146":{"start":{"line":442,"column":6},"end":{"line":442,"column":47}},"147":{"start":{"line":443,"column":6},"end":{"line":443,"column":78}},"148":{"start":{"line":446,"column":2},"end":{"line":446,"column":84}},"149":{"start":{"line":448,"column":2},"end":{"line":448,"column":47}},"150":{"start":{"line":449,"column":2},"end":{"line":452,"column":3}},"151":{"start":{"line":450,"column":4},"end":{"line":450,"column":57}},"152":{"start":{"line":451,"column":4},"end":{"line":451,"column":53}},"153":{"start":{"line":454,"column":2},"end":{"line":454,"column":23}},"154":{"start":{"line":457,"column":0},"end":{"line":473,"column":2}},"155":{"start":{"line":458,"column":2},"end":{"line":458,"column":22}},"156":{"start":{"line":460,"column":2},"end":{"line":462,"column":3}},"157":{"start":{"line":461,"column":4},"end":{"line":461,"column":36}},"158":{"start":{"line":463,"column":2},"end":{"line":472,"column":3}},"159":{"start":{"line":464,"column":4},"end":{"line":464,"column":49}},"160":{"start":{"line":465,"column":4},"end":{"line":465,"column":38}},"161":{"start":{"line":466,"column":4},"end":{"line":471,"column":5}},"162":{"start":{"line":467,"column":6},"end":{"line":467,"column":47}},"163":{"start":{"line":468,"column":6},"end":{"line":468,"column":81}},"164":{"start":{"line":476,"column":0},"end":{"line":476,"column":25}},"165":{"start":{"line":480,"column":0},"end":{"line":480,"column":78}},"166":{"start":{"line":484,"column":0},"end":{"line":484,"column":75}},"167":{"start":{"line":490,"column":0},"end":{"line":490,"column":76}},"168":{"start":{"line":504,"column":0},"end":{"line":504,"column":33}},"169":{"start":{"line":506,"column":0},"end":{"line":506,"column":47}},"170":{"start":{"line":508,"column":0},"end":{"line":508,"column":77}},"171":{"start":{"line":522,"column":0},"end":{"line":531,"column":2}},"172":{"start":{"line":523,"column":2},"end":{"line":523,"column":29}},"173":{"start":{"line":525,"column":2},"end":{"line":525,"column":46}},"174":{"start":{"line":526,"column":2},"end":{"line":526,"column":85}},"175":{"start":{"line":527,"column":2},"end":{"line":527,"column":43}},"176":{"start":{"line":529,"column":2},"end":{"line":529,"column":23}},"177":{"start":{"line":530,"column":2},"end":{"line":530,"column":27}},"178":{"start":{"line":533,"column":0},"end":{"line":536,"column":2}},"179":{"start":{"line":534,"column":2},"end":{"line":534,"column":62}},"180":{"start":{"line":535,"column":2},"end":{"line":535,"column":31}},"181":{"start":{"line":549,"column":0},"end":{"line":549,"column":25}},"182":{"start":{"line":551,"column":0},"end":{"line":551,"column":27}},"183":{"start":{"line":553,"column":0},"end":{"line":553,"column":39}},"184":{"start":{"line":557,"column":0},"end":{"line":559,"column":2}},"185":{"start":{"line":558,"column":2},"end":{"line":558,"column":27}},"186":{"start":{"line":561,"column":0},"end":{"line":566,"column":2}},"187":{"start":{"line":562,"column":2},"end":{"line":564,"column":3}},"188":{"start":{"line":563,"column":4},"end":{"line":563,"column":37}},"189":{"start":{"line":565,"column":2},"end":{"line":565,"column":22}},"190":{"start":{"line":575,"column":0},"end":{"line":575,"column":27}},"191":{"start":{"line":577,"column":0},"end":{"line":577,"column":23}},"192":{"start":{"line":579,"column":0},"end":{"line":579,"column":57}},"193":{"start":{"line":596,"column":0},"end":{"line":608,"column":2}},"194":{"start":{"line":597,"column":2},"end":{"line":597,"column":29}},"195":{"start":{"line":599,"column":2},"end":{"line":599,"column":38}},"196":{"start":{"line":600,"column":2},"end":{"line":600,"column":73}},"197":{"start":{"line":601,"column":2},"end":{"line":601,"column":39}},"198":{"start":{"line":603,"column":2},"end":{"line":603,"column":45}},"199":{"start":{"line":604,"column":2},"end":{"line":604,"column":52}},"200":{"start":{"line":605,"column":2},"end":{"line":605,"column":32}},"201":{"start":{"line":607,"column":2},"end":{"line":607,"column":23}},"202":{"start":{"line":610,"column":0},"end":{"line":613,"column":2}},"203":{"start":{"line":611,"column":2},"end":{"line":611,"column":58}},"204":{"start":{"line":612,"column":2},"end":{"line":612,"column":51}},"205":{"start":{"line":622,"column":0},"end":{"line":622,"column":34}},"206":{"start":{"line":624,"column":0},"end":{"line":624,"column":30}},"207":{"start":{"line":626,"column":0},"end":{"line":626,"column":55}},"208":{"start":{"line":633,"column":0},"end":{"line":641,"column":2}},"209":{"start":{"line":634,"column":2},"end":{"line":634,"column":29}},"210":{"start":{"line":636,"column":2},"end":{"line":636,"column":38}},"211":{"start":{"line":637,"column":2},"end":{"line":637,"column":73}},"212":{"start":{"line":638,"column":2},"end":{"line":638,"column":39}},"213":{"start":{"line":640,"column":2},"end":{"line":640,"column":23}},"214":{"start":{"line":643,"column":0},"end":{"line":645,"column":2}},"215":{"start":{"line":644,"column":2},"end":{"line":644,"column":58}},"216":{"start":{"line":663,"column":0},"end":{"line":663,"column":33}},"217":{"start":{"line":665,"column":0},"end":{"line":665,"column":68}},"218":{"start":{"line":667,"column":0},"end":{"line":667,"column":58}},"219":{"start":{"line":669,"column":0},"end":{"line":671,"column":2}},"220":{"start":{"line":670,"column":2},"end":{"line":670,"column":27}},"221":{"start":{"line":673,"column":0},"end":{"line":675,"column":2}},"222":{"start":{"line":674,"column":2},"end":{"line":674,"column":22}},"223":{"start":{"line":680,"column":0},"end":{"line":691,"column":2}},"224":{"start":{"line":698,"column":0},"end":{"line":698,"column":25}},"225":{"start":{"line":702,"column":0},"end":{"line":702,"column":21}},"226":{"start":{"line":703,"column":0},"end":{"line":741,"column":2}},"227":{"start":{"line":704,"column":2},"end":{"line":706,"column":3}},"228":{"start":{"line":705,"column":4},"end":{"line":705,"column":16}},"229":{"start":{"line":708,"column":2},"end":{"line":710,"column":3}},"230":{"start":{"line":709,"column":4},"end":{"line":709,"column":20}},"231":{"start":{"line":712,"column":2},"end":{"line":712,"column":26}},"232":{"start":{"line":713,"column":2},"end":{"line":713,"column":20}},"233":{"start":{"line":715,"column":2},"end":{"line":715,"column":34}},"234":{"start":{"line":716,"column":2},"end":{"line":718,"column":5}},"235":{"start":{"line":717,"column":4},"end":{"line":717,"column":33}},"236":{"start":{"line":720,"column":2},"end":{"line":730,"column":3}},"237":{"start":{"line":721,"column":4},"end":{"line":725,"column":5}},"238":{"start":{"line":722,"column":6},"end":{"line":722,"column":70}},"239":{"start":{"line":724,"column":6},"end":{"line":724,"column":49}},"240":{"start":{"line":727,"column":4},"end":{"line":729,"column":5}},"241":{"start":{"line":728,"column":6},"end":{"line":728,"column":42}},"242":{"start":{"line":732,"column":2},"end":{"line":734,"column":3}},"243":{"start":{"line":733,"column":4},"end":{"line":733,"column":68}},"244":{"start":{"line":736,"column":2},"end":{"line":738,"column":5}},"245":{"start":{"line":737,"column":4},"end":{"line":737,"column":38}},"246":{"start":{"line":740,"column":2},"end":{"line":740,"column":18}},"247":{"start":{"line":744,"column":0},"end":{"line":746,"column":2}},"248":{"start":{"line":745,"column":2},"end":{"line":745,"column":30}}},"branchMap":{"1":{"line":27,"type":"binary-expr","locations":[{"start":{"line":27,"column":20},"end":{"line":27,"column":29}},{"start":{"line":27,"column":33},"end":{"line":27,"column":49}}]},"2":{"line":47,"type":"if","locations":[{"start":{"line":47,"column":4},"end":{"line":47,"column":4}},{"start":{"line":47,"column":4},"end":{"line":47,"column":4}}]},"3":{"line":69,"type":"binary-expr","locations":[{"start":{"line":69,"column":20},"end":{"line":69,"column":29}},{"start":{"line":69,"column":33},"end":{"line":69,"column":49}}]},"4":{"line":84,"type":"if","locations":[{"start":{"line":84,"column":2},"end":{"line":84,"column":2}},{"start":{"line":84,"column":2},"end":{"line":84,"column":2}}]},"5":{"line":94,"type":"if","locations":[{"start":{"line":94,"column":2},"end":{"line":94,"column":2}},{"start":{"line":94,"column":2},"end":{"line":94,"column":2}}]},"6":{"line":111,"type":"if","locations":[{"start":{"line":111,"column":4},"end":{"line":111,"column":4}},{"start":{"line":111,"column":4},"end":{"line":111,"column":4}}]},"7":{"line":111,"type":"binary-expr","locations":[{"start":{"line":111,"column":9},"end":{"line":111,"column":45}},{"start":{"line":111,"column":50},"end":{"line":111,"column":72}}]},"8":{"line":113,"type":"if","locations":[{"start":{"line":113,"column":6},"end":{"line":113,"column":6}},{"start":{"line":113,"column":6},"end":{"line":113,"column":6}}]},"9":{"line":126,"type":"if","locations":[{"start":{"line":126,"column":4},"end":{"line":126,"column":4}},{"start":{"line":126,"column":4},"end":{"line":126,"column":4}}]},"10":{"line":126,"type":"binary-expr","locations":[{"start":{"line":126,"column":9},"end":{"line":126,"column":45}},{"start":{"line":126,"column":50},"end":{"line":126,"column":73}}]},"11":{"line":127,"type":"if","locations":[{"start":{"line":127,"column":6},"end":{"line":127,"column":6}},{"start":{"line":127,"column":6},"end":{"line":127,"column":6}}]},"12":{"line":129,"type":"if","locations":[{"start":{"line":129,"column":8},"end":{"line":129,"column":8}},{"start":{"line":129,"column":8},"end":{"line":129,"column":8}}]},"13":{"line":219,"type":"if","locations":[{"start":{"line":219,"column":4},"end":{"line":219,"column":4}},{"start":{"line":219,"column":4},"end":{"line":219,"column":4}}]},"14":{"line":225,"type":"binary-expr","locations":[{"start":{"line":225,"column":10},"end":{"line":225,"column":27}},{"start":{"line":225,"column":33},"end":{"line":225,"column":58}}]},"15":{"line":226,"type":"binary-expr","locations":[{"start":{"line":226,"column":29},"end":{"line":226,"column":41}},{"start":{"line":226,"column":45},"end":{"line":226,"column":46}}]},"16":{"line":322,"type":"if","locations":[{"start":{"line":322,"column":2},"end":{"line":322,"column":2}},{"start":{"line":322,"column":2},"end":{"line":322,"column":2}}]},"17":{"line":324,"type":"binary-expr","locations":[{"start":{"line":324,"column":12},"end":{"line":324,"column":31}},{"start":{"line":324,"column":37},"end":{"line":324,"column":65}}]},"18":{"line":332,"type":"if","locations":[{"start":{"line":332,"column":2},"end":{"line":332,"column":2}},{"start":{"line":332,"column":2},"end":{"line":332,"column":2}}]},"19":{"line":396,"type":"binary-expr","locations":[{"start":{"line":396,"column":10},"end":{"line":396,"column":19}},{"start":{"line":396,"column":25},"end":{"line":396,"column":43}}]},"20":{"line":440,"type":"if","locations":[{"start":{"line":440,"column":4},"end":{"line":440,"column":4}},{"start":{"line":440,"column":4},"end":{"line":440,"column":4}}]},"21":{"line":443,"type":"cond-expr","locations":[{"start":{"line":443,"column":52},"end":{"line":443,"column":66}},{"start":{"line":443,"column":69},"end":{"line":443,"column":74}}]},"22":{"line":460,"type":"if","locations":[{"start":{"line":460,"column":2},"end":{"line":460,"column":2}},{"start":{"line":460,"column":2},"end":{"line":460,"column":2}}]},"23":{"line":466,"type":"if","locations":[{"start":{"line":466,"column":4},"end":{"line":466,"column":4}},{"start":{"line":466,"column":4},"end":{"line":466,"column":4}}]},"24":{"line":468,"type":"cond-expr","locations":[{"start":{"line":468,"column":52},"end":{"line":468,"column":72}},{"start":{"line":468,"column":75},"end":{"line":468,"column":80}}]},"25":{"line":526,"type":"binary-expr","locations":[{"start":{"line":526,"column":10},"end":{"line":526,"column":30}},{"start":{"line":526,"column":36},"end":{"line":526,"column":65}}]},"26":{"line":562,"type":"if","locations":[{"start":{"line":562,"column":2},"end":{"line":562,"column":2}},{"start":{"line":562,"column":2},"end":{"line":562,"column":2}}]},"27":{"line":600,"type":"binary-expr","locations":[{"start":{"line":600,"column":10},"end":{"line":600,"column":26}},{"start":{"line":600,"column":32},"end":{"line":600,"column":57}}]},"28":{"line":604,"type":"binary-expr","locations":[{"start":{"line":604,"column":10},"end":{"line":604,"column":19}},{"start":{"line":604,"column":25},"end":{"line":604,"column":43}}]},"29":{"line":637,"type":"binary-expr","locations":[{"start":{"line":637,"column":10},"end":{"line":637,"column":26}},{"start":{"line":637,"column":32},"end":{"line":637,"column":57}}]},"30":{"line":704,"type":"if","locations":[{"start":{"line":704,"column":2},"end":{"line":704,"column":2}},{"start":{"line":704,"column":2},"end":{"line":704,"column":2}}]},"31":{"line":708,"type":"if","locations":[{"start":{"line":708,"column":2},"end":{"line":708,"column":2}},{"start":{"line":708,"column":2},"end":{"line":708,"column":2}}]},"32":{"line":720,"type":"if","locations":[{"start":{"line":720,"column":2},"end":{"line":720,"column":2}},{"start":{"line":720,"column":2},"end":{"line":720,"column":2}}]},"33":{"line":721,"type":"if","locations":[{"start":{"line":721,"column":4},"end":{"line":721,"column":4}},{"start":{"line":721,"column":4},"end":{"line":721,"column":4}}]},"34":{"line":727,"type":"if","locations":[{"start":{"line":727,"column":4},"end":{"line":727,"column":4}},{"start":{"line":727,"column":4},"end":{"line":727,"column":4}}]},"35":{"line":732,"type":"if","locations":[{"start":{"line":732,"column":2},"end":{"line":732,"column":2}},{"start":{"line":732,"column":2},"end":{"line":732,"column":2}}]},"36":{"line":736,"type":"binary-expr","locations":[{"start":{"line":736,"column":31},"end":{"line":736,"column":42}},{"start":{"line":736,"column":46},"end":{"line":736,"column":48}}]}}},"/data/upstream/node-http2/lib/http.js":{"path":"/data/upstream/node-http2/lib/http.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":3,"20":1,"21":1,"22":1,"23":6,"24":1,"25":25,"26":25,"27":25,"28":25,"29":25,"30":25,"31":25,"32":25,"33":25,"34":25,"35":1,"36":1,"37":24,"38":168,"39":168,"40":0,"41":0,"42":0,"43":24,"44":73,"45":13,"46":24,"47":1,"48":2,"49":1,"50":1,"51":60,"52":0,"53":0,"54":60,"55":1,"56":27,"57":27,"58":27,"59":27,"60":27,"61":1,"62":1,"63":13,"64":12,"65":1,"66":1,"67":31,"68":23,"69":2,"70":0,"71":2,"72":23,"73":8,"74":1,"75":4,"76":0,"77":4,"78":4,"79":0,"80":4,"81":1,"82":1,"83":0,"84":1,"85":1,"86":3,"87":1,"88":2,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":13,"98":13,"99":13,"100":13,"101":13,"102":13,"103":10,"104":10,"105":10,"106":10,"107":10,"108":10,"109":10,"110":9,"111":9,"112":0,"113":10,"114":3,"115":1,"116":1,"117":1,"118":2,"119":2,"120":11,"121":1,"122":1,"123":10,"124":10,"125":10,"126":10,"127":10,"128":10,"129":10,"130":10,"131":10,"132":10,"133":1,"134":0,"135":0,"136":0,"137":0,"138":1,"139":9,"140":9,"141":1,"142":4,"143":4,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":0,"151":1,"152":1,"153":1,"154":9,"155":0,"156":9,"157":1,"158":0,"159":0,"160":1,"161":10,"162":1,"163":1,"164":10,"165":9,"166":9,"167":9,"168":1,"169":12,"170":1,"171":1,"172":12,"173":12,"174":12,"175":12,"176":12,"177":12,"178":12,"179":12,"180":1,"181":12,"182":12,"183":12,"184":12,"185":12,"186":12,"187":1,"188":1,"189":12,"190":1,"191":11,"192":12,"193":1,"194":12,"195":12,"196":11,"197":12,"198":12,"199":12,"200":12,"201":1,"202":23,"203":11,"204":1,"205":11,"206":11,"207":1,"208":12,"209":12,"210":1,"211":10,"212":1,"213":2,"214":1,"215":2,"216":0,"217":2,"218":2,"219":2,"220":2,"221":1,"222":12,"223":0,"224":12,"225":1,"226":1,"227":1,"228":1,"229":1,"230":1,"231":4,"232":1,"233":7,"234":1,"235":4,"236":4,"237":4,"238":4,"239":4,"240":4,"241":4,"242":4,"243":1,"244":1,"245":12,"246":8,"247":12,"248":12,"249":12,"250":12,"251":12,"252":12,"253":1,"254":1,"255":11,"256":11,"257":7,"258":11,"259":11,"260":1,"261":1,"262":10,"263":1,"264":1,"265":1,"266":1,"267":9,"268":9,"269":9,"270":9,"271":9,"272":9,"273":9,"274":0,"275":9,"276":9,"277":1,"278":9,"279":9,"280":9,"281":9,"282":9,"283":9,"284":9,"285":9,"286":1,"287":1,"288":0,"289":8,"290":8,"291":8,"292":8,"293":0,"294":9,"295":9,"296":9,"297":9,"298":0,"299":11,"300":1,"301":7,"302":7,"303":7,"304":1,"305":9,"306":9,"307":9,"308":9,"309":9,"310":9,"311":9,"312":9,"313":1,"314":1,"315":1,"316":1,"317":1,"318":15,"319":15,"320":15,"321":1,"322":1,"323":11,"324":11,"325":11,"326":1,"327":11,"328":11,"329":11,"330":0,"331":11,"332":11,"333":11,"334":11,"335":11,"336":11,"337":11,"338":11,"339":11,"340":11,"341":11,"342":1,"343":4,"344":4,"345":4,"346":1,"347":0,"348":0,"349":0,"350":1,"351":40,"352":0,"353":40,"354":1,"355":3,"356":1,"357":2,"358":1,"359":1,"360":3,"361":1,"362":2,"363":1,"364":1,"365":3,"366":1,"367":2,"368":1,"369":1,"370":3,"371":1,"372":2,"373":1,"374":1,"375":1,"376":2,"377":2,"378":2,"379":2,"380":0,"381":1,"382":13,"383":1,"384":1,"385":12,"386":12,"387":12,"388":12,"389":1,"390":2,"391":2,"392":2,"393":2,"394":2,"395":2,"396":2,"397":2,"398":2,"399":2,"400":1,"401":1,"402":0,"403":1,"404":0,"405":1},"b":{"1":[0,168],"2":[13,60],"3":[0,60],"4":[60,60],"5":[12,1],"6":[23,8],"7":[2,21],"8":[0,2],"9":[0,4],"10":[0,4],"11":[0,1],"12":[13,2],"13":[13,2],"14":[10,3],"15":[13,10,3],"16":[9,0],"17":[9,9],"18":[1,2],"19":[0,9],"20":[1,0],"21":[1,0],"22":[1,0],"23":[0,9],"24":[9,9],"25":[0,0],"26":[0,0],"27":[1,9],"28":[9,0],"29":[1,11],"30":[11,1],"31":[12,11],"32":[11,12],"33":[1,1],"34":[0,2],"35":[2,2],"36":[2,1,1],"37":[2,2,2],"38":[0,12],"39":[12,0],"40":[0,0],"41":[4,4],"42":[7,7],"43":[4,1],"44":[4,1],"45":[8,4],"46":[12,12],"47":[12,3],"48":[12,4,1],"49":[12,1],"50":[12,1],"51":[1,11],"52":[7,4],"53":[1,10],"54":[1,9],"55":[0,9],"56":[9,0],"57":[1,8],"58":[1,0],"59":[8,0],"60":[9,0],"61":[0,11],"62":[11,10],"63":[0,0],"64":[0,40],"65":[40,0],"66":[0,0],"67":[1,2],"68":[1,1],"69":[1,2],"70":[1,1],"71":[1,2],"72":[1,1],"73":[1,2],"74":[1,1],"75":[2,0]},"f":{"1":2,"2":3,"3":6,"4":25,"5":24,"6":2,"7":60,"8":27,"9":13,"10":31,"11":4,"12":1,"13":3,"14":2,"15":13,"16":9,"17":10,"18":10,"19":0,"20":9,"21":4,"22":1,"23":1,"24":1,"25":9,"26":0,"27":10,"28":12,"29":12,"30":12,"31":12,"32":23,"33":11,"34":12,"35":10,"36":2,"37":12,"38":4,"39":7,"40":4,"41":12,"42":9,"43":9,"44":9,"45":7,"46":9,"47":1,"48":1,"49":15,"50":11,"51":4,"52":0,"53":40,"54":3,"55":3,"56":3,"57":3,"58":2,"59":13,"60":12,"61":2,"62":0,"63":0},"fnMap":{"1":{"name":"noop","line":162,"loc":{"start":{"line":162,"column":0},"end":{"line":162,"column":16}}},"2":{"name":"(anonymous_2)","line":171,"loc":{"start":{"line":171,"column":9},"end":{"line":171,"column":20}}},"3":{"name":"(anonymous_3)","line":177,"loc":{"start":{"line":177,"column":16},"end":{"line":177,"column":33}}},"4":{"name":"IncomingMessage","line":184,"loc":{"start":{"line":184,"column":0},"end":{"line":184,"column":33}}},"5":{"name":"_onHeaders","line":211,"loc":{"start":{"line":211,"column":39},"end":{"line":211,"column":68}}},"6":{"name":"_onTrailers","line":236,"loc":{"start":{"line":236,"column":40},"end":{"line":236,"column":71}}},"7":{"name":"_checkSpecialHeader","line":242,"loc":{"start":{"line":242,"column":48},"end":{"line":242,"column":89}}},"8":{"name":"OutgoingMessage","line":255,"loc":{"start":{"line":255,"column":0},"end":{"line":255,"column":27}}},"9":{"name":"_write","line":267,"loc":{"start":{"line":267,"column":35},"end":{"line":267,"column":78}}},"10":{"name":"_finish","line":275,"loc":{"start":{"line":275,"column":36},"end":{"line":275,"column":55}}},"11":{"name":"setHeader","line":290,"loc":{"start":{"line":290,"column":38},"end":{"line":290,"column":70}}},"12":{"name":"removeHeader","line":302,"loc":{"start":{"line":302,"column":41},"end":{"line":302,"column":69}}},"13":{"name":"getHeader","line":310,"loc":{"start":{"line":310,"column":38},"end":{"line":310,"column":63}}},"14":{"name":"addTrailers","line":314,"loc":{"start":{"line":314,"column":40},"end":{"line":314,"column":71}}},"15":{"name":"Server","line":334,"loc":{"start":{"line":334,"column":0},"end":{"line":334,"column":25}}},"16":{"name":"(anonymous_16)","line":351,"loc":{"start":{"line":351,"column":40},"end":{"line":351,"column":57}}},"17":{"name":"_start","line":379,"loc":{"start":{"line":379,"column":26},"end":{"line":379,"column":50}}},"18":{"name":"_onStream","line":390,"loc":{"start":{"line":390,"column":24},"end":{"line":390,"column":51}}},"19":{"name":"_fallback","line":402,"loc":{"start":{"line":402,"column":29},"end":{"line":402,"column":56}}},"20":{"name":"listen","line":418,"loc":{"start":{"line":418,"column":26},"end":{"line":418,"column":58}}},"21":{"name":"close","line":424,"loc":{"start":{"line":424,"column":25},"end":{"line":424,"column":50}}},"22":{"name":"setTimeout","line":429,"loc":{"start":{"line":429,"column":30},"end":{"line":429,"column":69}}},"23":{"name":"getTimeout","line":436,"loc":{"start":{"line":436,"column":7},"end":{"line":436,"column":29}}},"24":{"name":"setTimeout","line":443,"loc":{"start":{"line":443,"column":7},"end":{"line":443,"column":36}}},"25":{"name":"on","line":454,"loc":{"start":{"line":454,"column":22},"end":{"line":454,"column":51}}},"26":{"name":"addContext","line":463,"loc":{"start":{"line":463,"column":30},"end":{"line":463,"column":73}}},"27":{"name":"createServer","line":469,"loc":{"start":{"line":469,"column":0},"end":{"line":469,"column":48}}},"28":{"name":"IncomingRequest","line":487,"loc":{"start":{"line":487,"column":0},"end":{"line":487,"column":33}}},"29":{"name":"_onHeaders","line":496,"loc":{"start":{"line":496,"column":39},"end":{"line":496,"column":68}}},"30":{"name":"OutgoingResponse","line":527,"loc":{"start":{"line":527,"column":0},"end":{"line":527,"column":34}}},"31":{"name":"writeHead","line":540,"loc":{"start":{"line":540,"column":39},"end":{"line":540,"column":93}}},"32":{"name":"_implicitHeaders","line":564,"loc":{"start":{"line":564,"column":46},"end":{"line":564,"column":74}}},"33":{"name":"write","line":570,"loc":{"start":{"line":570,"column":35},"end":{"line":570,"column":52}}},"34":{"name":"end","line":575,"loc":{"start":{"line":575,"column":33},"end":{"line":575,"column":48}}},"35":{"name":"_onRequestHeaders","line":580,"loc":{"start":{"line":580,"column":47},"end":{"line":580,"column":83}}},"36":{"name":"push","line":584,"loc":{"start":{"line":584,"column":34},"end":{"line":584,"column":57}}},"37":{"name":"on","line":610,"loc":{"start":{"line":610,"column":32},"end":{"line":610,"column":61}}},"38":{"name":"request","line":626,"loc":{"start":{"line":626,"column":18},"end":{"line":626,"column":54}}},"39":{"name":"get","line":629,"loc":{"start":{"line":629,"column":14},"end":{"line":629,"column":46}}},"40":{"name":"Agent","line":636,"loc":{"start":{"line":636,"column":0},"end":{"line":636,"column":24}}},"41":{"name":"request","line":658,"loc":{"start":{"line":658,"column":26},"end":{"line":658,"column":62}}},"42":{"name":"(anonymous_42)","line":712,"loc":{"start":{"line":712,"column":30},"end":{"line":712,"column":47}}},"43":{"name":"negotiated","line":721,"loc":{"start":{"line":721,"column":4},"end":{"line":721,"column":26}}},"44":{"name":"(anonymous_44)","line":748,"loc":{"start":{"line":748,"column":19},"end":{"line":748,"column":38}}},"45":{"name":"get","line":761,"loc":{"start":{"line":761,"column":22},"end":{"line":761,"column":54}}},"46":{"name":"unbundleSocket","line":767,"loc":{"start":{"line":767,"column":0},"end":{"line":767,"column":32}}},"47":{"name":"getMaxSockets","line":779,"loc":{"start":{"line":779,"column":7},"end":{"line":779,"column":32}}},"48":{"name":"setMaxSockets","line":782,"loc":{"start":{"line":782,"column":7},"end":{"line":782,"column":37}}},"49":{"name":"OutgoingRequest","line":792,"loc":{"start":{"line":792,"column":0},"end":{"line":792,"column":27}}},"50":{"name":"_start","line":801,"loc":{"start":{"line":801,"column":35},"end":{"line":801,"column":68}}},"51":{"name":"_fallback","line":834,"loc":{"start":{"line":834,"column":38},"end":{"line":834,"column":66}}},"52":{"name":"setPriority","line":840,"loc":{"start":{"line":840,"column":40},"end":{"line":840,"column":71}}},"53":{"name":"on","line":850,"loc":{"start":{"line":850,"column":31},"end":{"line":850,"column":60}}},"54":{"name":"setNoDelay","line":859,"loc":{"start":{"line":859,"column":39},"end":{"line":859,"column":68}}},"55":{"name":"setSocketKeepAlive","line":867,"loc":{"start":{"line":867,"column":47},"end":{"line":867,"column":97}}},"56":{"name":"setTimeout","line":875,"loc":{"start":{"line":875,"column":39},"end":{"line":875,"column":78}}},"57":{"name":"abort","line":884,"loc":{"start":{"line":884,"column":34},"end":{"line":884,"column":51}}},"58":{"name":"_onPromise","line":895,"loc":{"start":{"line":895,"column":39},"end":{"line":895,"column":76}}},"59":{"name":"IncomingResponse","line":910,"loc":{"start":{"line":910,"column":0},"end":{"line":910,"column":34}}},"60":{"name":"_onHeaders","line":919,"loc":{"start":{"line":919,"column":40},"end":{"line":919,"column":69}}},"61":{"name":"IncomingPromise","line":939,"loc":{"start":{"line":939,"column":0},"end":{"line":939,"column":57}}},"62":{"name":"cancel","line":958,"loc":{"start":{"line":958,"column":35},"end":{"line":958,"column":53}}},"63":{"name":"setPriority","line":962,"loc":{"start":{"line":962,"column":40},"end":{"line":962,"column":71}}}},"statementMap":{"1":{"start":{"line":128,"column":0},"end":{"line":128,"column":25}},"2":{"start":{"line":129,"column":0},"end":{"line":129,"column":25}},"3":{"start":{"line":130,"column":0},"end":{"line":130,"column":27}},"4":{"start":{"line":131,"column":0},"end":{"line":131,"column":50}},"5":{"start":{"line":132,"column":0},"end":{"line":132,"column":48}},"6":{"start":{"line":133,"column":0},"end":{"line":133,"column":42}},"7":{"start":{"line":134,"column":0},"end":{"line":134,"column":42}},"8":{"start":{"line":135,"column":0},"end":{"line":135,"column":46}},"9":{"start":{"line":136,"column":0},"end":{"line":136,"column":27}},"10":{"start":{"line":137,"column":0},"end":{"line":137,"column":29}},"11":{"start":{"line":139,"column":0},"end":{"line":139,"column":41}},"12":{"start":{"line":140,"column":0},"end":{"line":140,"column":42}},"13":{"start":{"line":141,"column":0},"end":{"line":141,"column":42}},"14":{"start":{"line":142,"column":0},"end":{"line":142,"column":28}},"15":{"start":{"line":144,"column":0},"end":{"line":152,"column":2}},"16":{"start":{"line":156,"column":0},"end":{"line":156,"column":45}},"17":{"start":{"line":162,"column":0},"end":{"line":162,"column":18}},"18":{"start":{"line":163,"column":0},"end":{"line":172,"column":2}},"19":{"start":{"line":171,"column":22},"end":{"line":171,"column":34}},"20":{"start":{"line":175,"column":0},"end":{"line":175,"column":25}},"21":{"start":{"line":176,"column":0},"end":{"line":176,"column":95}},"22":{"start":{"line":177,"column":0},"end":{"line":179,"column":3}},"23":{"start":{"line":178,"column":2},"end":{"line":178,"column":65}},"24":{"start":{"line":184,"column":0},"end":{"line":204,"column":1}},"25":{"start":{"line":186,"column":2},"end":{"line":186,"column":25}},"26":{"start":{"line":187,"column":2},"end":{"line":187,"column":20}},"27":{"start":{"line":188,"column":2},"end":{"line":188,"column":37}},"28":{"start":{"line":190,"column":2},"end":{"line":190,"column":55}},"29":{"start":{"line":194,"column":2},"end":{"line":194,"column":27}},"30":{"start":{"line":195,"column":2},"end":{"line":195,"column":28}},"31":{"start":{"line":196,"column":2},"end":{"line":196,"column":28}},"32":{"start":{"line":199,"column":2},"end":{"line":199,"column":20}},"33":{"start":{"line":200,"column":2},"end":{"line":200,"column":28}},"34":{"start":{"line":203,"column":2},"end":{"line":203,"column":53}},"35":{"start":{"line":205,"column":0},"end":{"line":205,"column":110}},"36":{"start":{"line":211,"column":0},"end":{"line":234,"column":2}},"37":{"start":{"line":216,"column":2},"end":{"line":223,"column":3}},"38":{"start":{"line":217,"column":4},"end":{"line":217,"column":35}},"39":{"start":{"line":218,"column":4},"end":{"line":222,"column":5}},"40":{"start":{"line":219,"column":6},"end":{"line":219,"column":84}},"41":{"start":{"line":220,"column":6},"end":{"line":220,"column":50}},"42":{"start":{"line":221,"column":6},"end":{"line":221,"column":13}},"43":{"start":{"line":226,"column":2},"end":{"line":230,"column":3}},"44":{"start":{"line":227,"column":4},"end":{"line":229,"column":5}},"45":{"start":{"line":228,"column":6},"end":{"line":228,"column":41}},"46":{"start":{"line":233,"column":2},"end":{"line":233,"column":59}},"47":{"start":{"line":236,"column":0},"end":{"line":238,"column":2}},"48":{"start":{"line":237,"column":2},"end":{"line":237,"column":27}},"49":{"start":{"line":240,"column":0},"end":{"line":240,"column":44}},"50":{"start":{"line":242,"column":0},"end":{"line":250,"column":0}},"51":{"start":{"line":243,"column":2},"end":{"line":246,"column":3}},"52":{"start":{"line":244,"column":4},"end":{"line":244,"column":91}},"53":{"start":{"line":245,"column":4},"end":{"line":245,"column":48}},"54":{"start":{"line":248,"column":2},"end":{"line":248,"column":15}},"55":{"start":{"line":255,"column":0},"end":{"line":264,"column":1}},"56":{"start":{"line":257,"column":2},"end":{"line":257,"column":22}},"57":{"start":{"line":259,"column":2},"end":{"line":259,"column":21}},"58":{"start":{"line":260,"column":2},"end":{"line":260,"column":29}},"59":{"start":{"line":261,"column":2},"end":{"line":261,"column":27}},"60":{"start":{"line":263,"column":2},"end":{"line":263,"column":34}},"61":{"start":{"line":265,"column":0},"end":{"line":265,"column":107}},"62":{"start":{"line":267,"column":0},"end":{"line":273,"column":2}},"63":{"start":{"line":268,"column":2},"end":{"line":272,"column":3}},"64":{"start":{"line":269,"column":4},"end":{"line":269,"column":49}},"65":{"start":{"line":271,"column":4},"end":{"line":271,"column":75}},"66":{"start":{"line":275,"column":0},"end":{"line":288,"column":2}},"67":{"start":{"line":276,"column":2},"end":{"line":287,"column":3}},"68":{"start":{"line":277,"column":4},"end":{"line":283,"column":5}},"69":{"start":{"line":278,"column":6},"end":{"line":282,"column":7}},"70":{"start":{"line":279,"column":8},"end":{"line":279,"column":49}},"71":{"start":{"line":281,"column":8},"end":{"line":281,"column":44}},"72":{"start":{"line":284,"column":4},"end":{"line":284,"column":22}},"73":{"start":{"line":286,"column":4},"end":{"line":286,"column":49}},"74":{"start":{"line":290,"column":0},"end":{"line":300,"column":2}},"75":{"start":{"line":291,"column":2},"end":{"line":299,"column":3}},"76":{"start":{"line":292,"column":4},"end":{"line":292,"column":63}},"77":{"start":{"line":294,"column":4},"end":{"line":294,"column":30}},"78":{"start":{"line":295,"column":4},"end":{"line":297,"column":5}},"79":{"start":{"line":296,"column":6},"end":{"line":296,"column":63}},"80":{"start":{"line":298,"column":4},"end":{"line":298,"column":32}},"81":{"start":{"line":302,"column":0},"end":{"line":308,"column":2}},"82":{"start":{"line":303,"column":2},"end":{"line":307,"column":3}},"83":{"start":{"line":304,"column":4},"end":{"line":304,"column":66}},"84":{"start":{"line":306,"column":4},"end":{"line":306,"column":45}},"85":{"start":{"line":310,"column":0},"end":{"line":312,"column":2}},"86":{"start":{"line":311,"column":2},"end":{"line":311,"column":43}},"87":{"start":{"line":314,"column":0},"end":{"line":316,"column":2}},"88":{"start":{"line":315,"column":2},"end":{"line":315,"column":28}},"89":{"start":{"line":318,"column":0},"end":{"line":318,"column":44}},"90":{"start":{"line":320,"column":0},"end":{"line":320,"column":94}},"91":{"start":{"line":325,"column":0},"end":{"line":325,"column":36}},"92":{"start":{"line":326,"column":0},"end":{"line":326,"column":24}},"93":{"start":{"line":327,"column":0},"end":{"line":327,"column":42}},"94":{"start":{"line":328,"column":0},"end":{"line":328,"column":44}},"95":{"start":{"line":329,"column":0},"end":{"line":329,"column":42}},"96":{"start":{"line":334,"column":0},"end":{"line":375,"column":1}},"97":{"start":{"line":335,"column":2},"end":{"line":335,"column":26}},"98":{"start":{"line":337,"column":2},"end":{"line":337,"column":74}},"99":{"start":{"line":338,"column":2},"end":{"line":338,"column":36}},"100":{"start":{"line":340,"column":2},"end":{"line":340,"column":37}},"101":{"start":{"line":341,"column":2},"end":{"line":341,"column":43}},"102":{"start":{"line":344,"column":2},"end":{"line":372,"column":3}},"103":{"start":{"line":345,"column":4},"end":{"line":345,"column":58}},"104":{"start":{"line":346,"column":4},"end":{"line":346,"column":23}},"105":{"start":{"line":347,"column":4},"end":{"line":347,"column":72}},"106":{"start":{"line":348,"column":4},"end":{"line":348,"column":47}},"107":{"start":{"line":349,"column":4},"end":{"line":349,"column":79}},"108":{"start":{"line":350,"column":4},"end":{"line":350,"column":56}},"109":{"start":{"line":351,"column":4},"end":{"line":357,"column":7}},"110":{"start":{"line":352,"column":6},"end":{"line":356,"column":7}},"111":{"start":{"line":353,"column":8},"end":{"line":353,"column":22}},"112":{"start":{"line":355,"column":8},"end":{"line":355,"column":25}},"113":{"start":{"line":358,"column":4},"end":{"line":358,"column":64}},"114":{"start":{"line":362,"column":7},"end":{"line":372,"column":3}},"115":{"start":{"line":363,"column":4},"end":{"line":363,"column":60}},"116":{"start":{"line":364,"column":4},"end":{"line":364,"column":25}},"117":{"start":{"line":365,"column":4},"end":{"line":365,"column":43}},"118":{"start":{"line":370,"column":4},"end":{"line":370,"column":81}},"119":{"start":{"line":371,"column":4},"end":{"line":371,"column":95}},"120":{"start":{"line":374,"column":2},"end":{"line":374,"column":58}},"121":{"start":{"line":376,"column":0},"end":{"line":376,"column":93}},"122":{"start":{"line":379,"column":0},"end":{"line":400,"column":2}},"123":{"start":{"line":380,"column":2},"end":{"line":380,"column":67}},"124":{"start":{"line":382,"column":2},"end":{"line":385,"column":54}},"125":{"start":{"line":387,"column":2},"end":{"line":387,"column":39}},"126":{"start":{"line":389,"column":2},"end":{"line":389,"column":18}},"127":{"start":{"line":390,"column":2},"end":{"line":395,"column":5}},"128":{"start":{"line":391,"column":4},"end":{"line":391,"column":48}},"129":{"start":{"line":392,"column":4},"end":{"line":392,"column":46}},"130":{"start":{"line":394,"column":4},"end":{"line":394,"column":78}},"131":{"start":{"line":397,"column":2},"end":{"line":397,"column":60}},"132":{"start":{"line":399,"column":2},"end":{"line":399,"column":44}},"133":{"start":{"line":402,"column":0},"end":{"line":413,"column":2}},"134":{"start":{"line":403,"column":2},"end":{"line":406,"column":52}},"135":{"start":{"line":408,"column":2},"end":{"line":410,"column":3}},"136":{"start":{"line":409,"column":4},"end":{"line":409,"column":64}},"137":{"start":{"line":412,"column":2},"end":{"line":412,"column":34}},"138":{"start":{"line":418,"column":0},"end":{"line":422,"column":2}},"139":{"start":{"line":419,"column":2},"end":{"line":420,"column":55}},"140":{"start":{"line":421,"column":2},"end":{"line":421,"column":53}},"141":{"start":{"line":424,"column":0},"end":{"line":427,"column":2}},"142":{"start":{"line":425,"column":2},"end":{"line":425,"column":35}},"143":{"start":{"line":426,"column":2},"end":{"line":426,"column":31}},"144":{"start":{"line":429,"column":0},"end":{"line":433,"column":2}},"145":{"start":{"line":430,"column":2},"end":{"line":432,"column":3}},"146":{"start":{"line":431,"column":4},"end":{"line":431,"column":47}},"147":{"start":{"line":435,"column":0},"end":{"line":448,"column":3}},"148":{"start":{"line":437,"column":4},"end":{"line":441,"column":5}},"149":{"start":{"line":438,"column":6},"end":{"line":438,"column":34}},"150":{"start":{"line":440,"column":6},"end":{"line":440,"column":23}},"151":{"start":{"line":444,"column":4},"end":{"line":446,"column":5}},"152":{"start":{"line":445,"column":6},"end":{"line":445,"column":37}},"153":{"start":{"line":454,"column":0},"end":{"line":460,"column":2}},"154":{"start":{"line":455,"column":2},"end":{"line":459,"column":3}},"155":{"start":{"line":456,"column":4},"end":{"line":456,"column":60}},"156":{"start":{"line":458,"column":4},"end":{"line":458,"column":58}},"157":{"start":{"line":463,"column":0},"end":{"line":467,"column":2}},"158":{"start":{"line":464,"column":2},"end":{"line":466,"column":3}},"159":{"start":{"line":465,"column":4},"end":{"line":465,"column":51}},"160":{"start":{"line":469,"column":0},"end":{"line":482,"column":1}},"161":{"start":{"line":470,"column":2},"end":{"line":473,"column":3}},"162":{"start":{"line":471,"column":4},"end":{"line":471,"column":30}},"163":{"start":{"line":472,"column":4},"end":{"line":472,"column":24}},"164":{"start":{"line":475,"column":2},"end":{"line":475,"column":35}},"165":{"start":{"line":477,"column":2},"end":{"line":479,"column":3}},"166":{"start":{"line":478,"column":4},"end":{"line":478,"column":42}},"167":{"start":{"line":481,"column":2},"end":{"line":481,"column":16}},"168":{"start":{"line":487,"column":0},"end":{"line":489,"column":1}},"169":{"start":{"line":488,"column":2},"end":{"line":488,"column":37}},"170":{"start":{"line":490,"column":0},"end":{"line":490,"column":114}},"171":{"start":{"line":496,"column":0},"end":{"line":522,"column":2}},"172":{"start":{"line":507,"column":2},"end":{"line":507,"column":72}},"173":{"start":{"line":508,"column":2},"end":{"line":508,"column":72}},"174":{"start":{"line":509,"column":2},"end":{"line":509,"column":72}},"175":{"start":{"line":510,"column":2},"end":{"line":510,"column":72}},"176":{"start":{"line":513,"column":2},"end":{"line":513,"column":32}},"177":{"start":{"line":516,"column":2},"end":{"line":516,"column":59}},"178":{"start":{"line":519,"column":2},"end":{"line":520,"column":80}},"179":{"start":{"line":521,"column":2},"end":{"line":521,"column":21}},"180":{"start":{"line":527,"column":0},"end":{"line":537,"column":1}},"181":{"start":{"line":528,"column":2},"end":{"line":528,"column":29}},"182":{"start":{"line":530,"column":2},"end":{"line":530,"column":55}},"183":{"start":{"line":532,"column":2},"end":{"line":532,"column":23}},"184":{"start":{"line":533,"column":2},"end":{"line":533,"column":24}},"185":{"start":{"line":534,"column":2},"end":{"line":534,"column":23}},"186":{"start":{"line":536,"column":2},"end":{"line":536,"column":65}},"187":{"start":{"line":538,"column":0},"end":{"line":538,"column":116}},"188":{"start":{"line":540,"column":0},"end":{"line":562,"column":2}},"189":{"start":{"line":541,"column":2},"end":{"line":545,"column":3}},"190":{"start":{"line":542,"column":4},"end":{"line":542,"column":93}},"191":{"start":{"line":544,"column":4},"end":{"line":544,"column":27}},"192":{"start":{"line":547,"column":2},"end":{"line":549,"column":3}},"193":{"start":{"line":548,"column":4},"end":{"line":548,"column":40}},"194":{"start":{"line":550,"column":2},"end":{"line":550,"column":26}},"195":{"start":{"line":552,"column":2},"end":{"line":554,"column":3}},"196":{"start":{"line":553,"column":4},"end":{"line":553,"column":46}},"197":{"start":{"line":556,"column":2},"end":{"line":556,"column":92}},"198":{"start":{"line":558,"column":2},"end":{"line":558,"column":52}},"199":{"start":{"line":560,"column":2},"end":{"line":560,"column":31}},"200":{"start":{"line":561,"column":2},"end":{"line":561,"column":26}},"201":{"start":{"line":564,"column":0},"end":{"line":568,"column":2}},"202":{"start":{"line":565,"column":2},"end":{"line":567,"column":3}},"203":{"start":{"line":566,"column":4},"end":{"line":566,"column":36}},"204":{"start":{"line":570,"column":0},"end":{"line":573,"column":2}},"205":{"start":{"line":571,"column":2},"end":{"line":571,"column":26}},"206":{"start":{"line":572,"column":2},"end":{"line":572,"column":64}},"207":{"start":{"line":575,"column":0},"end":{"line":578,"column":2}},"208":{"start":{"line":576,"column":2},"end":{"line":576,"column":26}},"209":{"start":{"line":577,"column":2},"end":{"line":577,"column":62}},"210":{"start":{"line":580,"column":0},"end":{"line":582,"column":2}},"211":{"start":{"line":581,"column":2},"end":{"line":581,"column":33}},"212":{"start":{"line":584,"column":0},"end":{"line":606,"column":2}},"213":{"start":{"line":585,"column":2},"end":{"line":587,"column":3}},"214":{"start":{"line":586,"column":4},"end":{"line":586,"column":33}},"215":{"start":{"line":589,"column":2},"end":{"line":591,"column":3}},"216":{"start":{"line":590,"column":4},"end":{"line":590,"column":51}},"217":{"start":{"line":593,"column":2},"end":{"line":598,"column":22}},"218":{"start":{"line":600,"column":2},"end":{"line":601,"column":96}},"219":{"start":{"line":603,"column":2},"end":{"line":603,"column":48}},"220":{"start":{"line":605,"column":2},"end":{"line":605,"column":42}},"221":{"start":{"line":610,"column":0},"end":{"line":616,"column":2}},"222":{"start":{"line":611,"column":2},"end":{"line":615,"column":3}},"223":{"start":{"line":612,"column":4},"end":{"line":612,"column":60}},"224":{"start":{"line":614,"column":4},"end":{"line":614,"column":61}},"225":{"start":{"line":621,"column":0},"end":{"line":621,"column":40}},"226":{"start":{"line":622,"column":0},"end":{"line":622,"column":42}},"227":{"start":{"line":623,"column":0},"end":{"line":623,"column":44}},"228":{"start":{"line":624,"column":0},"end":{"line":624,"column":22}},"229":{"start":{"line":625,"column":0},"end":{"line":625,"column":32}},"230":{"start":{"line":626,"column":0},"end":{"line":628,"column":2}},"231":{"start":{"line":627,"column":2},"end":{"line":627,"column":75}},"232":{"start":{"line":629,"column":0},"end":{"line":631,"column":2}},"233":{"start":{"line":630,"column":2},"end":{"line":630,"column":71}},"234":{"start":{"line":636,"column":0},"end":{"line":655,"column":1}},"235":{"start":{"line":637,"column":2},"end":{"line":637,"column":26}},"236":{"start":{"line":639,"column":2},"end":{"line":639,"column":26}},"237":{"start":{"line":641,"column":2},"end":{"line":641,"column":36}},"238":{"start":{"line":642,"column":2},"end":{"line":642,"column":74}},"239":{"start":{"line":643,"column":2},"end":{"line":643,"column":22}},"240":{"start":{"line":649,"column":2},"end":{"line":651,"column":5}},"241":{"start":{"line":653,"column":2},"end":{"line":653,"column":42}},"242":{"start":{"line":654,"column":2},"end":{"line":654,"column":44}},"243":{"start":{"line":656,"column":0},"end":{"line":656,"column":91}},"244":{"start":{"line":658,"column":0},"end":{"line":759,"column":2}},"245":{"start":{"line":659,"column":2},"end":{"line":661,"column":3}},"246":{"start":{"line":660,"column":4},"end":{"line":660,"column":33}},"247":{"start":{"line":663,"column":2},"end":{"line":663,"column":59}},"248":{"start":{"line":664,"column":2},"end":{"line":664,"column":50}},"249":{"start":{"line":665,"column":2},"end":{"line":665,"column":65}},"250":{"start":{"line":666,"column":2},"end":{"line":666,"column":37}},"251":{"start":{"line":667,"column":2},"end":{"line":667,"column":37}},"252":{"start":{"line":669,"column":2},"end":{"line":672,"column":3}},"253":{"start":{"line":670,"column":4},"end":{"line":670,"column":85}},"254":{"start":{"line":671,"column":4},"end":{"line":671,"column":70}},"255":{"start":{"line":674,"column":2},"end":{"line":674,"column":47}},"256":{"start":{"line":676,"column":2},"end":{"line":678,"column":3}},"257":{"start":{"line":677,"column":4},"end":{"line":677,"column":37}},"258":{"start":{"line":680,"column":2},"end":{"line":684,"column":14}},"259":{"start":{"line":687,"column":2},"end":{"line":756,"column":3}},"260":{"start":{"line":688,"column":4},"end":{"line":688,"column":39}},"261":{"start":{"line":689,"column":4},"end":{"line":689,"column":53}},"262":{"start":{"line":693,"column":7},"end":{"line":756,"column":3}},"263":{"start":{"line":694,"column":4},"end":{"line":694,"column":65}},"264":{"start":{"line":695,"column":4},"end":{"line":699,"column":7}},"265":{"start":{"line":700,"column":4},"end":{"line":700,"column":50}},"266":{"start":{"line":701,"column":4},"end":{"line":701,"column":53}},"267":{"start":{"line":706,"column":4},"end":{"line":706,"column":24}},"268":{"start":{"line":707,"column":4},"end":{"line":707,"column":72}},"269":{"start":{"line":708,"column":4},"end":{"line":708,"column":38}},"270":{"start":{"line":709,"column":4},"end":{"line":709,"column":37}},"271":{"start":{"line":710,"column":4},"end":{"line":710,"column":46}},"272":{"start":{"line":712,"column":4},"end":{"line":718,"column":7}},"273":{"start":{"line":713,"column":6},"end":{"line":717,"column":7}},"274":{"start":{"line":714,"column":8},"end":{"line":714,"column":21}},"275":{"start":{"line":716,"column":8},"end":{"line":716,"column":47}},"276":{"start":{"line":720,"column":4},"end":{"line":720,"column":20}},"277":{"start":{"line":721,"column":4},"end":{"line":746,"column":5}},"278":{"start":{"line":722,"column":6},"end":{"line":722,"column":19}},"279":{"start":{"line":723,"column":6},"end":{"line":729,"column":7}},"280":{"start":{"line":724,"column":8},"end":{"line":724,"column":48}},"281":{"start":{"line":725,"column":8},"end":{"line":725,"column":44}},"282":{"start":{"line":726,"column":8},"end":{"line":726,"column":69}},"283":{"start":{"line":727,"column":8},"end":{"line":727,"column":46}},"284":{"start":{"line":728,"column":8},"end":{"line":728,"column":54}},"285":{"start":{"line":730,"column":6},"end":{"line":745,"column":7}},"286":{"start":{"line":731,"column":8},"end":{"line":735,"column":9}},"287":{"start":{"line":732,"column":10},"end":{"line":732,"column":27}},"288":{"start":{"line":734,"column":10},"end":{"line":734,"column":31}},"289":{"start":{"line":737,"column":8},"end":{"line":744,"column":9}},"290":{"start":{"line":738,"column":10},"end":{"line":739,"column":59}},"291":{"start":{"line":740,"column":10},"end":{"line":740,"column":41}},"292":{"start":{"line":741,"column":10},"end":{"line":741,"column":35}},"293":{"start":{"line":743,"column":10},"end":{"line":743,"column":36}},"294":{"start":{"line":748,"column":4},"end":{"line":755,"column":7}},"295":{"start":{"line":749,"column":6},"end":{"line":749,"column":21}},"296":{"start":{"line":750,"column":6},"end":{"line":754,"column":7}},"297":{"start":{"line":751,"column":8},"end":{"line":751,"column":57}},"298":{"start":{"line":753,"column":8},"end":{"line":753,"column":40}},"299":{"start":{"line":758,"column":2},"end":{"line":758,"column":17}},"300":{"start":{"line":761,"column":0},"end":{"line":765,"column":2}},"301":{"start":{"line":762,"column":2},"end":{"line":762,"column":48}},"302":{"start":{"line":763,"column":2},"end":{"line":763,"column":16}},"303":{"start":{"line":764,"column":2},"end":{"line":764,"column":17}},"304":{"start":{"line":767,"column":0},"end":{"line":776,"column":1}},"305":{"start":{"line":768,"column":2},"end":{"line":768,"column":36}},"306":{"start":{"line":769,"column":2},"end":{"line":769,"column":35}},"307":{"start":{"line":770,"column":2},"end":{"line":770,"column":40}},"308":{"start":{"line":771,"column":2},"end":{"line":771,"column":37}},"309":{"start":{"line":772,"column":2},"end":{"line":772,"column":37}},"310":{"start":{"line":773,"column":2},"end":{"line":773,"column":18}},"311":{"start":{"line":774,"column":2},"end":{"line":774,"column":23}},"312":{"start":{"line":775,"column":2},"end":{"line":775,"column":22}},"313":{"start":{"line":778,"column":0},"end":{"line":785,"column":3}},"314":{"start":{"line":780,"column":4},"end":{"line":780,"column":39}},"315":{"start":{"line":783,"column":4},"end":{"line":783,"column":40}},"316":{"start":{"line":787,"column":0},"end":{"line":787,"column":34}},"317":{"start":{"line":792,"column":0},"end":{"line":798,"column":1}},"318":{"start":{"line":793,"column":2},"end":{"line":793,"column":29}},"319":{"start":{"line":795,"column":2},"end":{"line":795,"column":24}},"320":{"start":{"line":797,"column":2},"end":{"line":797,"column":26}},"321":{"start":{"line":799,"column":0},"end":{"line":799,"column":114}},"322":{"start":{"line":801,"column":0},"end":{"line":832,"column":2}},"323":{"start":{"line":802,"column":2},"end":{"line":802,"column":23}},"324":{"start":{"line":804,"column":2},"end":{"line":804,"column":55}},"325":{"start":{"line":806,"column":2},"end":{"line":808,"column":3}},"326":{"start":{"line":807,"column":4},"end":{"line":807,"column":46}},"327":{"start":{"line":809,"column":2},"end":{"line":809,"column":30}},"328":{"start":{"line":810,"column":2},"end":{"line":810,"column":22}},"329":{"start":{"line":812,"column":2},"end":{"line":814,"column":3}},"330":{"start":{"line":813,"column":4},"end":{"line":813,"column":83}},"331":{"start":{"line":816,"column":2},"end":{"line":816,"column":53}},"332":{"start":{"line":817,"column":2},"end":{"line":817,"column":38}},"333":{"start":{"line":818,"column":2},"end":{"line":818,"column":34}},"334":{"start":{"line":819,"column":2},"end":{"line":819,"column":34}},"335":{"start":{"line":821,"column":2},"end":{"line":822,"column":98}},"336":{"start":{"line":823,"column":2},"end":{"line":823,"column":31}},"337":{"start":{"line":824,"column":2},"end":{"line":824,"column":26}},"338":{"start":{"line":826,"column":2},"end":{"line":826,"column":35}},"339":{"start":{"line":828,"column":2},"end":{"line":828,"column":51}},"340":{"start":{"line":829,"column":2},"end":{"line":829,"column":69}},"341":{"start":{"line":831,"column":2},"end":{"line":831,"column":56}},"342":{"start":{"line":834,"column":0},"end":{"line":838,"column":2}},"343":{"start":{"line":835,"column":2},"end":{"line":835,"column":59}},"344":{"start":{"line":836,"column":2},"end":{"line":836,"column":39}},"345":{"start":{"line":837,"column":2},"end":{"line":837,"column":35}},"346":{"start":{"line":840,"column":0},"end":{"line":846,"column":2}},"347":{"start":{"line":841,"column":2},"end":{"line":845,"column":3}},"348":{"start":{"line":842,"column":4},"end":{"line":842,"column":35}},"349":{"start":{"line":844,"column":4},"end":{"line":844,"column":63}},"350":{"start":{"line":850,"column":0},"end":{"line":856,"column":2}},"351":{"start":{"line":851,"column":2},"end":{"line":855,"column":3}},"352":{"start":{"line":852,"column":4},"end":{"line":852,"column":60}},"353":{"start":{"line":854,"column":4},"end":{"line":854,"column":61}},"354":{"start":{"line":859,"column":0},"end":{"line":865,"column":2}},"355":{"start":{"line":860,"column":2},"end":{"line":864,"column":3}},"356":{"start":{"line":861,"column":4},"end":{"line":861,"column":37}},"357":{"start":{"line":862,"column":9},"end":{"line":864,"column":3}},"358":{"start":{"line":863,"column":4},"end":{"line":863,"column":59}},"359":{"start":{"line":867,"column":0},"end":{"line":873,"column":2}},"360":{"start":{"line":868,"column":2},"end":{"line":872,"column":3}},"361":{"start":{"line":869,"column":4},"end":{"line":869,"column":58}},"362":{"start":{"line":870,"column":9},"end":{"line":872,"column":3}},"363":{"start":{"line":871,"column":4},"end":{"line":871,"column":80}},"364":{"start":{"line":875,"column":0},"end":{"line":881,"column":2}},"365":{"start":{"line":876,"column":2},"end":{"line":880,"column":3}},"366":{"start":{"line":877,"column":4},"end":{"line":877,"column":47}},"367":{"start":{"line":878,"column":9},"end":{"line":880,"column":3}},"368":{"start":{"line":879,"column":4},"end":{"line":879,"column":69}},"369":{"start":{"line":884,"column":0},"end":{"line":892,"column":2}},"370":{"start":{"line":885,"column":2},"end":{"line":891,"column":3}},"371":{"start":{"line":886,"column":4},"end":{"line":886,"column":25}},"372":{"start":{"line":887,"column":9},"end":{"line":891,"column":3}},"373":{"start":{"line":888,"column":4},"end":{"line":888,"column":32}},"374":{"start":{"line":890,"column":4},"end":{"line":890,"column":45}},"375":{"start":{"line":895,"column":0},"end":{"line":905,"column":2}},"376":{"start":{"line":896,"column":2},"end":{"line":896,"column":71}},"377":{"start":{"line":898,"column":2},"end":{"line":898,"column":53}},"378":{"start":{"line":900,"column":2},"end":{"line":904,"column":3}},"379":{"start":{"line":901,"column":4},"end":{"line":901,"column":31}},"380":{"start":{"line":903,"column":4},"end":{"line":903,"column":21}},"381":{"start":{"line":910,"column":0},"end":{"line":912,"column":1}},"382":{"start":{"line":911,"column":2},"end":{"line":911,"column":37}},"383":{"start":{"line":913,"column":0},"end":{"line":913,"column":116}},"384":{"start":{"line":919,"column":0},"end":{"line":934,"column":2}},"385":{"start":{"line":926,"column":2},"end":{"line":926,"column":76}},"386":{"start":{"line":929,"column":2},"end":{"line":929,"column":59}},"387":{"start":{"line":932,"column":2},"end":{"line":932,"column":89}},"388":{"start":{"line":933,"column":2},"end":{"line":933,"column":21}},"389":{"start":{"line":939,"column":0},"end":{"line":955,"column":1}},"390":{"start":{"line":940,"column":2},"end":{"line":940,"column":30}},"391":{"start":{"line":941,"column":2},"end":{"line":941,"column":22}},"392":{"start":{"line":942,"column":2},"end":{"line":942,"column":20}},"393":{"start":{"line":943,"column":2},"end":{"line":943,"column":36}},"394":{"start":{"line":945,"column":2},"end":{"line":945,"column":37}},"395":{"start":{"line":947,"column":2},"end":{"line":947,"column":34}},"396":{"start":{"line":949,"column":2},"end":{"line":949,"column":40}},"397":{"start":{"line":951,"column":2},"end":{"line":951,"column":60}},"398":{"start":{"line":952,"column":2},"end":{"line":952,"column":69}},"399":{"start":{"line":954,"column":2},"end":{"line":954,"column":56}},"400":{"start":{"line":956,"column":0},"end":{"line":956,"column":114}},"401":{"start":{"line":958,"column":0},"end":{"line":960,"column":2}},"402":{"start":{"line":959,"column":2},"end":{"line":959,"column":39}},"403":{"start":{"line":962,"column":0},"end":{"line":964,"column":2}},"404":{"start":{"line":963,"column":2},"end":{"line":963,"column":42}},"405":{"start":{"line":966,"column":0},"end":{"line":966,"column":76}}},"branchMap":{"1":{"line":218,"type":"if","locations":[{"start":{"line":218,"column":4},"end":{"line":218,"column":4}},{"start":{"line":218,"column":4},"end":{"line":218,"column":4}}]},"2":{"line":227,"type":"if","locations":[{"start":{"line":227,"column":4},"end":{"line":227,"column":4}},{"start":{"line":227,"column":4},"end":{"line":227,"column":4}}]},"3":{"line":243,"type":"if","locations":[{"start":{"line":243,"column":2},"end":{"line":243,"column":2}},{"start":{"line":243,"column":2},"end":{"line":243,"column":2}}]},"4":{"line":243,"type":"binary-expr","locations":[{"start":{"line":243,"column":7},"end":{"line":243,"column":32}},{"start":{"line":243,"column":38},"end":{"line":243,"column":56}}]},"5":{"line":268,"type":"if","locations":[{"start":{"line":268,"column":2},"end":{"line":268,"column":2}},{"start":{"line":268,"column":2},"end":{"line":268,"column":2}}]},"6":{"line":276,"type":"if","locations":[{"start":{"line":276,"column":2},"end":{"line":276,"column":2}},{"start":{"line":276,"column":2},"end":{"line":276,"column":2}}]},"7":{"line":277,"type":"if","locations":[{"start":{"line":277,"column":4},"end":{"line":277,"column":4}},{"start":{"line":277,"column":4},"end":{"line":277,"column":4}}]},"8":{"line":278,"type":"if","locations":[{"start":{"line":278,"column":6},"end":{"line":278,"column":6}},{"start":{"line":278,"column":6},"end":{"line":278,"column":6}}]},"9":{"line":291,"type":"if","locations":[{"start":{"line":291,"column":2},"end":{"line":291,"column":2}},{"start":{"line":291,"column":2},"end":{"line":291,"column":2}}]},"10":{"line":295,"type":"if","locations":[{"start":{"line":295,"column":4},"end":{"line":295,"column":4}},{"start":{"line":295,"column":4},"end":{"line":295,"column":4}}]},"11":{"line":303,"type":"if","locations":[{"start":{"line":303,"column":2},"end":{"line":303,"column":2}},{"start":{"line":303,"column":2},"end":{"line":303,"column":2}}]},"12":{"line":335,"type":"binary-expr","locations":[{"start":{"line":335,"column":12},"end":{"line":335,"column":19}},{"start":{"line":335,"column":23},"end":{"line":335,"column":25}}]},"13":{"line":337,"type":"binary-expr","locations":[{"start":{"line":337,"column":15},"end":{"line":337,"column":26}},{"start":{"line":337,"column":30},"end":{"line":337,"column":43}}]},"14":{"line":344,"type":"if","locations":[{"start":{"line":344,"column":2},"end":{"line":344,"column":2}},{"start":{"line":344,"column":2},"end":{"line":344,"column":2}}]},"15":{"line":344,"type":"binary-expr","locations":[{"start":{"line":344,"column":7},"end":{"line":344,"column":18}},{"start":{"line":344,"column":22},"end":{"line":344,"column":34}},{"start":{"line":344,"column":39},"end":{"line":344,"column":50}}]},"16":{"line":352,"type":"if","locations":[{"start":{"line":352,"column":6},"end":{"line":352,"column":6}},{"start":{"line":352,"column":6},"end":{"line":352,"column":6}}]},"17":{"line":352,"type":"binary-expr","locations":[{"start":{"line":352,"column":10},"end":{"line":352,"column":51}},{"start":{"line":352,"column":55},"end":{"line":352,"column":72}}]},"18":{"line":362,"type":"if","locations":[{"start":{"line":362,"column":7},"end":{"line":362,"column":7}},{"start":{"line":362,"column":7},"end":{"line":362,"column":7}}]},"19":{"line":419,"type":"cond-expr","locations":[{"start":{"line":419,"column":58},"end":{"line":419,"column":79}},{"start":{"line":419,"column":83},"end":{"line":419,"column":87}}]},"20":{"line":430,"type":"if","locations":[{"start":{"line":430,"column":2},"end":{"line":430,"column":2}},{"start":{"line":430,"column":2},"end":{"line":430,"column":2}}]},"21":{"line":437,"type":"if","locations":[{"start":{"line":437,"column":4},"end":{"line":437,"column":4}},{"start":{"line":437,"column":4},"end":{"line":437,"column":4}}]},"22":{"line":444,"type":"if","locations":[{"start":{"line":444,"column":4},"end":{"line":444,"column":4}},{"start":{"line":444,"column":4},"end":{"line":444,"column":4}}]},"23":{"line":455,"type":"if","locations":[{"start":{"line":455,"column":2},"end":{"line":455,"column":2}},{"start":{"line":455,"column":2},"end":{"line":455,"column":2}}]},"24":{"line":455,"type":"binary-expr","locations":[{"start":{"line":455,"column":7},"end":{"line":455,"column":26}},{"start":{"line":455,"column":32},"end":{"line":455,"column":51}}]},"25":{"line":456,"type":"binary-expr","locations":[{"start":{"line":456,"column":27},"end":{"line":456,"column":35}},{"start":{"line":456,"column":39},"end":{"line":456,"column":58}}]},"26":{"line":464,"type":"if","locations":[{"start":{"line":464,"column":2},"end":{"line":464,"column":2}},{"start":{"line":464,"column":2},"end":{"line":464,"column":2}}]},"27":{"line":470,"type":"if","locations":[{"start":{"line":470,"column":2},"end":{"line":470,"column":2}},{"start":{"line":470,"column":2},"end":{"line":470,"column":2}}]},"28":{"line":477,"type":"if","locations":[{"start":{"line":477,"column":2},"end":{"line":477,"column":2}},{"start":{"line":477,"column":2},"end":{"line":477,"column":2}}]},"29":{"line":541,"type":"if","locations":[{"start":{"line":541,"column":2},"end":{"line":541,"column":2}},{"start":{"line":541,"column":2},"end":{"line":541,"column":2}}]},"30":{"line":552,"type":"if","locations":[{"start":{"line":552,"column":2},"end":{"line":552,"column":2}},{"start":{"line":552,"column":2},"end":{"line":552,"column":2}}]},"31":{"line":552,"type":"binary-expr","locations":[{"start":{"line":552,"column":6},"end":{"line":552,"column":19}},{"start":{"line":552,"column":23},"end":{"line":552,"column":49}}]},"32":{"line":565,"type":"if","locations":[{"start":{"line":565,"column":2},"end":{"line":565,"column":2}},{"start":{"line":565,"column":2},"end":{"line":565,"column":2}}]},"33":{"line":585,"type":"if","locations":[{"start":{"line":585,"column":2},"end":{"line":585,"column":2}},{"start":{"line":585,"column":2},"end":{"line":585,"column":2}}]},"34":{"line":589,"type":"if","locations":[{"start":{"line":589,"column":2},"end":{"line":589,"column":2}},{"start":{"line":589,"column":2},"end":{"line":589,"column":2}}]},"35":{"line":594,"type":"binary-expr","locations":[{"start":{"line":594,"column":16},"end":{"line":594,"column":30}},{"start":{"line":594,"column":34},"end":{"line":594,"column":39}}]},"36":{"line":595,"type":"binary-expr","locations":[{"start":{"line":595,"column":16},"end":{"line":595,"column":32}},{"start":{"line":595,"column":36},"end":{"line":595,"column":65}},{"start":{"line":595,"column":70},"end":{"line":595,"column":101}}]},"37":{"line":596,"type":"binary-expr","locations":[{"start":{"line":596,"column":13},"end":{"line":596,"column":29}},{"start":{"line":596,"column":33},"end":{"line":596,"column":45}},{"start":{"line":596,"column":49},"end":{"line":596,"column":78}}]},"38":{"line":611,"type":"if","locations":[{"start":{"line":611,"column":2},"end":{"line":611,"column":2}},{"start":{"line":611,"column":2},"end":{"line":611,"column":2}}]},"39":{"line":611,"type":"binary-expr","locations":[{"start":{"line":611,"column":6},"end":{"line":611,"column":18}},{"start":{"line":611,"column":23},"end":{"line":611,"column":42}}]},"40":{"line":612,"type":"binary-expr","locations":[{"start":{"line":612,"column":27},"end":{"line":612,"column":35}},{"start":{"line":612,"column":39},"end":{"line":612,"column":58}}]},"41":{"line":627,"type":"binary-expr","locations":[{"start":{"line":627,"column":10},"end":{"line":627,"column":23}},{"start":{"line":627,"column":27},"end":{"line":627,"column":46}}]},"42":{"line":630,"type":"binary-expr","locations":[{"start":{"line":630,"column":10},"end":{"line":630,"column":23}},{"start":{"line":630,"column":27},"end":{"line":630,"column":46}}]},"43":{"line":639,"type":"binary-expr","locations":[{"start":{"line":639,"column":12},"end":{"line":639,"column":19}},{"start":{"line":639,"column":23},"end":{"line":639,"column":25}}]},"44":{"line":642,"type":"binary-expr","locations":[{"start":{"line":642,"column":15},"end":{"line":642,"column":26}},{"start":{"line":642,"column":30},"end":{"line":642,"column":43}}]},"45":{"line":659,"type":"if","locations":[{"start":{"line":659,"column":2},"end":{"line":659,"column":2}},{"start":{"line":659,"column":2},"end":{"line":659,"column":2}}]},"46":{"line":663,"type":"binary-expr","locations":[{"start":{"line":663,"column":20},"end":{"line":663,"column":34}},{"start":{"line":663,"column":38},"end":{"line":663,"column":43}}]},"47":{"line":664,"type":"binary-expr","locations":[{"start":{"line":664,"column":21},"end":{"line":664,"column":37}},{"start":{"line":664,"column":41},"end":{"line":664,"column":49}}]},"48":{"line":665,"type":"binary-expr","locations":[{"start":{"line":665,"column":17},"end":{"line":665,"column":33}},{"start":{"line":665,"column":37},"end":{"line":665,"column":49}},{"start":{"line":665,"column":53},"end":{"line":665,"column":64}}]},"49":{"line":666,"type":"binary-expr","locations":[{"start":{"line":666,"column":17},"end":{"line":666,"column":29}},{"start":{"line":666,"column":33},"end":{"line":666,"column":36}}]},"50":{"line":667,"type":"binary-expr","locations":[{"start":{"line":667,"column":17},"end":{"line":667,"column":29}},{"start":{"line":667,"column":33},"end":{"line":667,"column":36}}]},"51":{"line":669,"type":"if","locations":[{"start":{"line":669,"column":2},"end":{"line":669,"column":2}},{"start":{"line":669,"column":2},"end":{"line":669,"column":2}}]},"52":{"line":676,"type":"if","locations":[{"start":{"line":676,"column":2},"end":{"line":676,"column":2}},{"start":{"line":676,"column":2},"end":{"line":676,"column":2}}]},"53":{"line":687,"type":"if","locations":[{"start":{"line":687,"column":2},"end":{"line":687,"column":2}},{"start":{"line":687,"column":2},"end":{"line":687,"column":2}}]},"54":{"line":693,"type":"if","locations":[{"start":{"line":693,"column":7},"end":{"line":693,"column":7}},{"start":{"line":693,"column":7},"end":{"line":693,"column":7}}]},"55":{"line":713,"type":"if","locations":[{"start":{"line":713,"column":6},"end":{"line":713,"column":6}},{"start":{"line":713,"column":6},"end":{"line":713,"column":6}}]},"56":{"line":723,"type":"if","locations":[{"start":{"line":723,"column":6},"end":{"line":723,"column":6}},{"start":{"line":723,"column":6},"end":{"line":723,"column":6}}]},"57":{"line":730,"type":"if","locations":[{"start":{"line":730,"column":6},"end":{"line":730,"column":6}},{"start":{"line":730,"column":6},"end":{"line":730,"column":6}}]},"58":{"line":731,"type":"if","locations":[{"start":{"line":731,"column":8},"end":{"line":731,"column":8}},{"start":{"line":731,"column":8},"end":{"line":731,"column":8}}]},"59":{"line":737,"type":"if","locations":[{"start":{"line":737,"column":8},"end":{"line":737,"column":8}},{"start":{"line":737,"column":8},"end":{"line":737,"column":8}}]},"60":{"line":750,"type":"if","locations":[{"start":{"line":750,"column":6},"end":{"line":750,"column":6}},{"start":{"line":750,"column":6},"end":{"line":750,"column":6}}]},"61":{"line":812,"type":"if","locations":[{"start":{"line":812,"column":2},"end":{"line":812,"column":2}},{"start":{"line":812,"column":2},"end":{"line":812,"column":2}}]},"62":{"line":822,"type":"binary-expr","locations":[{"start":{"line":822,"column":53},"end":{"line":822,"column":68}},{"start":{"line":822,"column":72},"end":{"line":822,"column":74}}]},"63":{"line":841,"type":"if","locations":[{"start":{"line":841,"column":2},"end":{"line":841,"column":2}},{"start":{"line":841,"column":2},"end":{"line":841,"column":2}}]},"64":{"line":851,"type":"if","locations":[{"start":{"line":851,"column":2},"end":{"line":851,"column":2}},{"start":{"line":851,"column":2},"end":{"line":851,"column":2}}]},"65":{"line":851,"type":"binary-expr","locations":[{"start":{"line":851,"column":6},"end":{"line":851,"column":18}},{"start":{"line":851,"column":23},"end":{"line":851,"column":42}}]},"66":{"line":852,"type":"binary-expr","locations":[{"start":{"line":852,"column":27},"end":{"line":852,"column":35}},{"start":{"line":852,"column":39},"end":{"line":852,"column":58}}]},"67":{"line":860,"type":"if","locations":[{"start":{"line":860,"column":2},"end":{"line":860,"column":2}},{"start":{"line":860,"column":2},"end":{"line":860,"column":2}}]},"68":{"line":862,"type":"if","locations":[{"start":{"line":862,"column":9},"end":{"line":862,"column":9}},{"start":{"line":862,"column":9},"end":{"line":862,"column":9}}]},"69":{"line":868,"type":"if","locations":[{"start":{"line":868,"column":2},"end":{"line":868,"column":2}},{"start":{"line":868,"column":2},"end":{"line":868,"column":2}}]},"70":{"line":870,"type":"if","locations":[{"start":{"line":870,"column":9},"end":{"line":870,"column":9}},{"start":{"line":870,"column":9},"end":{"line":870,"column":9}}]},"71":{"line":876,"type":"if","locations":[{"start":{"line":876,"column":2},"end":{"line":876,"column":2}},{"start":{"line":876,"column":2},"end":{"line":876,"column":2}}]},"72":{"line":878,"type":"if","locations":[{"start":{"line":878,"column":9},"end":{"line":878,"column":9}},{"start":{"line":878,"column":9},"end":{"line":878,"column":9}}]},"73":{"line":885,"type":"if","locations":[{"start":{"line":885,"column":2},"end":{"line":885,"column":2}},{"start":{"line":885,"column":2},"end":{"line":885,"column":2}}]},"74":{"line":887,"type":"if","locations":[{"start":{"line":887,"column":9},"end":{"line":887,"column":9}},{"start":{"line":887,"column":9},"end":{"line":887,"column":9}}]},"75":{"line":900,"type":"if","locations":[{"start":{"line":900,"column":2},"end":{"line":900,"column":2}},{"start":{"line":900,"column":2},"end":{"line":900,"column":2}}]}}}} \ No newline at end of file diff --git a/coverage/lcov-report/index.html b/coverage/lcov-report/index.html index d712ccc4..26c634b0 100644 --- a/coverage/lcov-report/index.html +++ b/coverage/lcov-report/index.html @@ -183,16 +183,16 @@

Code coverage report for All files

- Statements: 93.33% (1538 / 1648)      + Statements: 93.22% (1553 / 1666)      - Branches: 84.91% (585 / 689)      + Branches: 85.11% (600 / 705)      - Functions: 95.65% (198 / 207)      + Functions: 94.79% (200 / 211)      - Lines: 93.3% (1532 / 1642)      + Lines: 93.19% (1547 / 1660)     

@@ -216,15 +216,15 @@

lib/ - - 93.33% - (1538 / 1648) - 84.91% - (585 / 689) - 95.65% - (198 / 207) - 93.3% - (1532 / 1642) + + 93.22% + (1553 / 1666) + 85.11% + (600 / 705) + 94.79% + (200 / 211) + 93.19% + (1547 / 1660) @@ -232,7 +232,7 @@

diff --git a/coverage/lcov-report/lib/compressor.js.html b/coverage/lcov-report/lib/compressor.js.html index f3a88e0d..1f389531 100644 --- a/coverage/lcov-report/lib/compressor.js.html +++ b/coverage/lcov-report/lib/compressor.js.html @@ -2823,7 +2823,7 @@

  // The Compressor transform stream is basically stateless. util.inherits(Compressor, TransformStream); -function Compressor(type, log) { +function Compressor(log, type) { TransformStream.call(this, { objectMode: true });   this._log = log.child({ component: 'compressor' }); @@ -2915,7 +2915,7 @@

// `this._frames`, and the type of the frame and the stream identifier is stored in `this._type` // and `this._stream` respectively. util.inherits(Decompressor, TransformStream); -function Decompressor(type, log) { +function Decompressor(log, type) { TransformStream.call(this, { objectMode: true });   this._log = log.child({ component: 'compressor' }); @@ -3036,7 +3036,7 @@

diff --git a/coverage/lcov-report/lib/connection.js.html b/coverage/lcov-report/lib/connection.js.html index 1c0ba1b7..d6e33765 100644 --- a/coverage/lcov-report/lib/connection.js.html +++ b/coverage/lcov-report/lib/connection.js.html @@ -183,16 +183,16 @@

Code coverage report for lib/connection.js

- Statements: 92.41% (219 / 237)      + Statements: 92.47% (221 / 239)      - Branches: 79.76% (67 / 84)      + Branches: 80.23% (69 / 86)      Functions: 100% (33 / 33)      - Lines: 92.41% (219 / 237)      + Lines: 92.47% (221 / 239)     

All files » lib/ » connection.js
@@ -779,7 +779,12 @@

578 579 580 -5811 +581 +582 +583 +584 +585 +5861       @@ -987,9 +992,9 @@

  1 75 -24 +27   -51 +48       @@ -999,7 +1004,7 @@

10 10 10 -7 +6     10 @@ -1042,23 +1047,28 @@

  1   -205 -86 +231 +4 +  +  +  +227 +97   -119 -86 -86 +130 +101 +101   -119 +130     -86 +97     -86 -86 -62 -62 +97 +97 +64 +64       @@ -1071,13 +1081,13 @@

      -62 -111 -144 -144 +64 +113 +146 +146   -144 -87 +146 +89 57     @@ -1104,17 +1114,17 @@

      -111 -111 +113 +113         -86 -58 +97 +69     -86 +97       @@ -1375,7 +1385,7 @@

// Public API // ----------   -// * **new Connection(firstStreamId, settings, [log])**: create a new Connection +// * **new Connection(log, firstStreamId, settings)**: create a new Connection // // * **Event: 'error' (type)**: signals a connection level error made by the other end // @@ -1397,7 +1407,7 @@

// -----------   // The main aspects of managing the connection are: -function Connection(firstStreamId, settings, log) { +function Connection(log, firstStreamId, settings) { // * initializing the base class Flow.call(this, 0);   @@ -1621,6 +1631,11 @@

// The `_send` method is a virtual method of the [Flow class](flow.html) that has to be implemented // by child classes. It reads frames from streams and pushes them to the output buffer. Connection.prototype._send = function _send(immediate) { + // * Do not do anything if the connectionis already closed + if (this._closed) { + return; + } +  // * Collapsing multiple calls in a turn into a single deferred call if (immediate) { this._sendScheduled = false; @@ -1944,7 +1959,7 @@

diff --git a/coverage/lcov-report/lib/endpoint.js.html b/coverage/lcov-report/lib/endpoint.js.html index 29cad5dc..48e483bd 100644 --- a/coverage/lcov-report/lib/endpoint.js.html +++ b/coverage/lcov-report/lib/endpoint.js.html @@ -183,16 +183,16 @@

Code coverage report for lib/endpoint.js

- Statements: 100% (90 / 90)      + Statements: 94.17% (97 / 103)      - Branches: 94.44% (17 / 18)      + Branches: 90.91% (20 / 22)      - Functions: 100% (13 / 13)      + Functions: 87.5% (14 / 16)      - Lines: 100% (90 / 90)      + Lines: 94.17% (97 / 103)     

All files » lib/ » endpoint.js
@@ -405,7 +405,60 @@

204 205 206 -2071 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +2601   1 1 @@ -413,6 +466,7 @@

1 1 1 +1   1   @@ -420,6 +474,39 @@

      +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  1 24   @@ -524,6 +611,23 @@

    1 +  +  +  +  +  +  +  +  +1 +96 +  +  +96 +  +  +  +1   1 24 @@ -545,6 +649,8 @@

  24 24 +24 +24     1 @@ -619,14 +725,48 @@

var Decompressor = require('./compressor').Decompressor; var Connection = require('./connection').Connection; var Duplex = require('stream').Duplex; +var Transform = require('stream').Transform;   exports.Endpoint = Endpoint;   -// Endpoint -// ======== +// The Endpoint class +// ================== +  +// Public API +// ---------- +  +// - **new Endpoint(log, role, settings, filters)**: create a new Endpoint. +// +// - `log`: bunyan logger of the parent +// - `role`: 'CLIENT' or 'SERVER' +// - `settings`: initial HTTP/2 settings +// - `filters`: a map of functions that filter the traffic between components (for debugging or +// intentional failure injection). +// +// Filter functions get three arguments: +// 1. `frame`: the current frame +// 2. `forward(frame)`: function that can be used to forward a frame to the next component +// 3. `done()`: callback to signal the end of the filter process +// +// Valid filter names and their position in the stack: +// - `beforeSerialization`: after compression, before serialization +// - `beforeCompression`: after multiplexing, before compression +// - `afterDeserialization`: after deserialization, before decompression +// - `afterDecompression`: after decompression, before multiplexing +// +// * **Event: 'stream' (Stream)**: 'stream' event forwarded from the underlying Connection +// +// * **Event: 'error' (type)**: signals an error +// +// * **createStream(): Stream**: initiate a new stream (forwarded to the underlying Connection) +// +// * **close([error])**: close the connection with an error code +  +// Constructor +// -----------   // The process of initialization: -function Endpoint(role, settings, log) { +function Endpoint(log, role, settings, filters) { Duplex.call(this);   // * Initializing logging infrastructure @@ -644,7 +784,7 @@

// * Initialization of componenet. This includes the second part of the handshake process: // sending the first SETTINGS frame. This is done by the connection class right after // initialization. - this._initializeDataFlow(role, settings); + this._initializeDataFlow(role, settings, filters || {});   // * Initialization of management code. this._initializeManagement(); @@ -729,9 +869,26 @@

// read() | | write() // v |   +function createTransformStream(filter) { + var transform = new Transform({ objectMode: true }); + var push = transform.push.bind(transform); + transform._transform = function(frame, encoding, done) { + filter(frame, push, done); + }; + return transform; +} +  +function pipeAndFilter(stream1, stream2, filter) { + Iif (filter) { + stream1.pipe(createTransformStream(filter)).pipe(stream2); + } else { + stream1.pipe(stream2); + } +} +  var MAX_HTTP_PAYLOAD_SIZE = 16383;   -Endpoint.prototype._initializeDataFlow = function _initializeDataFlow(role, settings) { +Endpoint.prototype._initializeDataFlow = function _initializeDataFlow(role, settings, filters) { var firstStreamId, compressorRole, decompressorRole; if (role === 'CLIENT') { firstStreamId = 1; @@ -745,12 +902,14 @@

  this._serializer = new Serializer(this._log, MAX_HTTP_PAYLOAD_SIZE); this._deserializer = new Deserializer(this._log, MAX_HTTP_PAYLOAD_SIZE); - this._compressor = new Compressor(compressorRole, this._log); - this._decompressor = new Decompressor(decompressorRole, this._log); - this._connection = new Connection(firstStreamId, settings, this._log); + this._compressor = new Compressor(this._log, compressorRole); + this._decompressor = new Decompressor(this._log, decompressorRole); + this._connection = new Connection(this._log, firstStreamId, settings);   - this._connection.pipe(this._compressor).pipe(this._serializer); - this._deserializer.pipe(this._decompressor).pipe(this._connection); + pipeAndFilter(this._connection, this._compressor, filters.beforeCompression); + pipeAndFilter(this._compressor, this._serializer, filters.beforeSerialization); + pipeAndFilter(this._deserializer, this._decompressor, filters.afterDeserialization); + pipeAndFilter(this._decompressor, this._connection, filters.afterDecompression); };   var noread = {}; @@ -822,7 +981,7 @@

diff --git a/coverage/lcov-report/lib/flow.js.html b/coverage/lcov-report/lib/flow.js.html index a56536e9..89c3b805 100644 --- a/coverage/lcov-report/lib/flow.js.html +++ b/coverage/lcov-report/lib/flow.js.html @@ -186,7 +186,7 @@

Statements: 95.87% (116 / 121)      - Branches: 91.86% (79 / 86)      + Branches: 92.05% (81 / 88)      Functions: 100% (17 / 17)      @@ -648,42 +648,42 @@

    1 -275 +281 63     -275 -106 -106 -106 -12 +281 +111 +111 +111 +13   -106 +111         -169 +170     -275 +281   -5 +6           1 -12 -12 -6 +13 +13 +7           -6 +7       @@ -721,30 +721,30 @@

  1   -246 -231 +234 +217         -15 -7 -7 +17 8 8 +9 +9 7     -7 +8   -7 +8             -8 +9       @@ -754,27 +754,27 @@

    1 -628 -146 -482 +627 +130 +497   -482 -482 +497 +497         -482 -482 +497 +497   -482 -394 -191 +497 +405 +193   -394 +405     -88 +92       @@ -782,35 +782,35 @@

      -88 +92   -88 +92           -88 +92   -88 +92     -88 +92         1 -227 +211   -227 -28 +211 +29   -28 -28 +29 +29     -227 +211       @@ -818,48 +818,48 @@

    1 -228 +212   -228 -221 +212 +204     -7 +8 1       -6 +7   -6 -6 +7 +7           -6 +7         1 -221 +204 6   -215 +198     -221 -221 -220 +204 +204 +203     -221 +204 7     -221 +204       @@ -883,17 +883,17 @@

1   1 -87 +88 1 1   -86 -86 -86 +87 +87 +87 1 1   -85 +86       @@ -907,7 +907,7 @@

    1 -5 +6       @@ -1010,7 +1010,7 @@

// incoming frame is a WINDOW_UPDATE. // [1]: http://nodejs.org/api/stream.html#stream_writable_write_chunk_encoding_callback_1 Flow.prototype._write = function _write(frame, encoding, callback) { - if (frame.flags.END_STREAM) { + if (frame.flags.END_STREAM || (frame.type === 'RST_STREAM')) { this._ended = true; }   @@ -1290,7 +1290,7 @@

diff --git a/coverage/lcov-report/lib/framer.js.html b/coverage/lcov-report/lib/framer.js.html index e123b2fb..26196574 100644 --- a/coverage/lcov-report/lib/framer.js.html +++ b/coverage/lcov-report/lib/framer.js.html @@ -1036,26 +1036,26 @@

    1 -66 +68   -66 +68       -66 +68     -148 -148 -148 -148 +149 +149 +149 +149             -148 +149 70 70 70 @@ -1070,7 +1070,7 @@

      -148 +149 70 70 70 @@ -1087,7 +1087,7 @@

      -66 +68       @@ -2442,7 +2442,7 @@

diff --git a/coverage/lcov-report/lib/http.js.html b/coverage/lcov-report/lib/http.js.html index 166d7834..b9fca323 100644 --- a/coverage/lcov-report/lib/http.js.html +++ b/coverage/lcov-report/lib/http.js.html @@ -2374,7 +2374,7 @@

  IncomingMessage.prototype._checkSpecialHeader = function _checkSpecialHeader(key, value) { Iif ((typeof value !== 'string') || (value.length === 0)) { - this._log.error({ key: key, value: value }, 'Invalid special header field'); + this._log.error({ key: key, value: value }, 'Invalid or missing special header field'); this.stream.emit('error', 'PROTOCOL_ERROR'); }   @@ -2510,7 +2510,7 @@

  // Starting HTTP/2 Server.prototype._start = function _start(socket) { - var endpoint = new Endpoint('SERVER', this._settings, this._log); + var endpoint = new Endpoint(this._log, 'SERVER', this._settings);   this._log.info({ e: endpoint, client: socket.remoteAddress + ':' + socket.remotePort, @@ -2824,7 +2824,7 @@

  // * HTTP/2 over plain TCP else if (options.plain) { - endpoint = new Endpoint('CLIENT', this._settings, this._log); + endpoint = new Endpoint(this._log, 'CLIENT', this._settings); endpoint.socket = net.connect({ host: options.host, port: options.port, @@ -2856,7 +2856,7 @@

Eif (httpsRequest.socket.npnProtocol === implementedVersion) { httpsRequest.socket.emit('agentRemove'); unbundleSocket(httpsRequest.socket); - endpoint = new Endpoint('CLIENT', self._settings, self._log); + endpoint = new Endpoint(self._log, 'CLIENT', self._settings); endpoint.socket = httpsRequest.socket; endpoint.pipe(endpoint.socket).pipe(endpoint); } @@ -3102,7 +3102,7 @@

diff --git a/coverage/lcov-report/lib/index.html b/coverage/lcov-report/lib/index.html index 15c94e37..aa701793 100644 --- a/coverage/lcov-report/lib/index.html +++ b/coverage/lcov-report/lib/index.html @@ -183,16 +183,16 @@

Code coverage report for lib/

- Statements: 93.33% (1538 / 1648)      + Statements: 93.22% (1553 / 1666)      - Branches: 84.91% (585 / 689)      + Branches: 85.11% (600 / 705)      - Functions: 95.65% (198 / 207)      + Functions: 94.79% (200 / 211)      - Lines: 93.3% (1532 / 1642)      + Lines: 93.19% (1547 / 1660)     

All files » lib/
@@ -229,28 +229,28 @@

connection.js - - 92.41% - (219 / 237) - 79.76% - (67 / 84) + + 92.47% + (221 / 239) + 80.23% + (69 / 86) 100% (33 / 33) - 92.41% - (219 / 237) + 92.47% + (221 / 239) endpoint.js - - 100% - (90 / 90) - 94.44% - (17 / 18) - 100% - (13 / 13) - 100% - (90 / 90) + + 94.17% + (97 / 103) + 90.91% + (20 / 22) + 87.5% + (14 / 16) + 94.17% + (97 / 103) @@ -258,8 +258,8 @@

95.87% (116 / 121) - 91.86% - (79 / 86) + 92.05% + (81 / 88) 100% (17 / 17) 95.87% @@ -294,15 +294,15 @@

stream.js - - 88.83% - (183 / 206) - 83.22% - (124 / 149) - 90.48% - (19 / 21) - 88.5% - (177 / 200) + + 90.43% + (189 / 209) + 84.08% + (132 / 157) + 90.91% + (20 / 22) + 90.15% + (183 / 203) @@ -310,7 +310,7 @@

diff --git a/coverage/lcov-report/lib/stream.js.html b/coverage/lcov-report/lib/stream.js.html index 83bd15ff..75d20e0f 100644 --- a/coverage/lcov-report/lib/stream.js.html +++ b/coverage/lcov-report/lib/stream.js.html @@ -183,16 +183,16 @@

Code coverage report for lib/stream.js

- Statements: 88.83% (183 / 206)      + Statements: 90.43% (189 / 209)      - Branches: 83.22% (124 / 149)      + Branches: 84.08% (132 / 157)      - Functions: 90.48% (19 / 21)      + Functions: 90.91% (20 / 22)      - Lines: 88.5% (177 / 200)      + Lines: 90.15% (183 / 203)     

All files » lib/ » stream.js
@@ -798,7 +798,23 @@

597 598 599 -6001 +600 +601 +602 +603 +604 +605 +606 +607 +608 +609 +610 +611 +612 +613 +614 +615 +6161       @@ -844,6 +860,8 @@

      +  +  1 105   @@ -940,9 +958,9 @@

    1 -26 -19 -19 +1 +1 +1       @@ -990,6 +1008,9 @@

105   105 +  +105 +105 105 105 105 @@ -999,8 +1020,9 @@

    1 -89 -89 +71 +71 +        @@ -1009,36 +1031,45 @@

  70   -70   +70     70 +43 +27 +6 21 -21 -          +21 +    -49 -43 -6 -6         +70   -  -  +  +  +1 +  +  +70 +21 +21         +  70 35 +35 +      70 @@ -1078,7 +1109,7 @@

    1 -107 +91 19 19 19 @@ -1147,57 +1178,57 @@

    1 -161 -161 -161 -161 +145 +145 +145 +145         1 -208 +206           1 -258 -258 +240 +240   -258 -258 -258 +240 +240 +240 88 95 8 -33 +15 24 10     -258 +240   -258 +240             -57 +52 42 42 11   42 -15 -6 +10 +1   9   -57 +52       @@ -1209,16 +1240,16 @@

      -18 -4 14 -6 +4 +10 +2 8     8   -18 +14       @@ -1228,8 +1259,8 @@

      -18 -6 +14 +2 12 4 8 @@ -1237,7 +1268,7 @@

  8   -18 +14       @@ -1285,14 +1316,14 @@

      -61 -25 +58 +22 36     3   -61 +58       @@ -1315,22 +1346,22 @@

      -25 +23         14   -25 +23           -258 -66 -66 +240 +50 +50       @@ -1339,27 +1370,29 @@

      -258 -13 +240 +  +    13 13 +13       -258 -104 -104 -60 +240 +103 +103 +59   44   -154 -89 +137 +72       -258 +240 45     @@ -1379,7 +1412,6 @@

  25 25 -25       @@ -1415,6 +1447,8 @@

// Public API // ----------   +// * **new Stream(log)**: create a new Stream +// // * **Event: 'headers' (headers)**: signals incoming headers // // * **Event: 'promise' (stream, headers)**: signals an incoming push promise @@ -1539,7 +1573,7 @@

// Resetting the stream. Normally, an endpoint SHOULD NOT send more than one RST_STREAM frame for // any stream. Stream.prototype.reset = function reset(error) { - if (!this._resetSent) { + Eif (!this._resetSent) { this._resetSent = true; this._pushUpstream({ type: 'RST_STREAM', @@ -1587,11 +1621,14 @@

  Stream.prototype._initializeDataFlow = function _initializeDataFlow() { this.id = undefined; +  + this._ended = false;   this.upstream = new Flow(); this.upstream._log = this._log; this.upstream._send = this._send.bind(this); this.upstream._receive = this._receive.bind(this); + this.upstream.write = this._writeUpstream.bind(this); this.upstream.on('error', this.emit.bind(this, 'error'));   this.on('finish', this._finishing); @@ -1602,45 +1639,55 @@

this._transition(true, frame); };   -// The `_receive` method (= `upstream._receive`) gets called when there's an incoming frame. -Stream.prototype._receive = function _receive(frame, ready) { +// Overriding the upstream's `write` allows us to act immediately instead of waiting for the input +// queue to empty. This is important in case of control frames. +Stream.prototype._writeUpstream = function _writeUpstream(frame) { this._log.debug({ frame: frame }, 'Receiving frame');   - this._transition(false, frame); -  - var callReady = true; + var moreNeeded = Flow.prototype.write.call(this.upstream, frame);   - // * If it's a DATA frame, then push the payload into the output buffer on the other side. - // Call ready when the other side is ready to receive more. - if (frame.type === 'DATA') { - var moreNeeded = this.push(frame.data); - Iif (!moreNeeded) { - this._receiveMore = ready; - callReady = false; - } - } + // * Transition to a new state if that's the effect of receiving the frame + this._transition(false, frame);   - // * Otherwise it's a control frame. Call the appropriate handler method. - else if (frame.type === 'HEADERS') { + // * If it's a control frame. Call the appropriate handler method. + if (frame.type === 'HEADERS') { this._onHeaders(frame); - } else Eif (frame.type === 'PUSH_PROMISE') { + } else if (frame.type === 'PUSH_PROMISE') { this._onPromise(frame); - } else if (frame.type === 'PRIORITY') { + } else Iif (frame.type === 'PRIORITY') { this._onPriority(frame); }   // * If it's an invalid stream level frame, emit error - else if (frame.type !== 'WINDOW_UPDATE') { + else Iif ((frame.type !== 'DATA') && + (frame.type !== 'WINDOW_UPDATE') && + (frame.type !== 'RST_STREAM')) { this._log.error({ frame: frame }, 'Invalid stream level frame'); this.emit('error', 'PROTOCOL_ERROR'); } +  + return moreNeeded; +}; +  +// The `_receive` method (= `upstream._receive`) gets called when there's an incoming frame. +Stream.prototype._receive = function _receive(frame, ready) { + // * If it's a DATA frame, then push the payload into the output buffer on the other side. + // Call ready when the other side is ready to receive more. + if (!this._ended && (frame.type === 'DATA')) { + var moreNeeded = this.push(frame.data); + Iif (!moreNeeded) { + this._receiveMore = ready; + } + }   // * Any frame may signal the end of the stream with the END_STREAM flag - if (frame.flags.END_STREAM) { + if (!this._ended && (frame.flags.END_STREAM || (frame.type === 'RST_STREAM'))) { this.push(null); + this._ended = true; }   - Eif (callReady) { + // * Postpone calling `ready` if `push()` returned a falsy value + Eif (this._receiveMore !== ready) { ready(); } }; @@ -1939,8 +1986,10 @@

// * Receiving a PUSH_PROMISE frame marks the associated stream as reserved by the remote peer. // The state of the stream becomes "reserved (remote)". if (PUSH_PROMISE && !error) { - assert(frame.promised_stream.state === 'IDLE', 'Promised stream is in invalid state (' + - frame.promised_stream.state + ')'); + /* This assertion must hold, because _transition is called immediately when a frame is written + to the stream. If it would be called when a frame gets out of the input queue, the state + of the reserved could have been changed by then. */ + assert(frame.promised_stream.state === 'IDLE', frame.promised_stream.state); frame.promised_stream._setState(sending ? 'RESERVED_LOCAL' : 'RESERVED_REMOTE'); frame.promised_stream._initiated = sending; } @@ -1969,15 +2018,14 @@

  // * When sending something invalid, throwing an exception, since it is probably a bug. if (sending) { - this._log.error(info, 'Stream error: sending illegal frame.'); + this._log.error(info, 'Sending illegal frame.'); throw new Error('Sending illegal frame (' + frame.type + ') in ' + this.state + ' state.'); }   // * When receiving something invalid, sending an RST_STREAM using the `reset` method. // This will automatically cause a transition to the CLOSED state. else { - this._log.error(info, 'Stream error: received illegal frame.'); - this.reset(error); + this._log.error(info, 'Received illegal frame.'); this.emit('error', error); } } @@ -2001,7 +2049,7 @@

diff --git a/coverage/lcov.info b/coverage/lcov.info new file mode 100644 index 00000000..cc5b8efd --- /dev/null +++ b/coverage/lcov.info @@ -0,0 +1,2850 @@ +TN: +SF:/data/upstream/node-http2/lib/compressor.js +FN:37,HeaderTable +FN:72,entryFromPair +FN:91,size +FN:95,tableSize +FN:111,(anonymous_5) +FN:218,HeaderSetDecompressor +FN:229,_transform +FN:255,_execute +FN:312,_flush +FN:346,HeaderSetCompressor +FN:354,send +FN:367,_transform +FN:473,_flush +FN:504,writeInteger +FN:545,readInteger +FN:574,writeString +FN:580,readString +FN:632,writeHeader +FN:668,readHeader +FN:737,Compressor +FN:751,compress +FN:773,_transform +FN:829,Decompressor +FN:846,decompress +FN:870,_transform +FN:899,(anonymous_26) +FN:920,concat +FN:935,cut +FNF:28 +FNH:28 +FNDA:54,HeaderTable +FNDA:1806,entryFromPair +FNDA:1806,size +FNDA:54,tableSize +FNDA:182,(anonymous_5) +FNDA:49,HeaderSetDecompressor +FNDA:49,_transform +FNDA:151,_execute +FNDA:49,_flush +FNDA:47,HeaderSetCompressor +FNDA:147,send +FNDA:159,_transform +FNDA:47,_flush +FNDA:351,writeInteger +FNDA:363,readInteger +FNDA:123,writeString +FNDA:125,readString +FNDA:151,writeHeader +FNDA:159,readHeader +FNDA:26,Compressor +FNDA:47,compress +FNDA:75,_transform +FNDA:28,Decompressor +FNDA:49,decompress +FNDA:73,_transform +FNDA:38,(anonymous_26) +FNDA:132,concat +FNDA:37,cut +DA:18,1 +DA:19,1 +DA:20,1 +DA:21,1 +DA:22,1 +DA:24,1 +DA:25,1 +DA:26,1 +DA:37,1 +DA:38,54 +DA:39,54 +DA:40,54 +DA:41,54 +DA:42,54 +DA:43,54 +DA:72,1 +DA:73,1806 +DA:74,1806 +DA:75,1806 +DA:76,1806 +DA:77,1806 +DA:78,1806 +DA:89,1 +DA:91,1 +DA:92,1806 +DA:95,1 +DA:96,54 +DA:97,54 +DA:98,1620 +DA:100,54 +DA:111,1 +DA:112,182 +DA:113,182 +DA:115,182 +DA:116,0 +DA:117,0 +DA:118,0 +DA:121,182 +DA:122,182 +DA:123,182 +DA:124,0 +DA:126,182 +DA:128,182 +DA:131,182 +DA:139,1 +DA:174,1 +DA:217,1 +DA:218,1 +DA:219,49 +DA:221,49 +DA:222,49 +DA:223,49 +DA:229,1 +DA:230,49 +DA:231,49 +DA:255,1 +DA:256,151 +DA:259,151 +DA:268,151 +DA:269,54 +DA:270,54 +DA:272,54 +DA:273,32 +DA:275,22 +DA:276,22 +DA:277,22 +DA:278,22 +DA:290,97 +DA:291,78 +DA:293,19 +DA:296,97 +DA:297,97 +DA:298,92 +DA:299,92 +DA:300,92 +DA:301,92 +DA:304,97 +DA:312,1 +DA:313,49 +DA:316,49 +DA:317,49 +DA:318,151 +DA:322,49 +DA:323,1559 +DA:324,1559 +DA:325,46 +DA:327,1559 +DA:330,49 +DA:345,1 +DA:346,1 +DA:347,47 +DA:349,47 +DA:350,47 +DA:351,47 +DA:354,1 +DA:355,147 +DA:358,147 +DA:359,143 +DA:361,147 +DA:367,1 +DA:368,159 +DA:369,159 +DA:370,159 +DA:373,159 +DA:374,159 +DA:375,3760 +DA:376,3760 +DA:377,152 +DA:378,65 +DA:379,65 +DA:380,87 +DA:381,87 +DA:409,159 +DA:410,65 +DA:412,65 +DA:413,19 +DA:414,19 +DA:415,19 +DA:418,46 +DA:419,0 +DA:420,0 +DA:421,0 +DA:422,0 +DA:423,0 +DA:424,0 +DA:427,46 +DA:428,4 +DA:429,4 +DA:433,42 +DA:439,94 +DA:440,94 +DA:442,94 +DA:443,94 +DA:444,4 +DA:445,90 +DA:446,76 +DA:448,14 +DA:451,94 +DA:452,90 +DA:453,90 +DA:454,90 +DA:455,0 +DA:456,0 +DA:457,0 +DA:458,0 +DA:459,0 +DA:464,94 +DA:467,159 +DA:473,1 +DA:475,47 +DA:476,1488 +DA:477,1488 +DA:478,26 +DA:479,26 +DA:481,1488 +DA:482,1488 +DA:485,47 +DA:504,1 +DA:505,351 +DA:506,351 +DA:507,149 +DA:510,202 +DA:511,202 +DA:512,2 +DA:514,202 +DA:516,202 +DA:517,202 +DA:518,210 +DA:519,210 +DA:521,210 +DA:522,8 +DA:524,210 +DA:526,210 +DA:529,202 +DA:545,1 +DA:546,363 +DA:548,363 +DA:549,363 +DA:550,161 +DA:553,363 +DA:554,207 +DA:555,207 +DA:556,217 +DA:557,217 +DA:558,217 +DA:562,363 +DA:574,1 +DA:575,123 +DA:576,123 +DA:577,123 +DA:580,1 +DA:581,125 +DA:582,125 +DA:583,125 +DA:584,125 +DA:625,1 +DA:632,1 +DA:633,151 +DA:635,151 +DA:636,51 +DA:637,100 +DA:638,5 +DA:639,95 +DA:640,18 +DA:642,77 +DA:645,151 +DA:646,51 +DA:649,100 +DA:650,81 +DA:652,19 +DA:653,19 +DA:656,100 +DA:657,77 +DA:660,100 +DA:663,151 +DA:665,151 +DA:668,1 +DA:669,159 +DA:671,159 +DA:672,159 +DA:673,56 +DA:674,103 +DA:675,28 +DA:676,6 +DA:678,22 +DA:681,75 +DA:684,159 +DA:685,56 +DA:686,56 +DA:689,103 +DA:690,103 +DA:691,20 +DA:694,103 +DA:695,75 +DA:696,28 +DA:697,22 +DA:699,6 +DA:702,103 +DA:705,159 +DA:730,1 +DA:736,1 +DA:737,1 +DA:738,26 +DA:740,26 +DA:742,26 +DA:743,26 +DA:745,26 +DA:751,1 +DA:752,47 +DA:753,47 +DA:754,143 +DA:755,143 +DA:756,8 +DA:757,24 +DA:760,135 +DA:763,47 +DA:765,47 +DA:766,47 +DA:767,447 +DA:769,47 +DA:773,1 +DA:781,75 +DA:782,37 +DA:784,37 +DA:786,37 +DA:787,39 +DA:788,39 +DA:789,39 +DA:791,39 +DA:792,37 +DA:793,37 +DA:794,37 +DA:796,2 +DA:802,39 +DA:803,32 +DA:805,39 +DA:807,39 +DA:813,38 +DA:816,75 +DA:828,1 +DA:829,1 +DA:830,28 +DA:832,28 +DA:834,28 +DA:835,28 +DA:837,28 +DA:839,28 +DA:840,28 +DA:846,1 +DA:847,49 +DA:848,49 +DA:850,49 +DA:851,49 +DA:852,49 +DA:853,165 +DA:854,165 +DA:855,165 +DA:856,17 +DA:857,8 +DA:859,9 +DA:862,148 +DA:866,49 +DA:870,1 +DA:873,73 +DA:874,3 +DA:875,1 +DA:876,1 +DA:877,1 +DA:879,2 +DA:884,70 +DA:885,37 +DA:886,37 +DA:887,37 +DA:892,33 +DA:898,72 +DA:899,36 +DA:900,38 +DA:902,36 +DA:903,36 +DA:905,0 +DA:906,0 +DA:907,0 +DA:909,36 +DA:910,36 +DA:913,72 +DA:920,1 +DA:921,132 +DA:922,132 +DA:923,534 +DA:926,132 +DA:927,132 +DA:928,534 +DA:931,132 +DA:935,1 +DA:936,37 +DA:937,37 +DA:938,37 +DA:939,39 +DA:940,39 +DA:941,39 +DA:943,37 +LF:341 +LH:323 +BRDA:40,1,0,54 +BRDA:40,1,1,54 +BRDA:115,2,0,182 +BRDA:115,2,1,0 +BRDA:121,3,0,182 +BRDA:121,3,1,0 +BRDA:123,4,0,0 +BRDA:123,4,1,182 +BRDA:268,5,0,54 +BRDA:268,5,1,97 +BRDA:272,6,0,32 +BRDA:272,6,1,22 +BRDA:290,7,0,78 +BRDA:290,7,1,19 +BRDA:297,8,0,92 +BRDA:297,8,1,5 +BRDA:324,9,0,46 +BRDA:324,9,1,1513 +BRDA:324,10,0,1559 +BRDA:324,10,1,144 +BRDA:358,11,0,143 +BRDA:358,11,1,4 +BRDA:376,12,0,152 +BRDA:376,12,1,3608 +BRDA:377,13,0,65 +BRDA:377,13,1,87 +BRDA:380,14,0,87 +BRDA:380,14,1,0 +BRDA:409,15,0,65 +BRDA:409,15,1,94 +BRDA:412,16,0,19 +BRDA:412,16,1,46 +BRDA:418,17,0,0 +BRDA:418,17,1,46 +BRDA:427,18,0,4 +BRDA:427,18,1,42 +BRDA:443,19,0,4 +BRDA:443,19,1,90 +BRDA:445,20,0,76 +BRDA:445,20,1,14 +BRDA:451,21,0,90 +BRDA:451,21,1,4 +BRDA:456,22,0,0 +BRDA:456,22,1,0 +BRDA:464,23,0,76 +BRDA:464,23,1,18 +BRDA:477,24,0,26 +BRDA:477,24,1,1462 +BRDA:477,25,0,1488 +BRDA:477,25,1,165 +BRDA:477,25,2,123 +BRDA:506,26,0,149 +BRDA:506,26,1,202 +BRDA:511,27,0,2 +BRDA:511,27,1,200 +BRDA:521,28,0,8 +BRDA:521,28,1,202 +BRDA:549,29,0,161 +BRDA:549,29,1,202 +BRDA:553,30,0,207 +BRDA:553,30,1,156 +BRDA:635,31,0,51 +BRDA:635,31,1,100 +BRDA:637,32,0,5 +BRDA:637,32,1,95 +BRDA:639,33,0,18 +BRDA:639,33,1,77 +BRDA:645,34,0,51 +BRDA:645,34,1,100 +BRDA:649,35,0,81 +BRDA:649,35,1,19 +BRDA:656,36,0,77 +BRDA:656,36,1,23 +BRDA:672,37,0,56 +BRDA:672,37,1,103 +BRDA:674,38,0,28 +BRDA:674,38,1,75 +BRDA:675,39,0,6 +BRDA:675,39,1,22 +BRDA:684,40,0,56 +BRDA:684,40,1,103 +BRDA:690,41,0,20 +BRDA:690,41,1,83 +BRDA:694,42,0,75 +BRDA:694,42,1,28 +BRDA:696,43,0,22 +BRDA:696,43,1,6 +BRDA:742,44,0,26 +BRDA:742,44,1,13 +BRDA:743,45,0,13 +BRDA:743,45,1,13 +BRDA:755,46,0,8 +BRDA:755,46,1,135 +BRDA:781,47,0,37 +BRDA:781,47,1,38 +BRDA:781,48,0,75 +BRDA:781,48,1,45 +BRDA:791,49,0,37 +BRDA:791,49,1,2 +BRDA:802,50,0,32 +BRDA:802,50,1,7 +BRDA:803,51,0,32 +BRDA:803,51,1,30 +BRDA:834,52,0,28 +BRDA:834,52,1,13 +BRDA:835,53,0,15 +BRDA:835,53,1,13 +BRDA:855,54,0,17 +BRDA:855,54,1,148 +BRDA:856,55,0,8 +BRDA:856,55,1,9 +BRDA:873,56,0,3 +BRDA:873,56,1,70 +BRDA:874,57,0,1 +BRDA:874,57,1,2 +BRDA:874,58,0,3 +BRDA:874,58,1,2 +BRDA:884,59,0,37 +BRDA:884,59,1,33 +BRDA:884,60,0,70 +BRDA:884,60,1,40 +BRDA:898,61,0,36 +BRDA:898,61,1,36 +BRDA:898,62,0,72 +BRDA:898,62,1,39 +BRDA:898,62,2,10 +BRF:126 +BRH:119 +end_of_record +TN: +SF:/data/upstream/node-http2/lib/connection.js +FN:39,Connection +FN:100,_initializeStreamManagement +FN:123,_writeControlFrame +FN:135,_updateStreamLimit +FN:144,_changeStreamCount +FN:164,_allocateId +FN:199,_allocatePriority +FN:207,_insert +FN:215,_reprioritize +FN:229,_createIncomingStream +FN:241,createStream +FN:254,_initializeMultiplexing +FN:262,_send +FN:346,_receive +FN:384,_initializeSettingsManagement +FN:394,_onFirstFrameReceived +FN:404,_receiveSettings +FN:411,set +FN:433,_initializeLifecycleManagement +FN:441,_generatePingId +FN:452,ping +FN:469,_receivePing +FN:497,close +FN:515,_receiveGoaway +FN:527,_initializeFlowControl +FN:530,(anonymous_26) +FN:539,noop +FN:540,noop +FN:550,_setInitialStreamWindowSize +FN:557,(anonymous_30) +FN:565,_setLocalFlowControl +FN:575,_setRemoteFlowControl +FN:578,(anonymous_33) +FNF:33 +FNH:33 +FNDA:45,Connection +FNDA:45,_initializeStreamManagement +FNDA:42,_writeControlFrame +FNDA:18,_updateStreamLimit +FNDA:89,_changeStreamCount +FNDA:45,_allocateId +FNDA:45,_allocatePriority +FNDA:75,_insert +FNDA:10,_reprioritize +FNDA:22,_createIncomingStream +FNDA:18,createStream +FNDA:45,_initializeMultiplexing +FNDA:231,_send +FNDA:98,_receive +FNDA:45,_initializeSettingsManagement +FNDA:36,_onFirstFrameReceived +FNDA:36,_receiveSettings +FNDA:45,set +FNDA:45,_initializeLifecycleManagement +FNDA:2,_generatePingId +FNDA:2,ping +FNDA:5,_receivePing +FNDA:3,close +FNDA:2,_receiveGoaway +FNDA:45,_initializeFlowControl +FNDA:45,(anonymous_26) +FNDA:40,noop +FNDA:20,noop +FNDA:41,_setInitialStreamWindowSize +FNDA:47,(anonymous_30) +FNDA:24,_setLocalFlowControl +FNDA:20,_setRemoteFlowControl +FNDA:20,(anonymous_33) +DA:1,1 +DA:10,1 +DA:12,1 +DA:39,1 +DA:41,45 +DA:44,45 +DA:47,45 +DA:50,45 +DA:53,45 +DA:56,45 +DA:59,45 +DA:61,1 +DA:97,1 +DA:100,1 +DA:104,45 +DA:105,45 +DA:108,45 +DA:109,45 +DA:112,45 +DA:116,45 +DA:117,45 +DA:118,45 +DA:123,1 +DA:124,42 +DA:126,42 +DA:127,42 +DA:129,0 +DA:130,0 +DA:135,1 +DA:136,18 +DA:137,18 +DA:138,18 +DA:139,18 +DA:140,0 +DA:144,1 +DA:145,89 +DA:146,43 +DA:148,43 +DA:149,43 +DA:150,43 +DA:151,0 +DA:164,1 +DA:166,45 +DA:167,23 +DA:168,23 +DA:172,22 +DA:173,22 +DA:178,0 +DA:180,0 +DA:181,0 +DA:184,45 +DA:187,45 +DA:188,45 +DA:189,45 +DA:190,45 +DA:193,45 +DA:195,45 +DA:199,1 +DA:200,45 +DA:201,45 +DA:202,45 +DA:203,45 +DA:204,45 +DA:207,1 +DA:208,75 +DA:209,27 +DA:211,48 +DA:215,1 +DA:216,10 +DA:217,10 +DA:218,10 +DA:219,10 +DA:220,10 +DA:221,6 +DA:224,10 +DA:229,1 +DA:230,22 +DA:232,22 +DA:233,22 +DA:234,22 +DA:235,22 +DA:237,22 +DA:241,1 +DA:242,18 +DA:245,18 +DA:246,18 +DA:248,18 +DA:254,1 +DA:255,45 +DA:256,45 +DA:257,45 +DA:262,1 +DA:264,231 +DA:265,4 +DA:269,227 +DA:270,97 +DA:272,130 +DA:273,101 +DA:274,101 +DA:276,130 +DA:279,97 +DA:282,97 +DA:283,97 +DA:284,64 +DA:285,64 +DA:298,64 +DA:299,113 +DA:300,146 +DA:301,146 +DA:303,146 +DA:304,89 +DA:305,57 +DA:306,0 +DA:307,0 +DA:310,57 +DA:312,57 +DA:313,27 +DA:316,57 +DA:317,5 +DA:318,5 +DA:321,57 +DA:322,57 +DA:323,57 +DA:325,57 +DA:326,57 +DA:327,0 +DA:331,113 +DA:332,113 +DA:337,97 +DA:338,69 +DA:341,97 +DA:346,1 +DA:347,98 +DA:350,98 +DA:351,36 +DA:352,36 +DA:356,98 +DA:359,98 +DA:360,17 +DA:364,98 +DA:365,5 +DA:368,98 +DA:371,98 +DA:373,98 +DA:379,1 +DA:384,1 +DA:386,45 +DA:387,45 +DA:390,45 +DA:394,1 +DA:395,36 +DA:396,36 +DA:398,0 +DA:399,0 +DA:404,1 +DA:405,36 +DA:406,54 +DA:411,1 +DA:412,45 +DA:418,45 +DA:419,70 +DA:433,1 +DA:434,45 +DA:435,45 +DA:436,45 +DA:437,45 +DA:441,1 +DA:442,2 +DA:443,2 +DA:444,2 +DA:445,32 +DA:448,2 +DA:452,1 +DA:453,2 +DA:454,2 +DA:455,2 +DA:457,2 +DA:458,2 +DA:469,1 +DA:470,5 +DA:471,3 +DA:472,3 +DA:473,2 +DA:474,2 +DA:475,2 +DA:476,2 +DA:478,2 +DA:480,1 +DA:484,2 +DA:485,2 +DA:497,1 +DA:498,3 +DA:499,0 +DA:500,0 +DA:503,3 +DA:504,3 +DA:511,3 +DA:512,3 +DA:515,1 +DA:516,2 +DA:517,2 +DA:518,2 +DA:519,2 +DA:520,0 +DA:527,1 +DA:529,45 +DA:530,45 +DA:531,45 +DA:532,45 +DA:533,25 +DA:536,45 +DA:537,45 +DA:538,45 +DA:539,45 +DA:540,45 +DA:544,1 +DA:550,1 +DA:551,41 +DA:552,1 +DA:553,1 +DA:555,40 +DA:556,40 +DA:557,40 +DA:558,47 +DA:565,1 +DA:566,24 +DA:567,22 +DA:568,22 +DA:569,2 +DA:570,1 +DA:571,1 +DA:575,1 +DA:576,20 +DA:577,20 +DA:578,20 +DA:579,20 +DA:581,0 +DA:582,0 +DA:583,0 +LF:239 +LH:221 +BRDA:124,1,0,42 +BRDA:124,1,1,0 +BRDA:124,2,0,42 +BRDA:124,2,1,6 +BRDA:124,2,2,2 +BRDA:124,2,3,0 +BRDA:136,3,0,18 +BRDA:136,3,1,0 +BRDA:139,4,0,0 +BRDA:139,4,1,18 +BRDA:145,5,0,43 +BRDA:145,5,1,46 +BRDA:148,6,0,43 +BRDA:148,6,1,0 +BRDA:150,7,0,0 +BRDA:150,7,1,43 +BRDA:166,8,0,23 +BRDA:166,8,1,22 +BRDA:172,9,0,22 +BRDA:172,9,1,0 +BRDA:172,10,0,22 +BRDA:172,10,1,22 +BRDA:208,11,0,27 +BRDA:208,11,1,48 +BRDA:220,12,0,6 +BRDA:220,12,1,4 +BRDA:264,13,0,4 +BRDA:264,13,1,227 +BRDA:269,14,0,97 +BRDA:269,14,1,130 +BRDA:272,15,0,101 +BRDA:272,15,1,29 +BRDA:301,16,0,146 +BRDA:301,16,1,0 +BRDA:303,17,0,89 +BRDA:303,17,1,57 +BRDA:305,18,0,0 +BRDA:305,18,1,57 +BRDA:312,19,0,27 +BRDA:312,19,1,30 +BRDA:313,20,0,27 +BRDA:313,20,1,18 +BRDA:316,21,0,5 +BRDA:316,21,1,52 +BRDA:326,22,0,0 +BRDA:326,22,1,57 +BRDA:337,23,0,69 +BRDA:337,23,1,28 +BRDA:350,24,0,36 +BRDA:350,24,1,62 +BRDA:359,25,0,17 +BRDA:359,25,1,81 +BRDA:364,26,0,5 +BRDA:364,26,1,93 +BRDA:387,27,0,45 +BRDA:387,27,1,20 +BRDA:395,28,0,36 +BRDA:395,28,1,0 +BRDA:395,29,0,36 +BRDA:395,29,1,36 +BRDA:470,30,0,3 +BRDA:470,30,1,2 +BRDA:472,31,0,2 +BRDA:472,31,1,1 +BRDA:475,32,0,2 +BRDA:475,32,1,0 +BRDA:498,33,0,0 +BRDA:498,33,1,3 +BRDA:509,34,0,3 +BRDA:509,34,1,2 +BRDA:519,35,0,0 +BRDA:519,35,1,2 +BRDA:532,36,0,25 +BRDA:532,36,1,20 +BRDA:551,37,0,1 +BRDA:551,37,1,40 +BRDA:551,38,0,41 +BRDA:551,38,1,2 +BRDA:566,39,0,22 +BRDA:566,39,1,2 +BRDA:569,40,0,1 +BRDA:569,40,1,1 +BRDA:576,41,0,20 +BRDA:576,41,1,0 +BRDA:581,42,0,0 +BRDA:581,42,1,0 +BRF:86 +BRH:69 +end_of_record +TN: +SF:/data/upstream/node-http2/lib/flow.js +FN:63,Flow +FN:79,_receive +FN:87,_write +FN:93,(anonymous_4) +FN:114,_restoreWindow +FN:128,disableRemoteFlowControl +FN:152,_send +FN:159,_read +FN:193,read +FN:240,_parentPush +FN:257,_push +FN:283,push +FN:304,getLastQueuedFrame +FN:322,_increaseWindow +FN:346,_updateWindow +FN:354,setInitialWindow +FN:360,disableLocalFlowControl +FNF:17 +FNH:17 +FNDA:164,Flow +FNDA:1,_receive +FNDA:281,_write +FNDA:111,(anonymous_4) +FNDA:13,_restoreWindow +FNDA:45,disableRemoteFlowControl +FNDA:1,_send +FNDA:234,_read +FNDA:627,read +FNDA:211,_parentPush +FNDA:212,_push +FNDA:204,push +FNDA:36,getLastQueuedFrame +FNDA:88,_increaseWindow +FNDA:6,_updateWindow +FNDA:52,setInitialWindow +FNDA:1,disableLocalFlowControl +DA:1,1 +DA:10,1 +DA:12,1 +DA:60,1 +DA:63,1 +DA:64,164 +DA:66,164 +DA:67,164 +DA:68,164 +DA:69,164 +DA:70,164 +DA:71,164 +DA:73,1 +DA:79,1 +DA:80,1 +DA:87,1 +DA:88,281 +DA:89,63 +DA:92,281 +DA:93,111 +DA:94,111 +DA:95,111 +DA:96,13 +DA:98,111 +DA:103,170 +DA:106,281 +DA:108,6 +DA:114,1 +DA:115,13 +DA:116,13 +DA:117,7 +DA:123,7 +DA:128,1 +DA:129,45 +DA:130,45 +DA:152,1 +DA:153,1 +DA:159,1 +DA:161,234 +DA:162,217 +DA:167,17 +DA:168,8 +DA:169,8 +DA:170,9 +DA:171,9 +DA:172,7 +DA:175,8 +DA:177,8 +DA:184,9 +DA:188,1 +DA:193,1 +DA:194,627 +DA:195,130 +DA:196,497 +DA:197,0 +DA:198,497 +DA:199,497 +DA:204,497 +DA:205,497 +DA:207,497 +DA:208,405 +DA:209,193 +DA:211,405 +DA:214,92 +DA:215,0 +DA:216,0 +DA:218,0 +DA:222,92 +DA:224,92 +DA:230,92 +DA:232,92 +DA:233,0 +DA:235,92 +DA:240,1 +DA:241,211 +DA:243,211 +DA:244,29 +DA:246,29 +DA:247,29 +DA:250,211 +DA:257,1 +DA:258,212 +DA:260,212 +DA:261,204 +DA:264,8 +DA:265,1 +DA:269,7 +DA:271,7 +DA:272,7 +DA:278,7 +DA:283,1 +DA:284,204 +DA:285,6 +DA:287,198 +DA:290,204 +DA:291,204 +DA:292,203 +DA:295,204 +DA:296,7 +DA:299,204 +DA:304,1 +DA:305,36 +DA:306,36 +DA:320,1 +DA:322,1 +DA:323,88 +DA:324,1 +DA:325,1 +DA:327,87 +DA:328,87 +DA:329,87 +DA:330,1 +DA:331,1 +DA:333,86 +DA:346,1 +DA:347,6 +DA:354,1 +DA:355,52 +DA:356,52 +DA:360,1 +DA:361,1 +LF:121 +LH:116 +BRDA:88,1,0,63 +BRDA:88,1,1,218 +BRDA:88,2,0,281 +BRDA:88,2,1,218 +BRDA:92,3,0,111 +BRDA:92,3,1,170 +BRDA:92,4,0,281 +BRDA:92,4,1,143 +BRDA:92,4,2,140 +BRDA:95,5,0,13 +BRDA:95,5,1,98 +BRDA:106,6,0,6 +BRDA:106,6,1,275 +BRDA:106,7,0,281 +BRDA:106,7,1,6 +BRDA:106,7,2,6 +BRDA:116,8,0,7 +BRDA:116,8,1,6 +BRDA:116,9,0,13 +BRDA:116,9,1,7 +BRDA:116,9,2,7 +BRDA:161,10,0,217 +BRDA:161,10,1,17 +BRDA:167,11,0,8 +BRDA:167,11,1,9 +BRDA:174,12,0,9 +BRDA:174,12,1,7 +BRDA:171,13,0,7 +BRDA:171,13,1,2 +BRDA:177,14,0,8 +BRDA:177,14,1,8 +BRDA:177,14,2,2 +BRDA:177,14,3,2 +BRDA:194,15,0,130 +BRDA:194,15,1,497 +BRDA:196,16,0,0 +BRDA:196,16,1,497 +BRDA:198,17,0,497 +BRDA:198,17,1,0 +BRDA:198,18,0,497 +BRDA:198,18,1,146 +BRDA:205,19,0,497 +BRDA:205,19,1,212 +BRDA:207,20,0,405 +BRDA:207,20,1,92 +BRDA:207,21,0,497 +BRDA:207,21,1,288 +BRDA:207,21,2,144 +BRDA:208,22,0,193 +BRDA:208,22,1,212 +BRDA:214,23,0,0 +BRDA:214,23,1,92 +BRDA:215,24,0,0 +BRDA:215,24,1,0 +BRDA:232,25,0,0 +BRDA:232,25,1,92 +BRDA:243,26,0,29 +BRDA:243,26,1,182 +BRDA:243,27,0,211 +BRDA:243,27,1,205 +BRDA:243,27,2,52 +BRDA:258,28,0,212 +BRDA:258,28,1,206 +BRDA:258,28,2,53 +BRDA:260,29,0,204 +BRDA:260,29,1,8 +BRDA:260,30,0,212 +BRDA:260,30,1,53 +BRDA:264,31,0,1 +BRDA:264,31,1,7 +BRDA:284,32,0,6 +BRDA:284,32,1,198 +BRDA:291,33,0,203 +BRDA:291,33,1,1 +BRDA:295,34,0,7 +BRDA:295,34,1,197 +BRDA:306,35,0,36 +BRDA:306,35,1,36 +BRDA:323,36,0,1 +BRDA:323,36,1,87 +BRDA:323,37,0,88 +BRDA:323,37,1,2 +BRDA:329,38,0,1 +BRDA:329,38,1,86 +BRDA:329,39,0,87 +BRDA:329,39,1,38 +BRDA:347,40,0,0 +BRDA:347,40,1,6 +BRF:88 +BRH:81 +end_of_record +TN: +SF:/data/upstream/node-http2/lib/stream.js +FN:49,Stream +FN:75,_initializeManagement +FN:81,promise +FN:94,_onPromise +FN:98,headers +FN:107,_onHeaders +FN:114,priority +FN:138,_onPriority +FN:144,reset +FN:191,_initializeDataFlow +FN:206,_pushUpstream +FN:213,_writeUpstream +FN:242,_receive +FN:266,_read +FN:275,_write +FN:295,_send +FN:308,_finishing +FN:355,_initializeState +FN:364,transition +FN:373,activeState +FN:380,transition +FN:609,(anonymous_22) +FNF:22 +FNH:20 +FNDA:105,Stream +FNDA:105,_initializeManagement +FNDA:6,promise +FNDA:6,_onPromise +FNDA:44,headers +FNDA:43,_onHeaders +FNDA:0,priority +FNDA:0,_onPriority +FNDA:1,reset +FNDA:105,_initializeDataFlow +FNDA:71,_pushUpstream +FNDA:70,_writeUpstream +FNDA:70,_receive +FNDA:38,_read +FNDA:19,_write +FNDA:91,_send +FNDA:36,_finishing +FNDA:105,_initializeState +FNDA:145,transition +FNDA:206,activeState +FNDA:240,transition +FNDA:6,(anonymous_22) +DA:1,1 +DA:12,1 +DA:14,1 +DA:49,1 +DA:50,105 +DA:53,105 +DA:56,105 +DA:59,105 +DA:62,105 +DA:65,1 +DA:71,1 +DA:72,1 +DA:75,1 +DA:76,105 +DA:77,105 +DA:78,105 +DA:81,1 +DA:82,6 +DA:83,6 +DA:84,6 +DA:91,6 +DA:94,1 +DA:95,6 +DA:98,1 +DA:99,44 +DA:107,1 +DA:108,43 +DA:109,0 +DA:111,43 +DA:114,1 +DA:115,0 +DA:116,0 +DA:117,0 +DA:119,0 +DA:120,0 +DA:121,0 +DA:123,0 +DA:132,0 +DA:133,0 +DA:134,0 +DA:138,1 +DA:139,0 +DA:144,1 +DA:145,1 +DA:146,1 +DA:147,1 +DA:189,1 +DA:191,1 +DA:192,105 +DA:194,105 +DA:196,105 +DA:197,105 +DA:198,105 +DA:199,105 +DA:200,105 +DA:201,105 +DA:203,105 +DA:206,1 +DA:207,71 +DA:208,71 +DA:213,1 +DA:214,70 +DA:216,70 +DA:219,70 +DA:222,70 +DA:223,43 +DA:224,27 +DA:225,6 +DA:226,21 +DA:227,0 +DA:231,21 +DA:234,0 +DA:235,0 +DA:238,70 +DA:242,1 +DA:245,70 +DA:246,21 +DA:247,21 +DA:248,0 +DA:253,70 +DA:254,35 +DA:255,35 +DA:259,70 +DA:260,70 +DA:266,1 +DA:267,38 +DA:268,0 +DA:269,0 +DA:270,0 +DA:275,1 +DA:277,19 +DA:285,19 +DA:286,0 +DA:288,19 +DA:295,1 +DA:296,91 +DA:297,19 +DA:298,19 +DA:299,19 +DA:307,1 +DA:308,1 +DA:309,36 +DA:315,36 +DA:316,36 +DA:317,35 +DA:318,35 +DA:319,35 +DA:321,1 +DA:355,1 +DA:356,105 +DA:357,105 +DA:358,105 +DA:359,105 +DA:364,1 +DA:365,145 +DA:366,145 +DA:367,145 +DA:368,145 +DA:373,1 +DA:374,206 +DA:380,1 +DA:381,240 +DA:382,240 +DA:384,240 +DA:385,240 +DA:386,240 +DA:387,88 +DA:388,95 +DA:389,8 +DA:390,15 +DA:391,24 +DA:392,10 +DA:395,240 +DA:397,240 +DA:404,52 +DA:405,42 +DA:406,42 +DA:407,11 +DA:409,42 +DA:410,10 +DA:411,1 +DA:413,9 +DA:415,52 +DA:427,14 +DA:428,4 +DA:429,10 +DA:430,2 +DA:431,8 +DA:434,8 +DA:436,14 +DA:446,14 +DA:447,2 +DA:448,12 +DA:449,4 +DA:450,8 +DA:453,8 +DA:455,14 +DA:467,37 +DA:468,21 +DA:469,16 +DA:470,2 +DA:474,37 +DA:483,42 +DA:484,21 +DA:485,21 +DA:488,3 +DA:490,42 +DA:503,58 +DA:504,22 +DA:505,36 +DA:508,3 +DA:510,58 +DA:533,23 +DA:538,14 +DA:540,23 +DA:546,240 +DA:547,50 +DA:548,50 +DA:557,240 +DA:561,13 +DA:562,13 +DA:563,13 +DA:567,240 +DA:568,103 +DA:569,103 +DA:570,59 +DA:572,44 +DA:574,137 +DA:575,72 +DA:579,240 +DA:580,45 +DA:589,45 +DA:590,20 +DA:591,20 +DA:597,25 +DA:598,25 +DA:606,1 +DA:608,1 +DA:609,1 +DA:610,6 +DA:611,2 +DA:612,2 +DA:614,6 +LF:203 +LH:183 +BRDA:108,1,0,0 +BRDA:108,1,1,43 +BRDA:115,2,0,0 +BRDA:115,2,1,0 +BRDA:115,3,0,0 +BRDA:115,3,1,0 +BRDA:115,3,2,0 +BRDA:116,4,0,0 +BRDA:116,4,1,0 +BRDA:120,5,0,0 +BRDA:120,5,1,0 +BRDA:120,6,0,0 +BRDA:120,6,1,0 +BRDA:120,6,2,0 +BRDA:145,7,0,1 +BRDA:145,7,1,0 +BRDA:222,8,0,43 +BRDA:222,8,1,27 +BRDA:224,9,0,6 +BRDA:224,9,1,21 +BRDA:226,10,0,0 +BRDA:226,10,1,21 +BRDA:231,11,0,0 +BRDA:231,11,1,21 +BRDA:231,12,0,21 +BRDA:231,12,1,0 +BRDA:231,12,2,0 +BRDA:245,13,0,21 +BRDA:245,13,1,49 +BRDA:245,14,0,70 +BRDA:245,14,1,70 +BRDA:247,15,0,0 +BRDA:247,15,1,21 +BRDA:253,16,0,35 +BRDA:253,16,1,35 +BRDA:253,17,0,70 +BRDA:253,17,1,70 +BRDA:253,17,2,35 +BRDA:259,18,0,70 +BRDA:259,18,1,0 +BRDA:267,19,0,0 +BRDA:267,19,1,38 +BRDA:285,20,0,0 +BRDA:285,20,1,19 +BRDA:296,21,0,19 +BRDA:296,21,1,72 +BRDA:316,22,0,35 +BRDA:316,22,1,1 +BRDA:316,23,0,36 +BRDA:316,23,1,35 +BRDA:316,23,2,17 +BRDA:374,24,0,206 +BRDA:374,24,1,139 +BRDA:374,24,2,121 +BRDA:386,25,0,88 +BRDA:386,25,1,95 +BRDA:386,25,2,8 +BRDA:386,25,3,15 +BRDA:386,25,4,24 +BRDA:386,25,5,10 +BRDA:397,26,0,52 +BRDA:397,26,1,14 +BRDA:397,26,2,14 +BRDA:397,26,3,37 +BRDA:397,26,4,42 +BRDA:397,26,5,58 +BRDA:397,26,6,23 +BRDA:404,27,0,42 +BRDA:404,27,1,10 +BRDA:406,28,0,11 +BRDA:406,28,1,31 +BRDA:407,29,0,0 +BRDA:407,29,1,11 +BRDA:410,30,0,1 +BRDA:410,30,1,9 +BRDA:410,31,0,10 +BRDA:410,31,1,5 +BRDA:427,32,0,4 +BRDA:427,32,1,10 +BRDA:427,33,0,14 +BRDA:427,33,1,9 +BRDA:429,34,0,2 +BRDA:429,34,1,8 +BRDA:431,35,0,0 +BRDA:431,35,1,8 +BRDA:431,36,0,8 +BRDA:431,36,1,4 +BRDA:446,37,0,2 +BRDA:446,37,1,12 +BRDA:448,38,0,4 +BRDA:448,38,1,8 +BRDA:448,39,0,12 +BRDA:448,39,1,8 +BRDA:450,40,0,0 +BRDA:450,40,1,8 +BRDA:450,41,0,8 +BRDA:450,41,1,4 +BRDA:467,42,0,21 +BRDA:467,42,1,16 +BRDA:468,43,0,16 +BRDA:468,43,1,5 +BRDA:469,44,0,2 +BRDA:469,44,1,14 +BRDA:483,45,0,21 +BRDA:483,45,1,21 +BRDA:483,46,0,42 +BRDA:483,46,1,40 +BRDA:483,46,2,37 +BRDA:485,47,0,18 +BRDA:485,47,1,3 +BRDA:485,48,0,21 +BRDA:485,48,1,3 +BRDA:485,48,2,3 +BRDA:485,48,3,3 +BRDA:503,49,0,22 +BRDA:503,49,1,36 +BRDA:503,50,0,58 +BRDA:503,50,1,56 +BRDA:503,50,2,53 +BRDA:505,51,0,33 +BRDA:505,51,1,3 +BRDA:505,52,0,36 +BRDA:505,52,1,3 +BRDA:505,52,2,3 +BRDA:505,52,3,3 +BRDA:533,53,0,9 +BRDA:533,53,1,14 +BRDA:533,54,0,23 +BRDA:533,54,1,5 +BRDA:533,54,2,23 +BRDA:533,54,3,18 +BRDA:533,54,4,12 +BRDA:533,54,5,6 +BRDA:533,54,6,5 +BRDA:533,54,7,4 +BRDA:546,55,0,50 +BRDA:546,55,1,190 +BRDA:546,56,0,240 +BRDA:546,56,1,73 +BRDA:557,57,0,13 +BRDA:557,57,1,227 +BRDA:557,58,0,240 +BRDA:557,58,1,24 +BRDA:562,59,0,6 +BRDA:562,59,1,7 +BRDA:567,60,0,103 +BRDA:567,60,1,137 +BRDA:569,61,0,59 +BRDA:569,61,1,44 +BRDA:574,62,0,72 +BRDA:574,62,1,65 +BRDA:579,63,0,45 +BRDA:579,63,1,195 +BRDA:589,64,0,20 +BRDA:589,64,1,25 +BRDA:610,65,0,2 +BRDA:610,65,1,4 +BRF:157 +BRH:132 +end_of_record +TN: +SF:/data/upstream/node-http2/lib/endpoint.js +FN:50,Endpoint +FN:84,_writePrelude +FN:90,_readPrelude +FN:95,_temporalWrite +FN:153,createTransformStream +FN:156,(anonymous_6) +FN:162,pipeAndFilter +FN:172,_initializeDataFlow +FN:197,_read +FN:209,_write +FN:216,_initializeManagement +FN:220,createStream +FN:227,_initializeErrorHandling +FN:237,_error +FN:243,close +FN:253,(anonymous_16) +FNF:16 +FNH:14 +FNDA:24,Endpoint +FNDA:12,_writePrelude +FNDA:12,_readPrelude +FNDA:11,_temporalWrite +FNDA:0,createTransformStream +FNDA:0,(anonymous_6) +FNDA:96,pipeAndFilter +FNDA:24,_initializeDataFlow +FNDA:155,_read +FNDA:50,_write +FNDA:24,_initializeManagement +FNDA:11,createStream +FNDA:24,_initializeErrorHandling +FNDA:1,_error +FNDA:2,close +FNDA:6,(anonymous_16) +DA:1,1 +DA:3,1 +DA:4,1 +DA:5,1 +DA:6,1 +DA:7,1 +DA:8,1 +DA:9,1 +DA:11,1 +DA:50,1 +DA:51,24 +DA:54,24 +DA:58,24 +DA:59,24 +DA:60,12 +DA:62,12 +DA:68,24 +DA:71,24 +DA:74,24 +DA:76,1 +DA:81,1 +DA:84,1 +DA:85,12 +DA:86,12 +DA:90,1 +DA:92,12 +DA:95,12 +DA:98,11 +DA:99,11 +DA:100,241 +DA:101,1 +DA:103,1 +DA:104,1 +DA:106,240 +DA:111,10 +DA:112,10 +DA:113,10 +DA:114,10 +DA:115,10 +DA:153,1 +DA:154,0 +DA:155,0 +DA:156,0 +DA:157,0 +DA:159,0 +DA:162,1 +DA:163,96 +DA:164,0 +DA:166,96 +DA:170,1 +DA:172,1 +DA:173,24 +DA:174,24 +DA:175,12 +DA:176,12 +DA:177,12 +DA:179,12 +DA:180,12 +DA:181,12 +DA:184,24 +DA:185,24 +DA:186,24 +DA:187,24 +DA:188,24 +DA:190,24 +DA:191,24 +DA:192,24 +DA:193,24 +DA:196,1 +DA:197,1 +DA:198,155 +DA:199,155 +DA:200,155 +DA:201,130 +DA:203,155 +DA:204,67 +DA:206,155 +DA:209,1 +DA:210,50 +DA:216,1 +DA:217,24 +DA:220,1 +DA:221,11 +DA:227,1 +DA:228,24 +DA:229,24 +DA:230,24 +DA:231,24 +DA:232,24 +DA:234,24 +DA:237,1 +DA:238,1 +DA:239,1 +DA:240,1 +DA:243,1 +DA:244,2 +DA:250,1 +DA:252,1 +DA:253,1 +DA:254,6 +DA:255,2 +DA:256,2 +DA:258,6 +LF:103 +LH:97 +BRDA:58,1,0,24 +BRDA:58,1,1,12 +BRDA:59,2,0,12 +BRDA:59,2,1,12 +BRDA:68,3,0,24 +BRDA:68,3,1,24 +BRDA:99,4,0,251 +BRDA:99,4,1,241 +BRDA:100,5,0,1 +BRDA:100,5,1,240 +BRDA:111,6,0,10 +BRDA:111,6,1,0 +BRDA:163,7,0,0 +BRDA:163,7,1,96 +BRDA:174,8,0,12 +BRDA:174,8,1,12 +BRDA:200,9,0,285 +BRDA:200,9,1,285 +BRDA:203,10,0,67 +BRDA:203,10,1,88 +BRDA:254,11,0,2 +BRDA:254,11,1,4 +BRF:22 +BRH:20 +end_of_record +TN: +SF:/data/upstream/node-http2/lib/framer.js +FN:25,Serializer +FN:35,_transform +FN:67,Deserializer +FN:80,(anonymous_4) +FN:91,_transform +FN:202,writeCommonHeader +FN:231,readCommonHeader +FN:278,writeData +FN:282,readData +FN:321,writeHeadersPriority +FN:331,readHeadersPriority +FN:361,writePriority +FN:367,readPriority +FN:393,writeRstStream +FN:401,readRstStream +FN:437,writeSettings +FN:439,(anonymous_17) +FN:457,readSettings +FN:522,writePushPromise +FN:533,readPushPromise +FN:557,writePing +FN:561,readPing +FN:596,writeGoaway +FN:610,readGoaway +FN:633,writeWindowUpdate +FN:643,readWindowUpdate +FN:669,writeContinuation +FN:673,readContinuation +FN:703,(anonymous_29) +FN:716,(anonymous_30) +FN:736,(anonymous_31) +FN:744,(anonymous_32) +FNF:32 +FNH:30 +FNDA:25,Serializer +FNDA:76,_transform +FNDA:25,Deserializer +FNDA:165,(anonymous_4) +FNDA:68,_transform +FNDA:87,writeCommonHeader +FNDA:81,readCommonHeader +FNDA:14,writeData +FNDA:14,readData +FNDA:29,writeHeadersPriority +FNDA:28,readHeadersPriority +FNDA:2,writePriority +FNDA:2,readPriority +FNDA:2,writeRstStream +FNDA:2,readRstStream +FNDA:26,writeSettings +FNDA:78,(anonymous_17) +FNDA:22,readSettings +FNDA:4,writePushPromise +FNDA:4,readPushPromise +FNDA:2,writePing +FNDA:2,readPing +FNDA:4,writeGoaway +FNDA:3,readGoaway +FNDA:2,writeWindowUpdate +FNDA:2,readWindowUpdate +FNDA:2,writeContinuation +FNDA:2,readContinuation +FNDA:6,(anonymous_29) +FNDA:8,(anonymous_30) +FNDA:0,(anonymous_31) +FNDA:0,(anonymous_32) +DA:5,1 +DA:7,1 +DA:9,1 +DA:10,1 +DA:12,1 +DA:25,1 +DA:26,25 +DA:27,25 +DA:28,25 +DA:30,1 +DA:35,1 +DA:36,76 +DA:38,76 +DA:40,76 +DA:41,76 +DA:42,76 +DA:44,76 +DA:46,76 +DA:47,156 +DA:48,0 +DA:50,156 +DA:53,76 +DA:67,1 +DA:68,25 +DA:69,25 +DA:70,25 +DA:71,25 +DA:73,1 +DA:80,1 +DA:81,165 +DA:82,165 +DA:83,165 +DA:84,165 +DA:85,95 +DA:91,1 +DA:92,68 +DA:94,68 +DA:95,0 +DA:98,68 +DA:101,149 +DA:102,149 +DA:103,149 +DA:104,149 +DA:111,149 +DA:112,70 +DA:113,70 +DA:114,70 +DA:116,0 +DA:117,0 +DA:126,149 +DA:127,70 +DA:128,70 +DA:129,70 +DA:130,0 +DA:131,0 +DA:133,70 +DA:134,70 +DA:137,0 +DA:139,70 +DA:143,68 +DA:191,1 +DA:192,1 +DA:194,1 +DA:196,1 +DA:198,1 +DA:200,1 +DA:202,1 +DA:203,87 +DA:205,87 +DA:206,87 +DA:207,91 +DA:209,87 +DA:210,87 +DA:212,87 +DA:213,87 +DA:215,87 +DA:216,87 +DA:217,93 +DA:218,93 +DA:219,93 +DA:220,54 +DA:223,87 +DA:225,87 +DA:226,87 +DA:228,87 +DA:231,1 +DA:232,81 +DA:234,81 +DA:236,81 +DA:237,81 +DA:238,81 +DA:239,81 +DA:240,152 +DA:243,81 +DA:245,81 +DA:272,1 +DA:274,1 +DA:276,1 +DA:278,1 +DA:279,14 +DA:282,1 +DA:283,14 +DA:305,1 +DA:307,1 +DA:309,1 +DA:321,1 +DA:322,29 +DA:323,2 +DA:324,2 +DA:325,2 +DA:326,2 +DA:328,29 +DA:331,1 +DA:332,28 +DA:333,2 +DA:334,2 +DA:336,26 +DA:347,1 +DA:349,1 +DA:351,1 +DA:361,1 +DA:362,2 +DA:363,2 +DA:364,2 +DA:367,1 +DA:368,2 +DA:378,1 +DA:380,1 +DA:382,1 +DA:393,1 +DA:394,2 +DA:395,2 +DA:396,2 +DA:397,2 +DA:398,2 +DA:401,1 +DA:402,2 +DA:413,1 +DA:415,1 +DA:417,1 +DA:437,1 +DA:438,26 +DA:439,26 +DA:440,78 +DA:441,34 +DA:442,34 +DA:443,34 +DA:446,26 +DA:448,26 +DA:449,26 +DA:450,34 +DA:451,34 +DA:454,26 +DA:457,1 +DA:458,22 +DA:460,22 +DA:461,0 +DA:463,22 +DA:464,28 +DA:465,28 +DA:466,28 +DA:467,28 +DA:468,28 +DA:476,1 +DA:480,1 +DA:484,1 +DA:490,1 +DA:504,1 +DA:506,1 +DA:508,1 +DA:522,1 +DA:523,4 +DA:525,4 +DA:526,4 +DA:527,4 +DA:529,4 +DA:530,4 +DA:533,1 +DA:534,4 +DA:535,4 +DA:549,1 +DA:551,1 +DA:553,1 +DA:557,1 +DA:558,2 +DA:561,1 +DA:562,2 +DA:563,0 +DA:565,2 +DA:575,1 +DA:577,1 +DA:579,1 +DA:596,1 +DA:597,4 +DA:599,4 +DA:600,4 +DA:601,4 +DA:603,4 +DA:604,4 +DA:605,4 +DA:607,4 +DA:610,1 +DA:611,3 +DA:612,3 +DA:622,1 +DA:624,1 +DA:626,1 +DA:633,1 +DA:634,2 +DA:636,2 +DA:637,2 +DA:638,2 +DA:640,2 +DA:643,1 +DA:644,2 +DA:663,1 +DA:665,1 +DA:667,1 +DA:669,1 +DA:670,2 +DA:673,1 +DA:674,2 +DA:680,1 +DA:698,1 +DA:702,1 +DA:703,1 +DA:704,6 +DA:705,0 +DA:708,6 +DA:709,4 +DA:712,2 +DA:713,2 +DA:715,2 +DA:716,2 +DA:717,8 +DA:720,2 +DA:721,1 +DA:722,0 +DA:724,1 +DA:727,1 +DA:728,1 +DA:732,2 +DA:733,0 +DA:736,2 +DA:737,0 +DA:740,2 +DA:744,1 +DA:745,0 +LF:248 +LH:234 +BRDA:27,1,0,25 +BRDA:27,1,1,1 +BRDA:47,2,0,0 +BRDA:47,2,1,156 +BRDA:69,3,0,25 +BRDA:69,3,1,1 +BRDA:84,4,0,95 +BRDA:84,4,1,70 +BRDA:94,5,0,0 +BRDA:94,5,1,68 +BRDA:111,6,0,70 +BRDA:111,6,1,79 +BRDA:111,7,0,149 +BRDA:111,7,1,134 +BRDA:113,8,0,70 +BRDA:113,8,1,0 +BRDA:126,9,0,70 +BRDA:126,9,1,79 +BRDA:126,10,0,149 +BRDA:126,10,1,70 +BRDA:127,11,0,70 +BRDA:127,11,1,0 +BRDA:129,12,0,0 +BRDA:129,12,1,70 +BRDA:219,13,0,54 +BRDA:219,13,1,39 +BRDA:225,14,0,87 +BRDA:225,14,1,87 +BRDA:226,15,0,87 +BRDA:226,15,1,26 +BRDA:322,16,0,2 +BRDA:322,16,1,27 +BRDA:324,17,0,2 +BRDA:324,17,1,2 +BRDA:332,18,0,2 +BRDA:332,18,1,26 +BRDA:396,19,0,2 +BRDA:396,19,1,2 +BRDA:440,20,0,34 +BRDA:440,20,1,44 +BRDA:443,21,0,22 +BRDA:443,21,1,12 +BRDA:460,22,0,0 +BRDA:460,22,1,22 +BRDA:466,23,0,28 +BRDA:466,23,1,0 +BRDA:468,24,0,20 +BRDA:468,24,1,8 +BRDA:526,25,0,4 +BRDA:526,25,1,4 +BRDA:562,26,0,0 +BRDA:562,26,1,2 +BRDA:600,27,0,4 +BRDA:600,27,1,4 +BRDA:604,28,0,4 +BRDA:604,28,1,4 +BRDA:637,29,0,2 +BRDA:637,29,1,2 +BRDA:704,30,0,0 +BRDA:704,30,1,6 +BRDA:708,31,0,4 +BRDA:708,31,1,2 +BRDA:720,32,0,1 +BRDA:720,32,1,1 +BRDA:721,33,0,0 +BRDA:721,33,1,1 +BRDA:727,34,0,1 +BRDA:727,34,1,0 +BRDA:732,35,0,0 +BRDA:732,35,1,2 +BRDA:736,36,0,2 +BRDA:736,36,1,2 +BRF:72 +BRH:60 +end_of_record +TN: +SF:/data/upstream/node-http2/lib/http.js +FN:162,noop +FN:171,(anonymous_2) +FN:177,(anonymous_3) +FN:184,IncomingMessage +FN:211,_onHeaders +FN:236,_onTrailers +FN:242,_checkSpecialHeader +FN:255,OutgoingMessage +FN:267,_write +FN:275,_finish +FN:290,setHeader +FN:302,removeHeader +FN:310,getHeader +FN:314,addTrailers +FN:334,Server +FN:351,(anonymous_16) +FN:379,_start +FN:390,_onStream +FN:402,_fallback +FN:418,listen +FN:424,close +FN:429,setTimeout +FN:436,getTimeout +FN:443,setTimeout +FN:454,on +FN:463,addContext +FN:469,createServer +FN:487,IncomingRequest +FN:496,_onHeaders +FN:527,OutgoingResponse +FN:540,writeHead +FN:564,_implicitHeaders +FN:570,write +FN:575,end +FN:580,_onRequestHeaders +FN:584,push +FN:610,on +FN:626,request +FN:629,get +FN:636,Agent +FN:658,request +FN:712,(anonymous_42) +FN:721,negotiated +FN:748,(anonymous_44) +FN:761,get +FN:767,unbundleSocket +FN:779,getMaxSockets +FN:782,setMaxSockets +FN:792,OutgoingRequest +FN:801,_start +FN:834,_fallback +FN:840,setPriority +FN:850,on +FN:859,setNoDelay +FN:867,setSocketKeepAlive +FN:875,setTimeout +FN:884,abort +FN:895,_onPromise +FN:910,IncomingResponse +FN:919,_onHeaders +FN:939,IncomingPromise +FN:958,cancel +FN:962,setPriority +FNF:63 +FNH:58 +FNDA:2,noop +FNDA:3,(anonymous_2) +FNDA:6,(anonymous_3) +FNDA:25,IncomingMessage +FNDA:24,_onHeaders +FNDA:2,_onTrailers +FNDA:60,_checkSpecialHeader +FNDA:27,OutgoingMessage +FNDA:13,_write +FNDA:31,_finish +FNDA:4,setHeader +FNDA:1,removeHeader +FNDA:3,getHeader +FNDA:2,addTrailers +FNDA:13,Server +FNDA:9,(anonymous_16) +FNDA:10,_start +FNDA:10,_onStream +FNDA:0,_fallback +FNDA:9,listen +FNDA:4,close +FNDA:1,setTimeout +FNDA:1,getTimeout +FNDA:1,setTimeout +FNDA:9,on +FNDA:0,addContext +FNDA:10,createServer +FNDA:12,IncomingRequest +FNDA:12,_onHeaders +FNDA:12,OutgoingResponse +FNDA:12,writeHead +FNDA:23,_implicitHeaders +FNDA:11,write +FNDA:12,end +FNDA:10,_onRequestHeaders +FNDA:2,push +FNDA:12,on +FNDA:4,request +FNDA:7,get +FNDA:4,Agent +FNDA:12,request +FNDA:9,(anonymous_42) +FNDA:9,negotiated +FNDA:9,(anonymous_44) +FNDA:7,get +FNDA:9,unbundleSocket +FNDA:1,getMaxSockets +FNDA:1,setMaxSockets +FNDA:15,OutgoingRequest +FNDA:11,_start +FNDA:4,_fallback +FNDA:0,setPriority +FNDA:40,on +FNDA:3,setNoDelay +FNDA:3,setSocketKeepAlive +FNDA:3,setTimeout +FNDA:3,abort +FNDA:2,_onPromise +FNDA:13,IncomingResponse +FNDA:12,_onHeaders +FNDA:2,IncomingPromise +FNDA:0,cancel +FNDA:0,setPriority +DA:128,1 +DA:129,1 +DA:130,1 +DA:131,1 +DA:132,1 +DA:133,1 +DA:134,1 +DA:135,1 +DA:136,1 +DA:137,1 +DA:139,1 +DA:140,1 +DA:141,1 +DA:142,1 +DA:144,1 +DA:156,1 +DA:162,1 +DA:163,1 +DA:171,3 +DA:175,1 +DA:176,1 +DA:177,1 +DA:178,6 +DA:184,1 +DA:186,25 +DA:187,25 +DA:188,25 +DA:190,25 +DA:194,25 +DA:195,25 +DA:196,25 +DA:199,25 +DA:200,25 +DA:203,25 +DA:205,1 +DA:211,1 +DA:216,24 +DA:217,168 +DA:218,168 +DA:219,0 +DA:220,0 +DA:221,0 +DA:226,24 +DA:227,73 +DA:228,13 +DA:233,24 +DA:236,1 +DA:237,2 +DA:240,1 +DA:242,1 +DA:243,60 +DA:244,0 +DA:245,0 +DA:248,60 +DA:255,1 +DA:257,27 +DA:259,27 +DA:260,27 +DA:261,27 +DA:263,27 +DA:265,1 +DA:267,1 +DA:268,13 +DA:269,12 +DA:271,1 +DA:275,1 +DA:276,31 +DA:277,23 +DA:278,2 +DA:279,0 +DA:281,2 +DA:284,23 +DA:286,8 +DA:290,1 +DA:291,4 +DA:292,0 +DA:294,4 +DA:295,4 +DA:296,0 +DA:298,4 +DA:302,1 +DA:303,1 +DA:304,0 +DA:306,1 +DA:310,1 +DA:311,3 +DA:314,1 +DA:315,2 +DA:318,1 +DA:320,1 +DA:325,1 +DA:326,1 +DA:327,1 +DA:328,1 +DA:329,1 +DA:334,1 +DA:335,13 +DA:337,13 +DA:338,13 +DA:340,13 +DA:341,13 +DA:344,13 +DA:345,10 +DA:346,10 +DA:347,10 +DA:348,10 +DA:349,10 +DA:350,10 +DA:351,10 +DA:352,9 +DA:353,9 +DA:355,0 +DA:358,10 +DA:362,3 +DA:363,1 +DA:364,1 +DA:365,1 +DA:370,2 +DA:371,2 +DA:374,11 +DA:376,1 +DA:379,1 +DA:380,10 +DA:382,10 +DA:387,10 +DA:389,10 +DA:390,10 +DA:391,10 +DA:392,10 +DA:394,10 +DA:397,10 +DA:399,10 +DA:402,1 +DA:403,0 +DA:408,0 +DA:409,0 +DA:412,0 +DA:418,1 +DA:419,9 +DA:421,9 +DA:424,1 +DA:425,4 +DA:426,4 +DA:429,1 +DA:430,1 +DA:431,1 +DA:435,1 +DA:437,1 +DA:438,1 +DA:440,0 +DA:444,1 +DA:445,1 +DA:454,1 +DA:455,9 +DA:456,0 +DA:458,9 +DA:463,1 +DA:464,0 +DA:465,0 +DA:469,1 +DA:470,10 +DA:471,1 +DA:472,1 +DA:475,10 +DA:477,9 +DA:478,9 +DA:481,9 +DA:487,1 +DA:488,12 +DA:490,1 +DA:496,1 +DA:507,12 +DA:508,12 +DA:509,12 +DA:510,12 +DA:513,12 +DA:516,12 +DA:519,12 +DA:521,12 +DA:527,1 +DA:528,12 +DA:530,12 +DA:532,12 +DA:533,12 +DA:534,12 +DA:536,12 +DA:538,1 +DA:540,1 +DA:541,12 +DA:542,1 +DA:544,11 +DA:547,12 +DA:548,1 +DA:550,12 +DA:552,12 +DA:553,11 +DA:556,12 +DA:558,12 +DA:560,12 +DA:561,12 +DA:564,1 +DA:565,23 +DA:566,11 +DA:570,1 +DA:571,11 +DA:572,11 +DA:575,1 +DA:576,12 +DA:577,12 +DA:580,1 +DA:581,10 +DA:584,1 +DA:585,2 +DA:586,1 +DA:589,2 +DA:590,0 +DA:593,2 +DA:600,2 +DA:603,2 +DA:605,2 +DA:610,1 +DA:611,12 +DA:612,0 +DA:614,12 +DA:621,1 +DA:622,1 +DA:623,1 +DA:624,1 +DA:625,1 +DA:626,1 +DA:627,4 +DA:629,1 +DA:630,7 +DA:636,1 +DA:637,4 +DA:639,4 +DA:641,4 +DA:642,4 +DA:643,4 +DA:649,4 +DA:653,4 +DA:654,4 +DA:656,1 +DA:658,1 +DA:659,12 +DA:660,8 +DA:663,12 +DA:664,12 +DA:665,12 +DA:666,12 +DA:667,12 +DA:669,12 +DA:670,1 +DA:671,1 +DA:674,11 +DA:676,11 +DA:677,7 +DA:680,11 +DA:687,11 +DA:688,1 +DA:689,1 +DA:693,10 +DA:694,1 +DA:695,1 +DA:700,1 +DA:701,1 +DA:706,9 +DA:707,9 +DA:708,9 +DA:709,9 +DA:710,9 +DA:712,9 +DA:713,9 +DA:714,0 +DA:716,9 +DA:720,9 +DA:721,1 +DA:722,9 +DA:723,9 +DA:724,9 +DA:725,9 +DA:726,9 +DA:727,9 +DA:728,9 +DA:730,9 +DA:731,1 +DA:732,1 +DA:734,0 +DA:737,8 +DA:738,8 +DA:740,8 +DA:741,8 +DA:743,0 +DA:748,9 +DA:749,9 +DA:750,9 +DA:751,9 +DA:753,0 +DA:758,11 +DA:761,1 +DA:762,7 +DA:763,7 +DA:764,7 +DA:767,1 +DA:768,9 +DA:769,9 +DA:770,9 +DA:771,9 +DA:772,9 +DA:773,9 +DA:774,9 +DA:775,9 +DA:778,1 +DA:780,1 +DA:783,1 +DA:787,1 +DA:792,1 +DA:793,15 +DA:795,15 +DA:797,15 +DA:799,1 +DA:801,1 +DA:802,11 +DA:804,11 +DA:806,11 +DA:807,1 +DA:809,11 +DA:810,11 +DA:812,11 +DA:813,0 +DA:816,11 +DA:817,11 +DA:818,11 +DA:819,11 +DA:821,11 +DA:823,11 +DA:824,11 +DA:826,11 +DA:828,11 +DA:829,11 +DA:831,11 +DA:834,1 +DA:835,4 +DA:836,4 +DA:837,4 +DA:840,1 +DA:841,0 +DA:842,0 +DA:844,0 +DA:850,1 +DA:851,40 +DA:852,0 +DA:854,40 +DA:859,1 +DA:860,3 +DA:861,1 +DA:862,2 +DA:863,1 +DA:867,1 +DA:868,3 +DA:869,1 +DA:870,2 +DA:871,1 +DA:875,1 +DA:876,3 +DA:877,1 +DA:878,2 +DA:879,1 +DA:884,1 +DA:885,3 +DA:886,1 +DA:887,2 +DA:888,1 +DA:890,1 +DA:895,1 +DA:896,2 +DA:898,2 +DA:900,2 +DA:901,2 +DA:903,0 +DA:910,1 +DA:911,13 +DA:913,1 +DA:919,1 +DA:926,12 +DA:929,12 +DA:932,12 +DA:933,12 +DA:939,1 +DA:940,2 +DA:941,2 +DA:942,2 +DA:943,2 +DA:945,2 +DA:947,2 +DA:949,2 +DA:951,2 +DA:952,2 +DA:954,2 +DA:956,1 +DA:958,1 +DA:959,0 +DA:962,1 +DA:963,0 +DA:966,1 +LF:405 +LH:373 +BRDA:218,1,0,0 +BRDA:218,1,1,168 +BRDA:227,2,0,13 +BRDA:227,2,1,60 +BRDA:243,3,0,0 +BRDA:243,3,1,60 +BRDA:243,4,0,60 +BRDA:243,4,1,60 +BRDA:268,5,0,12 +BRDA:268,5,1,1 +BRDA:276,6,0,23 +BRDA:276,6,1,8 +BRDA:277,7,0,2 +BRDA:277,7,1,21 +BRDA:278,8,0,0 +BRDA:278,8,1,2 +BRDA:291,9,0,0 +BRDA:291,9,1,4 +BRDA:295,10,0,0 +BRDA:295,10,1,4 +BRDA:303,11,0,0 +BRDA:303,11,1,1 +BRDA:335,12,0,13 +BRDA:335,12,1,2 +BRDA:337,13,0,13 +BRDA:337,13,1,2 +BRDA:344,14,0,10 +BRDA:344,14,1,3 +BRDA:344,15,0,13 +BRDA:344,15,1,10 +BRDA:344,15,2,3 +BRDA:352,16,0,9 +BRDA:352,16,1,0 +BRDA:352,17,0,9 +BRDA:352,17,1,9 +BRDA:362,18,0,1 +BRDA:362,18,1,2 +BRDA:419,19,0,0 +BRDA:419,19,1,9 +BRDA:430,20,0,1 +BRDA:430,20,1,0 +BRDA:437,21,0,1 +BRDA:437,21,1,0 +BRDA:444,22,0,1 +BRDA:444,22,1,0 +BRDA:455,23,0,0 +BRDA:455,23,1,9 +BRDA:455,24,0,9 +BRDA:455,24,1,9 +BRDA:456,25,0,0 +BRDA:456,25,1,0 +BRDA:464,26,0,0 +BRDA:464,26,1,0 +BRDA:470,27,0,1 +BRDA:470,27,1,9 +BRDA:477,28,0,9 +BRDA:477,28,1,0 +BRDA:541,29,0,1 +BRDA:541,29,1,11 +BRDA:552,30,0,11 +BRDA:552,30,1,1 +BRDA:552,31,0,12 +BRDA:552,31,1,11 +BRDA:565,32,0,11 +BRDA:565,32,1,12 +BRDA:585,33,0,1 +BRDA:585,33,1,1 +BRDA:589,34,0,0 +BRDA:589,34,1,2 +BRDA:594,35,0,2 +BRDA:594,35,1,2 +BRDA:595,36,0,2 +BRDA:595,36,1,1 +BRDA:595,36,2,1 +BRDA:596,37,0,2 +BRDA:596,37,1,2 +BRDA:596,37,2,2 +BRDA:611,38,0,0 +BRDA:611,38,1,12 +BRDA:611,39,0,12 +BRDA:611,39,1,0 +BRDA:612,40,0,0 +BRDA:612,40,1,0 +BRDA:627,41,0,4 +BRDA:627,41,1,4 +BRDA:630,42,0,7 +BRDA:630,42,1,7 +BRDA:639,43,0,4 +BRDA:639,43,1,1 +BRDA:642,44,0,4 +BRDA:642,44,1,1 +BRDA:659,45,0,8 +BRDA:659,45,1,4 +BRDA:663,46,0,12 +BRDA:663,46,1,12 +BRDA:664,47,0,12 +BRDA:664,47,1,3 +BRDA:665,48,0,12 +BRDA:665,48,1,4 +BRDA:665,48,2,1 +BRDA:666,49,0,12 +BRDA:666,49,1,1 +BRDA:667,50,0,12 +BRDA:667,50,1,1 +BRDA:669,51,0,1 +BRDA:669,51,1,11 +BRDA:676,52,0,7 +BRDA:676,52,1,4 +BRDA:687,53,0,1 +BRDA:687,53,1,10 +BRDA:693,54,0,1 +BRDA:693,54,1,9 +BRDA:713,55,0,0 +BRDA:713,55,1,9 +BRDA:723,56,0,9 +BRDA:723,56,1,0 +BRDA:730,57,0,1 +BRDA:730,57,1,8 +BRDA:731,58,0,1 +BRDA:731,58,1,0 +BRDA:737,59,0,8 +BRDA:737,59,1,0 +BRDA:750,60,0,9 +BRDA:750,60,1,0 +BRDA:812,61,0,0 +BRDA:812,61,1,11 +BRDA:822,62,0,11 +BRDA:822,62,1,10 +BRDA:841,63,0,0 +BRDA:841,63,1,0 +BRDA:851,64,0,0 +BRDA:851,64,1,40 +BRDA:851,65,0,40 +BRDA:851,65,1,0 +BRDA:852,66,0,0 +BRDA:852,66,1,0 +BRDA:860,67,0,1 +BRDA:860,67,1,2 +BRDA:862,68,0,1 +BRDA:862,68,1,1 +BRDA:868,69,0,1 +BRDA:868,69,1,2 +BRDA:870,70,0,1 +BRDA:870,70,1,1 +BRDA:876,71,0,1 +BRDA:876,71,1,2 +BRDA:878,72,0,1 +BRDA:878,72,1,1 +BRDA:885,73,0,1 +BRDA:885,73,1,2 +BRDA:887,74,0,1 +BRDA:887,74,1,1 +BRDA:900,75,0,2 +BRDA:900,75,1,0 +BRF:154 +BRH:119 +end_of_record From 7bf6dd529f67a9c017ac153edbdf30d6b86eaf58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Moln=C3=A1r?= Date: Mon, 14 Oct 2013 17:37:30 +0200 Subject: [PATCH 14/20] Updating code coverage report. --- coverage/coverage.json | 2 +- coverage/lcov-report/index.html | 28 +- coverage/lcov-report/lib/compressor.js.html | 2 +- coverage/lcov-report/lib/connection.js.html | 8 +- coverage/lcov-report/lib/endpoint.js.html | 2 +- coverage/lcov-report/lib/flow.js.html | 130 +- coverage/lcov-report/lib/framer.js.html | 22 +- coverage/lcov-report/lib/http.js.html | 107 +- coverage/lcov-report/lib/index.html | 28 +- coverage/lcov-report/lib/stream.js.html | 2 +- coverage/lcov.info | 1498 ++++++++++--------- 11 files changed, 950 insertions(+), 879 deletions(-) diff --git a/coverage/coverage.json b/coverage/coverage.json index 0d4550c9..95eea1fe 100644 --- a/coverage/coverage.json +++ b/coverage/coverage.json @@ -1 +1 @@ -{"/data/upstream/node-http2/lib/compressor.js":{"path":"/data/upstream/node-http2/lib/compressor.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":54,"11":54,"12":54,"13":54,"14":54,"15":54,"16":1,"17":1806,"18":1806,"19":1806,"20":1806,"21":1806,"22":1806,"23":1,"24":1,"25":1806,"26":1,"27":54,"28":54,"29":1620,"30":54,"31":1,"32":182,"33":182,"34":182,"35":0,"36":0,"37":0,"38":182,"39":182,"40":182,"41":0,"42":182,"43":182,"44":182,"45":1,"46":1,"47":1,"48":1,"49":49,"50":49,"51":49,"52":49,"53":1,"54":49,"55":49,"56":1,"57":151,"58":151,"59":151,"60":54,"61":54,"62":54,"63":32,"64":22,"65":22,"66":22,"67":22,"68":97,"69":78,"70":19,"71":97,"72":97,"73":92,"74":92,"75":92,"76":92,"77":97,"78":1,"79":49,"80":49,"81":49,"82":151,"83":49,"84":1559,"85":1559,"86":46,"87":1559,"88":49,"89":1,"90":1,"91":47,"92":47,"93":47,"94":47,"95":1,"96":147,"97":147,"98":143,"99":147,"100":1,"101":159,"102":159,"103":159,"104":159,"105":159,"106":3760,"107":3760,"108":152,"109":65,"110":65,"111":87,"112":87,"113":159,"114":65,"115":65,"116":19,"117":19,"118":19,"119":46,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":46,"127":4,"128":4,"129":42,"130":94,"131":94,"132":94,"133":94,"134":4,"135":90,"136":76,"137":14,"138":94,"139":90,"140":90,"141":90,"142":0,"143":0,"144":0,"145":0,"146":0,"147":94,"148":159,"149":1,"150":47,"151":1488,"152":1488,"153":26,"154":26,"155":1488,"156":1488,"157":47,"158":1,"159":351,"160":351,"161":149,"162":202,"163":202,"164":2,"165":202,"166":202,"167":202,"168":210,"169":210,"170":210,"171":8,"172":210,"173":210,"174":202,"175":1,"176":363,"177":363,"178":363,"179":161,"180":363,"181":207,"182":207,"183":217,"184":217,"185":217,"186":363,"187":1,"188":123,"189":123,"190":123,"191":1,"192":125,"193":125,"194":125,"195":125,"196":1,"197":1,"198":151,"199":151,"200":51,"201":100,"202":5,"203":95,"204":18,"205":77,"206":151,"207":51,"208":100,"209":81,"210":19,"211":19,"212":100,"213":77,"214":100,"215":151,"216":151,"217":1,"218":159,"219":159,"220":159,"221":56,"222":103,"223":28,"224":6,"225":22,"226":75,"227":159,"228":56,"229":56,"230":103,"231":103,"232":20,"233":103,"234":75,"235":28,"236":22,"237":6,"238":103,"239":159,"240":1,"241":1,"242":1,"243":26,"244":26,"245":26,"246":26,"247":26,"248":1,"249":47,"250":47,"251":143,"252":143,"253":8,"254":24,"255":135,"256":47,"257":47,"258":47,"259":447,"260":47,"261":1,"262":75,"263":37,"264":37,"265":37,"266":39,"267":39,"268":39,"269":39,"270":37,"271":37,"272":37,"273":2,"274":39,"275":32,"276":39,"277":39,"278":38,"279":75,"280":1,"281":1,"282":28,"283":28,"284":28,"285":28,"286":28,"287":28,"288":28,"289":1,"290":49,"291":49,"292":49,"293":49,"294":49,"295":165,"296":165,"297":165,"298":17,"299":8,"300":9,"301":148,"302":49,"303":1,"304":73,"305":3,"306":1,"307":1,"308":1,"309":2,"310":70,"311":37,"312":37,"313":37,"314":33,"315":72,"316":36,"317":38,"318":36,"319":36,"320":0,"321":0,"322":0,"323":36,"324":36,"325":72,"326":1,"327":132,"328":132,"329":534,"330":132,"331":132,"332":534,"333":132,"334":1,"335":37,"336":37,"337":37,"338":39,"339":39,"340":39,"341":37},"b":{"1":[54,54],"2":[182,0],"3":[182,0],"4":[0,182],"5":[54,97],"6":[32,22],"7":[78,19],"8":[92,5],"9":[46,1513],"10":[1559,144],"11":[143,4],"12":[152,3608],"13":[65,87],"14":[87,0],"15":[65,94],"16":[19,46],"17":[0,46],"18":[4,42],"19":[4,90],"20":[76,14],"21":[90,4],"22":[0,0],"23":[76,18],"24":[26,1462],"25":[1488,165,123],"26":[149,202],"27":[2,200],"28":[8,202],"29":[161,202],"30":[207,156],"31":[51,100],"32":[5,95],"33":[18,77],"34":[51,100],"35":[81,19],"36":[77,23],"37":[56,103],"38":[28,75],"39":[6,22],"40":[56,103],"41":[20,83],"42":[75,28],"43":[22,6],"44":[26,13],"45":[13,13],"46":[8,135],"47":[37,38],"48":[75,45],"49":[37,2],"50":[32,7],"51":[32,30],"52":[28,13],"53":[15,13],"54":[17,148],"55":[8,9],"56":[3,70],"57":[1,2],"58":[3,2],"59":[37,33],"60":[70,40],"61":[36,36],"62":[72,39,10]},"f":{"1":54,"2":1806,"3":1806,"4":54,"5":182,"6":49,"7":49,"8":151,"9":49,"10":47,"11":147,"12":159,"13":47,"14":351,"15":363,"16":123,"17":125,"18":151,"19":159,"20":26,"21":47,"22":75,"23":28,"24":49,"25":73,"26":38,"27":132,"28":37},"fnMap":{"1":{"name":"HeaderTable","line":37,"loc":{"start":{"line":37,"column":0},"end":{"line":37,"column":40}}},"2":{"name":"entryFromPair","line":72,"loc":{"start":{"line":72,"column":0},"end":{"line":72,"column":29}}},"3":{"name":"size","line":91,"loc":{"start":{"line":91,"column":0},"end":{"line":91,"column":21}}},"4":{"name":"tableSize","line":95,"loc":{"start":{"line":95,"column":0},"end":{"line":95,"column":26}}},"5":{"name":"(anonymous_5)","line":111,"loc":{"start":{"line":111,"column":28},"end":{"line":111,"column":51}}},"6":{"name":"HeaderSetDecompressor","line":218,"loc":{"start":{"line":218,"column":0},"end":{"line":218,"column":43}}},"7":{"name":"_transform","line":229,"loc":{"start":{"line":229,"column":45},"end":{"line":229,"column":92}}},"8":{"name":"_execute","line":255,"loc":{"start":{"line":255,"column":43},"end":{"line":255,"column":66}}},"9":{"name":"_flush","line":312,"loc":{"start":{"line":312,"column":41},"end":{"line":312,"column":67}}},"10":{"name":"HeaderSetCompressor","line":346,"loc":{"start":{"line":346,"column":0},"end":{"line":346,"column":41}}},"11":{"name":"send","line":354,"loc":{"start":{"line":354,"column":37},"end":{"line":354,"column":56}}},"12":{"name":"_transform","line":367,"loc":{"start":{"line":367,"column":43},"end":{"line":367,"column":89}}},"13":{"name":"_flush","line":473,"loc":{"start":{"line":473,"column":39},"end":{"line":473,"column":65}}},"14":{"name":"writeInteger","line":504,"loc":{"start":{"line":504,"column":30},"end":{"line":504,"column":58}}},"15":{"name":"readInteger","line":545,"loc":{"start":{"line":545,"column":32},"end":{"line":545,"column":64}}},"16":{"name":"writeString","line":574,"loc":{"start":{"line":574,"column":29},"end":{"line":574,"column":55}}},"17":{"name":"readString","line":580,"loc":{"start":{"line":580,"column":31},"end":{"line":580,"column":59}}},"18":{"name":"writeHeader","line":632,"loc":{"start":{"line":632,"column":29},"end":{"line":632,"column":58}}},"19":{"name":"readHeader","line":668,"loc":{"start":{"line":668,"column":31},"end":{"line":668,"column":59}}},"20":{"name":"Compressor","line":737,"loc":{"start":{"line":737,"column":0},"end":{"line":737,"column":31}}},"21":{"name":"compress","line":751,"loc":{"start":{"line":751,"column":32},"end":{"line":751,"column":59}}},"22":{"name":"_transform","line":773,"loc":{"start":{"line":773,"column":34},"end":{"line":773,"column":77}}},"23":{"name":"Decompressor","line":829,"loc":{"start":{"line":829,"column":0},"end":{"line":829,"column":33}}},"24":{"name":"decompress","line":846,"loc":{"start":{"line":846,"column":36},"end":{"line":846,"column":63}}},"25":{"name":"_transform","line":870,"loc":{"start":{"line":870,"column":36},"end":{"line":870,"column":79}}},"26":{"name":"(anonymous_26)","line":899,"loc":{"start":{"line":899,"column":41},"end":{"line":899,"column":57}}},"27":{"name":"concat","line":920,"loc":{"start":{"line":920,"column":0},"end":{"line":920,"column":25}}},"28":{"name":"cut","line":935,"loc":{"start":{"line":935,"column":0},"end":{"line":935,"column":27}}}},"statementMap":{"1":{"start":{"line":18,"column":0},"end":{"line":18,"column":34}},"2":{"start":{"line":19,"column":0},"end":{"line":19,"column":50}},"3":{"start":{"line":20,"column":0},"end":{"line":20,"column":54}},"4":{"start":{"line":21,"column":0},"end":{"line":21,"column":32}},"5":{"start":{"line":22,"column":0},"end":{"line":22,"column":36}},"6":{"start":{"line":24,"column":0},"end":{"line":24,"column":50}},"7":{"start":{"line":25,"column":0},"end":{"line":25,"column":31}},"8":{"start":{"line":26,"column":0},"end":{"line":26,"column":27}},"9":{"start":{"line":37,"column":0},"end":{"line":44,"column":1}},"10":{"start":{"line":38,"column":2},"end":{"line":38,"column":38}},"11":{"start":{"line":39,"column":2},"end":{"line":39,"column":18}},"12":{"start":{"line":40,"column":2},"end":{"line":40,"column":52}},"13":{"start":{"line":41,"column":2},"end":{"line":41,"column":31}},"14":{"start":{"line":42,"column":2},"end":{"line":42,"column":39}},"15":{"start":{"line":43,"column":2},"end":{"line":43,"column":14}},"16":{"start":{"line":72,"column":0},"end":{"line":79,"column":1}},"17":{"start":{"line":73,"column":2},"end":{"line":73,"column":27}},"18":{"start":{"line":74,"column":2},"end":{"line":74,"column":26}},"19":{"start":{"line":75,"column":2},"end":{"line":75,"column":24}},"20":{"start":{"line":76,"column":2},"end":{"line":76,"column":21}},"21":{"start":{"line":77,"column":2},"end":{"line":77,"column":28}},"22":{"start":{"line":78,"column":2},"end":{"line":78,"column":15}},"23":{"start":{"line":89,"column":0},"end":{"line":89,"column":38}},"24":{"start":{"line":91,"column":0},"end":{"line":93,"column":1}},"25":{"start":{"line":92,"column":2},"end":{"line":92,"column":63}},"26":{"start":{"line":95,"column":0},"end":{"line":101,"column":1}},"27":{"start":{"line":96,"column":2},"end":{"line":96,"column":15}},"28":{"start":{"line":97,"column":2},"end":{"line":99,"column":3}},"29":{"start":{"line":98,"column":4},"end":{"line":98,"column":27}},"30":{"start":{"line":100,"column":2},"end":{"line":100,"column":14}},"31":{"start":{"line":111,"column":0},"end":{"line":132,"column":2}},"32":{"start":{"line":112,"column":2},"end":{"line":112,"column":40}},"33":{"start":{"line":113,"column":2},"end":{"line":113,"column":26}},"34":{"start":{"line":115,"column":2},"end":{"line":119,"column":3}},"35":{"start":{"line":116,"column":4},"end":{"line":116,"column":31}},"36":{"start":{"line":117,"column":4},"end":{"line":117,"column":32}},"37":{"start":{"line":118,"column":4},"end":{"line":118,"column":33}},"38":{"start":{"line":121,"column":2},"end":{"line":129,"column":3}},"39":{"start":{"line":122,"column":4},"end":{"line":122,"column":35}},"40":{"start":{"line":123,"column":4},"end":{"line":127,"column":5}},"41":{"start":{"line":124,"column":6},"end":{"line":124,"column":26}},"42":{"start":{"line":126,"column":6},"end":{"line":126,"column":35}},"43":{"start":{"line":128,"column":4},"end":{"line":128,"column":30}},"44":{"start":{"line":131,"column":2},"end":{"line":131,"column":24}},"45":{"start":{"line":139,"column":0},"end":{"line":170,"column":2}},"46":{"start":{"line":174,"column":0},"end":{"line":205,"column":2}},"47":{"start":{"line":217,"column":0},"end":{"line":217,"column":54}},"48":{"start":{"line":218,"column":0},"end":{"line":224,"column":1}},"49":{"start":{"line":219,"column":2},"end":{"line":219,"column":51}},"50":{"start":{"line":221,"column":2},"end":{"line":221,"column":53}},"51":{"start":{"line":222,"column":2},"end":{"line":222,"column":22}},"52":{"start":{"line":223,"column":2},"end":{"line":223,"column":20}},"53":{"start":{"line":229,"column":0},"end":{"line":232,"column":2}},"54":{"start":{"line":230,"column":2},"end":{"line":230,"column":27}},"55":{"start":{"line":231,"column":2},"end":{"line":231,"column":13}},"56":{"start":{"line":255,"column":0},"end":{"line":306,"column":2}},"57":{"start":{"line":256,"column":2},"end":{"line":257,"column":53}},"58":{"start":{"line":259,"column":2},"end":{"line":259,"column":25}},"59":{"start":{"line":268,"column":2},"end":{"line":305,"column":3}},"60":{"start":{"line":269,"column":4},"end":{"line":269,"column":22}},"61":{"start":{"line":270,"column":4},"end":{"line":270,"column":31}},"62":{"start":{"line":272,"column":4},"end":{"line":279,"column":5}},"63":{"start":{"line":273,"column":6},"end":{"line":273,"column":30}},"64":{"start":{"line":275,"column":6},"end":{"line":275,"column":29}},"65":{"start":{"line":276,"column":6},"end":{"line":276,"column":27}},"66":{"start":{"line":277,"column":6},"end":{"line":277,"column":27}},"67":{"start":{"line":278,"column":6},"end":{"line":278,"column":22}},"68":{"start":{"line":290,"column":4},"end":{"line":294,"column":5}},"69":{"start":{"line":291,"column":6},"end":{"line":291,"column":51}},"70":{"start":{"line":293,"column":6},"end":{"line":293,"column":35}},"71":{"start":{"line":296,"column":4},"end":{"line":296,"column":22}},"72":{"start":{"line":297,"column":4},"end":{"line":302,"column":5}},"73":{"start":{"line":298,"column":6},"end":{"line":298,"column":34}},"74":{"start":{"line":299,"column":6},"end":{"line":299,"column":29}},"75":{"start":{"line":300,"column":6},"end":{"line":300,"column":27}},"76":{"start":{"line":301,"column":6},"end":{"line":301,"column":36}},"77":{"start":{"line":304,"column":4},"end":{"line":304,"column":20}},"78":{"start":{"line":312,"column":0},"end":{"line":331,"column":2}},"79":{"start":{"line":313,"column":2},"end":{"line":313,"column":36}},"80":{"start":{"line":316,"column":2},"end":{"line":316,"column":20}},"81":{"start":{"line":317,"column":2},"end":{"line":319,"column":3}},"82":{"start":{"line":318,"column":4},"end":{"line":318,"column":56}},"83":{"start":{"line":322,"column":2},"end":{"line":328,"column":3}},"84":{"start":{"line":323,"column":4},"end":{"line":323,"column":35}},"85":{"start":{"line":324,"column":4},"end":{"line":326,"column":5}},"86":{"start":{"line":325,"column":6},"end":{"line":325,"column":31}},"87":{"start":{"line":327,"column":4},"end":{"line":327,"column":26}},"88":{"start":{"line":330,"column":2},"end":{"line":330,"column":13}},"89":{"start":{"line":345,"column":0},"end":{"line":345,"column":52}},"90":{"start":{"line":346,"column":0},"end":{"line":352,"column":1}},"91":{"start":{"line":347,"column":2},"end":{"line":347,"column":51}},"92":{"start":{"line":349,"column":2},"end":{"line":349,"column":53}},"93":{"start":{"line":350,"column":2},"end":{"line":350,"column":22}},"94":{"start":{"line":351,"column":2},"end":{"line":351,"column":56}},"95":{"start":{"line":354,"column":0},"end":{"line":362,"column":2}},"96":{"start":{"line":355,"column":2},"end":{"line":356,"column":52}},"97":{"start":{"line":358,"column":2},"end":{"line":360,"column":3}},"98":{"start":{"line":359,"column":4},"end":{"line":359,"column":49}},"99":{"start":{"line":361,"column":2},"end":{"line":361,"column":32}},"100":{"start":{"line":367,"column":0},"end":{"line":468,"column":2}},"101":{"start":{"line":368,"column":2},"end":{"line":368,"column":35}},"102":{"start":{"line":369,"column":2},"end":{"line":369,"column":22}},"103":{"start":{"line":370,"column":2},"end":{"line":370,"column":17}},"104":{"start":{"line":373,"column":2},"end":{"line":373,"column":37}},"105":{"start":{"line":374,"column":2},"end":{"line":384,"column":3}},"106":{"start":{"line":375,"column":4},"end":{"line":375,"column":31}},"107":{"start":{"line":376,"column":4},"end":{"line":383,"column":5}},"108":{"start":{"line":377,"column":6},"end":{"line":382,"column":7}},"109":{"start":{"line":378,"column":8},"end":{"line":378,"column":26}},"110":{"start":{"line":379,"column":8},"end":{"line":379,"column":14}},"111":{"start":{"line":380,"column":13},"end":{"line":382,"column":7}},"112":{"start":{"line":381,"column":8},"end":{"line":381,"column":26}},"113":{"start":{"line":409,"column":2},"end":{"line":465,"column":3}},"114":{"start":{"line":410,"column":4},"end":{"line":410,"column":59}},"115":{"start":{"line":412,"column":4},"end":{"line":434,"column":5}},"116":{"start":{"line":413,"column":6},"end":{"line":413,"column":21}},"117":{"start":{"line":414,"column":6},"end":{"line":414,"column":29}},"118":{"start":{"line":415,"column":6},"end":{"line":415,"column":27}},"119":{"start":{"line":418,"column":9},"end":{"line":434,"column":5}},"120":{"start":{"line":419,"column":6},"end":{"line":419,"column":21}},"121":{"start":{"line":420,"column":6},"end":{"line":420,"column":21}},"122":{"start":{"line":421,"column":6},"end":{"line":421,"column":21}},"123":{"start":{"line":422,"column":6},"end":{"line":422,"column":21}},"124":{"start":{"line":423,"column":6},"end":{"line":423,"column":25}},"125":{"start":{"line":424,"column":6},"end":{"line":424,"column":27}},"126":{"start":{"line":427,"column":9},"end":{"line":434,"column":5}},"127":{"start":{"line":428,"column":6},"end":{"line":428,"column":21}},"128":{"start":{"line":429,"column":6},"end":{"line":429,"column":21}},"129":{"start":{"line":433,"column":6},"end":{"line":433,"column":24}},"130":{"start":{"line":439,"column":4},"end":{"line":439,"column":32}},"131":{"start":{"line":440,"column":4},"end":{"line":440,"column":25}},"132":{"start":{"line":442,"column":4},"end":{"line":442,"column":20}},"133":{"start":{"line":443,"column":4},"end":{"line":449,"column":5}},"134":{"start":{"line":444,"column":6},"end":{"line":444,"column":23}},"135":{"start":{"line":445,"column":11},"end":{"line":449,"column":5}},"136":{"start":{"line":446,"column":6},"end":{"line":446,"column":30}},"137":{"start":{"line":448,"column":6},"end":{"line":448,"column":29}},"138":{"start":{"line":451,"column":4},"end":{"line":462,"column":5}},"139":{"start":{"line":452,"column":6},"end":{"line":452,"column":29}},"140":{"start":{"line":453,"column":6},"end":{"line":453,"column":63}},"141":{"start":{"line":454,"column":6},"end":{"line":461,"column":7}},"142":{"start":{"line":455,"column":8},"end":{"line":455,"column":44}},"143":{"start":{"line":456,"column":8},"end":{"line":460,"column":9}},"144":{"start":{"line":457,"column":10},"end":{"line":457,"column":57}},"145":{"start":{"line":458,"column":10},"end":{"line":458,"column":25}},"146":{"start":{"line":459,"column":10},"end":{"line":459,"column":25}},"147":{"start":{"line":464,"column":4},"end":{"line":464,"column":97}},"148":{"start":{"line":467,"column":2},"end":{"line":467,"column":13}},"149":{"start":{"line":473,"column":0},"end":{"line":486,"column":2}},"150":{"start":{"line":475,"column":2},"end":{"line":483,"column":3}},"151":{"start":{"line":476,"column":4},"end":{"line":476,"column":35}},"152":{"start":{"line":477,"column":4},"end":{"line":480,"column":5}},"153":{"start":{"line":478,"column":6},"end":{"line":478,"column":58}},"154":{"start":{"line":479,"column":6},"end":{"line":479,"column":30}},"155":{"start":{"line":481,"column":4},"end":{"line":481,"column":23}},"156":{"start":{"line":482,"column":4},"end":{"line":482,"column":26}},"157":{"start":{"line":485,"column":2},"end":{"line":485,"column":13}},"158":{"start":{"line":504,"column":0},"end":{"line":530,"column":2}},"159":{"start":{"line":505,"column":2},"end":{"line":505,"column":32}},"160":{"start":{"line":506,"column":2},"end":{"line":508,"column":3}},"161":{"start":{"line":507,"column":4},"end":{"line":507,"column":29}},"162":{"start":{"line":510,"column":2},"end":{"line":510,"column":17}},"163":{"start":{"line":511,"column":2},"end":{"line":513,"column":3}},"164":{"start":{"line":512,"column":4},"end":{"line":512,"column":22}},"165":{"start":{"line":514,"column":2},"end":{"line":514,"column":13}},"166":{"start":{"line":516,"column":2},"end":{"line":516,"column":15}},"167":{"start":{"line":517,"column":2},"end":{"line":527,"column":3}},"168":{"start":{"line":518,"column":4},"end":{"line":518,"column":28}},"169":{"start":{"line":519,"column":4},"end":{"line":519,"column":16}},"170":{"start":{"line":521,"column":4},"end":{"line":523,"column":5}},"171":{"start":{"line":522,"column":6},"end":{"line":522,"column":15}},"172":{"start":{"line":524,"column":4},"end":{"line":524,"column":18}},"173":{"start":{"line":526,"column":4},"end":{"line":526,"column":10}},"174":{"start":{"line":529,"column":2},"end":{"line":529,"column":29}},"175":{"start":{"line":545,"column":0},"end":{"line":563,"column":2}},"176":{"start":{"line":546,"column":2},"end":{"line":546,"column":32}},"177":{"start":{"line":548,"column":2},"end":{"line":548,"column":40}},"178":{"start":{"line":549,"column":2},"end":{"line":551,"column":3}},"179":{"start":{"line":550,"column":4},"end":{"line":550,"column":23}},"180":{"start":{"line":553,"column":2},"end":{"line":560,"column":3}},"181":{"start":{"line":554,"column":4},"end":{"line":554,"column":14}},"182":{"start":{"line":555,"column":4},"end":{"line":559,"column":46}},"183":{"start":{"line":556,"column":6},"end":{"line":556,"column":46}},"184":{"start":{"line":557,"column":6},"end":{"line":557,"column":13}},"185":{"start":{"line":558,"column":6},"end":{"line":558,"column":25}},"186":{"start":{"line":562,"column":2},"end":{"line":562,"column":11}},"187":{"start":{"line":574,"column":0},"end":{"line":578,"column":2}},"188":{"start":{"line":575,"column":2},"end":{"line":575,"column":46}},"189":{"start":{"line":576,"column":2},"end":{"line":576,"column":75}},"190":{"start":{"line":577,"column":2},"end":{"line":577,"column":45}},"191":{"start":{"line":580,"column":0},"end":{"line":585,"column":2}},"192":{"start":{"line":581,"column":2},"end":{"line":581,"column":56}},"193":{"start":{"line":582,"column":2},"end":{"line":582,"column":75}},"194":{"start":{"line":583,"column":2},"end":{"line":583,"column":26}},"195":{"start":{"line":584,"column":2},"end":{"line":584,"column":13}},"196":{"start":{"line":625,"column":0},"end":{"line":630,"column":2}},"197":{"start":{"line":632,"column":0},"end":{"line":666,"column":2}},"198":{"start":{"line":633,"column":2},"end":{"line":633,"column":35}},"199":{"start":{"line":635,"column":2},"end":{"line":643,"column":3}},"200":{"start":{"line":636,"column":4},"end":{"line":636,"column":45}},"201":{"start":{"line":637,"column":9},"end":{"line":643,"column":3}},"202":{"start":{"line":638,"column":4},"end":{"line":638,"column":45}},"203":{"start":{"line":639,"column":9},"end":{"line":643,"column":3}},"204":{"start":{"line":640,"column":4},"end":{"line":640,"column":56}},"205":{"start":{"line":642,"column":4},"end":{"line":642,"column":57}},"206":{"start":{"line":645,"column":2},"end":{"line":661,"column":3}},"207":{"start":{"line":646,"column":4},"end":{"line":646,"column":83}},"208":{"start":{"line":649,"column":4},"end":{"line":654,"column":5}},"209":{"start":{"line":650,"column":6},"end":{"line":650,"column":88}},"210":{"start":{"line":652,"column":6},"end":{"line":652,"column":74}},"211":{"start":{"line":653,"column":6},"end":{"line":653,"column":60}},"212":{"start":{"line":656,"column":4},"end":{"line":658,"column":5}},"213":{"start":{"line":657,"column":6},"end":{"line":657,"column":65}},"214":{"start":{"line":660,"column":4},"end":{"line":660,"column":59}},"215":{"start":{"line":663,"column":2},"end":{"line":663,"column":45}},"216":{"start":{"line":665,"column":2},"end":{"line":665,"column":51}},"217":{"start":{"line":668,"column":0},"end":{"line":706,"column":2}},"218":{"start":{"line":669,"column":2},"end":{"line":669,"column":34}},"219":{"start":{"line":671,"column":2},"end":{"line":671,"column":40}},"220":{"start":{"line":672,"column":2},"end":{"line":682,"column":3}},"221":{"start":{"line":673,"column":4},"end":{"line":673,"column":45}},"222":{"start":{"line":674,"column":9},"end":{"line":682,"column":3}},"223":{"start":{"line":675,"column":4},"end":{"line":679,"column":5}},"224":{"start":{"line":676,"column":6},"end":{"line":676,"column":47}},"225":{"start":{"line":678,"column":6},"end":{"line":678,"column":58}},"226":{"start":{"line":681,"column":4},"end":{"line":681,"column":57}},"227":{"start":{"line":684,"column":2},"end":{"line":703,"column":3}},"228":{"start":{"line":685,"column":4},"end":{"line":685,"column":94}},"229":{"start":{"line":686,"column":4},"end":{"line":686,"column":22}},"230":{"start":{"line":689,"column":4},"end":{"line":689,"column":83}},"231":{"start":{"line":690,"column":4},"end":{"line":692,"column":5}},"232":{"start":{"line":691,"column":6},"end":{"line":691,"column":57}},"233":{"start":{"line":694,"column":4},"end":{"line":700,"column":5}},"234":{"start":{"line":695,"column":6},"end":{"line":695,"column":62}},"235":{"start":{"line":696,"column":11},"end":{"line":700,"column":5}},"236":{"start":{"line":697,"column":6},"end":{"line":697,"column":30}},"237":{"start":{"line":699,"column":6},"end":{"line":699,"column":24}},"238":{"start":{"line":702,"column":4},"end":{"line":702,"column":56}},"239":{"start":{"line":705,"column":2},"end":{"line":705,"column":16}},"240":{"start":{"line":730,"column":0},"end":{"line":730,"column":34}},"241":{"start":{"line":736,"column":0},"end":{"line":736,"column":43}},"242":{"start":{"line":737,"column":0},"end":{"line":746,"column":1}},"243":{"start":{"line":738,"column":2},"end":{"line":738,"column":51}},"244":{"start":{"line":740,"column":2},"end":{"line":740,"column":53}},"245":{"start":{"line":742,"column":2},"end":{"line":742,"column":56}},"246":{"start":{"line":743,"column":2},"end":{"line":744,"column":77}},"247":{"start":{"line":745,"column":2},"end":{"line":745,"column":57}},"248":{"start":{"line":751,"column":0},"end":{"line":770,"column":2}},"249":{"start":{"line":752,"column":2},"end":{"line":752,"column":67}},"250":{"start":{"line":753,"column":2},"end":{"line":762,"column":3}},"251":{"start":{"line":754,"column":4},"end":{"line":754,"column":30}},"252":{"start":{"line":755,"column":4},"end":{"line":761,"column":5}},"253":{"start":{"line":756,"column":6},"end":{"line":758,"column":7}},"254":{"start":{"line":757,"column":8},"end":{"line":757,"column":59}},"255":{"start":{"line":760,"column":6},"end":{"line":760,"column":54}},"256":{"start":{"line":763,"column":2},"end":{"line":763,"column":19}},"257":{"start":{"line":765,"column":2},"end":{"line":765,"column":25}},"258":{"start":{"line":766,"column":2},"end":{"line":768,"column":3}},"259":{"start":{"line":767,"column":4},"end":{"line":767,"column":23}},"260":{"start":{"line":769,"column":2},"end":{"line":769,"column":24}},"261":{"start":{"line":773,"column":0},"end":{"line":817,"column":2}},"262":{"start":{"line":781,"column":2},"end":{"line":814,"column":3}},"263":{"start":{"line":782,"column":4},"end":{"line":782,"column":46}},"264":{"start":{"line":784,"column":4},"end":{"line":784,"column":52}},"265":{"start":{"line":786,"column":4},"end":{"line":808,"column":5}},"266":{"start":{"line":787,"column":6},"end":{"line":787,"column":21}},"267":{"start":{"line":788,"column":6},"end":{"line":788,"column":28}},"268":{"start":{"line":789,"column":6},"end":{"line":789,"column":43}},"269":{"start":{"line":791,"column":6},"end":{"line":801,"column":7}},"270":{"start":{"line":792,"column":8},"end":{"line":792,"column":45}},"271":{"start":{"line":793,"column":8},"end":{"line":793,"column":57}},"272":{"start":{"line":794,"column":8},"end":{"line":794,"column":53}},"273":{"start":{"line":796,"column":8},"end":{"line":800,"column":10}},"274":{"start":{"line":802,"column":6},"end":{"line":804,"column":7}},"275":{"start":{"line":803,"column":8},"end":{"line":803,"column":69}},"276":{"start":{"line":805,"column":6},"end":{"line":805,"column":34}},"277":{"start":{"line":807,"column":6},"end":{"line":807,"column":28}},"278":{"start":{"line":813,"column":4},"end":{"line":813,"column":21}},"279":{"start":{"line":816,"column":2},"end":{"line":816,"column":9}},"280":{"start":{"line":828,"column":0},"end":{"line":828,"column":45}},"281":{"start":{"line":829,"column":0},"end":{"line":841,"column":1}},"282":{"start":{"line":830,"column":2},"end":{"line":830,"column":51}},"283":{"start":{"line":832,"column":2},"end":{"line":832,"column":53}},"284":{"start":{"line":834,"column":2},"end":{"line":834,"column":56}},"285":{"start":{"line":835,"column":2},"end":{"line":836,"column":77}},"286":{"start":{"line":837,"column":2},"end":{"line":837,"column":57}},"287":{"start":{"line":839,"column":2},"end":{"line":839,"column":27}},"288":{"start":{"line":840,"column":2},"end":{"line":840,"column":25}},"289":{"start":{"line":846,"column":0},"end":{"line":867,"column":2}},"290":{"start":{"line":847,"column":2},"end":{"line":847,"column":71}},"291":{"start":{"line":848,"column":2},"end":{"line":848,"column":26}},"292":{"start":{"line":850,"column":2},"end":{"line":850,"column":19}},"293":{"start":{"line":851,"column":2},"end":{"line":851,"column":11}},"294":{"start":{"line":852,"column":2},"end":{"line":864,"column":3}},"295":{"start":{"line":853,"column":4},"end":{"line":853,"column":23}},"296":{"start":{"line":854,"column":4},"end":{"line":854,"column":24}},"297":{"start":{"line":855,"column":4},"end":{"line":863,"column":5}},"298":{"start":{"line":856,"column":6},"end":{"line":860,"column":7}},"299":{"start":{"line":857,"column":8},"end":{"line":857,"column":34}},"300":{"start":{"line":859,"column":8},"end":{"line":859,"column":47}},"301":{"start":{"line":862,"column":6},"end":{"line":862,"column":28}},"302":{"start":{"line":866,"column":2},"end":{"line":866,"column":17}},"303":{"start":{"line":870,"column":0},"end":{"line":914,"column":2}},"304":{"start":{"line":873,"column":2},"end":{"line":893,"column":3}},"305":{"start":{"line":874,"column":4},"end":{"line":878,"column":5}},"306":{"start":{"line":875,"column":6},"end":{"line":875,"column":71}},"307":{"start":{"line":876,"column":6},"end":{"line":876,"column":43}},"308":{"start":{"line":877,"column":6},"end":{"line":877,"column":13}},"309":{"start":{"line":879,"column":4},"end":{"line":879,"column":29}},"310":{"start":{"line":884,"column":7},"end":{"line":893,"column":3}},"311":{"start":{"line":885,"column":4},"end":{"line":885,"column":28}},"312":{"start":{"line":886,"column":4},"end":{"line":886,"column":23}},"313":{"start":{"line":887,"column":4},"end":{"line":887,"column":27}},"314":{"start":{"line":892,"column":4},"end":{"line":892,"column":21}},"315":{"start":{"line":898,"column":2},"end":{"line":911,"column":3}},"316":{"start":{"line":899,"column":4},"end":{"line":901,"column":8}},"317":{"start":{"line":900,"column":6},"end":{"line":900,"column":24}},"318":{"start":{"line":902,"column":4},"end":{"line":908,"column":5}},"319":{"start":{"line":903,"column":6},"end":{"line":903,"column":44}},"320":{"start":{"line":905,"column":6},"end":{"line":905,"column":68}},"321":{"start":{"line":906,"column":6},"end":{"line":906,"column":46}},"322":{"start":{"line":907,"column":6},"end":{"line":907,"column":13}},"323":{"start":{"line":909,"column":4},"end":{"line":909,"column":62}},"324":{"start":{"line":910,"column":4},"end":{"line":910,"column":29}},"325":{"start":{"line":913,"column":2},"end":{"line":913,"column":9}},"326":{"start":{"line":920,"column":0},"end":{"line":932,"column":1}},"327":{"start":{"line":921,"column":2},"end":{"line":921,"column":15}},"328":{"start":{"line":922,"column":2},"end":{"line":924,"column":3}},"329":{"start":{"line":923,"column":4},"end":{"line":923,"column":30}},"330":{"start":{"line":926,"column":2},"end":{"line":926,"column":38}},"331":{"start":{"line":927,"column":2},"end":{"line":929,"column":3}},"332":{"start":{"line":928,"column":4},"end":{"line":928,"column":42}},"333":{"start":{"line":931,"column":2},"end":{"line":931,"column":22}},"334":{"start":{"line":935,"column":0},"end":{"line":944,"column":1}},"335":{"start":{"line":936,"column":2},"end":{"line":936,"column":18}},"336":{"start":{"line":937,"column":2},"end":{"line":937,"column":17}},"337":{"start":{"line":938,"column":2},"end":{"line":942,"column":34}},"338":{"start":{"line":939,"column":4},"end":{"line":939,"column":59}},"339":{"start":{"line":940,"column":4},"end":{"line":940,"column":58}},"340":{"start":{"line":941,"column":4},"end":{"line":941,"column":24}},"341":{"start":{"line":943,"column":2},"end":{"line":943,"column":16}}},"branchMap":{"1":{"line":40,"type":"binary-expr","locations":[{"start":{"line":40,"column":16},"end":{"line":40,"column":21}},{"start":{"line":40,"column":25},"end":{"line":40,"column":51}}]},"2":{"line":115,"type":"binary-expr","locations":[{"start":{"line":115,"column":10},"end":{"line":115,"column":28}},{"start":{"line":115,"column":34},"end":{"line":115,"column":49}}]},"3":{"line":121,"type":"if","locations":[{"start":{"line":121,"column":2},"end":{"line":121,"column":2}},{"start":{"line":121,"column":2},"end":{"line":121,"column":2}}]},"4":{"line":123,"type":"if","locations":[{"start":{"line":123,"column":4},"end":{"line":123,"column":4}},{"start":{"line":123,"column":4},"end":{"line":123,"column":4}}]},"5":{"line":268,"type":"if","locations":[{"start":{"line":268,"column":2},"end":{"line":268,"column":2}},{"start":{"line":268,"column":2},"end":{"line":268,"column":2}}]},"6":{"line":272,"type":"if","locations":[{"start":{"line":272,"column":4},"end":{"line":272,"column":4}},{"start":{"line":272,"column":4},"end":{"line":272,"column":4}}]},"7":{"line":290,"type":"if","locations":[{"start":{"line":290,"column":4},"end":{"line":290,"column":4}},{"start":{"line":290,"column":4},"end":{"line":290,"column":4}}]},"8":{"line":297,"type":"if","locations":[{"start":{"line":297,"column":4},"end":{"line":297,"column":4}},{"start":{"line":297,"column":4},"end":{"line":297,"column":4}}]},"9":{"line":324,"type":"if","locations":[{"start":{"line":324,"column":4},"end":{"line":324,"column":4}},{"start":{"line":324,"column":4},"end":{"line":324,"column":4}}]},"10":{"line":324,"type":"binary-expr","locations":[{"start":{"line":324,"column":8},"end":{"line":324,"column":23}},{"start":{"line":324,"column":27},"end":{"line":324,"column":41}}]},"11":{"line":358,"type":"if","locations":[{"start":{"line":358,"column":2},"end":{"line":358,"column":2}},{"start":{"line":358,"column":2},"end":{"line":358,"column":2}}]},"12":{"line":376,"type":"if","locations":[{"start":{"line":376,"column":4},"end":{"line":376,"column":4}},{"start":{"line":376,"column":4},"end":{"line":376,"column":4}}]},"13":{"line":377,"type":"if","locations":[{"start":{"line":377,"column":6},"end":{"line":377,"column":6}},{"start":{"line":377,"column":6},"end":{"line":377,"column":6}}]},"14":{"line":380,"type":"if","locations":[{"start":{"line":380,"column":13},"end":{"line":380,"column":13}},{"start":{"line":380,"column":13},"end":{"line":380,"column":13}}]},"15":{"line":409,"type":"if","locations":[{"start":{"line":409,"column":2},"end":{"line":409,"column":2}},{"start":{"line":409,"column":2},"end":{"line":409,"column":2}}]},"16":{"line":412,"type":"if","locations":[{"start":{"line":412,"column":4},"end":{"line":412,"column":4}},{"start":{"line":412,"column":4},"end":{"line":412,"column":4}}]},"17":{"line":418,"type":"if","locations":[{"start":{"line":418,"column":9},"end":{"line":418,"column":9}},{"start":{"line":418,"column":9},"end":{"line":418,"column":9}}]},"18":{"line":427,"type":"if","locations":[{"start":{"line":427,"column":9},"end":{"line":427,"column":9}},{"start":{"line":427,"column":9},"end":{"line":427,"column":9}}]},"19":{"line":443,"type":"if","locations":[{"start":{"line":443,"column":4},"end":{"line":443,"column":4}},{"start":{"line":443,"column":4},"end":{"line":443,"column":4}}]},"20":{"line":445,"type":"if","locations":[{"start":{"line":445,"column":11},"end":{"line":445,"column":11}},{"start":{"line":445,"column":11},"end":{"line":445,"column":11}}]},"21":{"line":451,"type":"if","locations":[{"start":{"line":451,"column":4},"end":{"line":451,"column":4}},{"start":{"line":451,"column":4},"end":{"line":451,"column":4}}]},"22":{"line":456,"type":"if","locations":[{"start":{"line":456,"column":8},"end":{"line":456,"column":8}},{"start":{"line":456,"column":8},"end":{"line":456,"column":8}}]},"23":{"line":464,"type":"cond-expr","locations":[{"start":{"line":464,"column":43},"end":{"line":464,"column":52}},{"start":{"line":464,"column":55},"end":{"line":464,"column":59}}]},"24":{"line":477,"type":"if","locations":[{"start":{"line":477,"column":4},"end":{"line":477,"column":4}},{"start":{"line":477,"column":4},"end":{"line":477,"column":4}}]},"25":{"line":477,"type":"binary-expr","locations":[{"start":{"line":477,"column":8},"end":{"line":477,"column":23}},{"start":{"line":477,"column":27},"end":{"line":477,"column":38}},{"start":{"line":477,"column":42},"end":{"line":477,"column":56}}]},"26":{"line":506,"type":"if","locations":[{"start":{"line":506,"column":2},"end":{"line":506,"column":2}},{"start":{"line":506,"column":2},"end":{"line":506,"column":2}}]},"27":{"line":511,"type":"if","locations":[{"start":{"line":511,"column":2},"end":{"line":511,"column":2}},{"start":{"line":511,"column":2},"end":{"line":511,"column":2}}]},"28":{"line":521,"type":"if","locations":[{"start":{"line":521,"column":4},"end":{"line":521,"column":4}},{"start":{"line":521,"column":4},"end":{"line":521,"column":4}}]},"29":{"line":549,"type":"if","locations":[{"start":{"line":549,"column":2},"end":{"line":549,"column":2}},{"start":{"line":549,"column":2},"end":{"line":549,"column":2}}]},"30":{"line":553,"type":"if","locations":[{"start":{"line":553,"column":2},"end":{"line":553,"column":2}},{"start":{"line":553,"column":2},"end":{"line":553,"column":2}}]},"31":{"line":635,"type":"if","locations":[{"start":{"line":635,"column":2},"end":{"line":635,"column":2}},{"start":{"line":635,"column":2},"end":{"line":635,"column":2}}]},"32":{"line":637,"type":"if","locations":[{"start":{"line":637,"column":9},"end":{"line":637,"column":9}},{"start":{"line":637,"column":9},"end":{"line":637,"column":9}}]},"33":{"line":639,"type":"if","locations":[{"start":{"line":639,"column":9},"end":{"line":639,"column":9}},{"start":{"line":639,"column":9},"end":{"line":639,"column":9}}]},"34":{"line":645,"type":"if","locations":[{"start":{"line":645,"column":2},"end":{"line":645,"column":2}},{"start":{"line":645,"column":2},"end":{"line":645,"column":2}}]},"35":{"line":649,"type":"if","locations":[{"start":{"line":649,"column":4},"end":{"line":649,"column":4}},{"start":{"line":649,"column":4},"end":{"line":649,"column":4}}]},"36":{"line":656,"type":"if","locations":[{"start":{"line":656,"column":4},"end":{"line":656,"column":4}},{"start":{"line":656,"column":4},"end":{"line":656,"column":4}}]},"37":{"line":672,"type":"if","locations":[{"start":{"line":672,"column":2},"end":{"line":672,"column":2}},{"start":{"line":672,"column":2},"end":{"line":672,"column":2}}]},"38":{"line":674,"type":"if","locations":[{"start":{"line":674,"column":9},"end":{"line":674,"column":9}},{"start":{"line":674,"column":9},"end":{"line":674,"column":9}}]},"39":{"line":675,"type":"if","locations":[{"start":{"line":675,"column":4},"end":{"line":675,"column":4}},{"start":{"line":675,"column":4},"end":{"line":675,"column":4}}]},"40":{"line":684,"type":"if","locations":[{"start":{"line":684,"column":2},"end":{"line":684,"column":2}},{"start":{"line":684,"column":2},"end":{"line":684,"column":2}}]},"41":{"line":690,"type":"if","locations":[{"start":{"line":690,"column":4},"end":{"line":690,"column":4}},{"start":{"line":690,"column":4},"end":{"line":690,"column":4}}]},"42":{"line":694,"type":"if","locations":[{"start":{"line":694,"column":4},"end":{"line":694,"column":4}},{"start":{"line":694,"column":4},"end":{"line":694,"column":4}}]},"43":{"line":696,"type":"if","locations":[{"start":{"line":696,"column":11},"end":{"line":696,"column":11}},{"start":{"line":696,"column":11},"end":{"line":696,"column":11}}]},"44":{"line":742,"type":"binary-expr","locations":[{"start":{"line":742,"column":10},"end":{"line":742,"column":28}},{"start":{"line":742,"column":34},"end":{"line":742,"column":53}}]},"45":{"line":743,"type":"cond-expr","locations":[{"start":{"line":743,"column":44},"end":{"line":743,"column":75}},{"start":{"line":744,"column":44},"end":{"line":744,"column":76}}]},"46":{"line":755,"type":"if","locations":[{"start":{"line":755,"column":4},"end":{"line":755,"column":4}},{"start":{"line":755,"column":4},"end":{"line":755,"column":4}}]},"47":{"line":781,"type":"if","locations":[{"start":{"line":781,"column":2},"end":{"line":781,"column":2}},{"start":{"line":781,"column":2},"end":{"line":781,"column":2}}]},"48":{"line":781,"type":"binary-expr","locations":[{"start":{"line":781,"column":6},"end":{"line":781,"column":30}},{"start":{"line":781,"column":34},"end":{"line":781,"column":63}}]},"49":{"line":791,"type":"if","locations":[{"start":{"line":791,"column":6},"end":{"line":791,"column":6}},{"start":{"line":791,"column":6},"end":{"line":791,"column":6}}]},"50":{"line":802,"type":"if","locations":[{"start":{"line":802,"column":6},"end":{"line":802,"column":6}},{"start":{"line":802,"column":6},"end":{"line":802,"column":6}}]},"51":{"line":803,"type":"binary-expr","locations":[{"start":{"line":803,"column":38},"end":{"line":803,"column":42}},{"start":{"line":803,"column":46},"end":{"line":803,"column":68}}]},"52":{"line":834,"type":"binary-expr","locations":[{"start":{"line":834,"column":10},"end":{"line":834,"column":28}},{"start":{"line":834,"column":34},"end":{"line":834,"column":53}}]},"53":{"line":835,"type":"cond-expr","locations":[{"start":{"line":835,"column":44},"end":{"line":835,"column":75}},{"start":{"line":836,"column":44},"end":{"line":836,"column":76}}]},"54":{"line":855,"type":"if","locations":[{"start":{"line":855,"column":4},"end":{"line":855,"column":4}},{"start":{"line":855,"column":4},"end":{"line":855,"column":4}}]},"55":{"line":856,"type":"if","locations":[{"start":{"line":856,"column":6},"end":{"line":856,"column":6}},{"start":{"line":856,"column":6},"end":{"line":856,"column":6}}]},"56":{"line":873,"type":"if","locations":[{"start":{"line":873,"column":2},"end":{"line":873,"column":2}},{"start":{"line":873,"column":2},"end":{"line":873,"column":2}}]},"57":{"line":874,"type":"if","locations":[{"start":{"line":874,"column":4},"end":{"line":874,"column":4}},{"start":{"line":874,"column":4},"end":{"line":874,"column":4}}]},"58":{"line":874,"type":"binary-expr","locations":[{"start":{"line":874,"column":9},"end":{"line":874,"column":38}},{"start":{"line":874,"column":44},"end":{"line":874,"column":78}}]},"59":{"line":884,"type":"if","locations":[{"start":{"line":884,"column":7},"end":{"line":884,"column":7}},{"start":{"line":884,"column":7},"end":{"line":884,"column":7}}]},"60":{"line":884,"type":"binary-expr","locations":[{"start":{"line":884,"column":12},"end":{"line":884,"column":36}},{"start":{"line":884,"column":42},"end":{"line":884,"column":71}}]},"61":{"line":898,"type":"if","locations":[{"start":{"line":898,"column":2},"end":{"line":898,"column":2}},{"start":{"line":898,"column":2},"end":{"line":898,"column":2}}]},"62":{"line":898,"type":"binary-expr","locations":[{"start":{"line":898,"column":6},"end":{"line":898,"column":22}},{"start":{"line":898,"column":27},"end":{"line":898,"column":50}},{"start":{"line":898,"column":54},"end":{"line":898,"column":82}}]}}},"/data/upstream/node-http2/lib/connection.js":{"path":"/data/upstream/node-http2/lib/connection.js","s":{"1":1,"2":1,"3":1,"4":1,"5":45,"6":45,"7":45,"8":45,"9":45,"10":45,"11":45,"12":1,"13":1,"14":1,"15":45,"16":45,"17":45,"18":45,"19":45,"20":45,"21":45,"22":45,"23":1,"24":42,"25":42,"26":42,"27":0,"28":0,"29":1,"30":18,"31":18,"32":18,"33":18,"34":0,"35":1,"36":89,"37":43,"38":43,"39":43,"40":43,"41":0,"42":1,"43":45,"44":23,"45":23,"46":22,"47":22,"48":0,"49":0,"50":0,"51":45,"52":45,"53":45,"54":45,"55":45,"56":45,"57":45,"58":1,"59":45,"60":45,"61":45,"62":45,"63":45,"64":1,"65":75,"66":27,"67":48,"68":1,"69":10,"70":10,"71":10,"72":10,"73":10,"74":6,"75":10,"76":1,"77":22,"78":22,"79":22,"80":22,"81":22,"82":22,"83":1,"84":18,"85":18,"86":18,"87":18,"88":1,"89":45,"90":45,"91":45,"92":1,"93":231,"94":4,"95":227,"96":97,"97":130,"98":101,"99":101,"100":130,"101":97,"102":97,"103":97,"104":64,"105":64,"106":64,"107":113,"108":146,"109":146,"110":146,"111":89,"112":57,"113":0,"114":0,"115":57,"116":57,"117":27,"118":57,"119":5,"120":5,"121":57,"122":57,"123":57,"124":57,"125":57,"126":0,"127":113,"128":113,"129":97,"130":69,"131":97,"132":1,"133":98,"134":98,"135":36,"136":36,"137":98,"138":98,"139":17,"140":98,"141":5,"142":98,"143":98,"144":98,"145":1,"146":1,"147":45,"148":45,"149":45,"150":1,"151":36,"152":36,"153":0,"154":0,"155":1,"156":36,"157":54,"158":1,"159":45,"160":45,"161":70,"162":1,"163":45,"164":45,"165":45,"166":45,"167":1,"168":2,"169":2,"170":2,"171":32,"172":2,"173":1,"174":2,"175":2,"176":2,"177":2,"178":2,"179":1,"180":5,"181":3,"182":3,"183":2,"184":2,"185":2,"186":2,"187":2,"188":1,"189":2,"190":2,"191":1,"192":3,"193":0,"194":0,"195":3,"196":3,"197":3,"198":3,"199":1,"200":2,"201":2,"202":2,"203":2,"204":0,"205":1,"206":45,"207":45,"208":45,"209":45,"210":25,"211":45,"212":45,"213":45,"214":45,"215":45,"216":1,"217":1,"218":41,"219":1,"220":1,"221":40,"222":40,"223":40,"224":47,"225":1,"226":24,"227":22,"228":22,"229":2,"230":1,"231":1,"232":1,"233":20,"234":20,"235":20,"236":20,"237":0,"238":0,"239":0},"b":{"1":[42,0],"2":[42,6,2,0],"3":[18,0],"4":[0,18],"5":[43,46],"6":[43,0],"7":[0,43],"8":[23,22],"9":[22,0],"10":[22,22],"11":[27,48],"12":[6,4],"13":[4,227],"14":[97,130],"15":[101,29],"16":[146,0],"17":[89,57],"18":[0,57],"19":[27,30],"20":[27,18],"21":[5,52],"22":[0,57],"23":[69,28],"24":[36,62],"25":[17,81],"26":[5,93],"27":[45,20],"28":[36,0],"29":[36,36],"30":[3,2],"31":[2,1],"32":[2,0],"33":[0,3],"34":[3,2],"35":[0,2],"36":[25,20],"37":[1,40],"38":[41,2],"39":[22,2],"40":[1,1],"41":[20,0],"42":[0,0]},"f":{"1":45,"2":45,"3":42,"4":18,"5":89,"6":45,"7":45,"8":75,"9":10,"10":22,"11":18,"12":45,"13":231,"14":98,"15":45,"16":36,"17":36,"18":45,"19":45,"20":2,"21":2,"22":5,"23":3,"24":2,"25":45,"26":45,"27":40,"28":20,"29":41,"30":47,"31":24,"32":20,"33":20},"fnMap":{"1":{"name":"Connection","line":39,"loc":{"start":{"line":39,"column":0},"end":{"line":39,"column":50}}},"2":{"name":"_initializeStreamManagement","line":100,"loc":{"start":{"line":100,"column":51},"end":{"line":100,"column":103}}},"3":{"name":"_writeControlFrame","line":123,"loc":{"start":{"line":123,"column":42},"end":{"line":123,"column":77}}},"4":{"name":"_updateStreamLimit","line":135,"loc":{"start":{"line":135,"column":42},"end":{"line":135,"column":86}}},"5":{"name":"_changeStreamCount","line":144,"loc":{"start":{"line":144,"column":42},"end":{"line":144,"column":78}}},"6":{"name":"_allocateId","line":164,"loc":{"start":{"line":164,"column":35},"end":{"line":164,"column":68}}},"7":{"name":"_allocatePriority","line":199,"loc":{"start":{"line":199,"column":41},"end":{"line":199,"column":76}}},"8":{"name":"_insert","line":207,"loc":{"start":{"line":207,"column":31},"end":{"line":207,"column":66}}},"9":{"name":"_reprioritize","line":215,"loc":{"start":{"line":215,"column":37},"end":{"line":215,"column":78}}},"10":{"name":"_createIncomingStream","line":229,"loc":{"start":{"line":229,"column":45},"end":{"line":229,"column":80}}},"11":{"name":"createStream","line":241,"loc":{"start":{"line":241,"column":36},"end":{"line":241,"column":60}}},"12":{"name":"_initializeMultiplexing","line":254,"loc":{"start":{"line":254,"column":47},"end":{"line":254,"column":82}}},"13":{"name":"_send","line":262,"loc":{"start":{"line":262,"column":29},"end":{"line":262,"column":55}}},"14":{"name":"_receive","line":346,"loc":{"start":{"line":346,"column":32},"end":{"line":346,"column":63}}},"15":{"name":"_initializeSettingsManagement","line":384,"loc":{"start":{"line":384,"column":53},"end":{"line":384,"column":102}}},"16":{"name":"_onFirstFrameReceived","line":394,"loc":{"start":{"line":394,"column":45},"end":{"line":394,"column":83}}},"17":{"name":"_receiveSettings","line":404,"loc":{"start":{"line":404,"column":40},"end":{"line":404,"column":73}}},"18":{"name":"set","line":411,"loc":{"start":{"line":411,"column":27},"end":{"line":411,"column":50}}},"19":{"name":"_initializeLifecycleManagement","line":433,"loc":{"start":{"line":433,"column":54},"end":{"line":433,"column":96}}},"20":{"name":"_generatePingId","line":441,"loc":{"start":{"line":441,"column":39},"end":{"line":441,"column":66}}},"21":{"name":"ping","line":452,"loc":{"start":{"line":452,"column":28},"end":{"line":452,"column":52}}},"22":{"name":"_receivePing","line":469,"loc":{"start":{"line":469,"column":36},"end":{"line":469,"column":65}}},"23":{"name":"close","line":497,"loc":{"start":{"line":497,"column":29},"end":{"line":497,"column":51}}},"24":{"name":"_receiveGoaway","line":515,"loc":{"start":{"line":515,"column":38},"end":{"line":515,"column":69}}},"25":{"name":"_initializeFlowControl","line":527,"loc":{"start":{"line":527,"column":46},"end":{"line":527,"column":80}}},"26":{"name":"(anonymous_26)","line":530,"loc":{"start":{"line":530,"column":24},"end":{"line":530,"column":41}}},"27":{"name":"noop","line":539,"loc":{"start":{"line":539,"column":49},"end":{"line":539,"column":65}}},"28":{"name":"noop","line":540,"loc":{"start":{"line":540,"column":57},"end":{"line":540,"column":73}}},"29":{"name":"_setInitialStreamWindowSize","line":550,"loc":{"start":{"line":550,"column":51},"end":{"line":550,"column":94}}},"30":{"name":"(anonymous_30)","line":557,"loc":{"start":{"line":557,"column":28},"end":{"line":557,"column":45}}},"31":{"name":"_setLocalFlowControl","line":565,"loc":{"start":{"line":565,"column":44},"end":{"line":565,"column":83}}},"32":{"name":"_setRemoteFlowControl","line":575,"loc":{"start":{"line":575,"column":45},"end":{"line":575,"column":85}}},"33":{"name":"(anonymous_33)","line":578,"loc":{"start":{"line":578,"column":28},"end":{"line":578,"column":45}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":31}},"2":{"start":{"line":10,"column":0},"end":{"line":10,"column":34}},"3":{"start":{"line":12,"column":0},"end":{"line":12,"column":32}},"4":{"start":{"line":39,"column":0},"end":{"line":60,"column":1}},"5":{"start":{"line":41,"column":2},"end":{"line":41,"column":21}},"6":{"start":{"line":44,"column":2},"end":{"line":44,"column":53}},"7":{"start":{"line":47,"column":2},"end":{"line":47,"column":50}},"8":{"start":{"line":50,"column":2},"end":{"line":50,"column":40}},"9":{"start":{"line":53,"column":2},"end":{"line":53,"column":32}},"10":{"start":{"line":56,"column":2},"end":{"line":56,"column":47}},"11":{"start":{"line":59,"column":2},"end":{"line":59,"column":33}},"12":{"start":{"line":61,"column":0},"end":{"line":61,"column":93}},"13":{"start":{"line":97,"column":0},"end":{"line":97,"column":41}},"14":{"start":{"line":100,"column":0},"end":{"line":119,"column":2}},"15":{"start":{"line":104,"column":2},"end":{"line":104,"column":23}},"16":{"start":{"line":105,"column":2},"end":{"line":105,"column":30}},"17":{"start":{"line":108,"column":2},"end":{"line":108,"column":37}},"18":{"start":{"line":109,"column":2},"end":{"line":109,"column":31}},"19":{"start":{"line":112,"column":2},"end":{"line":112,"column":83}},"20":{"start":{"line":116,"column":2},"end":{"line":116,"column":35}},"21":{"start":{"line":117,"column":2},"end":{"line":117,"column":31}},"22":{"start":{"line":118,"column":2},"end":{"line":118,"column":80}},"23":{"start":{"line":123,"column":0},"end":{"line":132,"column":2}},"24":{"start":{"line":124,"column":2},"end":{"line":131,"column":3}},"25":{"start":{"line":126,"column":4},"end":{"line":126,"column":74}},"26":{"start":{"line":127,"column":4},"end":{"line":127,"column":33}},"27":{"start":{"line":129,"column":4},"end":{"line":129,"column":72}},"28":{"start":{"line":130,"column":4},"end":{"line":130,"column":41}},"29":{"start":{"line":135,"column":0},"end":{"line":142,"column":2}},"30":{"start":{"line":136,"column":2},"end":{"line":136,"column":85}},"31":{"start":{"line":137,"column":2},"end":{"line":137,"column":62}},"32":{"start":{"line":138,"column":2},"end":{"line":138,"column":37}},"33":{"start":{"line":139,"column":2},"end":{"line":141,"column":3}},"34":{"start":{"line":140,"column":4},"end":{"line":140,"column":24}},"35":{"start":{"line":144,"column":0},"end":{"line":154,"column":2}},"36":{"start":{"line":145,"column":2},"end":{"line":153,"column":3}},"37":{"start":{"line":146,"column":4},"end":{"line":147,"column":53}},"38":{"start":{"line":148,"column":4},"end":{"line":148,"column":63}},"39":{"start":{"line":149,"column":4},"end":{"line":149,"column":36}},"40":{"start":{"line":150,"column":4},"end":{"line":152,"column":5}},"41":{"start":{"line":151,"column":6},"end":{"line":151,"column":26}},"42":{"start":{"line":164,"column":0},"end":{"line":196,"column":2}},"43":{"start":{"line":166,"column":2},"end":{"line":182,"column":3}},"44":{"start":{"line":167,"column":4},"end":{"line":167,"column":28}},"45":{"start":{"line":168,"column":4},"end":{"line":168,"column":28}},"46":{"start":{"line":172,"column":7},"end":{"line":182,"column":3}},"47":{"start":{"line":173,"column":4},"end":{"line":173,"column":34}},"48":{"start":{"line":178,"column":4},"end":{"line":179,"column":51}},"49":{"start":{"line":180,"column":4},"end":{"line":180,"column":41}},"50":{"start":{"line":181,"column":4},"end":{"line":181,"column":21}},"51":{"start":{"line":184,"column":2},"end":{"line":184,"column":35}},"52":{"start":{"line":187,"column":2},"end":{"line":187,"column":77}},"53":{"start":{"line":188,"column":2},"end":{"line":188,"column":31}},"54":{"start":{"line":189,"column":2},"end":{"line":189,"column":17}},"55":{"start":{"line":190,"column":2},"end":{"line":190,"column":38}},"56":{"start":{"line":193,"column":2},"end":{"line":193,"column":52}},"57":{"start":{"line":195,"column":2},"end":{"line":195,"column":12}},"58":{"start":{"line":199,"column":0},"end":{"line":205,"column":2}},"59":{"start":{"line":200,"column":2},"end":{"line":200,"column":68}},"60":{"start":{"line":201,"column":2},"end":{"line":201,"column":41}},"61":{"start":{"line":202,"column":2},"end":{"line":202,"column":63}},"62":{"start":{"line":203,"column":2},"end":{"line":203,"column":65}},"63":{"start":{"line":204,"column":2},"end":{"line":204,"column":22}},"64":{"start":{"line":207,"column":0},"end":{"line":213,"column":2}},"65":{"start":{"line":208,"column":2},"end":{"line":212,"column":3}},"66":{"start":{"line":209,"column":4},"end":{"line":209,"column":50}},"67":{"start":{"line":211,"column":4},"end":{"line":211,"column":48}},"68":{"start":{"line":215,"column":0},"end":{"line":225,"column":2}},"69":{"start":{"line":216,"column":2},"end":{"line":216,"column":56}},"70":{"start":{"line":217,"column":2},"end":{"line":217,"column":37}},"71":{"start":{"line":218,"column":2},"end":{"line":218,"column":23}},"72":{"start":{"line":219,"column":2},"end":{"line":219,"column":26}},"73":{"start":{"line":220,"column":2},"end":{"line":222,"column":3}},"74":{"start":{"line":221,"column":4},"end":{"line":221,"column":52}},"75":{"start":{"line":224,"column":2},"end":{"line":224,"column":33}},"76":{"start":{"line":229,"column":0},"end":{"line":238,"column":2}},"77":{"start":{"line":230,"column":2},"end":{"line":230,"column":61}},"78":{"start":{"line":232,"column":2},"end":{"line":232,"column":37}},"79":{"start":{"line":233,"column":2},"end":{"line":233,"column":31}},"80":{"start":{"line":234,"column":2},"end":{"line":234,"column":33}},"81":{"start":{"line":235,"column":2},"end":{"line":235,"column":34}},"82":{"start":{"line":237,"column":2},"end":{"line":237,"column":16}},"83":{"start":{"line":241,"column":0},"end":{"line":249,"column":2}},"84":{"start":{"line":242,"column":2},"end":{"line":242,"column":51}},"85":{"start":{"line":245,"column":2},"end":{"line":245,"column":37}},"86":{"start":{"line":246,"column":2},"end":{"line":246,"column":33}},"87":{"start":{"line":248,"column":2},"end":{"line":248,"column":16}},"88":{"start":{"line":254,"column":0},"end":{"line":258,"column":2}},"89":{"start":{"line":255,"column":2},"end":{"line":255,"column":59}},"90":{"start":{"line":256,"column":2},"end":{"line":256,"column":30}},"91":{"start":{"line":257,"column":2},"end":{"line":257,"column":35}},"92":{"start":{"line":262,"column":0},"end":{"line":342,"column":2}},"93":{"start":{"line":264,"column":2},"end":{"line":266,"column":3}},"94":{"start":{"line":265,"column":4},"end":{"line":265,"column":11}},"95":{"start":{"line":269,"column":2},"end":{"line":277,"column":3}},"96":{"start":{"line":270,"column":4},"end":{"line":270,"column":32}},"97":{"start":{"line":272,"column":4},"end":{"line":275,"column":5}},"98":{"start":{"line":273,"column":6},"end":{"line":273,"column":33}},"99":{"start":{"line":274,"column":6},"end":{"line":274,"column":48}},"100":{"start":{"line":276,"column":4},"end":{"line":276,"column":11}},"101":{"start":{"line":279,"column":2},"end":{"line":279,"column":62}},"102":{"start":{"line":282,"column":0},"end":{"line":334,"column":3}},"103":{"start":{"line":283,"column":2},"end":{"line":334,"column":3}},"104":{"start":{"line":284,"column":4},"end":{"line":284,"column":50}},"105":{"start":{"line":285,"column":4},"end":{"line":285,"column":24}},"106":{"start":{"line":298,"column":4},"end":{"line":333,"column":5}},"107":{"start":{"line":299,"column":6},"end":{"line":329,"column":7}},"108":{"start":{"line":300,"column":8},"end":{"line":300,"column":35}},"109":{"start":{"line":301,"column":8},"end":{"line":301,"column":81}},"110":{"start":{"line":303,"column":8},"end":{"line":308,"column":9}},"111":{"start":{"line":304,"column":10},"end":{"line":304,"column":19}},"112":{"start":{"line":305,"column":15},"end":{"line":308,"column":9}},"113":{"start":{"line":306,"column":10},"end":{"line":306,"column":41}},"114":{"start":{"line":307,"column":10},"end":{"line":307,"column":19}},"115":{"start":{"line":310,"column":8},"end":{"line":310,"column":32}},"116":{"start":{"line":312,"column":8},"end":{"line":314,"column":9}},"117":{"start":{"line":313,"column":10},"end":{"line":313,"column":63}},"118":{"start":{"line":316,"column":8},"end":{"line":319,"column":9}},"119":{"start":{"line":317,"column":10},"end":{"line":317,"column":56}},"120":{"start":{"line":318,"column":10},"end":{"line":318,"column":74}},"121":{"start":{"line":321,"column":8},"end":{"line":321,"column":82}},"122":{"start":{"line":322,"column":8},"end":{"line":322,"column":42}},"123":{"start":{"line":323,"column":8},"end":{"line":323,"column":52}},"124":{"start":{"line":325,"column":8},"end":{"line":325,"column":36}},"125":{"start":{"line":326,"column":8},"end":{"line":328,"column":9}},"126":{"start":{"line":327,"column":10},"end":{"line":327,"column":30}},"127":{"start":{"line":331,"column":6},"end":{"line":331,"column":26}},"128":{"start":{"line":332,"column":6},"end":{"line":332,"column":22}},"129":{"start":{"line":337,"column":2},"end":{"line":339,"column":3}},"130":{"start":{"line":338,"column":4},"end":{"line":338,"column":47}},"131":{"start":{"line":341,"column":2},"end":{"line":341,"column":90}},"132":{"start":{"line":346,"column":0},"end":{"line":374,"column":2}},"133":{"start":{"line":347,"column":2},"end":{"line":347,"column":65}},"134":{"start":{"line":350,"column":2},"end":{"line":353,"column":3}},"135":{"start":{"line":351,"column":4},"end":{"line":351,"column":36}},"136":{"start":{"line":352,"column":4},"end":{"line":352,"column":38}},"137":{"start":{"line":356,"column":2},"end":{"line":356,"column":45}},"138":{"start":{"line":359,"column":2},"end":{"line":361,"column":3}},"139":{"start":{"line":360,"column":4},"end":{"line":360,"column":54}},"140":{"start":{"line":364,"column":2},"end":{"line":366,"column":3}},"141":{"start":{"line":365,"column":4},"end":{"line":365,"column":78}},"142":{"start":{"line":368,"column":2},"end":{"line":368,"column":58}},"143":{"start":{"line":371,"column":2},"end":{"line":371,"column":31}},"144":{"start":{"line":373,"column":2},"end":{"line":373,"column":9}},"145":{"start":{"line":379,"column":0},"end":{"line":381,"column":2}},"146":{"start":{"line":384,"column":0},"end":{"line":391,"column":2}},"147":{"start":{"line":386,"column":2},"end":{"line":386,"column":88}},"148":{"start":{"line":387,"column":2},"end":{"line":387,"column":40}},"149":{"start":{"line":390,"column":2},"end":{"line":390,"column":45}},"150":{"start":{"line":394,"column":0},"end":{"line":401,"column":2}},"151":{"start":{"line":395,"column":2},"end":{"line":400,"column":3}},"152":{"start":{"line":396,"column":4},"end":{"line":396,"column":92}},"153":{"start":{"line":398,"column":4},"end":{"line":398,"column":97}},"154":{"start":{"line":399,"column":4},"end":{"line":399,"column":23}},"155":{"start":{"line":404,"column":0},"end":{"line":408,"column":2}},"156":{"start":{"line":405,"column":2},"end":{"line":407,"column":3}},"157":{"start":{"line":406,"column":4},"end":{"line":406,"column":57}},"158":{"start":{"line":411,"column":0},"end":{"line":421,"column":2}},"159":{"start":{"line":412,"column":2},"end":{"line":417,"column":5}},"160":{"start":{"line":418,"column":2},"end":{"line":420,"column":3}},"161":{"start":{"line":419,"column":4},"end":{"line":419,"column":49}},"162":{"start":{"line":433,"column":0},"end":{"line":438,"column":2}},"163":{"start":{"line":434,"column":2},"end":{"line":434,"column":19}},"164":{"start":{"line":435,"column":2},"end":{"line":435,"column":37}},"165":{"start":{"line":436,"column":2},"end":{"line":436,"column":41}},"166":{"start":{"line":437,"column":2},"end":{"line":437,"column":23}},"167":{"start":{"line":441,"column":0},"end":{"line":449,"column":2}},"168":{"start":{"line":442,"column":2},"end":{"line":447,"column":29}},"169":{"start":{"line":443,"column":4},"end":{"line":443,"column":16}},"170":{"start":{"line":444,"column":4},"end":{"line":446,"column":5}},"171":{"start":{"line":445,"column":6},"end":{"line":445,"column":54}},"172":{"start":{"line":448,"column":2},"end":{"line":448,"column":12}},"173":{"start":{"line":452,"column":0},"end":{"line":466,"column":2}},"174":{"start":{"line":453,"column":2},"end":{"line":453,"column":34}},"175":{"start":{"line":454,"column":2},"end":{"line":454,"column":35}},"176":{"start":{"line":455,"column":2},"end":{"line":455,"column":29}},"177":{"start":{"line":457,"column":2},"end":{"line":457,"column":51}},"178":{"start":{"line":458,"column":2},"end":{"line":465,"column":5}},"179":{"start":{"line":469,"column":0},"end":{"line":494,"column":2}},"180":{"start":{"line":470,"column":2},"end":{"line":493,"column":3}},"181":{"start":{"line":471,"column":4},"end":{"line":471,"column":40}},"182":{"start":{"line":472,"column":4},"end":{"line":481,"column":5}},"183":{"start":{"line":473,"column":6},"end":{"line":473,"column":76}},"184":{"start":{"line":474,"column":6},"end":{"line":474,"column":37}},"185":{"start":{"line":475,"column":6},"end":{"line":477,"column":7}},"186":{"start":{"line":476,"column":8},"end":{"line":476,"column":19}},"187":{"start":{"line":478,"column":6},"end":{"line":478,"column":29}},"188":{"start":{"line":480,"column":6},"end":{"line":480,"column":71}},"189":{"start":{"line":484,"column":4},"end":{"line":484,"column":61}},"190":{"start":{"line":485,"column":4},"end":{"line":492,"column":7}},"191":{"start":{"line":497,"column":0},"end":{"line":513,"column":2}},"192":{"start":{"line":498,"column":2},"end":{"line":501,"column":3}},"193":{"start":{"line":499,"column":4},"end":{"line":499,"column":67}},"194":{"start":{"line":500,"column":4},"end":{"line":500,"column":11}},"195":{"start":{"line":503,"column":2},"end":{"line":503,"column":62}},"196":{"start":{"line":504,"column":2},"end":{"line":510,"column":5}},"197":{"start":{"line":511,"column":2},"end":{"line":511,"column":18}},"198":{"start":{"line":512,"column":2},"end":{"line":512,"column":22}},"199":{"start":{"line":515,"column":0},"end":{"line":522,"column":2}},"200":{"start":{"line":516,"column":2},"end":{"line":516,"column":77}},"201":{"start":{"line":517,"column":2},"end":{"line":517,"column":18}},"202":{"start":{"line":518,"column":2},"end":{"line":518,"column":22}},"203":{"start":{"line":519,"column":2},"end":{"line":521,"column":3}},"204":{"start":{"line":520,"column":4},"end":{"line":520,"column":40}},"205":{"start":{"line":527,"column":0},"end":{"line":541,"column":2}},"206":{"start":{"line":529,"column":2},"end":{"line":529,"column":61}},"207":{"start":{"line":530,"column":2},"end":{"line":535,"column":5}},"208":{"start":{"line":531,"column":4},"end":{"line":531,"column":68}},"209":{"start":{"line":532,"column":4},"end":{"line":534,"column":5}},"210":{"start":{"line":533,"column":6},"end":{"line":533,"column":49}},"211":{"start":{"line":536,"column":2},"end":{"line":536,"column":86}},"212":{"start":{"line":537,"column":2},"end":{"line":537,"column":80}},"213":{"start":{"line":538,"column":2},"end":{"line":538,"column":79}},"214":{"start":{"line":539,"column":2},"end":{"line":539,"column":68}},"215":{"start":{"line":540,"column":2},"end":{"line":540,"column":76}},"216":{"start":{"line":544,"column":0},"end":{"line":544,"column":39}},"217":{"start":{"line":550,"column":0},"end":{"line":561,"column":2}},"218":{"start":{"line":551,"column":2},"end":{"line":560,"column":3}},"219":{"start":{"line":552,"column":4},"end":{"line":552,"column":112}},"220":{"start":{"line":553,"column":4},"end":{"line":553,"column":45}},"221":{"start":{"line":555,"column":4},"end":{"line":555,"column":76}},"222":{"start":{"line":556,"column":4},"end":{"line":556,"column":41}},"223":{"start":{"line":557,"column":4},"end":{"line":559,"column":7}},"224":{"start":{"line":558,"column":6},"end":{"line":558,"column":45}},"225":{"start":{"line":565,"column":0},"end":{"line":573,"column":2}},"226":{"start":{"line":566,"column":2},"end":{"line":572,"column":3}},"227":{"start":{"line":567,"column":4},"end":{"line":567,"column":35}},"228":{"start":{"line":568,"column":4},"end":{"line":568,"column":47}},"229":{"start":{"line":569,"column":9},"end":{"line":572,"column":3}},"230":{"start":{"line":570,"column":4},"end":{"line":570,"column":81}},"231":{"start":{"line":571,"column":4},"end":{"line":571,"column":45}},"232":{"start":{"line":575,"column":0},"end":{"line":585,"column":2}},"233":{"start":{"line":576,"column":2},"end":{"line":584,"column":3}},"234":{"start":{"line":577,"column":4},"end":{"line":577,"column":36}},"235":{"start":{"line":578,"column":4},"end":{"line":580,"column":7}},"236":{"start":{"line":579,"column":6},"end":{"line":579,"column":49}},"237":{"start":{"line":581,"column":9},"end":{"line":584,"column":3}},"238":{"start":{"line":582,"column":4},"end":{"line":582,"column":81}},"239":{"start":{"line":583,"column":4},"end":{"line":583,"column":81}}},"branchMap":{"1":{"line":124,"type":"if","locations":[{"start":{"line":124,"column":2},"end":{"line":124,"column":2}},{"start":{"line":124,"column":2},"end":{"line":124,"column":2}}]},"2":{"line":124,"type":"binary-expr","locations":[{"start":{"line":124,"column":7},"end":{"line":124,"column":32}},{"start":{"line":124,"column":38},"end":{"line":124,"column":59}},{"start":{"line":125,"column":7},"end":{"line":125,"column":30}},{"start":{"line":125,"column":36},"end":{"line":125,"column":66}}]},"3":{"line":136,"type":"binary-expr","locations":[{"start":{"line":136,"column":16},"end":{"line":136,"column":43}},{"start":{"line":136,"column":49},"end":{"line":136,"column":83}}]},"4":{"line":139,"type":"if","locations":[{"start":{"line":139,"column":2},"end":{"line":139,"column":2}},{"start":{"line":139,"column":2},"end":{"line":139,"column":2}}]},"5":{"line":145,"type":"if","locations":[{"start":{"line":145,"column":2},"end":{"line":145,"column":2}},{"start":{"line":145,"column":2},"end":{"line":145,"column":2}}]},"6":{"line":148,"type":"binary-expr","locations":[{"start":{"line":148,"column":18},"end":{"line":148,"column":45}},{"start":{"line":148,"column":51},"end":{"line":148,"column":61}}]},"7":{"line":150,"type":"if","locations":[{"start":{"line":150,"column":4},"end":{"line":150,"column":4}},{"start":{"line":150,"column":4},"end":{"line":150,"column":4}}]},"8":{"line":166,"type":"if","locations":[{"start":{"line":166,"column":2},"end":{"line":166,"column":2}},{"start":{"line":166,"column":2},"end":{"line":166,"column":2}}]},"9":{"line":172,"type":"if","locations":[{"start":{"line":172,"column":7},"end":{"line":172,"column":7}},{"start":{"line":172,"column":7},"end":{"line":172,"column":7}}]},"10":{"line":172,"type":"binary-expr","locations":[{"start":{"line":172,"column":12},"end":{"line":172,"column":41}},{"start":{"line":172,"column":47},"end":{"line":172,"column":82}}]},"11":{"line":208,"type":"if","locations":[{"start":{"line":208,"column":2},"end":{"line":208,"column":2}},{"start":{"line":208,"column":2},"end":{"line":208,"column":2}}]},"12":{"line":220,"type":"if","locations":[{"start":{"line":220,"column":2},"end":{"line":220,"column":2}},{"start":{"line":220,"column":2},"end":{"line":220,"column":2}}]},"13":{"line":264,"type":"if","locations":[{"start":{"line":264,"column":2},"end":{"line":264,"column":2}},{"start":{"line":264,"column":2},"end":{"line":264,"column":2}}]},"14":{"line":269,"type":"if","locations":[{"start":{"line":269,"column":2},"end":{"line":269,"column":2}},{"start":{"line":269,"column":2},"end":{"line":269,"column":2}}]},"15":{"line":272,"type":"if","locations":[{"start":{"line":272,"column":4},"end":{"line":272,"column":4}},{"start":{"line":272,"column":4},"end":{"line":272,"column":4}}]},"16":{"line":301,"type":"cond-expr","locations":[{"start":{"line":301,"column":62},"end":{"line":301,"column":74}},{"start":{"line":301,"column":77},"end":{"line":301,"column":79}}]},"17":{"line":303,"type":"if","locations":[{"start":{"line":303,"column":8},"end":{"line":303,"column":8}},{"start":{"line":303,"column":8},"end":{"line":303,"column":8}}]},"18":{"line":305,"type":"if","locations":[{"start":{"line":305,"column":15},"end":{"line":305,"column":15}},{"start":{"line":305,"column":15},"end":{"line":305,"column":15}}]},"19":{"line":312,"type":"if","locations":[{"start":{"line":312,"column":8},"end":{"line":312,"column":8}},{"start":{"line":312,"column":8},"end":{"line":312,"column":8}}]},"20":{"line":313,"type":"binary-expr","locations":[{"start":{"line":313,"column":25},"end":{"line":313,"column":34}},{"start":{"line":313,"column":38},"end":{"line":313,"column":62}}]},"21":{"line":316,"type":"if","locations":[{"start":{"line":316,"column":8},"end":{"line":316,"column":8}},{"start":{"line":316,"column":8},"end":{"line":316,"column":8}}]},"22":{"line":326,"type":"if","locations":[{"start":{"line":326,"column":8},"end":{"line":326,"column":8}},{"start":{"line":326,"column":8},"end":{"line":326,"column":8}}]},"23":{"line":337,"type":"if","locations":[{"start":{"line":337,"column":2},"end":{"line":337,"column":2}},{"start":{"line":337,"column":2},"end":{"line":337,"column":2}}]},"24":{"line":350,"type":"if","locations":[{"start":{"line":350,"column":2},"end":{"line":350,"column":2}},{"start":{"line":350,"column":2},"end":{"line":350,"column":2}}]},"25":{"line":359,"type":"if","locations":[{"start":{"line":359,"column":2},"end":{"line":359,"column":2}},{"start":{"line":359,"column":2},"end":{"line":359,"column":2}}]},"26":{"line":364,"type":"if","locations":[{"start":{"line":364,"column":2},"end":{"line":364,"column":2}},{"start":{"line":364,"column":2},"end":{"line":364,"column":2}}]},"27":{"line":387,"type":"binary-expr","locations":[{"start":{"line":387,"column":11},"end":{"line":387,"column":19}},{"start":{"line":387,"column":23},"end":{"line":387,"column":38}}]},"28":{"line":395,"type":"if","locations":[{"start":{"line":395,"column":2},"end":{"line":395,"column":2}},{"start":{"line":395,"column":2},"end":{"line":395,"column":2}}]},"29":{"line":395,"type":"binary-expr","locations":[{"start":{"line":395,"column":7},"end":{"line":395,"column":25}},{"start":{"line":395,"column":31},"end":{"line":395,"column":56}}]},"30":{"line":470,"type":"if","locations":[{"start":{"line":470,"column":2},"end":{"line":470,"column":2}},{"start":{"line":470,"column":2},"end":{"line":470,"column":2}}]},"31":{"line":472,"type":"if","locations":[{"start":{"line":472,"column":4},"end":{"line":472,"column":4}},{"start":{"line":472,"column":4},"end":{"line":472,"column":4}}]},"32":{"line":475,"type":"if","locations":[{"start":{"line":475,"column":6},"end":{"line":475,"column":6}},{"start":{"line":475,"column":6},"end":{"line":475,"column":6}}]},"33":{"line":498,"type":"if","locations":[{"start":{"line":498,"column":2},"end":{"line":498,"column":2}},{"start":{"line":498,"column":2},"end":{"line":498,"column":2}}]},"34":{"line":509,"type":"binary-expr","locations":[{"start":{"line":509,"column":11},"end":{"line":509,"column":16}},{"start":{"line":509,"column":20},"end":{"line":509,"column":30}}]},"35":{"line":519,"type":"if","locations":[{"start":{"line":519,"column":2},"end":{"line":519,"column":2}},{"start":{"line":519,"column":2},"end":{"line":519,"column":2}}]},"36":{"line":532,"type":"if","locations":[{"start":{"line":532,"column":4},"end":{"line":532,"column":4}},{"start":{"line":532,"column":4},"end":{"line":532,"column":4}}]},"37":{"line":551,"type":"if","locations":[{"start":{"line":551,"column":2},"end":{"line":551,"column":2}},{"start":{"line":551,"column":2},"end":{"line":551,"column":2}}]},"38":{"line":551,"type":"binary-expr","locations":[{"start":{"line":551,"column":7},"end":{"line":551,"column":49}},{"start":{"line":551,"column":55},"end":{"line":551,"column":72}}]},"39":{"line":566,"type":"if","locations":[{"start":{"line":566,"column":2},"end":{"line":566,"column":2}},{"start":{"line":566,"column":2},"end":{"line":566,"column":2}}]},"40":{"line":569,"type":"if","locations":[{"start":{"line":569,"column":9},"end":{"line":569,"column":9}},{"start":{"line":569,"column":9},"end":{"line":569,"column":9}}]},"41":{"line":576,"type":"if","locations":[{"start":{"line":576,"column":2},"end":{"line":576,"column":2}},{"start":{"line":576,"column":2},"end":{"line":576,"column":2}}]},"42":{"line":581,"type":"if","locations":[{"start":{"line":581,"column":9},"end":{"line":581,"column":9}},{"start":{"line":581,"column":9},"end":{"line":581,"column":9}}]}}},"/data/upstream/node-http2/lib/flow.js":{"path":"/data/upstream/node-http2/lib/flow.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":164,"7":164,"8":164,"9":164,"10":164,"11":164,"12":164,"13":1,"14":1,"15":1,"16":1,"17":281,"18":63,"19":281,"20":111,"21":111,"22":111,"23":13,"24":111,"25":170,"26":281,"27":6,"28":1,"29":13,"30":13,"31":7,"32":7,"33":1,"34":45,"35":45,"36":1,"37":1,"38":1,"39":234,"40":217,"41":17,"42":8,"43":8,"44":9,"45":9,"46":7,"47":8,"48":8,"49":9,"50":1,"51":1,"52":627,"53":130,"54":497,"55":0,"56":497,"57":497,"58":497,"59":497,"60":497,"61":405,"62":193,"63":405,"64":92,"65":0,"66":0,"67":0,"68":92,"69":92,"70":92,"71":92,"72":0,"73":92,"74":1,"75":211,"76":211,"77":29,"78":29,"79":29,"80":211,"81":1,"82":212,"83":212,"84":204,"85":8,"86":1,"87":7,"88":7,"89":7,"90":7,"91":1,"92":204,"93":6,"94":198,"95":204,"96":204,"97":203,"98":204,"99":7,"100":204,"101":1,"102":36,"103":36,"104":1,"105":1,"106":88,"107":1,"108":1,"109":87,"110":87,"111":87,"112":1,"113":1,"114":86,"115":1,"116":6,"117":1,"118":52,"119":52,"120":1,"121":1},"b":{"1":[63,218],"2":[281,218],"3":[111,170],"4":[281,143,140],"5":[13,98],"6":[6,275],"7":[281,6,6],"8":[7,6],"9":[13,7,7],"10":[217,17],"11":[8,9],"12":[9,7],"13":[7,2],"14":[8,8,2,2],"15":[130,497],"16":[0,497],"17":[497,0],"18":[497,146],"19":[497,212],"20":[405,92],"21":[497,288,144],"22":[193,212],"23":[0,92],"24":[0,0],"25":[0,92],"26":[29,182],"27":[211,205,52],"28":[212,206,53],"29":[204,8],"30":[212,53],"31":[1,7],"32":[6,198],"33":[203,1],"34":[7,197],"35":[36,36],"36":[1,87],"37":[88,2],"38":[1,86],"39":[87,38],"40":[0,6]},"f":{"1":164,"2":1,"3":281,"4":111,"5":13,"6":45,"7":1,"8":234,"9":627,"10":211,"11":212,"12":204,"13":36,"14":88,"15":6,"16":52,"17":1},"fnMap":{"1":{"name":"Flow","line":63,"loc":{"start":{"line":63,"column":0},"end":{"line":63,"column":29}}},"2":{"name":"_receive","line":79,"loc":{"start":{"line":79,"column":26},"end":{"line":79,"column":61}}},"3":{"name":"_write","line":87,"loc":{"start":{"line":87,"column":24},"end":{"line":87,"column":67}}},"4":{"name":"(anonymous_4)","line":93,"loc":{"start":{"line":93,"column":25},"end":{"line":93,"column":36}}},"5":{"name":"_restoreWindow","line":114,"loc":{"start":{"line":114,"column":32},"end":{"line":114,"column":58}}},"6":{"name":"disableRemoteFlowControl","line":128,"loc":{"start":{"line":128,"column":42},"end":{"line":128,"column":78}}},"7":{"name":"_send","line":152,"loc":{"start":{"line":152,"column":23},"end":{"line":152,"column":40}}},"8":{"name":"_read","line":159,"loc":{"start":{"line":159,"column":23},"end":{"line":159,"column":40}}},"9":{"name":"read","line":193,"loc":{"start":{"line":193,"column":22},"end":{"line":193,"column":43}}},"10":{"name":"_parentPush","line":240,"loc":{"start":{"line":240,"column":29},"end":{"line":240,"column":57}}},"11":{"name":"_push","line":257,"loc":{"start":{"line":257,"column":23},"end":{"line":257,"column":45}}},"12":{"name":"push","line":283,"loc":{"start":{"line":283,"column":22},"end":{"line":283,"column":43}}},"13":{"name":"getLastQueuedFrame","line":304,"loc":{"start":{"line":304,"column":36},"end":{"line":304,"column":66}}},"14":{"name":"_increaseWindow","line":322,"loc":{"start":{"line":322,"column":33},"end":{"line":322,"column":64}}},"15":{"name":"_updateWindow","line":346,"loc":{"start":{"line":346,"column":31},"end":{"line":346,"column":61}}},"16":{"name":"setInitialWindow","line":354,"loc":{"start":{"line":354,"column":34},"end":{"line":354,"column":75}}},"17":{"name":"disableLocalFlowControl","line":360,"loc":{"start":{"line":360,"column":41},"end":{"line":360,"column":76}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":31}},"2":{"start":{"line":10,"column":0},"end":{"line":10,"column":39}},"3":{"start":{"line":12,"column":0},"end":{"line":12,"column":20}},"4":{"start":{"line":60,"column":0},"end":{"line":60,"column":32}},"5":{"start":{"line":63,"column":0},"end":{"line":72,"column":1}},"6":{"start":{"line":64,"column":2},"end":{"line":64,"column":42}},"7":{"start":{"line":66,"column":2},"end":{"line":66,"column":59}},"8":{"start":{"line":67,"column":2},"end":{"line":67,"column":38}},"9":{"start":{"line":68,"column":2},"end":{"line":68,"column":19}},"10":{"start":{"line":69,"column":2},"end":{"line":69,"column":22}},"11":{"start":{"line":70,"column":2},"end":{"line":70,"column":21}},"12":{"start":{"line":71,"column":2},"end":{"line":71,"column":42}},"13":{"start":{"line":73,"column":0},"end":{"line":73,"column":83}},"14":{"start":{"line":79,"column":0},"end":{"line":81,"column":2}},"15":{"start":{"line":80,"column":2},"end":{"line":80,"column":99}},"16":{"start":{"line":87,"column":0},"end":{"line":110,"column":2}},"17":{"start":{"line":88,"column":2},"end":{"line":90,"column":3}},"18":{"start":{"line":89,"column":4},"end":{"line":89,"column":23}},"19":{"start":{"line":92,"column":2},"end":{"line":104,"column":3}},"20":{"start":{"line":93,"column":4},"end":{"line":99,"column":18}},"21":{"start":{"line":94,"column":6},"end":{"line":94,"column":42}},"22":{"start":{"line":95,"column":6},"end":{"line":97,"column":7}},"23":{"start":{"line":96,"column":8},"end":{"line":96,"column":80}},"24":{"start":{"line":98,"column":6},"end":{"line":98,"column":17}},"25":{"start":{"line":103,"column":4},"end":{"line":103,"column":35}},"26":{"start":{"line":106,"column":2},"end":{"line":109,"column":3}},"27":{"start":{"line":108,"column":4},"end":{"line":108,"column":30}},"28":{"start":{"line":114,"column":0},"end":{"line":125,"column":2}},"29":{"start":{"line":115,"column":2},"end":{"line":115,"column":34}},"30":{"start":{"line":116,"column":2},"end":{"line":124,"column":3}},"31":{"start":{"line":117,"column":4},"end":{"line":122,"column":7}},"32":{"start":{"line":123,"column":4},"end":{"line":123,"column":23}},"33":{"start":{"line":128,"column":0},"end":{"line":131,"column":2}},"34":{"start":{"line":129,"column":2},"end":{"line":129,"column":53}},"35":{"start":{"line":130,"column":2},"end":{"line":130,"column":41}},"36":{"start":{"line":152,"column":0},"end":{"line":154,"column":2}},"37":{"start":{"line":153,"column":2},"end":{"line":153,"column":81}},"38":{"start":{"line":159,"column":0},"end":{"line":186,"column":2}},"39":{"start":{"line":161,"column":2},"end":{"line":185,"column":3}},"40":{"start":{"line":162,"column":4},"end":{"line":162,"column":17}},"41":{"start":{"line":167,"column":7},"end":{"line":185,"column":3}},"42":{"start":{"line":168,"column":4},"end":{"line":168,"column":36}},"43":{"start":{"line":169,"column":4},"end":{"line":174,"column":53}},"44":{"start":{"line":170,"column":6},"end":{"line":170,"column":50}},"45":{"start":{"line":171,"column":6},"end":{"line":173,"column":7}},"46":{"start":{"line":172,"column":8},"end":{"line":172,"column":28}},"47":{"start":{"line":175,"column":4},"end":{"line":175,"column":37}},"48":{"start":{"line":177,"column":4},"end":{"line":179,"column":64}},"49":{"start":{"line":184,"column":4},"end":{"line":184,"column":43}},"50":{"start":{"line":188,"column":0},"end":{"line":188,"column":28}},"51":{"start":{"line":193,"column":0},"end":{"line":237,"column":2}},"52":{"start":{"line":194,"column":2},"end":{"line":200,"column":3}},"53":{"start":{"line":195,"column":4},"end":{"line":195,"column":47}},"54":{"start":{"line":196,"column":9},"end":{"line":200,"column":3}},"55":{"start":{"line":197,"column":4},"end":{"line":197,"column":14}},"56":{"start":{"line":198,"column":9},"end":{"line":200,"column":3}},"57":{"start":{"line":199,"column":4},"end":{"line":199,"column":29}},"58":{"start":{"line":204,"column":2},"end":{"line":204,"column":51}},"59":{"start":{"line":205,"column":2},"end":{"line":205,"column":63}},"60":{"start":{"line":207,"column":2},"end":{"line":236,"column":3}},"61":{"start":{"line":208,"column":4},"end":{"line":210,"column":5}},"62":{"start":{"line":209,"column":6},"end":{"line":209,"column":39}},"63":{"start":{"line":211,"column":4},"end":{"line":211,"column":17}},"64":{"start":{"line":214,"column":7},"end":{"line":236,"column":3}},"65":{"start":{"line":215,"column":4},"end":{"line":217,"column":5}},"66":{"start":{"line":216,"column":6},"end":{"line":216,"column":26}},"67":{"start":{"line":218,"column":4},"end":{"line":218,"column":16}},"68":{"start":{"line":222,"column":4},"end":{"line":223,"column":71}},"69":{"start":{"line":224,"column":4},"end":{"line":229,"column":6}},"70":{"start":{"line":230,"column":4},"end":{"line":230,"column":41}},"71":{"start":{"line":232,"column":4},"end":{"line":234,"column":5}},"72":{"start":{"line":233,"column":6},"end":{"line":233,"column":26}},"73":{"start":{"line":235,"column":4},"end":{"line":235,"column":23}},"74":{"start":{"line":240,"column":0},"end":{"line":251,"column":2}},"75":{"start":{"line":241,"column":2},"end":{"line":241,"column":75}},"76":{"start":{"line":243,"column":2},"end":{"line":248,"column":3}},"77":{"start":{"line":244,"column":4},"end":{"line":245,"column":60}},"78":{"start":{"line":246,"column":4},"end":{"line":246,"column":38}},"79":{"start":{"line":247,"column":4},"end":{"line":247,"column":30}},"80":{"start":{"line":250,"column":2},"end":{"line":250,"column":49}},"81":{"start":{"line":257,"column":0},"end":{"line":280,"column":2}},"82":{"start":{"line":258,"column":2},"end":{"line":258,"column":60}},"83":{"start":{"line":260,"column":2},"end":{"line":279,"column":3}},"84":{"start":{"line":261,"column":4},"end":{"line":261,"column":35}},"85":{"start":{"line":264,"column":7},"end":{"line":279,"column":3}},"86":{"start":{"line":265,"column":4},"end":{"line":265,"column":16}},"87":{"start":{"line":269,"column":4},"end":{"line":270,"column":71}},"88":{"start":{"line":271,"column":4},"end":{"line":271,"column":42}},"89":{"start":{"line":272,"column":4},"end":{"line":277,"column":7}},"90":{"start":{"line":278,"column":4},"end":{"line":278,"column":16}},"91":{"start":{"line":283,"column":0},"end":{"line":300,"column":2}},"92":{"start":{"line":284,"column":2},"end":{"line":288,"column":3}},"93":{"start":{"line":285,"column":4},"end":{"line":285,"column":57}},"94":{"start":{"line":287,"column":4},"end":{"line":287,"column":67}},"95":{"start":{"line":290,"column":2},"end":{"line":290,"column":24}},"96":{"start":{"line":291,"column":2},"end":{"line":293,"column":3}},"97":{"start":{"line":292,"column":4},"end":{"line":292,"column":35}},"98":{"start":{"line":295,"column":2},"end":{"line":297,"column":3}},"99":{"start":{"line":296,"column":4},"end":{"line":296,"column":28}},"100":{"start":{"line":299,"column":2},"end":{"line":299,"column":20}},"101":{"start":{"line":304,"column":0},"end":{"line":307,"column":2}},"102":{"start":{"line":305,"column":2},"end":{"line":305,"column":49}},"103":{"start":{"line":306,"column":2},"end":{"line":306,"column":88}},"104":{"start":{"line":320,"column":0},"end":{"line":320,"column":44}},"105":{"start":{"line":322,"column":0},"end":{"line":336,"column":2}},"106":{"start":{"line":323,"column":2},"end":{"line":335,"column":3}},"107":{"start":{"line":324,"column":4},"end":{"line":324,"column":97}},"108":{"start":{"line":325,"column":4},"end":{"line":325,"column":45}},"109":{"start":{"line":327,"column":4},"end":{"line":327,"column":96}},"110":{"start":{"line":328,"column":4},"end":{"line":328,"column":25}},"111":{"start":{"line":329,"column":4},"end":{"line":334,"column":5}},"112":{"start":{"line":330,"column":6},"end":{"line":330,"column":61}},"113":{"start":{"line":331,"column":6},"end":{"line":331,"column":47}},"114":{"start":{"line":333,"column":6},"end":{"line":333,"column":33}},"115":{"start":{"line":346,"column":0},"end":{"line":348,"column":2}},"116":{"start":{"line":347,"column":2},"end":{"line":347,"column":84}},"117":{"start":{"line":354,"column":0},"end":{"line":357,"column":2}},"118":{"start":{"line":355,"column":2},"end":{"line":355,"column":60}},"119":{"start":{"line":356,"column":2},"end":{"line":356,"column":38}},"120":{"start":{"line":360,"column":0},"end":{"line":362,"column":2}},"121":{"start":{"line":361,"column":2},"end":{"line":361,"column":33}}},"branchMap":{"1":{"line":88,"type":"if","locations":[{"start":{"line":88,"column":2},"end":{"line":88,"column":2}},{"start":{"line":88,"column":2},"end":{"line":88,"column":2}}]},"2":{"line":88,"type":"binary-expr","locations":[{"start":{"line":88,"column":6},"end":{"line":88,"column":28}},{"start":{"line":88,"column":33},"end":{"line":88,"column":60}}]},"3":{"line":92,"type":"if","locations":[{"start":{"line":92,"column":2},"end":{"line":92,"column":2}},{"start":{"line":92,"column":2},"end":{"line":92,"column":2}}]},"4":{"line":92,"type":"binary-expr","locations":[{"start":{"line":92,"column":7},"end":{"line":92,"column":28}},{"start":{"line":92,"column":34},"end":{"line":92,"column":55}},{"start":{"line":92,"column":60},"end":{"line":92,"column":92}}]},"5":{"line":95,"type":"if","locations":[{"start":{"line":95,"column":6},"end":{"line":95,"column":6}},{"start":{"line":95,"column":6},"end":{"line":95,"column":6}}]},"6":{"line":106,"type":"if","locations":[{"start":{"line":106,"column":2},"end":{"line":106,"column":2}},{"start":{"line":106,"column":2},"end":{"line":106,"column":2}}]},"7":{"line":106,"type":"binary-expr","locations":[{"start":{"line":106,"column":7},"end":{"line":106,"column":37}},{"start":{"line":107,"column":8},"end":{"line":107,"column":41}},{"start":{"line":107,"column":47},"end":{"line":107,"column":83}}]},"8":{"line":116,"type":"if","locations":[{"start":{"line":116,"column":2},"end":{"line":116,"column":2}},{"start":{"line":116,"column":2},"end":{"line":116,"column":2}}]},"9":{"line":116,"type":"binary-expr","locations":[{"start":{"line":116,"column":6},"end":{"line":116,"column":18}},{"start":{"line":116,"column":22},"end":{"line":116,"column":54}},{"start":{"line":116,"column":59},"end":{"line":116,"column":77}}]},"10":{"line":161,"type":"if","locations":[{"start":{"line":161,"column":2},"end":{"line":161,"column":2}},{"start":{"line":161,"column":2},"end":{"line":161,"column":2}}]},"11":{"line":167,"type":"if","locations":[{"start":{"line":167,"column":7},"end":{"line":167,"column":7}},{"start":{"line":167,"column":7},"end":{"line":167,"column":7}}]},"12":{"line":174,"type":"binary-expr","locations":[{"start":{"line":174,"column":13},"end":{"line":174,"column":23}},{"start":{"line":174,"column":28},"end":{"line":174,"column":50}}]},"13":{"line":171,"type":"if","locations":[{"start":{"line":171,"column":6},"end":{"line":171,"column":6}},{"start":{"line":171,"column":6},"end":{"line":171,"column":6}}]},"14":{"line":177,"type":"binary-expr","locations":[{"start":{"line":177,"column":12},"end":{"line":177,"column":31}},{"start":{"line":178,"column":12},"end":{"line":178,"column":36}},{"start":{"line":179,"column":12},"end":{"line":179,"column":25}},{"start":{"line":179,"column":30},"end":{"line":179,"column":60}}]},"15":{"line":194,"type":"if","locations":[{"start":{"line":194,"column":2},"end":{"line":194,"column":2}},{"start":{"line":194,"column":2},"end":{"line":194,"column":2}}]},"16":{"line":196,"type":"if","locations":[{"start":{"line":196,"column":9},"end":{"line":196,"column":9}},{"start":{"line":196,"column":9},"end":{"line":196,"column":9}}]},"17":{"line":198,"type":"if","locations":[{"start":{"line":198,"column":9},"end":{"line":198,"column":9}},{"start":{"line":198,"column":9},"end":{"line":198,"column":9}}]},"18":{"line":198,"type":"binary-expr","locations":[{"start":{"line":198,"column":14},"end":{"line":198,"column":33}},{"start":{"line":198,"column":39},"end":{"line":198,"column":63}}]},"19":{"line":205,"type":"binary-expr","locations":[{"start":{"line":205,"column":14},"end":{"line":205,"column":26}},{"start":{"line":205,"column":30},"end":{"line":205,"column":62}}]},"20":{"line":207,"type":"if","locations":[{"start":{"line":207,"column":2},"end":{"line":207,"column":2}},{"start":{"line":207,"column":2},"end":{"line":207,"column":2}}]},"21":{"line":207,"type":"binary-expr","locations":[{"start":{"line":207,"column":7},"end":{"line":207,"column":21}},{"start":{"line":207,"column":27},"end":{"line":207,"column":48}},{"start":{"line":207,"column":54},"end":{"line":207,"column":80}}]},"22":{"line":208,"type":"if","locations":[{"start":{"line":208,"column":4},"end":{"line":208,"column":4}},{"start":{"line":208,"column":4},"end":{"line":208,"column":4}}]},"23":{"line":214,"type":"if","locations":[{"start":{"line":214,"column":7},"end":{"line":214,"column":7}},{"start":{"line":214,"column":7},"end":{"line":214,"column":7}}]},"24":{"line":215,"type":"if","locations":[{"start":{"line":215,"column":4},"end":{"line":215,"column":4}},{"start":{"line":215,"column":4},"end":{"line":215,"column":4}}]},"25":{"line":232,"type":"if","locations":[{"start":{"line":232,"column":4},"end":{"line":232,"column":4}},{"start":{"line":232,"column":4},"end":{"line":232,"column":4}}]},"26":{"line":243,"type":"if","locations":[{"start":{"line":243,"column":2},"end":{"line":243,"column":2}},{"start":{"line":243,"column":2},"end":{"line":243,"column":2}}]},"27":{"line":243,"type":"binary-expr","locations":[{"start":{"line":243,"column":6},"end":{"line":243,"column":11}},{"start":{"line":243,"column":16},"end":{"line":243,"column":37}},{"start":{"line":243,"column":43},"end":{"line":243,"column":68}}]},"28":{"line":258,"type":"binary-expr","locations":[{"start":{"line":258,"column":13},"end":{"line":258,"column":18}},{"start":{"line":258,"column":23},"end":{"line":258,"column":44}},{"start":{"line":258,"column":49},"end":{"line":258,"column":59}}]},"29":{"line":260,"type":"if","locations":[{"start":{"line":260,"column":2},"end":{"line":260,"column":2}},{"start":{"line":260,"column":2},"end":{"line":260,"column":2}}]},"30":{"line":260,"type":"binary-expr","locations":[{"start":{"line":260,"column":6},"end":{"line":260,"column":11}},{"start":{"line":260,"column":16},"end":{"line":260,"column":43}}]},"31":{"line":264,"type":"if","locations":[{"start":{"line":264,"column":7},"end":{"line":264,"column":7}},{"start":{"line":264,"column":7},"end":{"line":264,"column":7}}]},"32":{"line":284,"type":"if","locations":[{"start":{"line":284,"column":2},"end":{"line":284,"column":2}},{"start":{"line":284,"column":2},"end":{"line":284,"column":2}}]},"33":{"line":291,"type":"if","locations":[{"start":{"line":291,"column":2},"end":{"line":291,"column":2}},{"start":{"line":291,"column":2},"end":{"line":291,"column":2}}]},"34":{"line":295,"type":"if","locations":[{"start":{"line":295,"column":2},"end":{"line":295,"column":2}},{"start":{"line":295,"column":2},"end":{"line":295,"column":2}}]},"35":{"line":306,"type":"binary-expr","locations":[{"start":{"line":306,"column":9},"end":{"line":306,"column":44}},{"start":{"line":306,"column":48},"end":{"line":306,"column":87}}]},"36":{"line":323,"type":"if","locations":[{"start":{"line":323,"column":2},"end":{"line":323,"column":2}},{"start":{"line":323,"column":2},"end":{"line":323,"column":2}}]},"37":{"line":323,"type":"binary-expr","locations":[{"start":{"line":323,"column":7},"end":{"line":323,"column":32}},{"start":{"line":323,"column":38},"end":{"line":323,"column":55}}]},"38":{"line":329,"type":"if","locations":[{"start":{"line":329,"column":4},"end":{"line":329,"column":4}},{"start":{"line":329,"column":4},"end":{"line":329,"column":4}}]},"39":{"line":329,"type":"binary-expr","locations":[{"start":{"line":329,"column":9},"end":{"line":329,"column":34}},{"start":{"line":329,"column":40},"end":{"line":329,"column":72}}]},"40":{"line":347,"type":"cond-expr","locations":[{"start":{"line":347,"column":54},"end":{"line":347,"column":62}},{"start":{"line":347,"column":65},"end":{"line":347,"column":82}}]}}},"/data/upstream/node-http2/lib/stream.js":{"path":"/data/upstream/node-http2/lib/stream.js","s":{"1":1,"2":1,"3":1,"4":1,"5":105,"6":105,"7":105,"8":105,"9":105,"10":1,"11":1,"12":1,"13":1,"14":105,"15":105,"16":105,"17":1,"18":6,"19":6,"20":6,"21":6,"22":1,"23":6,"24":1,"25":44,"26":1,"27":43,"28":0,"29":43,"30":1,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":1,"42":0,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":105,"50":105,"51":105,"52":105,"53":105,"54":105,"55":105,"56":105,"57":105,"58":1,"59":71,"60":71,"61":1,"62":70,"63":70,"64":70,"65":70,"66":43,"67":27,"68":6,"69":21,"70":0,"71":21,"72":0,"73":0,"74":70,"75":1,"76":70,"77":21,"78":21,"79":0,"80":70,"81":35,"82":35,"83":70,"84":70,"85":1,"86":38,"87":0,"88":0,"89":0,"90":1,"91":19,"92":19,"93":0,"94":19,"95":1,"96":91,"97":19,"98":19,"99":19,"100":1,"101":1,"102":36,"103":36,"104":36,"105":35,"106":35,"107":35,"108":1,"109":1,"110":105,"111":105,"112":105,"113":105,"114":1,"115":145,"116":145,"117":145,"118":145,"119":1,"120":206,"121":1,"122":240,"123":240,"124":240,"125":240,"126":240,"127":88,"128":88,"129":95,"130":95,"131":8,"132":8,"133":15,"134":15,"135":24,"136":24,"137":10,"138":10,"139":240,"140":240,"141":52,"142":42,"143":42,"144":11,"145":42,"146":10,"147":1,"148":9,"149":52,"150":14,"151":4,"152":10,"153":2,"154":8,"155":8,"156":14,"157":14,"158":2,"159":12,"160":4,"161":8,"162":8,"163":14,"164":37,"165":21,"166":16,"167":2,"168":37,"169":42,"170":21,"171":21,"172":3,"173":42,"174":58,"175":22,"176":36,"177":3,"178":58,"179":23,"180":14,"181":23,"182":240,"183":50,"184":50,"185":240,"186":13,"187":13,"188":13,"189":240,"190":103,"191":103,"192":59,"193":44,"194":137,"195":72,"196":240,"197":45,"198":45,"199":20,"200":20,"201":25,"202":25,"203":1,"204":1,"205":1,"206":6,"207":2,"208":2,"209":6},"b":{"1":[0,43],"2":[0,0],"3":[0,0,0],"4":[0,0],"5":[0,0],"6":[0,0,0],"7":[1,0],"8":[43,27],"9":[6,21],"10":[0,21],"11":[0,21],"12":[21,0,0],"13":[21,49],"14":[70,70],"15":[0,21],"16":[35,35],"17":[70,70,35],"18":[70,0],"19":[0,38],"20":[0,19],"21":[19,72],"22":[35,1],"23":[36,35,17],"24":[206,139,121],"25":[88,95,8,15,24,10],"26":[52,14,14,37,42,58,23],"27":[42,10],"28":[11,31],"29":[0,11],"30":[1,9],"31":[10,5],"32":[4,10],"33":[14,9],"34":[2,8],"35":[0,8],"36":[8,4],"37":[2,12],"38":[4,8],"39":[12,8],"40":[0,8],"41":[8,4],"42":[21,16],"43":[16,5],"44":[2,14],"45":[21,21],"46":[42,40,37],"47":[18,3],"48":[21,3,3,3],"49":[22,36],"50":[58,56,53],"51":[33,3],"52":[36,3,3,3],"53":[9,14],"54":[23,5,23,18,12,6,5,4],"55":[50,190],"56":[240,73],"57":[13,227],"58":[240,24],"59":[6,7],"60":[103,137],"61":[59,44],"62":[72,65],"63":[45,195],"64":[20,25],"65":[2,4]},"f":{"1":105,"2":105,"3":6,"4":6,"5":44,"6":43,"7":0,"8":0,"9":1,"10":105,"11":71,"12":70,"13":70,"14":38,"15":19,"16":91,"17":36,"18":105,"19":145,"20":206,"21":240,"22":6},"fnMap":{"1":{"name":"Stream","line":49,"loc":{"start":{"line":49,"column":0},"end":{"line":49,"column":21}}},"2":{"name":"_initializeManagement","line":75,"loc":{"start":{"line":75,"column":41},"end":{"line":75,"column":74}}},"3":{"name":"promise","line":81,"loc":{"start":{"line":81,"column":27},"end":{"line":81,"column":53}}},"4":{"name":"_onPromise","line":94,"loc":{"start":{"line":94,"column":30},"end":{"line":94,"column":57}}},"5":{"name":"headers","line":98,"loc":{"start":{"line":98,"column":27},"end":{"line":98,"column":53}}},"6":{"name":"_onHeaders","line":107,"loc":{"start":{"line":107,"column":30},"end":{"line":107,"column":57}}},"7":{"name":"priority","line":114,"loc":{"start":{"line":114,"column":28},"end":{"line":114,"column":62}}},"8":{"name":"_onPriority","line":138,"loc":{"start":{"line":138,"column":31},"end":{"line":138,"column":59}}},"9":{"name":"reset","line":144,"loc":{"start":{"line":144,"column":25},"end":{"line":144,"column":47}}},"10":{"name":"_initializeDataFlow","line":191,"loc":{"start":{"line":191,"column":39},"end":{"line":191,"column":70}}},"11":{"name":"_pushUpstream","line":206,"loc":{"start":{"line":206,"column":33},"end":{"line":206,"column":63}}},"12":{"name":"_writeUpstream","line":213,"loc":{"start":{"line":213,"column":34},"end":{"line":213,"column":65}}},"13":{"name":"_receive","line":242,"loc":{"start":{"line":242,"column":28},"end":{"line":242,"column":60}}},"14":{"name":"_read","line":266,"loc":{"start":{"line":266,"column":25},"end":{"line":266,"column":42}}},"15":{"name":"_write","line":275,"loc":{"start":{"line":275,"column":26},"end":{"line":275,"column":67}}},"16":{"name":"_send","line":295,"loc":{"start":{"line":295,"column":25},"end":{"line":295,"column":42}}},"17":{"name":"_finishing","line":308,"loc":{"start":{"line":308,"column":30},"end":{"line":308,"column":52}}},"18":{"name":"_initializeState","line":355,"loc":{"start":{"line":355,"column":36},"end":{"line":355,"column":64}}},"19":{"name":"transition","line":364,"loc":{"start":{"line":364,"column":29},"end":{"line":364,"column":56}}},"20":{"name":"activeState","line":373,"loc":{"start":{"line":373,"column":0},"end":{"line":373,"column":28}}},"21":{"name":"transition","line":380,"loc":{"start":{"line":380,"column":31},"end":{"line":380,"column":67}}},"22":{"name":"(anonymous_22)","line":609,"loc":{"start":{"line":609,"column":24},"end":{"line":609,"column":41}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":31}},"2":{"start":{"line":12,"column":0},"end":{"line":12,"column":38}},"3":{"start":{"line":14,"column":0},"end":{"line":14,"column":24}},"4":{"start":{"line":49,"column":0},"end":{"line":63,"column":1}},"5":{"start":{"line":50,"column":2},"end":{"line":50,"column":20}},"6":{"start":{"line":53,"column":2},"end":{"line":53,"column":58}},"7":{"start":{"line":56,"column":2},"end":{"line":56,"column":31}},"8":{"start":{"line":59,"column":2},"end":{"line":59,"column":29}},"9":{"start":{"line":62,"column":2},"end":{"line":62,"column":26}},"10":{"start":{"line":65,"column":0},"end":{"line":65,"column":87}},"11":{"start":{"line":71,"column":0},"end":{"line":71,"column":39}},"12":{"start":{"line":72,"column":0},"end":{"line":72,"column":39}},"13":{"start":{"line":75,"column":0},"end":{"line":79,"column":2}},"14":{"start":{"line":76,"column":2},"end":{"line":76,"column":26}},"15":{"start":{"line":77,"column":2},"end":{"line":77,"column":36}},"16":{"start":{"line":78,"column":2},"end":{"line":78,"column":33}},"17":{"start":{"line":81,"column":0},"end":{"line":92,"column":2}},"18":{"start":{"line":82,"column":2},"end":{"line":82,"column":37}},"19":{"start":{"line":83,"column":2},"end":{"line":83,"column":64}},"20":{"start":{"line":84,"column":2},"end":{"line":90,"column":5}},"21":{"start":{"line":91,"column":2},"end":{"line":91,"column":16}},"22":{"start":{"line":94,"column":0},"end":{"line":96,"column":2}},"23":{"start":{"line":95,"column":2},"end":{"line":95,"column":61}},"24":{"start":{"line":98,"column":0},"end":{"line":105,"column":2}},"25":{"start":{"line":99,"column":2},"end":{"line":104,"column":5}},"26":{"start":{"line":107,"column":0},"end":{"line":112,"column":2}},"27":{"start":{"line":108,"column":2},"end":{"line":110,"column":3}},"28":{"start":{"line":109,"column":4},"end":{"line":109,"column":40}},"29":{"start":{"line":111,"column":2},"end":{"line":111,"column":38}},"30":{"start":{"line":114,"column":0},"end":{"line":136,"column":2}},"31":{"start":{"line":115,"column":2},"end":{"line":135,"column":3}},"32":{"start":{"line":116,"column":4},"end":{"line":130,"column":5}},"33":{"start":{"line":117,"column":6},"end":{"line":117,"column":38}},"34":{"start":{"line":119,"column":6},"end":{"line":119,"column":57}},"35":{"start":{"line":120,"column":6},"end":{"line":129,"column":7}},"36":{"start":{"line":121,"column":8},"end":{"line":121,"column":38}},"37":{"start":{"line":123,"column":8},"end":{"line":128,"column":11}},"38":{"start":{"line":132,"column":4},"end":{"line":132,"column":65}},"39":{"start":{"line":133,"column":4},"end":{"line":133,"column":36}},"40":{"start":{"line":134,"column":4},"end":{"line":134,"column":30}},"41":{"start":{"line":138,"column":0},"end":{"line":140,"column":2}},"42":{"start":{"line":139,"column":2},"end":{"line":139,"column":38}},"43":{"start":{"line":144,"column":0},"end":{"line":154,"column":2}},"44":{"start":{"line":145,"column":2},"end":{"line":153,"column":3}},"45":{"start":{"line":146,"column":4},"end":{"line":146,"column":27}},"46":{"start":{"line":147,"column":4},"end":{"line":152,"column":7}},"47":{"start":{"line":189,"column":0},"end":{"line":189,"column":34}},"48":{"start":{"line":191,"column":0},"end":{"line":204,"column":2}},"49":{"start":{"line":192,"column":2},"end":{"line":192,"column":22}},"50":{"start":{"line":194,"column":2},"end":{"line":194,"column":22}},"51":{"start":{"line":196,"column":2},"end":{"line":196,"column":29}},"52":{"start":{"line":197,"column":2},"end":{"line":197,"column":33}},"53":{"start":{"line":198,"column":2},"end":{"line":198,"column":46}},"54":{"start":{"line":199,"column":2},"end":{"line":199,"column":52}},"55":{"start":{"line":200,"column":2},"end":{"line":200,"column":55}},"56":{"start":{"line":201,"column":2},"end":{"line":201,"column":59}},"57":{"start":{"line":203,"column":2},"end":{"line":203,"column":37}},"58":{"start":{"line":206,"column":0},"end":{"line":209,"column":2}},"59":{"start":{"line":207,"column":2},"end":{"line":207,"column":28}},"60":{"start":{"line":208,"column":2},"end":{"line":208,"column":32}},"61":{"start":{"line":213,"column":0},"end":{"line":239,"column":2}},"62":{"start":{"line":214,"column":2},"end":{"line":214,"column":55}},"63":{"start":{"line":216,"column":2},"end":{"line":216,"column":67}},"64":{"start":{"line":219,"column":2},"end":{"line":219,"column":33}},"65":{"start":{"line":222,"column":2},"end":{"line":236,"column":3}},"66":{"start":{"line":223,"column":4},"end":{"line":223,"column":27}},"67":{"start":{"line":224,"column":9},"end":{"line":236,"column":3}},"68":{"start":{"line":225,"column":4},"end":{"line":225,"column":27}},"69":{"start":{"line":226,"column":9},"end":{"line":236,"column":3}},"70":{"start":{"line":227,"column":4},"end":{"line":227,"column":28}},"71":{"start":{"line":231,"column":7},"end":{"line":236,"column":3}},"72":{"start":{"line":234,"column":4},"end":{"line":234,"column":68}},"73":{"start":{"line":235,"column":4},"end":{"line":235,"column":41}},"74":{"start":{"line":238,"column":2},"end":{"line":238,"column":20}},"75":{"start":{"line":242,"column":0},"end":{"line":262,"column":2}},"76":{"start":{"line":245,"column":2},"end":{"line":250,"column":3}},"77":{"start":{"line":246,"column":4},"end":{"line":246,"column":43}},"78":{"start":{"line":247,"column":4},"end":{"line":249,"column":5}},"79":{"start":{"line":248,"column":6},"end":{"line":248,"column":32}},"80":{"start":{"line":253,"column":2},"end":{"line":256,"column":3}},"81":{"start":{"line":254,"column":4},"end":{"line":254,"column":20}},"82":{"start":{"line":255,"column":4},"end":{"line":255,"column":23}},"83":{"start":{"line":259,"column":2},"end":{"line":261,"column":3}},"84":{"start":{"line":260,"column":4},"end":{"line":260,"column":12}},"85":{"start":{"line":266,"column":0},"end":{"line":272,"column":2}},"86":{"start":{"line":267,"column":2},"end":{"line":271,"column":3}},"87":{"start":{"line":268,"column":4},"end":{"line":268,"column":40}},"88":{"start":{"line":269,"column":4},"end":{"line":269,"column":29}},"89":{"start":{"line":270,"column":4},"end":{"line":270,"column":18}},"90":{"start":{"line":275,"column":0},"end":{"line":290,"column":2}},"91":{"start":{"line":277,"column":2},"end":{"line":282,"column":5}},"92":{"start":{"line":285,"column":2},"end":{"line":289,"column":3}},"93":{"start":{"line":286,"column":4},"end":{"line":286,"column":12}},"94":{"start":{"line":288,"column":4},"end":{"line":288,"column":27}},"95":{"start":{"line":295,"column":0},"end":{"line":301,"column":2}},"96":{"start":{"line":296,"column":2},"end":{"line":300,"column":3}},"97":{"start":{"line":297,"column":4},"end":{"line":297,"column":34}},"98":{"start":{"line":298,"column":4},"end":{"line":298,"column":26}},"99":{"start":{"line":299,"column":4},"end":{"line":299,"column":15}},"100":{"start":{"line":307,"column":0},"end":{"line":307,"column":32}},"101":{"start":{"line":308,"column":0},"end":{"line":323,"column":2}},"102":{"start":{"line":309,"column":2},"end":{"line":314,"column":4}},"103":{"start":{"line":315,"column":2},"end":{"line":315,"column":53}},"104":{"start":{"line":316,"column":2},"end":{"line":322,"column":3}},"105":{"start":{"line":317,"column":4},"end":{"line":317,"column":86}},"106":{"start":{"line":318,"column":4},"end":{"line":318,"column":38}},"107":{"start":{"line":319,"column":4},"end":{"line":319,"column":37}},"108":{"start":{"line":321,"column":4},"end":{"line":321,"column":33}},"109":{"start":{"line":355,"column":0},"end":{"line":360,"column":2}},"110":{"start":{"line":356,"column":2},"end":{"line":356,"column":22}},"111":{"start":{"line":357,"column":2},"end":{"line":357,"column":30}},"112":{"start":{"line":358,"column":2},"end":{"line":358,"column":31}},"113":{"start":{"line":359,"column":2},"end":{"line":359,"column":34}},"114":{"start":{"line":364,"column":0},"end":{"line":369,"column":2}},"115":{"start":{"line":365,"column":2},"end":{"line":365,"column":31}},"116":{"start":{"line":366,"column":2},"end":{"line":366,"column":71}},"117":{"start":{"line":367,"column":2},"end":{"line":367,"column":21}},"118":{"start":{"line":368,"column":2},"end":{"line":368,"column":28}},"119":{"start":{"line":373,"column":0},"end":{"line":375,"column":1}},"120":{"start":{"line":374,"column":2},"end":{"line":374,"column":101}},"121":{"start":{"line":380,"column":0},"end":{"line":601,"column":2}},"122":{"start":{"line":381,"column":2},"end":{"line":381,"column":27}},"123":{"start":{"line":382,"column":2},"end":{"line":382,"column":24}},"124":{"start":{"line":384,"column":2},"end":{"line":384,"column":54}},"125":{"start":{"line":385,"column":2},"end":{"line":385,"column":70}},"126":{"start":{"line":386,"column":2},"end":{"line":393,"column":3}},"127":{"start":{"line":387,"column":26},"end":{"line":387,"column":47}},"128":{"start":{"line":387,"column":48},"end":{"line":387,"column":54}},"129":{"start":{"line":388,"column":26},"end":{"line":388,"column":47}},"130":{"start":{"line":388,"column":48},"end":{"line":388,"column":54}},"131":{"start":{"line":389,"column":26},"end":{"line":389,"column":47}},"132":{"start":{"line":389,"column":48},"end":{"line":389,"column":54}},"133":{"start":{"line":390,"column":26},"end":{"line":390,"column":47}},"134":{"start":{"line":390,"column":48},"end":{"line":390,"column":54}},"135":{"start":{"line":391,"column":26},"end":{"line":391,"column":47}},"136":{"start":{"line":391,"column":48},"end":{"line":391,"column":54}},"137":{"start":{"line":392,"column":26},"end":{"line":392,"column":47}},"138":{"start":{"line":392,"column":48},"end":{"line":392,"column":54}},"139":{"start":{"line":395,"column":2},"end":{"line":395,"column":33}},"140":{"start":{"line":397,"column":2},"end":{"line":541,"column":3}},"141":{"start":{"line":404,"column":6},"end":{"line":414,"column":7}},"142":{"start":{"line":405,"column":8},"end":{"line":405,"column":31}},"143":{"start":{"line":406,"column":8},"end":{"line":408,"column":9}},"144":{"start":{"line":407,"column":10},"end":{"line":407,"column":79}},"145":{"start":{"line":409,"column":8},"end":{"line":409,"column":34}},"146":{"start":{"line":410,"column":13},"end":{"line":414,"column":7}},"147":{"start":{"line":411,"column":8},"end":{"line":411,"column":33}},"148":{"start":{"line":413,"column":8},"end":{"line":413,"column":33}},"149":{"start":{"line":415,"column":6},"end":{"line":415,"column":12}},"150":{"start":{"line":427,"column":6},"end":{"line":435,"column":7}},"151":{"start":{"line":428,"column":8},"end":{"line":428,"column":45}},"152":{"start":{"line":429,"column":13},"end":{"line":435,"column":7}},"153":{"start":{"line":430,"column":8},"end":{"line":430,"column":33}},"154":{"start":{"line":431,"column":13},"end":{"line":435,"column":7}},"155":{"start":{"line":434,"column":8},"end":{"line":434,"column":33}},"156":{"start":{"line":436,"column":6},"end":{"line":436,"column":12}},"157":{"start":{"line":446,"column":6},"end":{"line":454,"column":7}},"158":{"start":{"line":447,"column":8},"end":{"line":447,"column":33}},"159":{"start":{"line":448,"column":13},"end":{"line":454,"column":7}},"160":{"start":{"line":449,"column":8},"end":{"line":449,"column":44}},"161":{"start":{"line":450,"column":13},"end":{"line":454,"column":7}},"162":{"start":{"line":453,"column":8},"end":{"line":453,"column":33}},"163":{"start":{"line":455,"column":6},"end":{"line":455,"column":12}},"164":{"start":{"line":467,"column":6},"end":{"line":473,"column":7}},"165":{"start":{"line":468,"column":8},"end":{"line":468,"column":77}},"166":{"start":{"line":469,"column":13},"end":{"line":473,"column":7}},"167":{"start":{"line":470,"column":8},"end":{"line":470,"column":33}},"168":{"start":{"line":474,"column":6},"end":{"line":474,"column":12}},"169":{"start":{"line":483,"column":6},"end":{"line":489,"column":7}},"170":{"start":{"line":484,"column":8},"end":{"line":484,"column":33}},"171":{"start":{"line":485,"column":13},"end":{"line":489,"column":7}},"172":{"start":{"line":488,"column":8},"end":{"line":488,"column":33}},"173":{"start":{"line":490,"column":6},"end":{"line":490,"column":12}},"174":{"start":{"line":503,"column":6},"end":{"line":509,"column":7}},"175":{"start":{"line":504,"column":8},"end":{"line":504,"column":33}},"176":{"start":{"line":505,"column":13},"end":{"line":509,"column":7}},"177":{"start":{"line":508,"column":8},"end":{"line":508,"column":33}},"178":{"start":{"line":510,"column":6},"end":{"line":510,"column":12}},"179":{"start":{"line":533,"column":6},"end":{"line":539,"column":7}},"180":{"start":{"line":538,"column":8},"end":{"line":538,"column":32}},"181":{"start":{"line":540,"column":6},"end":{"line":540,"column":12}},"182":{"start":{"line":546,"column":2},"end":{"line":549,"column":3}},"183":{"start":{"line":547,"column":4},"end":{"line":547,"column":31}},"184":{"start":{"line":548,"column":4},"end":{"line":548,"column":37}},"185":{"start":{"line":557,"column":2},"end":{"line":564,"column":3}},"186":{"start":{"line":561,"column":4},"end":{"line":561,"column":80}},"187":{"start":{"line":562,"column":4},"end":{"line":562,"column":84}},"188":{"start":{"line":563,"column":4},"end":{"line":563,"column":47}},"189":{"start":{"line":567,"column":2},"end":{"line":576,"column":3}},"190":{"start":{"line":568,"column":4},"end":{"line":568,"column":72}},"191":{"start":{"line":569,"column":4},"end":{"line":573,"column":5}},"192":{"start":{"line":570,"column":6},"end":{"line":570,"column":34}},"193":{"start":{"line":572,"column":6},"end":{"line":572,"column":33}},"194":{"start":{"line":574,"column":9},"end":{"line":576,"column":3}},"195":{"start":{"line":575,"column":4},"end":{"line":575,"column":27}},"196":{"start":{"line":579,"column":2},"end":{"line":600,"column":3}},"197":{"start":{"line":580,"column":4},"end":{"line":586,"column":6}},"198":{"start":{"line":589,"column":4},"end":{"line":599,"column":5}},"199":{"start":{"line":590,"column":6},"end":{"line":590,"column":54}},"200":{"start":{"line":591,"column":6},"end":{"line":591,"column":97}},"201":{"start":{"line":597,"column":6},"end":{"line":597,"column":55}},"202":{"start":{"line":598,"column":6},"end":{"line":598,"column":32}},"203":{"start":{"line":606,"column":0},"end":{"line":606,"column":25}},"204":{"start":{"line":608,"column":0},"end":{"line":608,"column":15}},"205":{"start":{"line":609,"column":0},"end":{"line":615,"column":2}},"206":{"start":{"line":610,"column":2},"end":{"line":613,"column":3}},"207":{"start":{"line":611,"column":4},"end":{"line":611,"column":24}},"208":{"start":{"line":612,"column":4},"end":{"line":612,"column":16}},"209":{"start":{"line":614,"column":2},"end":{"line":614,"column":20}}},"branchMap":{"1":{"line":108,"type":"if","locations":[{"start":{"line":108,"column":2},"end":{"line":108,"column":2}},{"start":{"line":108,"column":2},"end":{"line":108,"column":2}}]},"2":{"line":115,"type":"if","locations":[{"start":{"line":115,"column":2},"end":{"line":115,"column":2}},{"start":{"line":115,"column":2},"end":{"line":115,"column":2}}]},"3":{"line":115,"type":"binary-expr","locations":[{"start":{"line":115,"column":7},"end":{"line":115,"column":11}},{"start":{"line":115,"column":15},"end":{"line":115,"column":38}},{"start":{"line":115,"column":43},"end":{"line":115,"column":48}}]},"4":{"line":116,"type":"if","locations":[{"start":{"line":116,"column":4},"end":{"line":116,"column":4}},{"start":{"line":116,"column":4},"end":{"line":116,"column":4}}]},"5":{"line":120,"type":"if","locations":[{"start":{"line":120,"column":6},"end":{"line":120,"column":6}},{"start":{"line":120,"column":6},"end":{"line":120,"column":6}}]},"6":{"line":120,"type":"binary-expr","locations":[{"start":{"line":120,"column":10},"end":{"line":120,"column":19}},{"start":{"line":120,"column":25},"end":{"line":120,"column":53}},{"start":{"line":120,"column":59},"end":{"line":120,"column":88}}]},"7":{"line":145,"type":"if","locations":[{"start":{"line":145,"column":2},"end":{"line":145,"column":2}},{"start":{"line":145,"column":2},"end":{"line":145,"column":2}}]},"8":{"line":222,"type":"if","locations":[{"start":{"line":222,"column":2},"end":{"line":222,"column":2}},{"start":{"line":222,"column":2},"end":{"line":222,"column":2}}]},"9":{"line":224,"type":"if","locations":[{"start":{"line":224,"column":9},"end":{"line":224,"column":9}},{"start":{"line":224,"column":9},"end":{"line":224,"column":9}}]},"10":{"line":226,"type":"if","locations":[{"start":{"line":226,"column":9},"end":{"line":226,"column":9}},{"start":{"line":226,"column":9},"end":{"line":226,"column":9}}]},"11":{"line":231,"type":"if","locations":[{"start":{"line":231,"column":7},"end":{"line":231,"column":7}},{"start":{"line":231,"column":7},"end":{"line":231,"column":7}}]},"12":{"line":231,"type":"binary-expr","locations":[{"start":{"line":231,"column":12},"end":{"line":231,"column":33}},{"start":{"line":232,"column":12},"end":{"line":232,"column":42}},{"start":{"line":233,"column":12},"end":{"line":233,"column":39}}]},"13":{"line":245,"type":"if","locations":[{"start":{"line":245,"column":2},"end":{"line":245,"column":2}},{"start":{"line":245,"column":2},"end":{"line":245,"column":2}}]},"14":{"line":245,"type":"binary-expr","locations":[{"start":{"line":245,"column":6},"end":{"line":245,"column":18}},{"start":{"line":245,"column":23},"end":{"line":245,"column":44}}]},"15":{"line":247,"type":"if","locations":[{"start":{"line":247,"column":4},"end":{"line":247,"column":4}},{"start":{"line":247,"column":4},"end":{"line":247,"column":4}}]},"16":{"line":253,"type":"if","locations":[{"start":{"line":253,"column":2},"end":{"line":253,"column":2}},{"start":{"line":253,"column":2},"end":{"line":253,"column":2}}]},"17":{"line":253,"type":"binary-expr","locations":[{"start":{"line":253,"column":6},"end":{"line":253,"column":18}},{"start":{"line":253,"column":23},"end":{"line":253,"column":45}},{"start":{"line":253,"column":50},"end":{"line":253,"column":77}}]},"18":{"line":259,"type":"if","locations":[{"start":{"line":259,"column":2},"end":{"line":259,"column":2}},{"start":{"line":259,"column":2},"end":{"line":259,"column":2}}]},"19":{"line":267,"type":"if","locations":[{"start":{"line":267,"column":2},"end":{"line":267,"column":2}},{"start":{"line":267,"column":2},"end":{"line":267,"column":2}}]},"20":{"line":285,"type":"if","locations":[{"start":{"line":285,"column":2},"end":{"line":285,"column":2}},{"start":{"line":285,"column":2},"end":{"line":285,"column":2}}]},"21":{"line":296,"type":"if","locations":[{"start":{"line":296,"column":2},"end":{"line":296,"column":2}},{"start":{"line":296,"column":2},"end":{"line":296,"column":2}}]},"22":{"line":316,"type":"if","locations":[{"start":{"line":316,"column":2},"end":{"line":316,"column":2}},{"start":{"line":316,"column":2},"end":{"line":316,"column":2}}]},"23":{"line":316,"type":"binary-expr","locations":[{"start":{"line":316,"column":6},"end":{"line":316,"column":15}},{"start":{"line":316,"column":21},"end":{"line":316,"column":46}},{"start":{"line":316,"column":52},"end":{"line":316,"column":80}}]},"24":{"line":374,"type":"binary-expr","locations":[{"start":{"line":374,"column":11},"end":{"line":374,"column":40}},{"start":{"line":374,"column":46},"end":{"line":374,"column":76}},{"start":{"line":374,"column":82},"end":{"line":374,"column":98}}]},"25":{"line":386,"type":"switch","locations":[{"start":{"line":387,"column":4},"end":{"line":387,"column":54}},{"start":{"line":388,"column":4},"end":{"line":388,"column":54}},{"start":{"line":389,"column":4},"end":{"line":389,"column":54}},{"start":{"line":390,"column":4},"end":{"line":390,"column":54}},{"start":{"line":391,"column":4},"end":{"line":391,"column":54}},{"start":{"line":392,"column":4},"end":{"line":392,"column":54}}]},"26":{"line":397,"type":"switch","locations":[{"start":{"line":403,"column":4},"end":{"line":415,"column":12}},{"start":{"line":426,"column":4},"end":{"line":436,"column":12}},{"start":{"line":445,"column":4},"end":{"line":455,"column":12}},{"start":{"line":466,"column":4},"end":{"line":474,"column":12}},{"start":{"line":482,"column":4},"end":{"line":490,"column":12}},{"start":{"line":502,"column":4},"end":{"line":510,"column":12}},{"start":{"line":532,"column":4},"end":{"line":540,"column":12}}]},"27":{"line":404,"type":"if","locations":[{"start":{"line":404,"column":6},"end":{"line":404,"column":6}},{"start":{"line":404,"column":6},"end":{"line":404,"column":6}}]},"28":{"line":406,"type":"if","locations":[{"start":{"line":406,"column":8},"end":{"line":406,"column":8}},{"start":{"line":406,"column":8},"end":{"line":406,"column":8}}]},"29":{"line":407,"type":"cond-expr","locations":[{"start":{"line":407,"column":35},"end":{"line":407,"column":54}},{"start":{"line":407,"column":57},"end":{"line":407,"column":77}}]},"30":{"line":410,"type":"if","locations":[{"start":{"line":410,"column":13},"end":{"line":410,"column":13}},{"start":{"line":410,"column":13},"end":{"line":410,"column":13}}]},"31":{"line":410,"type":"binary-expr","locations":[{"start":{"line":410,"column":17},"end":{"line":410,"column":24}},{"start":{"line":410,"column":28},"end":{"line":410,"column":38}}]},"32":{"line":427,"type":"if","locations":[{"start":{"line":427,"column":6},"end":{"line":427,"column":6}},{"start":{"line":427,"column":6},"end":{"line":427,"column":6}}]},"33":{"line":427,"type":"binary-expr","locations":[{"start":{"line":427,"column":10},"end":{"line":427,"column":17}},{"start":{"line":427,"column":21},"end":{"line":427,"column":28}}]},"34":{"line":429,"type":"if","locations":[{"start":{"line":429,"column":13},"end":{"line":429,"column":13}},{"start":{"line":429,"column":13},"end":{"line":429,"column":13}}]},"35":{"line":431,"type":"if","locations":[{"start":{"line":431,"column":13},"end":{"line":431,"column":13}},{"start":{"line":431,"column":13},"end":{"line":431,"column":13}}]},"36":{"line":431,"type":"binary-expr","locations":[{"start":{"line":431,"column":17},"end":{"line":431,"column":26}},{"start":{"line":431,"column":30},"end":{"line":431,"column":38}}]},"37":{"line":446,"type":"if","locations":[{"start":{"line":446,"column":6},"end":{"line":446,"column":6}},{"start":{"line":446,"column":6},"end":{"line":446,"column":6}}]},"38":{"line":448,"type":"if","locations":[{"start":{"line":448,"column":13},"end":{"line":448,"column":13}},{"start":{"line":448,"column":13},"end":{"line":448,"column":13}}]},"39":{"line":448,"type":"binary-expr","locations":[{"start":{"line":448,"column":17},"end":{"line":448,"column":26}},{"start":{"line":448,"column":30},"end":{"line":448,"column":37}}]},"40":{"line":450,"type":"if","locations":[{"start":{"line":450,"column":13},"end":{"line":450,"column":13}},{"start":{"line":450,"column":13},"end":{"line":450,"column":13}}]},"41":{"line":450,"type":"binary-expr","locations":[{"start":{"line":450,"column":17},"end":{"line":450,"column":24}},{"start":{"line":450,"column":28},"end":{"line":450,"column":36}}]},"42":{"line":467,"type":"if","locations":[{"start":{"line":467,"column":6},"end":{"line":467,"column":6}},{"start":{"line":467,"column":6},"end":{"line":467,"column":6}}]},"43":{"line":468,"type":"cond-expr","locations":[{"start":{"line":468,"column":33},"end":{"line":468,"column":52}},{"start":{"line":468,"column":55},"end":{"line":468,"column":75}}]},"44":{"line":469,"type":"if","locations":[{"start":{"line":469,"column":13},"end":{"line":469,"column":13}},{"start":{"line":469,"column":13},"end":{"line":469,"column":13}}]},"45":{"line":483,"type":"if","locations":[{"start":{"line":483,"column":6},"end":{"line":483,"column":6}},{"start":{"line":483,"column":6},"end":{"line":483,"column":6}}]},"46":{"line":483,"type":"binary-expr","locations":[{"start":{"line":483,"column":10},"end":{"line":483,"column":20}},{"start":{"line":483,"column":25},"end":{"line":483,"column":34}},{"start":{"line":483,"column":38},"end":{"line":483,"column":60}}]},"47":{"line":485,"type":"if","locations":[{"start":{"line":485,"column":13},"end":{"line":485,"column":13}},{"start":{"line":485,"column":13},"end":{"line":485,"column":13}}]},"48":{"line":485,"type":"binary-expr","locations":[{"start":{"line":485,"column":17},"end":{"line":485,"column":26}},{"start":{"line":485,"column":31},"end":{"line":485,"column":38}},{"start":{"line":485,"column":43},"end":{"line":485,"column":51}},{"start":{"line":485,"column":55},"end":{"line":485,"column":68}}]},"49":{"line":503,"type":"if","locations":[{"start":{"line":503,"column":6},"end":{"line":503,"column":6}},{"start":{"line":503,"column":6},"end":{"line":503,"column":6}}]},"50":{"line":503,"type":"binary-expr","locations":[{"start":{"line":503,"column":10},"end":{"line":503,"column":20}},{"start":{"line":503,"column":25},"end":{"line":503,"column":32}},{"start":{"line":503,"column":36},"end":{"line":503,"column":58}}]},"51":{"line":505,"type":"if","locations":[{"start":{"line":505,"column":13},"end":{"line":505,"column":13}},{"start":{"line":505,"column":13},"end":{"line":505,"column":13}}]},"52":{"line":505,"type":"binary-expr","locations":[{"start":{"line":505,"column":17},"end":{"line":505,"column":24}},{"start":{"line":505,"column":29},"end":{"line":505,"column":38}},{"start":{"line":505,"column":43},"end":{"line":505,"column":56}},{"start":{"line":505,"column":60},"end":{"line":505,"column":68}}]},"53":{"line":533,"type":"if","locations":[{"start":{"line":533,"column":6},"end":{"line":533,"column":6}},{"start":{"line":533,"column":6},"end":{"line":533,"column":6}}]},"54":{"line":533,"type":"binary-expr","locations":[{"start":{"line":533,"column":11},"end":{"line":533,"column":18}},{"start":{"line":533,"column":22},"end":{"line":533,"column":32}},{"start":{"line":534,"column":11},"end":{"line":534,"column":20}},{"start":{"line":534,"column":24},"end":{"line":534,"column":40}},{"start":{"line":535,"column":12},"end":{"line":535,"column":31}},{"start":{"line":535,"column":35},"end":{"line":535,"column":48}},{"start":{"line":535,"column":52},"end":{"line":535,"column":60}},{"start":{"line":535,"column":64},"end":{"line":535,"column":74}}]},"55":{"line":546,"type":"if","locations":[{"start":{"line":546,"column":2},"end":{"line":546,"column":2}},{"start":{"line":546,"column":2},"end":{"line":546,"column":2}}]},"56":{"line":546,"type":"binary-expr","locations":[{"start":{"line":546,"column":7},"end":{"line":546,"column":30}},{"start":{"line":546,"column":36},"end":{"line":546,"column":62}}]},"57":{"line":557,"type":"if","locations":[{"start":{"line":557,"column":2},"end":{"line":557,"column":2}},{"start":{"line":557,"column":2},"end":{"line":557,"column":2}}]},"58":{"line":557,"type":"binary-expr","locations":[{"start":{"line":557,"column":6},"end":{"line":557,"column":18}},{"start":{"line":557,"column":22},"end":{"line":557,"column":28}}]},"59":{"line":562,"type":"cond-expr","locations":[{"start":{"line":562,"column":46},"end":{"line":562,"column":62}},{"start":{"line":562,"column":65},"end":{"line":562,"column":82}}]},"60":{"line":567,"type":"if","locations":[{"start":{"line":567,"column":2},"end":{"line":567,"column":2}},{"start":{"line":567,"column":2},"end":{"line":567,"column":2}}]},"61":{"line":569,"type":"if","locations":[{"start":{"line":569,"column":4},"end":{"line":569,"column":4}},{"start":{"line":569,"column":4},"end":{"line":569,"column":4}}]},"62":{"line":574,"type":"if","locations":[{"start":{"line":574,"column":9},"end":{"line":574,"column":9}},{"start":{"line":574,"column":9},"end":{"line":574,"column":9}}]},"63":{"line":579,"type":"if","locations":[{"start":{"line":579,"column":2},"end":{"line":579,"column":2}},{"start":{"line":579,"column":2},"end":{"line":579,"column":2}}]},"64":{"line":589,"type":"if","locations":[{"start":{"line":589,"column":4},"end":{"line":589,"column":4}},{"start":{"line":589,"column":4},"end":{"line":589,"column":4}}]},"65":{"line":610,"type":"if","locations":[{"start":{"line":610,"column":2},"end":{"line":610,"column":2}},{"start":{"line":610,"column":2},"end":{"line":610,"column":2}}]}}},"/data/upstream/node-http2/lib/endpoint.js":{"path":"/data/upstream/node-http2/lib/endpoint.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":24,"12":24,"13":24,"14":24,"15":12,"16":12,"17":24,"18":24,"19":24,"20":1,"21":1,"22":1,"23":12,"24":12,"25":1,"26":12,"27":12,"28":11,"29":11,"30":241,"31":1,"32":1,"33":1,"34":240,"35":10,"36":10,"37":10,"38":10,"39":10,"40":1,"41":0,"42":0,"43":0,"44":0,"45":0,"46":1,"47":96,"48":0,"49":96,"50":1,"51":1,"52":24,"53":24,"54":12,"55":12,"56":12,"57":12,"58":12,"59":12,"60":24,"61":24,"62":24,"63":24,"64":24,"65":24,"66":24,"67":24,"68":24,"69":1,"70":1,"71":155,"72":155,"73":155,"74":130,"75":155,"76":67,"77":155,"78":1,"79":50,"80":1,"81":24,"82":1,"83":11,"84":1,"85":24,"86":24,"87":24,"88":24,"89":24,"90":24,"91":1,"92":1,"93":1,"94":1,"95":1,"96":2,"97":1,"98":1,"99":1,"100":6,"101":2,"102":2,"103":6},"b":{"1":[24,12],"2":[12,12],"3":[24,24],"4":[251,241],"5":[1,240],"6":[10,0],"7":[0,96],"8":[12,12],"9":[285,285],"10":[67,88],"11":[2,4]},"f":{"1":24,"2":12,"3":12,"4":11,"5":0,"6":0,"7":96,"8":24,"9":155,"10":50,"11":24,"12":11,"13":24,"14":1,"15":2,"16":6},"fnMap":{"1":{"name":"Endpoint","line":50,"loc":{"start":{"line":50,"column":0},"end":{"line":50,"column":48}}},"2":{"name":"_writePrelude","line":84,"loc":{"start":{"line":84,"column":35},"end":{"line":84,"column":60}}},"3":{"name":"_readPrelude","line":90,"loc":{"start":{"line":90,"column":34},"end":{"line":90,"column":58}}},"4":{"name":"_temporalWrite","line":95,"loc":{"start":{"line":95,"column":16},"end":{"line":95,"column":63}}},"5":{"name":"createTransformStream","line":153,"loc":{"start":{"line":153,"column":0},"end":{"line":153,"column":39}}},"6":{"name":"(anonymous_6)","line":156,"loc":{"start":{"line":156,"column":25},"end":{"line":156,"column":57}}},"7":{"name":"pipeAndFilter","line":162,"loc":{"start":{"line":162,"column":0},"end":{"line":162,"column":49}}},"8":{"name":"_initializeDataFlow","line":172,"loc":{"start":{"line":172,"column":41},"end":{"line":172,"column":95}}},"9":{"name":"_read","line":197,"loc":{"start":{"line":197,"column":27},"end":{"line":197,"column":44}}},"10":{"name":"_write","line":209,"loc":{"start":{"line":209,"column":28},"end":{"line":209,"column":67}}},"11":{"name":"_initializeManagement","line":216,"loc":{"start":{"line":216,"column":43},"end":{"line":216,"column":76}}},"12":{"name":"createStream","line":220,"loc":{"start":{"line":220,"column":34},"end":{"line":220,"column":58}}},"13":{"name":"_initializeErrorHandling","line":227,"loc":{"start":{"line":227,"column":46},"end":{"line":227,"column":82}}},"14":{"name":"_error","line":237,"loc":{"start":{"line":237,"column":28},"end":{"line":237,"column":62}}},"15":{"name":"close","line":243,"loc":{"start":{"line":243,"column":27},"end":{"line":243,"column":49}}},"16":{"name":"(anonymous_16)","line":253,"loc":{"start":{"line":253,"column":24},"end":{"line":253,"column":43}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":31}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":50}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":52}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":54}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":56}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":54}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":44}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":47}},"9":{"start":{"line":11,"column":0},"end":{"line":11,"column":28}},"10":{"start":{"line":50,"column":0},"end":{"line":75,"column":1}},"11":{"start":{"line":51,"column":2},"end":{"line":51,"column":20}},"12":{"start":{"line":54,"column":2},"end":{"line":54,"column":60}},"13":{"start":{"line":58,"column":2},"end":{"line":58,"column":51}},"14":{"start":{"line":59,"column":2},"end":{"line":63,"column":3}},"15":{"start":{"line":60,"column":4},"end":{"line":60,"column":25}},"16":{"start":{"line":62,"column":4},"end":{"line":62,"column":24}},"17":{"start":{"line":68,"column":2},"end":{"line":68,"column":58}},"18":{"start":{"line":71,"column":2},"end":{"line":71,"column":31}},"19":{"start":{"line":74,"column":2},"end":{"line":74,"column":34}},"20":{"start":{"line":76,"column":0},"end":{"line":76,"column":91}},"21":{"start":{"line":81,"column":0},"end":{"line":81,"column":68}},"22":{"start":{"line":84,"column":0},"end":{"line":87,"column":2}},"23":{"start":{"line":85,"column":2},"end":{"line":85,"column":67}},"24":{"start":{"line":86,"column":2},"end":{"line":86,"column":28}},"25":{"start":{"line":90,"column":0},"end":{"line":118,"column":2}},"26":{"start":{"line":92,"column":2},"end":{"line":92,"column":17}},"27":{"start":{"line":95,"column":2},"end":{"line":117,"column":4}},"28":{"start":{"line":98,"column":4},"end":{"line":98,"column":24}},"29":{"start":{"line":99,"column":4},"end":{"line":107,"column":5}},"30":{"start":{"line":100,"column":6},"end":{"line":105,"column":7}},"31":{"start":{"line":101,"column":8},"end":{"line":102,"column":76}},"32":{"start":{"line":103,"column":8},"end":{"line":103,"column":51}},"33":{"start":{"line":104,"column":8},"end":{"line":104,"column":15}},"34":{"start":{"line":106,"column":6},"end":{"line":106,"column":18}},"35":{"start":{"line":111,"column":4},"end":{"line":116,"column":5}},"36":{"start":{"line":112,"column":6},"end":{"line":112,"column":85}},"37":{"start":{"line":113,"column":6},"end":{"line":113,"column":25}},"38":{"start":{"line":114,"column":6},"end":{"line":114,"column":43}},"39":{"start":{"line":115,"column":6},"end":{"line":115,"column":41}},"40":{"start":{"line":153,"column":0},"end":{"line":160,"column":1}},"41":{"start":{"line":154,"column":2},"end":{"line":154,"column":54}},"42":{"start":{"line":155,"column":2},"end":{"line":155,"column":44}},"43":{"start":{"line":156,"column":2},"end":{"line":158,"column":4}},"44":{"start":{"line":157,"column":4},"end":{"line":157,"column":30}},"45":{"start":{"line":159,"column":2},"end":{"line":159,"column":19}},"46":{"start":{"line":162,"column":0},"end":{"line":168,"column":1}},"47":{"start":{"line":163,"column":2},"end":{"line":167,"column":3}},"48":{"start":{"line":164,"column":4},"end":{"line":164,"column":62}},"49":{"start":{"line":166,"column":4},"end":{"line":166,"column":26}},"50":{"start":{"line":170,"column":0},"end":{"line":170,"column":34}},"51":{"start":{"line":172,"column":0},"end":{"line":194,"column":2}},"52":{"start":{"line":173,"column":2},"end":{"line":173,"column":54}},"53":{"start":{"line":174,"column":2},"end":{"line":182,"column":3}},"54":{"start":{"line":175,"column":4},"end":{"line":175,"column":22}},"55":{"start":{"line":176,"column":4},"end":{"line":176,"column":31}},"56":{"start":{"line":177,"column":4},"end":{"line":177,"column":34}},"57":{"start":{"line":179,"column":4},"end":{"line":179,"column":22}},"58":{"start":{"line":180,"column":4},"end":{"line":180,"column":32}},"59":{"start":{"line":181,"column":4},"end":{"line":181,"column":33}},"60":{"start":{"line":184,"column":2},"end":{"line":184,"column":72}},"61":{"start":{"line":185,"column":2},"end":{"line":185,"column":74}},"62":{"start":{"line":186,"column":2},"end":{"line":186,"column":65}},"63":{"start":{"line":187,"column":2},"end":{"line":187,"column":69}},"64":{"start":{"line":188,"column":2},"end":{"line":188,"column":74}},"65":{"start":{"line":190,"column":2},"end":{"line":190,"column":79}},"66":{"start":{"line":191,"column":2},"end":{"line":191,"column":81}},"67":{"start":{"line":192,"column":2},"end":{"line":192,"column":86}},"68":{"start":{"line":193,"column":2},"end":{"line":193,"column":82}},"69":{"start":{"line":196,"column":0},"end":{"line":196,"column":16}},"70":{"start":{"line":197,"column":0},"end":{"line":207,"column":2}},"71":{"start":{"line":198,"column":2},"end":{"line":198,"column":34}},"72":{"start":{"line":199,"column":2},"end":{"line":199,"column":33}},"73":{"start":{"line":200,"column":2},"end":{"line":202,"column":3}},"74":{"start":{"line":201,"column":4},"end":{"line":201,"column":34}},"75":{"start":{"line":203,"column":2},"end":{"line":205,"column":3}},"76":{"start":{"line":204,"column":4},"end":{"line":204,"column":61}},"77":{"start":{"line":206,"column":2},"end":{"line":206,"column":35}},"78":{"start":{"line":209,"column":0},"end":{"line":211,"column":2}},"79":{"start":{"line":210,"column":2},"end":{"line":210,"column":50}},"80":{"start":{"line":216,"column":0},"end":{"line":218,"column":2}},"81":{"start":{"line":217,"column":2},"end":{"line":217,"column":64}},"82":{"start":{"line":220,"column":0},"end":{"line":222,"column":2}},"83":{"start":{"line":221,"column":2},"end":{"line":221,"column":41}},"84":{"start":{"line":227,"column":0},"end":{"line":235,"column":2}},"85":{"start":{"line":228,"column":2},"end":{"line":228,"column":69}},"86":{"start":{"line":229,"column":2},"end":{"line":229,"column":73}},"87":{"start":{"line":230,"column":2},"end":{"line":230,"column":69}},"88":{"start":{"line":231,"column":2},"end":{"line":231,"column":73}},"89":{"start":{"line":232,"column":2},"end":{"line":232,"column":69}},"90":{"start":{"line":234,"column":2},"end":{"line":234,"column":70}},"91":{"start":{"line":237,"column":0},"end":{"line":241,"column":2}},"92":{"start":{"line":238,"column":2},"end":{"line":238,"column":92}},"93":{"start":{"line":239,"column":2},"end":{"line":239,"column":20}},"94":{"start":{"line":240,"column":2},"end":{"line":240,"column":53}},"95":{"start":{"line":243,"column":0},"end":{"line":245,"column":2}},"96":{"start":{"line":244,"column":2},"end":{"line":244,"column":32}},"97":{"start":{"line":250,"column":0},"end":{"line":250,"column":25}},"98":{"start":{"line":252,"column":0},"end":{"line":252,"column":15}},"99":{"start":{"line":253,"column":0},"end":{"line":259,"column":2}},"100":{"start":{"line":254,"column":2},"end":{"line":257,"column":3}},"101":{"start":{"line":255,"column":4},"end":{"line":255,"column":25}},"102":{"start":{"line":256,"column":4},"end":{"line":256,"column":16}},"103":{"start":{"line":258,"column":2},"end":{"line":258,"column":21}}},"branchMap":{"1":{"line":58,"type":"binary-expr","locations":[{"start":{"line":58,"column":10},"end":{"line":58,"column":27}},{"start":{"line":58,"column":32},"end":{"line":58,"column":49}}]},"2":{"line":59,"type":"if","locations":[{"start":{"line":59,"column":2},"end":{"line":59,"column":2}},{"start":{"line":59,"column":2},"end":{"line":59,"column":2}}]},"3":{"line":68,"type":"binary-expr","locations":[{"start":{"line":68,"column":43},"end":{"line":68,"column":50}},{"start":{"line":68,"column":54},"end":{"line":68,"column":56}}]},"4":{"line":99,"type":"binary-expr","locations":[{"start":{"line":99,"column":10},"end":{"line":99,"column":40}},{"start":{"line":99,"column":44},"end":{"line":99,"column":76}}]},"5":{"line":100,"type":"if","locations":[{"start":{"line":100,"column":6},"end":{"line":100,"column":6}},{"start":{"line":100,"column":6},"end":{"line":100,"column":6}}]},"6":{"line":111,"type":"if","locations":[{"start":{"line":111,"column":4},"end":{"line":111,"column":4}},{"start":{"line":111,"column":4},"end":{"line":111,"column":4}}]},"7":{"line":163,"type":"if","locations":[{"start":{"line":163,"column":2},"end":{"line":163,"column":2}},{"start":{"line":163,"column":2},"end":{"line":163,"column":2}}]},"8":{"line":174,"type":"if","locations":[{"start":{"line":174,"column":2},"end":{"line":174,"column":2}},{"start":{"line":174,"column":2},"end":{"line":174,"column":2}}]},"9":{"line":200,"type":"binary-expr","locations":[{"start":{"line":200,"column":9},"end":{"line":200,"column":19}},{"start":{"line":200,"column":24},"end":{"line":200,"column":55}}]},"10":{"line":203,"type":"if","locations":[{"start":{"line":203,"column":2},"end":{"line":203,"column":2}},{"start":{"line":203,"column":2},"end":{"line":203,"column":2}}]},"11":{"line":254,"type":"if","locations":[{"start":{"line":254,"column":2},"end":{"line":254,"column":2}},{"start":{"line":254,"column":2},"end":{"line":254,"column":2}}]}}},"/data/upstream/node-http2/lib/framer.js":{"path":"/data/upstream/node-http2/lib/framer.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":25,"8":25,"9":25,"10":1,"11":1,"12":76,"13":76,"14":76,"15":76,"16":76,"17":76,"18":76,"19":156,"20":0,"21":156,"22":76,"23":1,"24":25,"25":25,"26":25,"27":25,"28":1,"29":1,"30":165,"31":165,"32":165,"33":165,"34":95,"35":1,"36":68,"37":68,"38":0,"39":68,"40":149,"41":149,"42":149,"43":149,"44":149,"45":70,"46":70,"47":70,"48":0,"49":0,"50":149,"51":70,"52":70,"53":70,"54":0,"55":0,"56":70,"57":70,"58":0,"59":70,"60":68,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":87,"69":87,"70":87,"71":91,"72":87,"73":87,"74":87,"75":87,"76":87,"77":87,"78":93,"79":93,"80":93,"81":54,"82":87,"83":87,"84":87,"85":87,"86":1,"87":81,"88":81,"89":81,"90":81,"91":81,"92":81,"93":152,"94":81,"95":81,"96":1,"97":1,"98":1,"99":1,"100":14,"101":1,"102":14,"103":1,"104":1,"105":1,"106":1,"107":29,"108":2,"109":2,"110":2,"111":2,"112":29,"113":1,"114":28,"115":2,"116":2,"117":26,"118":1,"119":1,"120":1,"121":1,"122":2,"123":2,"124":2,"125":1,"126":2,"127":1,"128":1,"129":1,"130":1,"131":2,"132":2,"133":2,"134":2,"135":2,"136":1,"137":2,"138":1,"139":1,"140":1,"141":1,"142":26,"143":26,"144":78,"145":34,"146":34,"147":34,"148":26,"149":26,"150":26,"151":34,"152":34,"153":26,"154":1,"155":22,"156":22,"157":0,"158":22,"159":28,"160":28,"161":28,"162":28,"163":28,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"172":4,"173":4,"174":4,"175":4,"176":4,"177":4,"178":1,"179":4,"180":4,"181":1,"182":1,"183":1,"184":1,"185":2,"186":1,"187":2,"188":0,"189":2,"190":1,"191":1,"192":1,"193":1,"194":4,"195":4,"196":4,"197":4,"198":4,"199":4,"200":4,"201":4,"202":1,"203":3,"204":3,"205":1,"206":1,"207":1,"208":1,"209":2,"210":2,"211":2,"212":2,"213":2,"214":1,"215":2,"216":1,"217":1,"218":1,"219":1,"220":2,"221":1,"222":2,"223":1,"224":1,"225":1,"226":1,"227":6,"228":0,"229":6,"230":4,"231":2,"232":2,"233":2,"234":2,"235":8,"236":2,"237":1,"238":0,"239":1,"240":1,"241":1,"242":2,"243":0,"244":2,"245":0,"246":2,"247":1,"248":0},"b":{"1":[25,1],"2":[0,156],"3":[25,1],"4":[95,70],"5":[0,68],"6":[70,79],"7":[149,134],"8":[70,0],"9":[70,79],"10":[149,70],"11":[70,0],"12":[0,70],"13":[54,39],"14":[87,87],"15":[87,26],"16":[2,27],"17":[2,2],"18":[2,26],"19":[2,2],"20":[34,44],"21":[22,12],"22":[0,22],"23":[28,0],"24":[20,8],"25":[4,4],"26":[0,2],"27":[4,4],"28":[4,4],"29":[2,2],"30":[0,6],"31":[4,2],"32":[1,1],"33":[0,1],"34":[1,0],"35":[0,2],"36":[2,2]},"f":{"1":25,"2":76,"3":25,"4":165,"5":68,"6":87,"7":81,"8":14,"9":14,"10":29,"11":28,"12":2,"13":2,"14":2,"15":2,"16":26,"17":78,"18":22,"19":4,"20":4,"21":2,"22":2,"23":4,"24":3,"25":2,"26":2,"27":2,"28":2,"29":6,"30":8,"31":0,"32":0},"fnMap":{"1":{"name":"Serializer","line":25,"loc":{"start":{"line":25,"column":0},"end":{"line":25,"column":36}}},"2":{"name":"_transform","line":35,"loc":{"start":{"line":35,"column":34},"end":{"line":35,"column":77}}},"3":{"name":"Deserializer","line":67,"loc":{"start":{"line":67,"column":0},"end":{"line":67,"column":38}}},"4":{"name":"(anonymous_4)","line":80,"loc":{"start":{"line":80,"column":31},"end":{"line":80,"column":46}}},"5":{"name":"_transform","line":91,"loc":{"start":{"line":91,"column":36},"end":{"line":91,"column":79}}},"6":{"name":"writeCommonHeader","line":202,"loc":{"start":{"line":202,"column":26},"end":{"line":202,"column":69}}},"7":{"name":"readCommonHeader","line":231,"loc":{"start":{"line":231,"column":28},"end":{"line":231,"column":69}}},"8":{"name":"writeData","line":278,"loc":{"start":{"line":278,"column":18},"end":{"line":278,"column":53}}},"9":{"name":"readData","line":282,"loc":{"start":{"line":282,"column":20},"end":{"line":282,"column":53}}},"10":{"name":"writeHeadersPriority","line":321,"loc":{"start":{"line":321,"column":21},"end":{"line":321,"column":67}}},"11":{"name":"readHeadersPriority","line":331,"loc":{"start":{"line":331,"column":23},"end":{"line":331,"column":67}}},"12":{"name":"writePriority","line":361,"loc":{"start":{"line":361,"column":22},"end":{"line":361,"column":61}}},"13":{"name":"readPriority","line":367,"loc":{"start":{"line":367,"column":24},"end":{"line":367,"column":61}}},"14":{"name":"writeRstStream","line":393,"loc":{"start":{"line":393,"column":24},"end":{"line":393,"column":64}}},"15":{"name":"readRstStream","line":401,"loc":{"start":{"line":401,"column":26},"end":{"line":401,"column":64}}},"16":{"name":"writeSettings","line":437,"loc":{"start":{"line":437,"column":22},"end":{"line":437,"column":61}}},"17":{"name":"(anonymous_17)","line":439,"loc":{"start":{"line":439,"column":26},"end":{"line":439,"column":48}}},"18":{"name":"readSettings","line":457,"loc":{"start":{"line":457,"column":24},"end":{"line":457,"column":61}}},"19":{"name":"writePushPromise","line":522,"loc":{"start":{"line":522,"column":26},"end":{"line":522,"column":68}}},"20":{"name":"readPushPromise","line":533,"loc":{"start":{"line":533,"column":28},"end":{"line":533,"column":68}}},"21":{"name":"writePing","line":557,"loc":{"start":{"line":557,"column":18},"end":{"line":557,"column":53}}},"22":{"name":"readPing","line":561,"loc":{"start":{"line":561,"column":20},"end":{"line":561,"column":53}}},"23":{"name":"writeGoaway","line":596,"loc":{"start":{"line":596,"column":20},"end":{"line":596,"column":57}}},"24":{"name":"readGoaway","line":610,"loc":{"start":{"line":610,"column":22},"end":{"line":610,"column":57}}},"25":{"name":"writeWindowUpdate","line":633,"loc":{"start":{"line":633,"column":27},"end":{"line":633,"column":70}}},"26":{"name":"readWindowUpdate","line":643,"loc":{"start":{"line":643,"column":29},"end":{"line":643,"column":70}}},"27":{"name":"writeContinuation","line":669,"loc":{"start":{"line":669,"column":26},"end":{"line":669,"column":69}}},"28":{"name":"readContinuation","line":673,"loc":{"start":{"line":673,"column":28},"end":{"line":673,"column":69}}},"29":{"name":"(anonymous_29)","line":703,"loc":{"start":{"line":703,"column":28},"end":{"line":703,"column":44}}},"30":{"name":"(anonymous_30)","line":716,"loc":{"start":{"line":716,"column":71},"end":{"line":716,"column":86}}},"31":{"name":"(anonymous_31)","line":736,"loc":{"start":{"line":736,"column":57},"end":{"line":736,"column":72}}},"32":{"name":"(anonymous_32)","line":744,"loc":{"start":{"line":744,"column":27},"end":{"line":744,"column":42}}}},"statementMap":{"1":{"start":{"line":5,"column":0},"end":{"line":5,"column":31}},"2":{"start":{"line":7,"column":0},"end":{"line":7,"column":44}},"3":{"start":{"line":9,"column":0},"end":{"line":9,"column":32}},"4":{"start":{"line":10,"column":0},"end":{"line":10,"column":36}},"5":{"start":{"line":12,"column":0},"end":{"line":12,"column":50}},"6":{"start":{"line":25,"column":0},"end":{"line":29,"column":1}},"7":{"start":{"line":26,"column":2},"end":{"line":26,"column":53}},"8":{"start":{"line":27,"column":2},"end":{"line":27,"column":50}},"9":{"start":{"line":28,"column":2},"end":{"line":28,"column":45}},"10":{"start":{"line":30,"column":0},"end":{"line":30,"column":98}},"11":{"start":{"line":35,"column":0},"end":{"line":54,"column":2}},"12":{"start":{"line":36,"column":2},"end":{"line":36,"column":54}},"13":{"start":{"line":38,"column":2},"end":{"line":38,"column":72}},"14":{"start":{"line":40,"column":2},"end":{"line":40,"column":19}},"15":{"start":{"line":41,"column":2},"end":{"line":41,"column":41}},"16":{"start":{"line":42,"column":2},"end":{"line":42,"column":42}},"17":{"start":{"line":44,"column":2},"end":{"line":44,"column":76}},"18":{"start":{"line":46,"column":2},"end":{"line":51,"column":3}},"19":{"start":{"line":47,"column":4},"end":{"line":49,"column":5}},"20":{"start":{"line":48,"column":6},"end":{"line":48,"column":61}},"21":{"start":{"line":50,"column":4},"end":{"line":50,"column":26}},"22":{"start":{"line":53,"column":2},"end":{"line":53,"column":9}},"23":{"start":{"line":67,"column":0},"end":{"line":72,"column":1}},"24":{"start":{"line":68,"column":2},"end":{"line":68,"column":55}},"25":{"start":{"line":69,"column":2},"end":{"line":69,"column":50}},"26":{"start":{"line":70,"column":2},"end":{"line":70,"column":45}},"27":{"start":{"line":71,"column":2},"end":{"line":71,"column":33}},"28":{"start":{"line":73,"column":0},"end":{"line":73,"column":102}},"29":{"start":{"line":80,"column":0},"end":{"line":87,"column":2}},"30":{"start":{"line":81,"column":2},"end":{"line":81,"column":19}},"31":{"start":{"line":82,"column":2},"end":{"line":82,"column":34}},"32":{"start":{"line":83,"column":2},"end":{"line":83,"column":51}},"33":{"start":{"line":84,"column":2},"end":{"line":86,"column":3}},"34":{"start":{"line":85,"column":4},"end":{"line":85,"column":21}},"35":{"start":{"line":91,"column":0},"end":{"line":144,"column":2}},"36":{"start":{"line":92,"column":2},"end":{"line":92,"column":17}},"37":{"start":{"line":94,"column":2},"end":{"line":96,"column":3}},"38":{"start":{"line":95,"column":4},"end":{"line":95,"column":54}},"39":{"start":{"line":98,"column":2},"end":{"line":141,"column":3}},"40":{"start":{"line":101,"column":4},"end":{"line":101,"column":85}},"41":{"start":{"line":102,"column":4},"end":{"line":102,"column":68}},"42":{"start":{"line":103,"column":4},"end":{"line":103,"column":27}},"43":{"start":{"line":104,"column":4},"end":{"line":104,"column":21}},"44":{"start":{"line":111,"column":4},"end":{"line":119,"column":5}},"45":{"start":{"line":112,"column":6},"end":{"line":112,"column":77}},"46":{"start":{"line":113,"column":6},"end":{"line":118,"column":7}},"47":{"start":{"line":114,"column":8},"end":{"line":114,"column":32}},"48":{"start":{"line":116,"column":8},"end":{"line":116,"column":46}},"49":{"start":{"line":117,"column":8},"end":{"line":117,"column":15}},"50":{"start":{"line":126,"column":4},"end":{"line":140,"column":5}},"51":{"start":{"line":127,"column":6},"end":{"line":138,"column":7}},"52":{"start":{"line":128,"column":8},"end":{"line":128,"column":78}},"53":{"start":{"line":129,"column":8},"end":{"line":135,"column":9}},"54":{"start":{"line":130,"column":10},"end":{"line":130,"column":68}},"55":{"start":{"line":131,"column":10},"end":{"line":131,"column":47}},"56":{"start":{"line":133,"column":10},"end":{"line":133,"column":68}},"57":{"start":{"line":134,"column":10},"end":{"line":134,"column":33}},"58":{"start":{"line":137,"column":8},"end":{"line":137,"column":78}},"59":{"start":{"line":139,"column":6},"end":{"line":139,"column":37}},"60":{"start":{"line":143,"column":2},"end":{"line":143,"column":9}},"61":{"start":{"line":191,"column":0},"end":{"line":191,"column":27}},"62":{"start":{"line":192,"column":0},"end":{"line":192,"column":29}},"63":{"start":{"line":194,"column":0},"end":{"line":194,"column":20}},"64":{"start":{"line":196,"column":0},"end":{"line":196,"column":20}},"65":{"start":{"line":198,"column":0},"end":{"line":198,"column":52}},"66":{"start":{"line":200,"column":0},"end":{"line":200,"column":32}},"67":{"start":{"line":202,"column":0},"end":{"line":229,"column":2}},"68":{"start":{"line":203,"column":2},"end":{"line":203,"column":52}},"69":{"start":{"line":205,"column":2},"end":{"line":205,"column":15}},"70":{"start":{"line":206,"column":2},"end":{"line":208,"column":3}},"71":{"start":{"line":207,"column":4},"end":{"line":207,"column":30}},"72":{"start":{"line":209,"column":2},"end":{"line":209,"column":41}},"73":{"start":{"line":210,"column":2},"end":{"line":210,"column":38}},"74":{"start":{"line":212,"column":2},"end":{"line":212,"column":46}},"75":{"start":{"line":213,"column":2},"end":{"line":213,"column":37}},"76":{"start":{"line":215,"column":2},"end":{"line":215,"column":19}},"77":{"start":{"line":216,"column":2},"end":{"line":222,"column":3}},"78":{"start":{"line":217,"column":4},"end":{"line":217,"column":56}},"79":{"start":{"line":218,"column":4},"end":{"line":218,"column":87}},"80":{"start":{"line":219,"column":4},"end":{"line":221,"column":5}},"81":{"start":{"line":220,"column":6},"end":{"line":220,"column":34}},"82":{"start":{"line":223,"column":2},"end":{"line":223,"column":39}},"83":{"start":{"line":225,"column":2},"end":{"line":225,"column":75}},"84":{"start":{"line":226,"column":2},"end":{"line":226,"column":51}},"85":{"start":{"line":228,"column":2},"end":{"line":228,"column":32}},"86":{"start":{"line":231,"column":0},"end":{"line":246,"column":2}},"87":{"start":{"line":232,"column":2},"end":{"line":232,"column":38}},"88":{"start":{"line":234,"column":2},"end":{"line":234,"column":47}},"89":{"start":{"line":236,"column":2},"end":{"line":236,"column":19}},"90":{"start":{"line":237,"column":2},"end":{"line":237,"column":37}},"91":{"start":{"line":238,"column":2},"end":{"line":238,"column":44}},"92":{"start":{"line":239,"column":2},"end":{"line":241,"column":3}},"93":{"start":{"line":240,"column":4},"end":{"line":240,"column":64}},"94":{"start":{"line":243,"column":2},"end":{"line":243,"column":53}},"95":{"start":{"line":245,"column":2},"end":{"line":245,"column":16}},"96":{"start":{"line":272,"column":0},"end":{"line":272,"column":25}},"97":{"start":{"line":274,"column":0},"end":{"line":274,"column":45}},"98":{"start":{"line":276,"column":0},"end":{"line":276,"column":39}},"99":{"start":{"line":278,"column":0},"end":{"line":280,"column":2}},"100":{"start":{"line":279,"column":2},"end":{"line":279,"column":27}},"101":{"start":{"line":282,"column":0},"end":{"line":284,"column":2}},"102":{"start":{"line":283,"column":2},"end":{"line":283,"column":22}},"103":{"start":{"line":305,"column":0},"end":{"line":305,"column":28}},"104":{"start":{"line":307,"column":0},"end":{"line":307,"column":75}},"105":{"start":{"line":309,"column":0},"end":{"line":309,"column":65}},"106":{"start":{"line":321,"column":0},"end":{"line":329,"column":2}},"107":{"start":{"line":322,"column":2},"end":{"line":327,"column":3}},"108":{"start":{"line":323,"column":4},"end":{"line":323,"column":31}},"109":{"start":{"line":324,"column":4},"end":{"line":324,"column":84}},"110":{"start":{"line":325,"column":4},"end":{"line":325,"column":44}},"111":{"start":{"line":326,"column":4},"end":{"line":326,"column":25}},"112":{"start":{"line":328,"column":2},"end":{"line":328,"column":27}},"113":{"start":{"line":331,"column":0},"end":{"line":338,"column":2}},"114":{"start":{"line":332,"column":2},"end":{"line":337,"column":3}},"115":{"start":{"line":333,"column":4},"end":{"line":333,"column":57}},"116":{"start":{"line":334,"column":4},"end":{"line":334,"column":33}},"117":{"start":{"line":336,"column":4},"end":{"line":336,"column":24}},"118":{"start":{"line":347,"column":0},"end":{"line":347,"column":29}},"119":{"start":{"line":349,"column":0},"end":{"line":349,"column":25}},"120":{"start":{"line":351,"column":0},"end":{"line":351,"column":47}},"121":{"start":{"line":361,"column":0},"end":{"line":365,"column":2}},"122":{"start":{"line":362,"column":2},"end":{"line":362,"column":29}},"123":{"start":{"line":363,"column":2},"end":{"line":363,"column":42}},"124":{"start":{"line":364,"column":2},"end":{"line":364,"column":23}},"125":{"start":{"line":367,"column":0},"end":{"line":369,"column":2}},"126":{"start":{"line":368,"column":2},"end":{"line":368,"column":42}},"127":{"start":{"line":378,"column":0},"end":{"line":378,"column":31}},"128":{"start":{"line":380,"column":0},"end":{"line":380,"column":27}},"129":{"start":{"line":382,"column":0},"end":{"line":382,"column":46}},"130":{"start":{"line":393,"column":0},"end":{"line":399,"column":2}},"131":{"start":{"line":394,"column":2},"end":{"line":394,"column":29}},"132":{"start":{"line":395,"column":2},"end":{"line":395,"column":45}},"133":{"start":{"line":396,"column":2},"end":{"line":396,"column":52}},"134":{"start":{"line":397,"column":2},"end":{"line":397,"column":32}},"135":{"start":{"line":398,"column":2},"end":{"line":398,"column":23}},"136":{"start":{"line":401,"column":0},"end":{"line":403,"column":2}},"137":{"start":{"line":402,"column":2},"end":{"line":402,"column":51}},"138":{"start":{"line":413,"column":0},"end":{"line":413,"column":29}},"139":{"start":{"line":415,"column":0},"end":{"line":415,"column":25}},"140":{"start":{"line":417,"column":0},"end":{"line":417,"column":47}},"141":{"start":{"line":437,"column":0},"end":{"line":455,"column":2}},"142":{"start":{"line":438,"column":2},"end":{"line":438,"column":64}},"143":{"start":{"line":439,"column":2},"end":{"line":445,"column":5}},"144":{"start":{"line":440,"column":4},"end":{"line":444,"column":5}},"145":{"start":{"line":441,"column":6},"end":{"line":441,"column":65}},"146":{"start":{"line":442,"column":6},"end":{"line":442,"column":47}},"147":{"start":{"line":443,"column":6},"end":{"line":443,"column":78}},"148":{"start":{"line":446,"column":2},"end":{"line":446,"column":84}},"149":{"start":{"line":448,"column":2},"end":{"line":448,"column":47}},"150":{"start":{"line":449,"column":2},"end":{"line":452,"column":3}},"151":{"start":{"line":450,"column":4},"end":{"line":450,"column":57}},"152":{"start":{"line":451,"column":4},"end":{"line":451,"column":53}},"153":{"start":{"line":454,"column":2},"end":{"line":454,"column":23}},"154":{"start":{"line":457,"column":0},"end":{"line":473,"column":2}},"155":{"start":{"line":458,"column":2},"end":{"line":458,"column":22}},"156":{"start":{"line":460,"column":2},"end":{"line":462,"column":3}},"157":{"start":{"line":461,"column":4},"end":{"line":461,"column":36}},"158":{"start":{"line":463,"column":2},"end":{"line":472,"column":3}},"159":{"start":{"line":464,"column":4},"end":{"line":464,"column":49}},"160":{"start":{"line":465,"column":4},"end":{"line":465,"column":38}},"161":{"start":{"line":466,"column":4},"end":{"line":471,"column":5}},"162":{"start":{"line":467,"column":6},"end":{"line":467,"column":47}},"163":{"start":{"line":468,"column":6},"end":{"line":468,"column":81}},"164":{"start":{"line":476,"column":0},"end":{"line":476,"column":25}},"165":{"start":{"line":480,"column":0},"end":{"line":480,"column":78}},"166":{"start":{"line":484,"column":0},"end":{"line":484,"column":75}},"167":{"start":{"line":490,"column":0},"end":{"line":490,"column":76}},"168":{"start":{"line":504,"column":0},"end":{"line":504,"column":33}},"169":{"start":{"line":506,"column":0},"end":{"line":506,"column":47}},"170":{"start":{"line":508,"column":0},"end":{"line":508,"column":77}},"171":{"start":{"line":522,"column":0},"end":{"line":531,"column":2}},"172":{"start":{"line":523,"column":2},"end":{"line":523,"column":29}},"173":{"start":{"line":525,"column":2},"end":{"line":525,"column":46}},"174":{"start":{"line":526,"column":2},"end":{"line":526,"column":85}},"175":{"start":{"line":527,"column":2},"end":{"line":527,"column":43}},"176":{"start":{"line":529,"column":2},"end":{"line":529,"column":23}},"177":{"start":{"line":530,"column":2},"end":{"line":530,"column":27}},"178":{"start":{"line":533,"column":0},"end":{"line":536,"column":2}},"179":{"start":{"line":534,"column":2},"end":{"line":534,"column":62}},"180":{"start":{"line":535,"column":2},"end":{"line":535,"column":31}},"181":{"start":{"line":549,"column":0},"end":{"line":549,"column":25}},"182":{"start":{"line":551,"column":0},"end":{"line":551,"column":27}},"183":{"start":{"line":553,"column":0},"end":{"line":553,"column":39}},"184":{"start":{"line":557,"column":0},"end":{"line":559,"column":2}},"185":{"start":{"line":558,"column":2},"end":{"line":558,"column":27}},"186":{"start":{"line":561,"column":0},"end":{"line":566,"column":2}},"187":{"start":{"line":562,"column":2},"end":{"line":564,"column":3}},"188":{"start":{"line":563,"column":4},"end":{"line":563,"column":37}},"189":{"start":{"line":565,"column":2},"end":{"line":565,"column":22}},"190":{"start":{"line":575,"column":0},"end":{"line":575,"column":27}},"191":{"start":{"line":577,"column":0},"end":{"line":577,"column":23}},"192":{"start":{"line":579,"column":0},"end":{"line":579,"column":57}},"193":{"start":{"line":596,"column":0},"end":{"line":608,"column":2}},"194":{"start":{"line":597,"column":2},"end":{"line":597,"column":29}},"195":{"start":{"line":599,"column":2},"end":{"line":599,"column":38}},"196":{"start":{"line":600,"column":2},"end":{"line":600,"column":73}},"197":{"start":{"line":601,"column":2},"end":{"line":601,"column":39}},"198":{"start":{"line":603,"column":2},"end":{"line":603,"column":45}},"199":{"start":{"line":604,"column":2},"end":{"line":604,"column":52}},"200":{"start":{"line":605,"column":2},"end":{"line":605,"column":32}},"201":{"start":{"line":607,"column":2},"end":{"line":607,"column":23}},"202":{"start":{"line":610,"column":0},"end":{"line":613,"column":2}},"203":{"start":{"line":611,"column":2},"end":{"line":611,"column":58}},"204":{"start":{"line":612,"column":2},"end":{"line":612,"column":51}},"205":{"start":{"line":622,"column":0},"end":{"line":622,"column":34}},"206":{"start":{"line":624,"column":0},"end":{"line":624,"column":30}},"207":{"start":{"line":626,"column":0},"end":{"line":626,"column":55}},"208":{"start":{"line":633,"column":0},"end":{"line":641,"column":2}},"209":{"start":{"line":634,"column":2},"end":{"line":634,"column":29}},"210":{"start":{"line":636,"column":2},"end":{"line":636,"column":38}},"211":{"start":{"line":637,"column":2},"end":{"line":637,"column":73}},"212":{"start":{"line":638,"column":2},"end":{"line":638,"column":39}},"213":{"start":{"line":640,"column":2},"end":{"line":640,"column":23}},"214":{"start":{"line":643,"column":0},"end":{"line":645,"column":2}},"215":{"start":{"line":644,"column":2},"end":{"line":644,"column":58}},"216":{"start":{"line":663,"column":0},"end":{"line":663,"column":33}},"217":{"start":{"line":665,"column":0},"end":{"line":665,"column":68}},"218":{"start":{"line":667,"column":0},"end":{"line":667,"column":58}},"219":{"start":{"line":669,"column":0},"end":{"line":671,"column":2}},"220":{"start":{"line":670,"column":2},"end":{"line":670,"column":27}},"221":{"start":{"line":673,"column":0},"end":{"line":675,"column":2}},"222":{"start":{"line":674,"column":2},"end":{"line":674,"column":22}},"223":{"start":{"line":680,"column":0},"end":{"line":691,"column":2}},"224":{"start":{"line":698,"column":0},"end":{"line":698,"column":25}},"225":{"start":{"line":702,"column":0},"end":{"line":702,"column":21}},"226":{"start":{"line":703,"column":0},"end":{"line":741,"column":2}},"227":{"start":{"line":704,"column":2},"end":{"line":706,"column":3}},"228":{"start":{"line":705,"column":4},"end":{"line":705,"column":16}},"229":{"start":{"line":708,"column":2},"end":{"line":710,"column":3}},"230":{"start":{"line":709,"column":4},"end":{"line":709,"column":20}},"231":{"start":{"line":712,"column":2},"end":{"line":712,"column":26}},"232":{"start":{"line":713,"column":2},"end":{"line":713,"column":20}},"233":{"start":{"line":715,"column":2},"end":{"line":715,"column":34}},"234":{"start":{"line":716,"column":2},"end":{"line":718,"column":5}},"235":{"start":{"line":717,"column":4},"end":{"line":717,"column":33}},"236":{"start":{"line":720,"column":2},"end":{"line":730,"column":3}},"237":{"start":{"line":721,"column":4},"end":{"line":725,"column":5}},"238":{"start":{"line":722,"column":6},"end":{"line":722,"column":70}},"239":{"start":{"line":724,"column":6},"end":{"line":724,"column":49}},"240":{"start":{"line":727,"column":4},"end":{"line":729,"column":5}},"241":{"start":{"line":728,"column":6},"end":{"line":728,"column":42}},"242":{"start":{"line":732,"column":2},"end":{"line":734,"column":3}},"243":{"start":{"line":733,"column":4},"end":{"line":733,"column":68}},"244":{"start":{"line":736,"column":2},"end":{"line":738,"column":5}},"245":{"start":{"line":737,"column":4},"end":{"line":737,"column":38}},"246":{"start":{"line":740,"column":2},"end":{"line":740,"column":18}},"247":{"start":{"line":744,"column":0},"end":{"line":746,"column":2}},"248":{"start":{"line":745,"column":2},"end":{"line":745,"column":30}}},"branchMap":{"1":{"line":27,"type":"binary-expr","locations":[{"start":{"line":27,"column":20},"end":{"line":27,"column":29}},{"start":{"line":27,"column":33},"end":{"line":27,"column":49}}]},"2":{"line":47,"type":"if","locations":[{"start":{"line":47,"column":4},"end":{"line":47,"column":4}},{"start":{"line":47,"column":4},"end":{"line":47,"column":4}}]},"3":{"line":69,"type":"binary-expr","locations":[{"start":{"line":69,"column":20},"end":{"line":69,"column":29}},{"start":{"line":69,"column":33},"end":{"line":69,"column":49}}]},"4":{"line":84,"type":"if","locations":[{"start":{"line":84,"column":2},"end":{"line":84,"column":2}},{"start":{"line":84,"column":2},"end":{"line":84,"column":2}}]},"5":{"line":94,"type":"if","locations":[{"start":{"line":94,"column":2},"end":{"line":94,"column":2}},{"start":{"line":94,"column":2},"end":{"line":94,"column":2}}]},"6":{"line":111,"type":"if","locations":[{"start":{"line":111,"column":4},"end":{"line":111,"column":4}},{"start":{"line":111,"column":4},"end":{"line":111,"column":4}}]},"7":{"line":111,"type":"binary-expr","locations":[{"start":{"line":111,"column":9},"end":{"line":111,"column":45}},{"start":{"line":111,"column":50},"end":{"line":111,"column":72}}]},"8":{"line":113,"type":"if","locations":[{"start":{"line":113,"column":6},"end":{"line":113,"column":6}},{"start":{"line":113,"column":6},"end":{"line":113,"column":6}}]},"9":{"line":126,"type":"if","locations":[{"start":{"line":126,"column":4},"end":{"line":126,"column":4}},{"start":{"line":126,"column":4},"end":{"line":126,"column":4}}]},"10":{"line":126,"type":"binary-expr","locations":[{"start":{"line":126,"column":9},"end":{"line":126,"column":45}},{"start":{"line":126,"column":50},"end":{"line":126,"column":73}}]},"11":{"line":127,"type":"if","locations":[{"start":{"line":127,"column":6},"end":{"line":127,"column":6}},{"start":{"line":127,"column":6},"end":{"line":127,"column":6}}]},"12":{"line":129,"type":"if","locations":[{"start":{"line":129,"column":8},"end":{"line":129,"column":8}},{"start":{"line":129,"column":8},"end":{"line":129,"column":8}}]},"13":{"line":219,"type":"if","locations":[{"start":{"line":219,"column":4},"end":{"line":219,"column":4}},{"start":{"line":219,"column":4},"end":{"line":219,"column":4}}]},"14":{"line":225,"type":"binary-expr","locations":[{"start":{"line":225,"column":10},"end":{"line":225,"column":27}},{"start":{"line":225,"column":33},"end":{"line":225,"column":58}}]},"15":{"line":226,"type":"binary-expr","locations":[{"start":{"line":226,"column":29},"end":{"line":226,"column":41}},{"start":{"line":226,"column":45},"end":{"line":226,"column":46}}]},"16":{"line":322,"type":"if","locations":[{"start":{"line":322,"column":2},"end":{"line":322,"column":2}},{"start":{"line":322,"column":2},"end":{"line":322,"column":2}}]},"17":{"line":324,"type":"binary-expr","locations":[{"start":{"line":324,"column":12},"end":{"line":324,"column":31}},{"start":{"line":324,"column":37},"end":{"line":324,"column":65}}]},"18":{"line":332,"type":"if","locations":[{"start":{"line":332,"column":2},"end":{"line":332,"column":2}},{"start":{"line":332,"column":2},"end":{"line":332,"column":2}}]},"19":{"line":396,"type":"binary-expr","locations":[{"start":{"line":396,"column":10},"end":{"line":396,"column":19}},{"start":{"line":396,"column":25},"end":{"line":396,"column":43}}]},"20":{"line":440,"type":"if","locations":[{"start":{"line":440,"column":4},"end":{"line":440,"column":4}},{"start":{"line":440,"column":4},"end":{"line":440,"column":4}}]},"21":{"line":443,"type":"cond-expr","locations":[{"start":{"line":443,"column":52},"end":{"line":443,"column":66}},{"start":{"line":443,"column":69},"end":{"line":443,"column":74}}]},"22":{"line":460,"type":"if","locations":[{"start":{"line":460,"column":2},"end":{"line":460,"column":2}},{"start":{"line":460,"column":2},"end":{"line":460,"column":2}}]},"23":{"line":466,"type":"if","locations":[{"start":{"line":466,"column":4},"end":{"line":466,"column":4}},{"start":{"line":466,"column":4},"end":{"line":466,"column":4}}]},"24":{"line":468,"type":"cond-expr","locations":[{"start":{"line":468,"column":52},"end":{"line":468,"column":72}},{"start":{"line":468,"column":75},"end":{"line":468,"column":80}}]},"25":{"line":526,"type":"binary-expr","locations":[{"start":{"line":526,"column":10},"end":{"line":526,"column":30}},{"start":{"line":526,"column":36},"end":{"line":526,"column":65}}]},"26":{"line":562,"type":"if","locations":[{"start":{"line":562,"column":2},"end":{"line":562,"column":2}},{"start":{"line":562,"column":2},"end":{"line":562,"column":2}}]},"27":{"line":600,"type":"binary-expr","locations":[{"start":{"line":600,"column":10},"end":{"line":600,"column":26}},{"start":{"line":600,"column":32},"end":{"line":600,"column":57}}]},"28":{"line":604,"type":"binary-expr","locations":[{"start":{"line":604,"column":10},"end":{"line":604,"column":19}},{"start":{"line":604,"column":25},"end":{"line":604,"column":43}}]},"29":{"line":637,"type":"binary-expr","locations":[{"start":{"line":637,"column":10},"end":{"line":637,"column":26}},{"start":{"line":637,"column":32},"end":{"line":637,"column":57}}]},"30":{"line":704,"type":"if","locations":[{"start":{"line":704,"column":2},"end":{"line":704,"column":2}},{"start":{"line":704,"column":2},"end":{"line":704,"column":2}}]},"31":{"line":708,"type":"if","locations":[{"start":{"line":708,"column":2},"end":{"line":708,"column":2}},{"start":{"line":708,"column":2},"end":{"line":708,"column":2}}]},"32":{"line":720,"type":"if","locations":[{"start":{"line":720,"column":2},"end":{"line":720,"column":2}},{"start":{"line":720,"column":2},"end":{"line":720,"column":2}}]},"33":{"line":721,"type":"if","locations":[{"start":{"line":721,"column":4},"end":{"line":721,"column":4}},{"start":{"line":721,"column":4},"end":{"line":721,"column":4}}]},"34":{"line":727,"type":"if","locations":[{"start":{"line":727,"column":4},"end":{"line":727,"column":4}},{"start":{"line":727,"column":4},"end":{"line":727,"column":4}}]},"35":{"line":732,"type":"if","locations":[{"start":{"line":732,"column":2},"end":{"line":732,"column":2}},{"start":{"line":732,"column":2},"end":{"line":732,"column":2}}]},"36":{"line":736,"type":"binary-expr","locations":[{"start":{"line":736,"column":31},"end":{"line":736,"column":42}},{"start":{"line":736,"column":46},"end":{"line":736,"column":48}}]}}},"/data/upstream/node-http2/lib/http.js":{"path":"/data/upstream/node-http2/lib/http.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":3,"20":1,"21":1,"22":1,"23":6,"24":1,"25":25,"26":25,"27":25,"28":25,"29":25,"30":25,"31":25,"32":25,"33":25,"34":25,"35":1,"36":1,"37":24,"38":168,"39":168,"40":0,"41":0,"42":0,"43":24,"44":73,"45":13,"46":24,"47":1,"48":2,"49":1,"50":1,"51":60,"52":0,"53":0,"54":60,"55":1,"56":27,"57":27,"58":27,"59":27,"60":27,"61":1,"62":1,"63":13,"64":12,"65":1,"66":1,"67":31,"68":23,"69":2,"70":0,"71":2,"72":23,"73":8,"74":1,"75":4,"76":0,"77":4,"78":4,"79":0,"80":4,"81":1,"82":1,"83":0,"84":1,"85":1,"86":3,"87":1,"88":2,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":13,"98":13,"99":13,"100":13,"101":13,"102":13,"103":10,"104":10,"105":10,"106":10,"107":10,"108":10,"109":10,"110":9,"111":9,"112":0,"113":10,"114":3,"115":1,"116":1,"117":1,"118":2,"119":2,"120":11,"121":1,"122":1,"123":10,"124":10,"125":10,"126":10,"127":10,"128":10,"129":10,"130":10,"131":10,"132":10,"133":1,"134":0,"135":0,"136":0,"137":0,"138":1,"139":9,"140":9,"141":1,"142":4,"143":4,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":0,"151":1,"152":1,"153":1,"154":9,"155":0,"156":9,"157":1,"158":0,"159":0,"160":1,"161":10,"162":1,"163":1,"164":10,"165":9,"166":9,"167":9,"168":1,"169":12,"170":1,"171":1,"172":12,"173":12,"174":12,"175":12,"176":12,"177":12,"178":12,"179":12,"180":1,"181":12,"182":12,"183":12,"184":12,"185":12,"186":12,"187":1,"188":1,"189":12,"190":1,"191":11,"192":12,"193":1,"194":12,"195":12,"196":11,"197":12,"198":12,"199":12,"200":12,"201":1,"202":23,"203":11,"204":1,"205":11,"206":11,"207":1,"208":12,"209":12,"210":1,"211":10,"212":1,"213":2,"214":1,"215":2,"216":0,"217":2,"218":2,"219":2,"220":2,"221":1,"222":12,"223":0,"224":12,"225":1,"226":1,"227":1,"228":1,"229":1,"230":1,"231":4,"232":1,"233":7,"234":1,"235":4,"236":4,"237":4,"238":4,"239":4,"240":4,"241":4,"242":4,"243":1,"244":1,"245":12,"246":8,"247":12,"248":12,"249":12,"250":12,"251":12,"252":12,"253":1,"254":1,"255":11,"256":11,"257":7,"258":11,"259":11,"260":1,"261":1,"262":10,"263":1,"264":1,"265":1,"266":1,"267":9,"268":9,"269":9,"270":9,"271":9,"272":9,"273":9,"274":0,"275":9,"276":9,"277":1,"278":9,"279":9,"280":9,"281":9,"282":9,"283":9,"284":9,"285":9,"286":1,"287":1,"288":0,"289":8,"290":8,"291":8,"292":8,"293":0,"294":9,"295":9,"296":9,"297":9,"298":0,"299":11,"300":1,"301":7,"302":7,"303":7,"304":1,"305":9,"306":9,"307":9,"308":9,"309":9,"310":9,"311":9,"312":9,"313":1,"314":1,"315":1,"316":1,"317":1,"318":15,"319":15,"320":15,"321":1,"322":1,"323":11,"324":11,"325":11,"326":1,"327":11,"328":11,"329":11,"330":0,"331":11,"332":11,"333":11,"334":11,"335":11,"336":11,"337":11,"338":11,"339":11,"340":11,"341":11,"342":1,"343":4,"344":4,"345":4,"346":1,"347":0,"348":0,"349":0,"350":1,"351":40,"352":0,"353":40,"354":1,"355":3,"356":1,"357":2,"358":1,"359":1,"360":3,"361":1,"362":2,"363":1,"364":1,"365":3,"366":1,"367":2,"368":1,"369":1,"370":3,"371":1,"372":2,"373":1,"374":1,"375":1,"376":2,"377":2,"378":2,"379":2,"380":0,"381":1,"382":13,"383":1,"384":1,"385":12,"386":12,"387":12,"388":12,"389":1,"390":2,"391":2,"392":2,"393":2,"394":2,"395":2,"396":2,"397":2,"398":2,"399":2,"400":1,"401":1,"402":0,"403":1,"404":0,"405":1},"b":{"1":[0,168],"2":[13,60],"3":[0,60],"4":[60,60],"5":[12,1],"6":[23,8],"7":[2,21],"8":[0,2],"9":[0,4],"10":[0,4],"11":[0,1],"12":[13,2],"13":[13,2],"14":[10,3],"15":[13,10,3],"16":[9,0],"17":[9,9],"18":[1,2],"19":[0,9],"20":[1,0],"21":[1,0],"22":[1,0],"23":[0,9],"24":[9,9],"25":[0,0],"26":[0,0],"27":[1,9],"28":[9,0],"29":[1,11],"30":[11,1],"31":[12,11],"32":[11,12],"33":[1,1],"34":[0,2],"35":[2,2],"36":[2,1,1],"37":[2,2,2],"38":[0,12],"39":[12,0],"40":[0,0],"41":[4,4],"42":[7,7],"43":[4,1],"44":[4,1],"45":[8,4],"46":[12,12],"47":[12,3],"48":[12,4,1],"49":[12,1],"50":[12,1],"51":[1,11],"52":[7,4],"53":[1,10],"54":[1,9],"55":[0,9],"56":[9,0],"57":[1,8],"58":[1,0],"59":[8,0],"60":[9,0],"61":[0,11],"62":[11,10],"63":[0,0],"64":[0,40],"65":[40,0],"66":[0,0],"67":[1,2],"68":[1,1],"69":[1,2],"70":[1,1],"71":[1,2],"72":[1,1],"73":[1,2],"74":[1,1],"75":[2,0]},"f":{"1":2,"2":3,"3":6,"4":25,"5":24,"6":2,"7":60,"8":27,"9":13,"10":31,"11":4,"12":1,"13":3,"14":2,"15":13,"16":9,"17":10,"18":10,"19":0,"20":9,"21":4,"22":1,"23":1,"24":1,"25":9,"26":0,"27":10,"28":12,"29":12,"30":12,"31":12,"32":23,"33":11,"34":12,"35":10,"36":2,"37":12,"38":4,"39":7,"40":4,"41":12,"42":9,"43":9,"44":9,"45":7,"46":9,"47":1,"48":1,"49":15,"50":11,"51":4,"52":0,"53":40,"54":3,"55":3,"56":3,"57":3,"58":2,"59":13,"60":12,"61":2,"62":0,"63":0},"fnMap":{"1":{"name":"noop","line":162,"loc":{"start":{"line":162,"column":0},"end":{"line":162,"column":16}}},"2":{"name":"(anonymous_2)","line":171,"loc":{"start":{"line":171,"column":9},"end":{"line":171,"column":20}}},"3":{"name":"(anonymous_3)","line":177,"loc":{"start":{"line":177,"column":16},"end":{"line":177,"column":33}}},"4":{"name":"IncomingMessage","line":184,"loc":{"start":{"line":184,"column":0},"end":{"line":184,"column":33}}},"5":{"name":"_onHeaders","line":211,"loc":{"start":{"line":211,"column":39},"end":{"line":211,"column":68}}},"6":{"name":"_onTrailers","line":236,"loc":{"start":{"line":236,"column":40},"end":{"line":236,"column":71}}},"7":{"name":"_checkSpecialHeader","line":242,"loc":{"start":{"line":242,"column":48},"end":{"line":242,"column":89}}},"8":{"name":"OutgoingMessage","line":255,"loc":{"start":{"line":255,"column":0},"end":{"line":255,"column":27}}},"9":{"name":"_write","line":267,"loc":{"start":{"line":267,"column":35},"end":{"line":267,"column":78}}},"10":{"name":"_finish","line":275,"loc":{"start":{"line":275,"column":36},"end":{"line":275,"column":55}}},"11":{"name":"setHeader","line":290,"loc":{"start":{"line":290,"column":38},"end":{"line":290,"column":70}}},"12":{"name":"removeHeader","line":302,"loc":{"start":{"line":302,"column":41},"end":{"line":302,"column":69}}},"13":{"name":"getHeader","line":310,"loc":{"start":{"line":310,"column":38},"end":{"line":310,"column":63}}},"14":{"name":"addTrailers","line":314,"loc":{"start":{"line":314,"column":40},"end":{"line":314,"column":71}}},"15":{"name":"Server","line":334,"loc":{"start":{"line":334,"column":0},"end":{"line":334,"column":25}}},"16":{"name":"(anonymous_16)","line":351,"loc":{"start":{"line":351,"column":40},"end":{"line":351,"column":57}}},"17":{"name":"_start","line":379,"loc":{"start":{"line":379,"column":26},"end":{"line":379,"column":50}}},"18":{"name":"_onStream","line":390,"loc":{"start":{"line":390,"column":24},"end":{"line":390,"column":51}}},"19":{"name":"_fallback","line":402,"loc":{"start":{"line":402,"column":29},"end":{"line":402,"column":56}}},"20":{"name":"listen","line":418,"loc":{"start":{"line":418,"column":26},"end":{"line":418,"column":58}}},"21":{"name":"close","line":424,"loc":{"start":{"line":424,"column":25},"end":{"line":424,"column":50}}},"22":{"name":"setTimeout","line":429,"loc":{"start":{"line":429,"column":30},"end":{"line":429,"column":69}}},"23":{"name":"getTimeout","line":436,"loc":{"start":{"line":436,"column":7},"end":{"line":436,"column":29}}},"24":{"name":"setTimeout","line":443,"loc":{"start":{"line":443,"column":7},"end":{"line":443,"column":36}}},"25":{"name":"on","line":454,"loc":{"start":{"line":454,"column":22},"end":{"line":454,"column":51}}},"26":{"name":"addContext","line":463,"loc":{"start":{"line":463,"column":30},"end":{"line":463,"column":73}}},"27":{"name":"createServer","line":469,"loc":{"start":{"line":469,"column":0},"end":{"line":469,"column":48}}},"28":{"name":"IncomingRequest","line":487,"loc":{"start":{"line":487,"column":0},"end":{"line":487,"column":33}}},"29":{"name":"_onHeaders","line":496,"loc":{"start":{"line":496,"column":39},"end":{"line":496,"column":68}}},"30":{"name":"OutgoingResponse","line":527,"loc":{"start":{"line":527,"column":0},"end":{"line":527,"column":34}}},"31":{"name":"writeHead","line":540,"loc":{"start":{"line":540,"column":39},"end":{"line":540,"column":93}}},"32":{"name":"_implicitHeaders","line":564,"loc":{"start":{"line":564,"column":46},"end":{"line":564,"column":74}}},"33":{"name":"write","line":570,"loc":{"start":{"line":570,"column":35},"end":{"line":570,"column":52}}},"34":{"name":"end","line":575,"loc":{"start":{"line":575,"column":33},"end":{"line":575,"column":48}}},"35":{"name":"_onRequestHeaders","line":580,"loc":{"start":{"line":580,"column":47},"end":{"line":580,"column":83}}},"36":{"name":"push","line":584,"loc":{"start":{"line":584,"column":34},"end":{"line":584,"column":57}}},"37":{"name":"on","line":610,"loc":{"start":{"line":610,"column":32},"end":{"line":610,"column":61}}},"38":{"name":"request","line":626,"loc":{"start":{"line":626,"column":18},"end":{"line":626,"column":54}}},"39":{"name":"get","line":629,"loc":{"start":{"line":629,"column":14},"end":{"line":629,"column":46}}},"40":{"name":"Agent","line":636,"loc":{"start":{"line":636,"column":0},"end":{"line":636,"column":24}}},"41":{"name":"request","line":658,"loc":{"start":{"line":658,"column":26},"end":{"line":658,"column":62}}},"42":{"name":"(anonymous_42)","line":712,"loc":{"start":{"line":712,"column":30},"end":{"line":712,"column":47}}},"43":{"name":"negotiated","line":721,"loc":{"start":{"line":721,"column":4},"end":{"line":721,"column":26}}},"44":{"name":"(anonymous_44)","line":748,"loc":{"start":{"line":748,"column":19},"end":{"line":748,"column":38}}},"45":{"name":"get","line":761,"loc":{"start":{"line":761,"column":22},"end":{"line":761,"column":54}}},"46":{"name":"unbundleSocket","line":767,"loc":{"start":{"line":767,"column":0},"end":{"line":767,"column":32}}},"47":{"name":"getMaxSockets","line":779,"loc":{"start":{"line":779,"column":7},"end":{"line":779,"column":32}}},"48":{"name":"setMaxSockets","line":782,"loc":{"start":{"line":782,"column":7},"end":{"line":782,"column":37}}},"49":{"name":"OutgoingRequest","line":792,"loc":{"start":{"line":792,"column":0},"end":{"line":792,"column":27}}},"50":{"name":"_start","line":801,"loc":{"start":{"line":801,"column":35},"end":{"line":801,"column":68}}},"51":{"name":"_fallback","line":834,"loc":{"start":{"line":834,"column":38},"end":{"line":834,"column":66}}},"52":{"name":"setPriority","line":840,"loc":{"start":{"line":840,"column":40},"end":{"line":840,"column":71}}},"53":{"name":"on","line":850,"loc":{"start":{"line":850,"column":31},"end":{"line":850,"column":60}}},"54":{"name":"setNoDelay","line":859,"loc":{"start":{"line":859,"column":39},"end":{"line":859,"column":68}}},"55":{"name":"setSocketKeepAlive","line":867,"loc":{"start":{"line":867,"column":47},"end":{"line":867,"column":97}}},"56":{"name":"setTimeout","line":875,"loc":{"start":{"line":875,"column":39},"end":{"line":875,"column":78}}},"57":{"name":"abort","line":884,"loc":{"start":{"line":884,"column":34},"end":{"line":884,"column":51}}},"58":{"name":"_onPromise","line":895,"loc":{"start":{"line":895,"column":39},"end":{"line":895,"column":76}}},"59":{"name":"IncomingResponse","line":910,"loc":{"start":{"line":910,"column":0},"end":{"line":910,"column":34}}},"60":{"name":"_onHeaders","line":919,"loc":{"start":{"line":919,"column":40},"end":{"line":919,"column":69}}},"61":{"name":"IncomingPromise","line":939,"loc":{"start":{"line":939,"column":0},"end":{"line":939,"column":57}}},"62":{"name":"cancel","line":958,"loc":{"start":{"line":958,"column":35},"end":{"line":958,"column":53}}},"63":{"name":"setPriority","line":962,"loc":{"start":{"line":962,"column":40},"end":{"line":962,"column":71}}}},"statementMap":{"1":{"start":{"line":128,"column":0},"end":{"line":128,"column":25}},"2":{"start":{"line":129,"column":0},"end":{"line":129,"column":25}},"3":{"start":{"line":130,"column":0},"end":{"line":130,"column":27}},"4":{"start":{"line":131,"column":0},"end":{"line":131,"column":50}},"5":{"start":{"line":132,"column":0},"end":{"line":132,"column":48}},"6":{"start":{"line":133,"column":0},"end":{"line":133,"column":42}},"7":{"start":{"line":134,"column":0},"end":{"line":134,"column":42}},"8":{"start":{"line":135,"column":0},"end":{"line":135,"column":46}},"9":{"start":{"line":136,"column":0},"end":{"line":136,"column":27}},"10":{"start":{"line":137,"column":0},"end":{"line":137,"column":29}},"11":{"start":{"line":139,"column":0},"end":{"line":139,"column":41}},"12":{"start":{"line":140,"column":0},"end":{"line":140,"column":42}},"13":{"start":{"line":141,"column":0},"end":{"line":141,"column":42}},"14":{"start":{"line":142,"column":0},"end":{"line":142,"column":28}},"15":{"start":{"line":144,"column":0},"end":{"line":152,"column":2}},"16":{"start":{"line":156,"column":0},"end":{"line":156,"column":45}},"17":{"start":{"line":162,"column":0},"end":{"line":162,"column":18}},"18":{"start":{"line":163,"column":0},"end":{"line":172,"column":2}},"19":{"start":{"line":171,"column":22},"end":{"line":171,"column":34}},"20":{"start":{"line":175,"column":0},"end":{"line":175,"column":25}},"21":{"start":{"line":176,"column":0},"end":{"line":176,"column":95}},"22":{"start":{"line":177,"column":0},"end":{"line":179,"column":3}},"23":{"start":{"line":178,"column":2},"end":{"line":178,"column":65}},"24":{"start":{"line":184,"column":0},"end":{"line":204,"column":1}},"25":{"start":{"line":186,"column":2},"end":{"line":186,"column":25}},"26":{"start":{"line":187,"column":2},"end":{"line":187,"column":20}},"27":{"start":{"line":188,"column":2},"end":{"line":188,"column":37}},"28":{"start":{"line":190,"column":2},"end":{"line":190,"column":55}},"29":{"start":{"line":194,"column":2},"end":{"line":194,"column":27}},"30":{"start":{"line":195,"column":2},"end":{"line":195,"column":28}},"31":{"start":{"line":196,"column":2},"end":{"line":196,"column":28}},"32":{"start":{"line":199,"column":2},"end":{"line":199,"column":20}},"33":{"start":{"line":200,"column":2},"end":{"line":200,"column":28}},"34":{"start":{"line":203,"column":2},"end":{"line":203,"column":53}},"35":{"start":{"line":205,"column":0},"end":{"line":205,"column":110}},"36":{"start":{"line":211,"column":0},"end":{"line":234,"column":2}},"37":{"start":{"line":216,"column":2},"end":{"line":223,"column":3}},"38":{"start":{"line":217,"column":4},"end":{"line":217,"column":35}},"39":{"start":{"line":218,"column":4},"end":{"line":222,"column":5}},"40":{"start":{"line":219,"column":6},"end":{"line":219,"column":84}},"41":{"start":{"line":220,"column":6},"end":{"line":220,"column":50}},"42":{"start":{"line":221,"column":6},"end":{"line":221,"column":13}},"43":{"start":{"line":226,"column":2},"end":{"line":230,"column":3}},"44":{"start":{"line":227,"column":4},"end":{"line":229,"column":5}},"45":{"start":{"line":228,"column":6},"end":{"line":228,"column":41}},"46":{"start":{"line":233,"column":2},"end":{"line":233,"column":59}},"47":{"start":{"line":236,"column":0},"end":{"line":238,"column":2}},"48":{"start":{"line":237,"column":2},"end":{"line":237,"column":27}},"49":{"start":{"line":240,"column":0},"end":{"line":240,"column":44}},"50":{"start":{"line":242,"column":0},"end":{"line":250,"column":0}},"51":{"start":{"line":243,"column":2},"end":{"line":246,"column":3}},"52":{"start":{"line":244,"column":4},"end":{"line":244,"column":91}},"53":{"start":{"line":245,"column":4},"end":{"line":245,"column":48}},"54":{"start":{"line":248,"column":2},"end":{"line":248,"column":15}},"55":{"start":{"line":255,"column":0},"end":{"line":264,"column":1}},"56":{"start":{"line":257,"column":2},"end":{"line":257,"column":22}},"57":{"start":{"line":259,"column":2},"end":{"line":259,"column":21}},"58":{"start":{"line":260,"column":2},"end":{"line":260,"column":29}},"59":{"start":{"line":261,"column":2},"end":{"line":261,"column":27}},"60":{"start":{"line":263,"column":2},"end":{"line":263,"column":34}},"61":{"start":{"line":265,"column":0},"end":{"line":265,"column":107}},"62":{"start":{"line":267,"column":0},"end":{"line":273,"column":2}},"63":{"start":{"line":268,"column":2},"end":{"line":272,"column":3}},"64":{"start":{"line":269,"column":4},"end":{"line":269,"column":49}},"65":{"start":{"line":271,"column":4},"end":{"line":271,"column":75}},"66":{"start":{"line":275,"column":0},"end":{"line":288,"column":2}},"67":{"start":{"line":276,"column":2},"end":{"line":287,"column":3}},"68":{"start":{"line":277,"column":4},"end":{"line":283,"column":5}},"69":{"start":{"line":278,"column":6},"end":{"line":282,"column":7}},"70":{"start":{"line":279,"column":8},"end":{"line":279,"column":49}},"71":{"start":{"line":281,"column":8},"end":{"line":281,"column":44}},"72":{"start":{"line":284,"column":4},"end":{"line":284,"column":22}},"73":{"start":{"line":286,"column":4},"end":{"line":286,"column":49}},"74":{"start":{"line":290,"column":0},"end":{"line":300,"column":2}},"75":{"start":{"line":291,"column":2},"end":{"line":299,"column":3}},"76":{"start":{"line":292,"column":4},"end":{"line":292,"column":63}},"77":{"start":{"line":294,"column":4},"end":{"line":294,"column":30}},"78":{"start":{"line":295,"column":4},"end":{"line":297,"column":5}},"79":{"start":{"line":296,"column":6},"end":{"line":296,"column":63}},"80":{"start":{"line":298,"column":4},"end":{"line":298,"column":32}},"81":{"start":{"line":302,"column":0},"end":{"line":308,"column":2}},"82":{"start":{"line":303,"column":2},"end":{"line":307,"column":3}},"83":{"start":{"line":304,"column":4},"end":{"line":304,"column":66}},"84":{"start":{"line":306,"column":4},"end":{"line":306,"column":45}},"85":{"start":{"line":310,"column":0},"end":{"line":312,"column":2}},"86":{"start":{"line":311,"column":2},"end":{"line":311,"column":43}},"87":{"start":{"line":314,"column":0},"end":{"line":316,"column":2}},"88":{"start":{"line":315,"column":2},"end":{"line":315,"column":28}},"89":{"start":{"line":318,"column":0},"end":{"line":318,"column":44}},"90":{"start":{"line":320,"column":0},"end":{"line":320,"column":94}},"91":{"start":{"line":325,"column":0},"end":{"line":325,"column":36}},"92":{"start":{"line":326,"column":0},"end":{"line":326,"column":24}},"93":{"start":{"line":327,"column":0},"end":{"line":327,"column":42}},"94":{"start":{"line":328,"column":0},"end":{"line":328,"column":44}},"95":{"start":{"line":329,"column":0},"end":{"line":329,"column":42}},"96":{"start":{"line":334,"column":0},"end":{"line":375,"column":1}},"97":{"start":{"line":335,"column":2},"end":{"line":335,"column":26}},"98":{"start":{"line":337,"column":2},"end":{"line":337,"column":74}},"99":{"start":{"line":338,"column":2},"end":{"line":338,"column":36}},"100":{"start":{"line":340,"column":2},"end":{"line":340,"column":37}},"101":{"start":{"line":341,"column":2},"end":{"line":341,"column":43}},"102":{"start":{"line":344,"column":2},"end":{"line":372,"column":3}},"103":{"start":{"line":345,"column":4},"end":{"line":345,"column":58}},"104":{"start":{"line":346,"column":4},"end":{"line":346,"column":23}},"105":{"start":{"line":347,"column":4},"end":{"line":347,"column":72}},"106":{"start":{"line":348,"column":4},"end":{"line":348,"column":47}},"107":{"start":{"line":349,"column":4},"end":{"line":349,"column":79}},"108":{"start":{"line":350,"column":4},"end":{"line":350,"column":56}},"109":{"start":{"line":351,"column":4},"end":{"line":357,"column":7}},"110":{"start":{"line":352,"column":6},"end":{"line":356,"column":7}},"111":{"start":{"line":353,"column":8},"end":{"line":353,"column":22}},"112":{"start":{"line":355,"column":8},"end":{"line":355,"column":25}},"113":{"start":{"line":358,"column":4},"end":{"line":358,"column":64}},"114":{"start":{"line":362,"column":7},"end":{"line":372,"column":3}},"115":{"start":{"line":363,"column":4},"end":{"line":363,"column":60}},"116":{"start":{"line":364,"column":4},"end":{"line":364,"column":25}},"117":{"start":{"line":365,"column":4},"end":{"line":365,"column":43}},"118":{"start":{"line":370,"column":4},"end":{"line":370,"column":81}},"119":{"start":{"line":371,"column":4},"end":{"line":371,"column":95}},"120":{"start":{"line":374,"column":2},"end":{"line":374,"column":58}},"121":{"start":{"line":376,"column":0},"end":{"line":376,"column":93}},"122":{"start":{"line":379,"column":0},"end":{"line":400,"column":2}},"123":{"start":{"line":380,"column":2},"end":{"line":380,"column":67}},"124":{"start":{"line":382,"column":2},"end":{"line":385,"column":54}},"125":{"start":{"line":387,"column":2},"end":{"line":387,"column":39}},"126":{"start":{"line":389,"column":2},"end":{"line":389,"column":18}},"127":{"start":{"line":390,"column":2},"end":{"line":395,"column":5}},"128":{"start":{"line":391,"column":4},"end":{"line":391,"column":48}},"129":{"start":{"line":392,"column":4},"end":{"line":392,"column":46}},"130":{"start":{"line":394,"column":4},"end":{"line":394,"column":78}},"131":{"start":{"line":397,"column":2},"end":{"line":397,"column":60}},"132":{"start":{"line":399,"column":2},"end":{"line":399,"column":44}},"133":{"start":{"line":402,"column":0},"end":{"line":413,"column":2}},"134":{"start":{"line":403,"column":2},"end":{"line":406,"column":52}},"135":{"start":{"line":408,"column":2},"end":{"line":410,"column":3}},"136":{"start":{"line":409,"column":4},"end":{"line":409,"column":64}},"137":{"start":{"line":412,"column":2},"end":{"line":412,"column":34}},"138":{"start":{"line":418,"column":0},"end":{"line":422,"column":2}},"139":{"start":{"line":419,"column":2},"end":{"line":420,"column":55}},"140":{"start":{"line":421,"column":2},"end":{"line":421,"column":53}},"141":{"start":{"line":424,"column":0},"end":{"line":427,"column":2}},"142":{"start":{"line":425,"column":2},"end":{"line":425,"column":35}},"143":{"start":{"line":426,"column":2},"end":{"line":426,"column":31}},"144":{"start":{"line":429,"column":0},"end":{"line":433,"column":2}},"145":{"start":{"line":430,"column":2},"end":{"line":432,"column":3}},"146":{"start":{"line":431,"column":4},"end":{"line":431,"column":47}},"147":{"start":{"line":435,"column":0},"end":{"line":448,"column":3}},"148":{"start":{"line":437,"column":4},"end":{"line":441,"column":5}},"149":{"start":{"line":438,"column":6},"end":{"line":438,"column":34}},"150":{"start":{"line":440,"column":6},"end":{"line":440,"column":23}},"151":{"start":{"line":444,"column":4},"end":{"line":446,"column":5}},"152":{"start":{"line":445,"column":6},"end":{"line":445,"column":37}},"153":{"start":{"line":454,"column":0},"end":{"line":460,"column":2}},"154":{"start":{"line":455,"column":2},"end":{"line":459,"column":3}},"155":{"start":{"line":456,"column":4},"end":{"line":456,"column":60}},"156":{"start":{"line":458,"column":4},"end":{"line":458,"column":58}},"157":{"start":{"line":463,"column":0},"end":{"line":467,"column":2}},"158":{"start":{"line":464,"column":2},"end":{"line":466,"column":3}},"159":{"start":{"line":465,"column":4},"end":{"line":465,"column":51}},"160":{"start":{"line":469,"column":0},"end":{"line":482,"column":1}},"161":{"start":{"line":470,"column":2},"end":{"line":473,"column":3}},"162":{"start":{"line":471,"column":4},"end":{"line":471,"column":30}},"163":{"start":{"line":472,"column":4},"end":{"line":472,"column":24}},"164":{"start":{"line":475,"column":2},"end":{"line":475,"column":35}},"165":{"start":{"line":477,"column":2},"end":{"line":479,"column":3}},"166":{"start":{"line":478,"column":4},"end":{"line":478,"column":42}},"167":{"start":{"line":481,"column":2},"end":{"line":481,"column":16}},"168":{"start":{"line":487,"column":0},"end":{"line":489,"column":1}},"169":{"start":{"line":488,"column":2},"end":{"line":488,"column":37}},"170":{"start":{"line":490,"column":0},"end":{"line":490,"column":114}},"171":{"start":{"line":496,"column":0},"end":{"line":522,"column":2}},"172":{"start":{"line":507,"column":2},"end":{"line":507,"column":72}},"173":{"start":{"line":508,"column":2},"end":{"line":508,"column":72}},"174":{"start":{"line":509,"column":2},"end":{"line":509,"column":72}},"175":{"start":{"line":510,"column":2},"end":{"line":510,"column":72}},"176":{"start":{"line":513,"column":2},"end":{"line":513,"column":32}},"177":{"start":{"line":516,"column":2},"end":{"line":516,"column":59}},"178":{"start":{"line":519,"column":2},"end":{"line":520,"column":80}},"179":{"start":{"line":521,"column":2},"end":{"line":521,"column":21}},"180":{"start":{"line":527,"column":0},"end":{"line":537,"column":1}},"181":{"start":{"line":528,"column":2},"end":{"line":528,"column":29}},"182":{"start":{"line":530,"column":2},"end":{"line":530,"column":55}},"183":{"start":{"line":532,"column":2},"end":{"line":532,"column":23}},"184":{"start":{"line":533,"column":2},"end":{"line":533,"column":24}},"185":{"start":{"line":534,"column":2},"end":{"line":534,"column":23}},"186":{"start":{"line":536,"column":2},"end":{"line":536,"column":65}},"187":{"start":{"line":538,"column":0},"end":{"line":538,"column":116}},"188":{"start":{"line":540,"column":0},"end":{"line":562,"column":2}},"189":{"start":{"line":541,"column":2},"end":{"line":545,"column":3}},"190":{"start":{"line":542,"column":4},"end":{"line":542,"column":93}},"191":{"start":{"line":544,"column":4},"end":{"line":544,"column":27}},"192":{"start":{"line":547,"column":2},"end":{"line":549,"column":3}},"193":{"start":{"line":548,"column":4},"end":{"line":548,"column":40}},"194":{"start":{"line":550,"column":2},"end":{"line":550,"column":26}},"195":{"start":{"line":552,"column":2},"end":{"line":554,"column":3}},"196":{"start":{"line":553,"column":4},"end":{"line":553,"column":46}},"197":{"start":{"line":556,"column":2},"end":{"line":556,"column":92}},"198":{"start":{"line":558,"column":2},"end":{"line":558,"column":52}},"199":{"start":{"line":560,"column":2},"end":{"line":560,"column":31}},"200":{"start":{"line":561,"column":2},"end":{"line":561,"column":26}},"201":{"start":{"line":564,"column":0},"end":{"line":568,"column":2}},"202":{"start":{"line":565,"column":2},"end":{"line":567,"column":3}},"203":{"start":{"line":566,"column":4},"end":{"line":566,"column":36}},"204":{"start":{"line":570,"column":0},"end":{"line":573,"column":2}},"205":{"start":{"line":571,"column":2},"end":{"line":571,"column":26}},"206":{"start":{"line":572,"column":2},"end":{"line":572,"column":64}},"207":{"start":{"line":575,"column":0},"end":{"line":578,"column":2}},"208":{"start":{"line":576,"column":2},"end":{"line":576,"column":26}},"209":{"start":{"line":577,"column":2},"end":{"line":577,"column":62}},"210":{"start":{"line":580,"column":0},"end":{"line":582,"column":2}},"211":{"start":{"line":581,"column":2},"end":{"line":581,"column":33}},"212":{"start":{"line":584,"column":0},"end":{"line":606,"column":2}},"213":{"start":{"line":585,"column":2},"end":{"line":587,"column":3}},"214":{"start":{"line":586,"column":4},"end":{"line":586,"column":33}},"215":{"start":{"line":589,"column":2},"end":{"line":591,"column":3}},"216":{"start":{"line":590,"column":4},"end":{"line":590,"column":51}},"217":{"start":{"line":593,"column":2},"end":{"line":598,"column":22}},"218":{"start":{"line":600,"column":2},"end":{"line":601,"column":96}},"219":{"start":{"line":603,"column":2},"end":{"line":603,"column":48}},"220":{"start":{"line":605,"column":2},"end":{"line":605,"column":42}},"221":{"start":{"line":610,"column":0},"end":{"line":616,"column":2}},"222":{"start":{"line":611,"column":2},"end":{"line":615,"column":3}},"223":{"start":{"line":612,"column":4},"end":{"line":612,"column":60}},"224":{"start":{"line":614,"column":4},"end":{"line":614,"column":61}},"225":{"start":{"line":621,"column":0},"end":{"line":621,"column":40}},"226":{"start":{"line":622,"column":0},"end":{"line":622,"column":42}},"227":{"start":{"line":623,"column":0},"end":{"line":623,"column":44}},"228":{"start":{"line":624,"column":0},"end":{"line":624,"column":22}},"229":{"start":{"line":625,"column":0},"end":{"line":625,"column":32}},"230":{"start":{"line":626,"column":0},"end":{"line":628,"column":2}},"231":{"start":{"line":627,"column":2},"end":{"line":627,"column":75}},"232":{"start":{"line":629,"column":0},"end":{"line":631,"column":2}},"233":{"start":{"line":630,"column":2},"end":{"line":630,"column":71}},"234":{"start":{"line":636,"column":0},"end":{"line":655,"column":1}},"235":{"start":{"line":637,"column":2},"end":{"line":637,"column":26}},"236":{"start":{"line":639,"column":2},"end":{"line":639,"column":26}},"237":{"start":{"line":641,"column":2},"end":{"line":641,"column":36}},"238":{"start":{"line":642,"column":2},"end":{"line":642,"column":74}},"239":{"start":{"line":643,"column":2},"end":{"line":643,"column":22}},"240":{"start":{"line":649,"column":2},"end":{"line":651,"column":5}},"241":{"start":{"line":653,"column":2},"end":{"line":653,"column":42}},"242":{"start":{"line":654,"column":2},"end":{"line":654,"column":44}},"243":{"start":{"line":656,"column":0},"end":{"line":656,"column":91}},"244":{"start":{"line":658,"column":0},"end":{"line":759,"column":2}},"245":{"start":{"line":659,"column":2},"end":{"line":661,"column":3}},"246":{"start":{"line":660,"column":4},"end":{"line":660,"column":33}},"247":{"start":{"line":663,"column":2},"end":{"line":663,"column":59}},"248":{"start":{"line":664,"column":2},"end":{"line":664,"column":50}},"249":{"start":{"line":665,"column":2},"end":{"line":665,"column":65}},"250":{"start":{"line":666,"column":2},"end":{"line":666,"column":37}},"251":{"start":{"line":667,"column":2},"end":{"line":667,"column":37}},"252":{"start":{"line":669,"column":2},"end":{"line":672,"column":3}},"253":{"start":{"line":670,"column":4},"end":{"line":670,"column":85}},"254":{"start":{"line":671,"column":4},"end":{"line":671,"column":70}},"255":{"start":{"line":674,"column":2},"end":{"line":674,"column":47}},"256":{"start":{"line":676,"column":2},"end":{"line":678,"column":3}},"257":{"start":{"line":677,"column":4},"end":{"line":677,"column":37}},"258":{"start":{"line":680,"column":2},"end":{"line":684,"column":14}},"259":{"start":{"line":687,"column":2},"end":{"line":756,"column":3}},"260":{"start":{"line":688,"column":4},"end":{"line":688,"column":39}},"261":{"start":{"line":689,"column":4},"end":{"line":689,"column":53}},"262":{"start":{"line":693,"column":7},"end":{"line":756,"column":3}},"263":{"start":{"line":694,"column":4},"end":{"line":694,"column":65}},"264":{"start":{"line":695,"column":4},"end":{"line":699,"column":7}},"265":{"start":{"line":700,"column":4},"end":{"line":700,"column":50}},"266":{"start":{"line":701,"column":4},"end":{"line":701,"column":53}},"267":{"start":{"line":706,"column":4},"end":{"line":706,"column":24}},"268":{"start":{"line":707,"column":4},"end":{"line":707,"column":72}},"269":{"start":{"line":708,"column":4},"end":{"line":708,"column":38}},"270":{"start":{"line":709,"column":4},"end":{"line":709,"column":37}},"271":{"start":{"line":710,"column":4},"end":{"line":710,"column":46}},"272":{"start":{"line":712,"column":4},"end":{"line":718,"column":7}},"273":{"start":{"line":713,"column":6},"end":{"line":717,"column":7}},"274":{"start":{"line":714,"column":8},"end":{"line":714,"column":21}},"275":{"start":{"line":716,"column":8},"end":{"line":716,"column":47}},"276":{"start":{"line":720,"column":4},"end":{"line":720,"column":20}},"277":{"start":{"line":721,"column":4},"end":{"line":746,"column":5}},"278":{"start":{"line":722,"column":6},"end":{"line":722,"column":19}},"279":{"start":{"line":723,"column":6},"end":{"line":729,"column":7}},"280":{"start":{"line":724,"column":8},"end":{"line":724,"column":48}},"281":{"start":{"line":725,"column":8},"end":{"line":725,"column":44}},"282":{"start":{"line":726,"column":8},"end":{"line":726,"column":69}},"283":{"start":{"line":727,"column":8},"end":{"line":727,"column":46}},"284":{"start":{"line":728,"column":8},"end":{"line":728,"column":54}},"285":{"start":{"line":730,"column":6},"end":{"line":745,"column":7}},"286":{"start":{"line":731,"column":8},"end":{"line":735,"column":9}},"287":{"start":{"line":732,"column":10},"end":{"line":732,"column":27}},"288":{"start":{"line":734,"column":10},"end":{"line":734,"column":31}},"289":{"start":{"line":737,"column":8},"end":{"line":744,"column":9}},"290":{"start":{"line":738,"column":10},"end":{"line":739,"column":59}},"291":{"start":{"line":740,"column":10},"end":{"line":740,"column":41}},"292":{"start":{"line":741,"column":10},"end":{"line":741,"column":35}},"293":{"start":{"line":743,"column":10},"end":{"line":743,"column":36}},"294":{"start":{"line":748,"column":4},"end":{"line":755,"column":7}},"295":{"start":{"line":749,"column":6},"end":{"line":749,"column":21}},"296":{"start":{"line":750,"column":6},"end":{"line":754,"column":7}},"297":{"start":{"line":751,"column":8},"end":{"line":751,"column":57}},"298":{"start":{"line":753,"column":8},"end":{"line":753,"column":40}},"299":{"start":{"line":758,"column":2},"end":{"line":758,"column":17}},"300":{"start":{"line":761,"column":0},"end":{"line":765,"column":2}},"301":{"start":{"line":762,"column":2},"end":{"line":762,"column":48}},"302":{"start":{"line":763,"column":2},"end":{"line":763,"column":16}},"303":{"start":{"line":764,"column":2},"end":{"line":764,"column":17}},"304":{"start":{"line":767,"column":0},"end":{"line":776,"column":1}},"305":{"start":{"line":768,"column":2},"end":{"line":768,"column":36}},"306":{"start":{"line":769,"column":2},"end":{"line":769,"column":35}},"307":{"start":{"line":770,"column":2},"end":{"line":770,"column":40}},"308":{"start":{"line":771,"column":2},"end":{"line":771,"column":37}},"309":{"start":{"line":772,"column":2},"end":{"line":772,"column":37}},"310":{"start":{"line":773,"column":2},"end":{"line":773,"column":18}},"311":{"start":{"line":774,"column":2},"end":{"line":774,"column":23}},"312":{"start":{"line":775,"column":2},"end":{"line":775,"column":22}},"313":{"start":{"line":778,"column":0},"end":{"line":785,"column":3}},"314":{"start":{"line":780,"column":4},"end":{"line":780,"column":39}},"315":{"start":{"line":783,"column":4},"end":{"line":783,"column":40}},"316":{"start":{"line":787,"column":0},"end":{"line":787,"column":34}},"317":{"start":{"line":792,"column":0},"end":{"line":798,"column":1}},"318":{"start":{"line":793,"column":2},"end":{"line":793,"column":29}},"319":{"start":{"line":795,"column":2},"end":{"line":795,"column":24}},"320":{"start":{"line":797,"column":2},"end":{"line":797,"column":26}},"321":{"start":{"line":799,"column":0},"end":{"line":799,"column":114}},"322":{"start":{"line":801,"column":0},"end":{"line":832,"column":2}},"323":{"start":{"line":802,"column":2},"end":{"line":802,"column":23}},"324":{"start":{"line":804,"column":2},"end":{"line":804,"column":55}},"325":{"start":{"line":806,"column":2},"end":{"line":808,"column":3}},"326":{"start":{"line":807,"column":4},"end":{"line":807,"column":46}},"327":{"start":{"line":809,"column":2},"end":{"line":809,"column":30}},"328":{"start":{"line":810,"column":2},"end":{"line":810,"column":22}},"329":{"start":{"line":812,"column":2},"end":{"line":814,"column":3}},"330":{"start":{"line":813,"column":4},"end":{"line":813,"column":83}},"331":{"start":{"line":816,"column":2},"end":{"line":816,"column":53}},"332":{"start":{"line":817,"column":2},"end":{"line":817,"column":38}},"333":{"start":{"line":818,"column":2},"end":{"line":818,"column":34}},"334":{"start":{"line":819,"column":2},"end":{"line":819,"column":34}},"335":{"start":{"line":821,"column":2},"end":{"line":822,"column":98}},"336":{"start":{"line":823,"column":2},"end":{"line":823,"column":31}},"337":{"start":{"line":824,"column":2},"end":{"line":824,"column":26}},"338":{"start":{"line":826,"column":2},"end":{"line":826,"column":35}},"339":{"start":{"line":828,"column":2},"end":{"line":828,"column":51}},"340":{"start":{"line":829,"column":2},"end":{"line":829,"column":69}},"341":{"start":{"line":831,"column":2},"end":{"line":831,"column":56}},"342":{"start":{"line":834,"column":0},"end":{"line":838,"column":2}},"343":{"start":{"line":835,"column":2},"end":{"line":835,"column":59}},"344":{"start":{"line":836,"column":2},"end":{"line":836,"column":39}},"345":{"start":{"line":837,"column":2},"end":{"line":837,"column":35}},"346":{"start":{"line":840,"column":0},"end":{"line":846,"column":2}},"347":{"start":{"line":841,"column":2},"end":{"line":845,"column":3}},"348":{"start":{"line":842,"column":4},"end":{"line":842,"column":35}},"349":{"start":{"line":844,"column":4},"end":{"line":844,"column":63}},"350":{"start":{"line":850,"column":0},"end":{"line":856,"column":2}},"351":{"start":{"line":851,"column":2},"end":{"line":855,"column":3}},"352":{"start":{"line":852,"column":4},"end":{"line":852,"column":60}},"353":{"start":{"line":854,"column":4},"end":{"line":854,"column":61}},"354":{"start":{"line":859,"column":0},"end":{"line":865,"column":2}},"355":{"start":{"line":860,"column":2},"end":{"line":864,"column":3}},"356":{"start":{"line":861,"column":4},"end":{"line":861,"column":37}},"357":{"start":{"line":862,"column":9},"end":{"line":864,"column":3}},"358":{"start":{"line":863,"column":4},"end":{"line":863,"column":59}},"359":{"start":{"line":867,"column":0},"end":{"line":873,"column":2}},"360":{"start":{"line":868,"column":2},"end":{"line":872,"column":3}},"361":{"start":{"line":869,"column":4},"end":{"line":869,"column":58}},"362":{"start":{"line":870,"column":9},"end":{"line":872,"column":3}},"363":{"start":{"line":871,"column":4},"end":{"line":871,"column":80}},"364":{"start":{"line":875,"column":0},"end":{"line":881,"column":2}},"365":{"start":{"line":876,"column":2},"end":{"line":880,"column":3}},"366":{"start":{"line":877,"column":4},"end":{"line":877,"column":47}},"367":{"start":{"line":878,"column":9},"end":{"line":880,"column":3}},"368":{"start":{"line":879,"column":4},"end":{"line":879,"column":69}},"369":{"start":{"line":884,"column":0},"end":{"line":892,"column":2}},"370":{"start":{"line":885,"column":2},"end":{"line":891,"column":3}},"371":{"start":{"line":886,"column":4},"end":{"line":886,"column":25}},"372":{"start":{"line":887,"column":9},"end":{"line":891,"column":3}},"373":{"start":{"line":888,"column":4},"end":{"line":888,"column":32}},"374":{"start":{"line":890,"column":4},"end":{"line":890,"column":45}},"375":{"start":{"line":895,"column":0},"end":{"line":905,"column":2}},"376":{"start":{"line":896,"column":2},"end":{"line":896,"column":71}},"377":{"start":{"line":898,"column":2},"end":{"line":898,"column":53}},"378":{"start":{"line":900,"column":2},"end":{"line":904,"column":3}},"379":{"start":{"line":901,"column":4},"end":{"line":901,"column":31}},"380":{"start":{"line":903,"column":4},"end":{"line":903,"column":21}},"381":{"start":{"line":910,"column":0},"end":{"line":912,"column":1}},"382":{"start":{"line":911,"column":2},"end":{"line":911,"column":37}},"383":{"start":{"line":913,"column":0},"end":{"line":913,"column":116}},"384":{"start":{"line":919,"column":0},"end":{"line":934,"column":2}},"385":{"start":{"line":926,"column":2},"end":{"line":926,"column":76}},"386":{"start":{"line":929,"column":2},"end":{"line":929,"column":59}},"387":{"start":{"line":932,"column":2},"end":{"line":932,"column":89}},"388":{"start":{"line":933,"column":2},"end":{"line":933,"column":21}},"389":{"start":{"line":939,"column":0},"end":{"line":955,"column":1}},"390":{"start":{"line":940,"column":2},"end":{"line":940,"column":30}},"391":{"start":{"line":941,"column":2},"end":{"line":941,"column":22}},"392":{"start":{"line":942,"column":2},"end":{"line":942,"column":20}},"393":{"start":{"line":943,"column":2},"end":{"line":943,"column":36}},"394":{"start":{"line":945,"column":2},"end":{"line":945,"column":37}},"395":{"start":{"line":947,"column":2},"end":{"line":947,"column":34}},"396":{"start":{"line":949,"column":2},"end":{"line":949,"column":40}},"397":{"start":{"line":951,"column":2},"end":{"line":951,"column":60}},"398":{"start":{"line":952,"column":2},"end":{"line":952,"column":69}},"399":{"start":{"line":954,"column":2},"end":{"line":954,"column":56}},"400":{"start":{"line":956,"column":0},"end":{"line":956,"column":114}},"401":{"start":{"line":958,"column":0},"end":{"line":960,"column":2}},"402":{"start":{"line":959,"column":2},"end":{"line":959,"column":39}},"403":{"start":{"line":962,"column":0},"end":{"line":964,"column":2}},"404":{"start":{"line":963,"column":2},"end":{"line":963,"column":42}},"405":{"start":{"line":966,"column":0},"end":{"line":966,"column":76}}},"branchMap":{"1":{"line":218,"type":"if","locations":[{"start":{"line":218,"column":4},"end":{"line":218,"column":4}},{"start":{"line":218,"column":4},"end":{"line":218,"column":4}}]},"2":{"line":227,"type":"if","locations":[{"start":{"line":227,"column":4},"end":{"line":227,"column":4}},{"start":{"line":227,"column":4},"end":{"line":227,"column":4}}]},"3":{"line":243,"type":"if","locations":[{"start":{"line":243,"column":2},"end":{"line":243,"column":2}},{"start":{"line":243,"column":2},"end":{"line":243,"column":2}}]},"4":{"line":243,"type":"binary-expr","locations":[{"start":{"line":243,"column":7},"end":{"line":243,"column":32}},{"start":{"line":243,"column":38},"end":{"line":243,"column":56}}]},"5":{"line":268,"type":"if","locations":[{"start":{"line":268,"column":2},"end":{"line":268,"column":2}},{"start":{"line":268,"column":2},"end":{"line":268,"column":2}}]},"6":{"line":276,"type":"if","locations":[{"start":{"line":276,"column":2},"end":{"line":276,"column":2}},{"start":{"line":276,"column":2},"end":{"line":276,"column":2}}]},"7":{"line":277,"type":"if","locations":[{"start":{"line":277,"column":4},"end":{"line":277,"column":4}},{"start":{"line":277,"column":4},"end":{"line":277,"column":4}}]},"8":{"line":278,"type":"if","locations":[{"start":{"line":278,"column":6},"end":{"line":278,"column":6}},{"start":{"line":278,"column":6},"end":{"line":278,"column":6}}]},"9":{"line":291,"type":"if","locations":[{"start":{"line":291,"column":2},"end":{"line":291,"column":2}},{"start":{"line":291,"column":2},"end":{"line":291,"column":2}}]},"10":{"line":295,"type":"if","locations":[{"start":{"line":295,"column":4},"end":{"line":295,"column":4}},{"start":{"line":295,"column":4},"end":{"line":295,"column":4}}]},"11":{"line":303,"type":"if","locations":[{"start":{"line":303,"column":2},"end":{"line":303,"column":2}},{"start":{"line":303,"column":2},"end":{"line":303,"column":2}}]},"12":{"line":335,"type":"binary-expr","locations":[{"start":{"line":335,"column":12},"end":{"line":335,"column":19}},{"start":{"line":335,"column":23},"end":{"line":335,"column":25}}]},"13":{"line":337,"type":"binary-expr","locations":[{"start":{"line":337,"column":15},"end":{"line":337,"column":26}},{"start":{"line":337,"column":30},"end":{"line":337,"column":43}}]},"14":{"line":344,"type":"if","locations":[{"start":{"line":344,"column":2},"end":{"line":344,"column":2}},{"start":{"line":344,"column":2},"end":{"line":344,"column":2}}]},"15":{"line":344,"type":"binary-expr","locations":[{"start":{"line":344,"column":7},"end":{"line":344,"column":18}},{"start":{"line":344,"column":22},"end":{"line":344,"column":34}},{"start":{"line":344,"column":39},"end":{"line":344,"column":50}}]},"16":{"line":352,"type":"if","locations":[{"start":{"line":352,"column":6},"end":{"line":352,"column":6}},{"start":{"line":352,"column":6},"end":{"line":352,"column":6}}]},"17":{"line":352,"type":"binary-expr","locations":[{"start":{"line":352,"column":10},"end":{"line":352,"column":51}},{"start":{"line":352,"column":55},"end":{"line":352,"column":72}}]},"18":{"line":362,"type":"if","locations":[{"start":{"line":362,"column":7},"end":{"line":362,"column":7}},{"start":{"line":362,"column":7},"end":{"line":362,"column":7}}]},"19":{"line":419,"type":"cond-expr","locations":[{"start":{"line":419,"column":58},"end":{"line":419,"column":79}},{"start":{"line":419,"column":83},"end":{"line":419,"column":87}}]},"20":{"line":430,"type":"if","locations":[{"start":{"line":430,"column":2},"end":{"line":430,"column":2}},{"start":{"line":430,"column":2},"end":{"line":430,"column":2}}]},"21":{"line":437,"type":"if","locations":[{"start":{"line":437,"column":4},"end":{"line":437,"column":4}},{"start":{"line":437,"column":4},"end":{"line":437,"column":4}}]},"22":{"line":444,"type":"if","locations":[{"start":{"line":444,"column":4},"end":{"line":444,"column":4}},{"start":{"line":444,"column":4},"end":{"line":444,"column":4}}]},"23":{"line":455,"type":"if","locations":[{"start":{"line":455,"column":2},"end":{"line":455,"column":2}},{"start":{"line":455,"column":2},"end":{"line":455,"column":2}}]},"24":{"line":455,"type":"binary-expr","locations":[{"start":{"line":455,"column":7},"end":{"line":455,"column":26}},{"start":{"line":455,"column":32},"end":{"line":455,"column":51}}]},"25":{"line":456,"type":"binary-expr","locations":[{"start":{"line":456,"column":27},"end":{"line":456,"column":35}},{"start":{"line":456,"column":39},"end":{"line":456,"column":58}}]},"26":{"line":464,"type":"if","locations":[{"start":{"line":464,"column":2},"end":{"line":464,"column":2}},{"start":{"line":464,"column":2},"end":{"line":464,"column":2}}]},"27":{"line":470,"type":"if","locations":[{"start":{"line":470,"column":2},"end":{"line":470,"column":2}},{"start":{"line":470,"column":2},"end":{"line":470,"column":2}}]},"28":{"line":477,"type":"if","locations":[{"start":{"line":477,"column":2},"end":{"line":477,"column":2}},{"start":{"line":477,"column":2},"end":{"line":477,"column":2}}]},"29":{"line":541,"type":"if","locations":[{"start":{"line":541,"column":2},"end":{"line":541,"column":2}},{"start":{"line":541,"column":2},"end":{"line":541,"column":2}}]},"30":{"line":552,"type":"if","locations":[{"start":{"line":552,"column":2},"end":{"line":552,"column":2}},{"start":{"line":552,"column":2},"end":{"line":552,"column":2}}]},"31":{"line":552,"type":"binary-expr","locations":[{"start":{"line":552,"column":6},"end":{"line":552,"column":19}},{"start":{"line":552,"column":23},"end":{"line":552,"column":49}}]},"32":{"line":565,"type":"if","locations":[{"start":{"line":565,"column":2},"end":{"line":565,"column":2}},{"start":{"line":565,"column":2},"end":{"line":565,"column":2}}]},"33":{"line":585,"type":"if","locations":[{"start":{"line":585,"column":2},"end":{"line":585,"column":2}},{"start":{"line":585,"column":2},"end":{"line":585,"column":2}}]},"34":{"line":589,"type":"if","locations":[{"start":{"line":589,"column":2},"end":{"line":589,"column":2}},{"start":{"line":589,"column":2},"end":{"line":589,"column":2}}]},"35":{"line":594,"type":"binary-expr","locations":[{"start":{"line":594,"column":16},"end":{"line":594,"column":30}},{"start":{"line":594,"column":34},"end":{"line":594,"column":39}}]},"36":{"line":595,"type":"binary-expr","locations":[{"start":{"line":595,"column":16},"end":{"line":595,"column":32}},{"start":{"line":595,"column":36},"end":{"line":595,"column":65}},{"start":{"line":595,"column":70},"end":{"line":595,"column":101}}]},"37":{"line":596,"type":"binary-expr","locations":[{"start":{"line":596,"column":13},"end":{"line":596,"column":29}},{"start":{"line":596,"column":33},"end":{"line":596,"column":45}},{"start":{"line":596,"column":49},"end":{"line":596,"column":78}}]},"38":{"line":611,"type":"if","locations":[{"start":{"line":611,"column":2},"end":{"line":611,"column":2}},{"start":{"line":611,"column":2},"end":{"line":611,"column":2}}]},"39":{"line":611,"type":"binary-expr","locations":[{"start":{"line":611,"column":6},"end":{"line":611,"column":18}},{"start":{"line":611,"column":23},"end":{"line":611,"column":42}}]},"40":{"line":612,"type":"binary-expr","locations":[{"start":{"line":612,"column":27},"end":{"line":612,"column":35}},{"start":{"line":612,"column":39},"end":{"line":612,"column":58}}]},"41":{"line":627,"type":"binary-expr","locations":[{"start":{"line":627,"column":10},"end":{"line":627,"column":23}},{"start":{"line":627,"column":27},"end":{"line":627,"column":46}}]},"42":{"line":630,"type":"binary-expr","locations":[{"start":{"line":630,"column":10},"end":{"line":630,"column":23}},{"start":{"line":630,"column":27},"end":{"line":630,"column":46}}]},"43":{"line":639,"type":"binary-expr","locations":[{"start":{"line":639,"column":12},"end":{"line":639,"column":19}},{"start":{"line":639,"column":23},"end":{"line":639,"column":25}}]},"44":{"line":642,"type":"binary-expr","locations":[{"start":{"line":642,"column":15},"end":{"line":642,"column":26}},{"start":{"line":642,"column":30},"end":{"line":642,"column":43}}]},"45":{"line":659,"type":"if","locations":[{"start":{"line":659,"column":2},"end":{"line":659,"column":2}},{"start":{"line":659,"column":2},"end":{"line":659,"column":2}}]},"46":{"line":663,"type":"binary-expr","locations":[{"start":{"line":663,"column":20},"end":{"line":663,"column":34}},{"start":{"line":663,"column":38},"end":{"line":663,"column":43}}]},"47":{"line":664,"type":"binary-expr","locations":[{"start":{"line":664,"column":21},"end":{"line":664,"column":37}},{"start":{"line":664,"column":41},"end":{"line":664,"column":49}}]},"48":{"line":665,"type":"binary-expr","locations":[{"start":{"line":665,"column":17},"end":{"line":665,"column":33}},{"start":{"line":665,"column":37},"end":{"line":665,"column":49}},{"start":{"line":665,"column":53},"end":{"line":665,"column":64}}]},"49":{"line":666,"type":"binary-expr","locations":[{"start":{"line":666,"column":17},"end":{"line":666,"column":29}},{"start":{"line":666,"column":33},"end":{"line":666,"column":36}}]},"50":{"line":667,"type":"binary-expr","locations":[{"start":{"line":667,"column":17},"end":{"line":667,"column":29}},{"start":{"line":667,"column":33},"end":{"line":667,"column":36}}]},"51":{"line":669,"type":"if","locations":[{"start":{"line":669,"column":2},"end":{"line":669,"column":2}},{"start":{"line":669,"column":2},"end":{"line":669,"column":2}}]},"52":{"line":676,"type":"if","locations":[{"start":{"line":676,"column":2},"end":{"line":676,"column":2}},{"start":{"line":676,"column":2},"end":{"line":676,"column":2}}]},"53":{"line":687,"type":"if","locations":[{"start":{"line":687,"column":2},"end":{"line":687,"column":2}},{"start":{"line":687,"column":2},"end":{"line":687,"column":2}}]},"54":{"line":693,"type":"if","locations":[{"start":{"line":693,"column":7},"end":{"line":693,"column":7}},{"start":{"line":693,"column":7},"end":{"line":693,"column":7}}]},"55":{"line":713,"type":"if","locations":[{"start":{"line":713,"column":6},"end":{"line":713,"column":6}},{"start":{"line":713,"column":6},"end":{"line":713,"column":6}}]},"56":{"line":723,"type":"if","locations":[{"start":{"line":723,"column":6},"end":{"line":723,"column":6}},{"start":{"line":723,"column":6},"end":{"line":723,"column":6}}]},"57":{"line":730,"type":"if","locations":[{"start":{"line":730,"column":6},"end":{"line":730,"column":6}},{"start":{"line":730,"column":6},"end":{"line":730,"column":6}}]},"58":{"line":731,"type":"if","locations":[{"start":{"line":731,"column":8},"end":{"line":731,"column":8}},{"start":{"line":731,"column":8},"end":{"line":731,"column":8}}]},"59":{"line":737,"type":"if","locations":[{"start":{"line":737,"column":8},"end":{"line":737,"column":8}},{"start":{"line":737,"column":8},"end":{"line":737,"column":8}}]},"60":{"line":750,"type":"if","locations":[{"start":{"line":750,"column":6},"end":{"line":750,"column":6}},{"start":{"line":750,"column":6},"end":{"line":750,"column":6}}]},"61":{"line":812,"type":"if","locations":[{"start":{"line":812,"column":2},"end":{"line":812,"column":2}},{"start":{"line":812,"column":2},"end":{"line":812,"column":2}}]},"62":{"line":822,"type":"binary-expr","locations":[{"start":{"line":822,"column":53},"end":{"line":822,"column":68}},{"start":{"line":822,"column":72},"end":{"line":822,"column":74}}]},"63":{"line":841,"type":"if","locations":[{"start":{"line":841,"column":2},"end":{"line":841,"column":2}},{"start":{"line":841,"column":2},"end":{"line":841,"column":2}}]},"64":{"line":851,"type":"if","locations":[{"start":{"line":851,"column":2},"end":{"line":851,"column":2}},{"start":{"line":851,"column":2},"end":{"line":851,"column":2}}]},"65":{"line":851,"type":"binary-expr","locations":[{"start":{"line":851,"column":6},"end":{"line":851,"column":18}},{"start":{"line":851,"column":23},"end":{"line":851,"column":42}}]},"66":{"line":852,"type":"binary-expr","locations":[{"start":{"line":852,"column":27},"end":{"line":852,"column":35}},{"start":{"line":852,"column":39},"end":{"line":852,"column":58}}]},"67":{"line":860,"type":"if","locations":[{"start":{"line":860,"column":2},"end":{"line":860,"column":2}},{"start":{"line":860,"column":2},"end":{"line":860,"column":2}}]},"68":{"line":862,"type":"if","locations":[{"start":{"line":862,"column":9},"end":{"line":862,"column":9}},{"start":{"line":862,"column":9},"end":{"line":862,"column":9}}]},"69":{"line":868,"type":"if","locations":[{"start":{"line":868,"column":2},"end":{"line":868,"column":2}},{"start":{"line":868,"column":2},"end":{"line":868,"column":2}}]},"70":{"line":870,"type":"if","locations":[{"start":{"line":870,"column":9},"end":{"line":870,"column":9}},{"start":{"line":870,"column":9},"end":{"line":870,"column":9}}]},"71":{"line":876,"type":"if","locations":[{"start":{"line":876,"column":2},"end":{"line":876,"column":2}},{"start":{"line":876,"column":2},"end":{"line":876,"column":2}}]},"72":{"line":878,"type":"if","locations":[{"start":{"line":878,"column":9},"end":{"line":878,"column":9}},{"start":{"line":878,"column":9},"end":{"line":878,"column":9}}]},"73":{"line":885,"type":"if","locations":[{"start":{"line":885,"column":2},"end":{"line":885,"column":2}},{"start":{"line":885,"column":2},"end":{"line":885,"column":2}}]},"74":{"line":887,"type":"if","locations":[{"start":{"line":887,"column":9},"end":{"line":887,"column":9}},{"start":{"line":887,"column":9},"end":{"line":887,"column":9}}]},"75":{"line":900,"type":"if","locations":[{"start":{"line":900,"column":2},"end":{"line":900,"column":2}},{"start":{"line":900,"column":2},"end":{"line":900,"column":2}}]}}}} \ No newline at end of file +{"/data/upstream/node-http2/lib/compressor.js":{"path":"/data/upstream/node-http2/lib/compressor.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":54,"11":54,"12":54,"13":54,"14":54,"15":54,"16":1,"17":1806,"18":1806,"19":1806,"20":1806,"21":1806,"22":1806,"23":1,"24":1,"25":1806,"26":1,"27":54,"28":54,"29":1620,"30":54,"31":1,"32":182,"33":182,"34":182,"35":0,"36":0,"37":0,"38":182,"39":182,"40":182,"41":0,"42":182,"43":182,"44":182,"45":1,"46":1,"47":1,"48":1,"49":49,"50":49,"51":49,"52":49,"53":1,"54":49,"55":49,"56":1,"57":151,"58":151,"59":151,"60":54,"61":54,"62":54,"63":32,"64":22,"65":22,"66":22,"67":22,"68":97,"69":78,"70":19,"71":97,"72":97,"73":92,"74":92,"75":92,"76":92,"77":97,"78":1,"79":49,"80":49,"81":49,"82":151,"83":49,"84":1559,"85":1559,"86":46,"87":1559,"88":49,"89":1,"90":1,"91":47,"92":47,"93":47,"94":47,"95":1,"96":147,"97":147,"98":143,"99":147,"100":1,"101":159,"102":159,"103":159,"104":159,"105":159,"106":3760,"107":3760,"108":152,"109":65,"110":65,"111":87,"112":87,"113":159,"114":65,"115":65,"116":19,"117":19,"118":19,"119":46,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":46,"127":4,"128":4,"129":42,"130":94,"131":94,"132":94,"133":94,"134":4,"135":90,"136":76,"137":14,"138":94,"139":90,"140":90,"141":90,"142":0,"143":0,"144":0,"145":0,"146":0,"147":94,"148":159,"149":1,"150":47,"151":1488,"152":1488,"153":26,"154":26,"155":1488,"156":1488,"157":47,"158":1,"159":351,"160":351,"161":149,"162":202,"163":202,"164":2,"165":202,"166":202,"167":202,"168":210,"169":210,"170":210,"171":8,"172":210,"173":210,"174":202,"175":1,"176":363,"177":363,"178":363,"179":161,"180":363,"181":207,"182":207,"183":217,"184":217,"185":217,"186":363,"187":1,"188":123,"189":123,"190":123,"191":1,"192":125,"193":125,"194":125,"195":125,"196":1,"197":1,"198":151,"199":151,"200":51,"201":100,"202":5,"203":95,"204":18,"205":77,"206":151,"207":51,"208":100,"209":81,"210":19,"211":19,"212":100,"213":77,"214":100,"215":151,"216":151,"217":1,"218":159,"219":159,"220":159,"221":56,"222":103,"223":28,"224":6,"225":22,"226":75,"227":159,"228":56,"229":56,"230":103,"231":103,"232":20,"233":103,"234":75,"235":28,"236":22,"237":6,"238":103,"239":159,"240":1,"241":1,"242":1,"243":26,"244":26,"245":26,"246":26,"247":26,"248":1,"249":47,"250":47,"251":143,"252":143,"253":8,"254":24,"255":135,"256":47,"257":47,"258":47,"259":447,"260":47,"261":1,"262":75,"263":37,"264":37,"265":37,"266":39,"267":39,"268":39,"269":39,"270":37,"271":37,"272":37,"273":2,"274":39,"275":32,"276":39,"277":39,"278":38,"279":75,"280":1,"281":1,"282":28,"283":28,"284":28,"285":28,"286":28,"287":28,"288":28,"289":1,"290":49,"291":49,"292":49,"293":49,"294":49,"295":165,"296":165,"297":165,"298":17,"299":8,"300":9,"301":148,"302":49,"303":1,"304":73,"305":3,"306":1,"307":1,"308":1,"309":2,"310":70,"311":37,"312":37,"313":37,"314":33,"315":72,"316":36,"317":38,"318":36,"319":36,"320":0,"321":0,"322":0,"323":36,"324":36,"325":72,"326":1,"327":132,"328":132,"329":534,"330":132,"331":132,"332":534,"333":132,"334":1,"335":37,"336":37,"337":37,"338":39,"339":39,"340":39,"341":37},"b":{"1":[54,54],"2":[182,0],"3":[182,0],"4":[0,182],"5":[54,97],"6":[32,22],"7":[78,19],"8":[92,5],"9":[46,1513],"10":[1559,144],"11":[143,4],"12":[152,3608],"13":[65,87],"14":[87,0],"15":[65,94],"16":[19,46],"17":[0,46],"18":[4,42],"19":[4,90],"20":[76,14],"21":[90,4],"22":[0,0],"23":[76,18],"24":[26,1462],"25":[1488,165,123],"26":[149,202],"27":[2,200],"28":[8,202],"29":[161,202],"30":[207,156],"31":[51,100],"32":[5,95],"33":[18,77],"34":[51,100],"35":[81,19],"36":[77,23],"37":[56,103],"38":[28,75],"39":[6,22],"40":[56,103],"41":[20,83],"42":[75,28],"43":[22,6],"44":[26,13],"45":[13,13],"46":[8,135],"47":[37,38],"48":[75,45],"49":[37,2],"50":[32,7],"51":[32,30],"52":[28,13],"53":[15,13],"54":[17,148],"55":[8,9],"56":[3,70],"57":[1,2],"58":[3,2],"59":[37,33],"60":[70,40],"61":[36,36],"62":[72,39,10]},"f":{"1":54,"2":1806,"3":1806,"4":54,"5":182,"6":49,"7":49,"8":151,"9":49,"10":47,"11":147,"12":159,"13":47,"14":351,"15":363,"16":123,"17":125,"18":151,"19":159,"20":26,"21":47,"22":75,"23":28,"24":49,"25":73,"26":38,"27":132,"28":37},"fnMap":{"1":{"name":"HeaderTable","line":37,"loc":{"start":{"line":37,"column":0},"end":{"line":37,"column":40}}},"2":{"name":"entryFromPair","line":72,"loc":{"start":{"line":72,"column":0},"end":{"line":72,"column":29}}},"3":{"name":"size","line":91,"loc":{"start":{"line":91,"column":0},"end":{"line":91,"column":21}}},"4":{"name":"tableSize","line":95,"loc":{"start":{"line":95,"column":0},"end":{"line":95,"column":26}}},"5":{"name":"(anonymous_5)","line":111,"loc":{"start":{"line":111,"column":28},"end":{"line":111,"column":51}}},"6":{"name":"HeaderSetDecompressor","line":218,"loc":{"start":{"line":218,"column":0},"end":{"line":218,"column":43}}},"7":{"name":"_transform","line":229,"loc":{"start":{"line":229,"column":45},"end":{"line":229,"column":92}}},"8":{"name":"_execute","line":255,"loc":{"start":{"line":255,"column":43},"end":{"line":255,"column":66}}},"9":{"name":"_flush","line":312,"loc":{"start":{"line":312,"column":41},"end":{"line":312,"column":67}}},"10":{"name":"HeaderSetCompressor","line":346,"loc":{"start":{"line":346,"column":0},"end":{"line":346,"column":41}}},"11":{"name":"send","line":354,"loc":{"start":{"line":354,"column":37},"end":{"line":354,"column":56}}},"12":{"name":"_transform","line":367,"loc":{"start":{"line":367,"column":43},"end":{"line":367,"column":89}}},"13":{"name":"_flush","line":473,"loc":{"start":{"line":473,"column":39},"end":{"line":473,"column":65}}},"14":{"name":"writeInteger","line":504,"loc":{"start":{"line":504,"column":30},"end":{"line":504,"column":58}}},"15":{"name":"readInteger","line":545,"loc":{"start":{"line":545,"column":32},"end":{"line":545,"column":64}}},"16":{"name":"writeString","line":574,"loc":{"start":{"line":574,"column":29},"end":{"line":574,"column":55}}},"17":{"name":"readString","line":580,"loc":{"start":{"line":580,"column":31},"end":{"line":580,"column":59}}},"18":{"name":"writeHeader","line":632,"loc":{"start":{"line":632,"column":29},"end":{"line":632,"column":58}}},"19":{"name":"readHeader","line":668,"loc":{"start":{"line":668,"column":31},"end":{"line":668,"column":59}}},"20":{"name":"Compressor","line":737,"loc":{"start":{"line":737,"column":0},"end":{"line":737,"column":31}}},"21":{"name":"compress","line":751,"loc":{"start":{"line":751,"column":32},"end":{"line":751,"column":59}}},"22":{"name":"_transform","line":773,"loc":{"start":{"line":773,"column":34},"end":{"line":773,"column":77}}},"23":{"name":"Decompressor","line":829,"loc":{"start":{"line":829,"column":0},"end":{"line":829,"column":33}}},"24":{"name":"decompress","line":846,"loc":{"start":{"line":846,"column":36},"end":{"line":846,"column":63}}},"25":{"name":"_transform","line":870,"loc":{"start":{"line":870,"column":36},"end":{"line":870,"column":79}}},"26":{"name":"(anonymous_26)","line":899,"loc":{"start":{"line":899,"column":41},"end":{"line":899,"column":57}}},"27":{"name":"concat","line":920,"loc":{"start":{"line":920,"column":0},"end":{"line":920,"column":25}}},"28":{"name":"cut","line":935,"loc":{"start":{"line":935,"column":0},"end":{"line":935,"column":27}}}},"statementMap":{"1":{"start":{"line":18,"column":0},"end":{"line":18,"column":34}},"2":{"start":{"line":19,"column":0},"end":{"line":19,"column":50}},"3":{"start":{"line":20,"column":0},"end":{"line":20,"column":54}},"4":{"start":{"line":21,"column":0},"end":{"line":21,"column":32}},"5":{"start":{"line":22,"column":0},"end":{"line":22,"column":36}},"6":{"start":{"line":24,"column":0},"end":{"line":24,"column":50}},"7":{"start":{"line":25,"column":0},"end":{"line":25,"column":31}},"8":{"start":{"line":26,"column":0},"end":{"line":26,"column":27}},"9":{"start":{"line":37,"column":0},"end":{"line":44,"column":1}},"10":{"start":{"line":38,"column":2},"end":{"line":38,"column":38}},"11":{"start":{"line":39,"column":2},"end":{"line":39,"column":18}},"12":{"start":{"line":40,"column":2},"end":{"line":40,"column":52}},"13":{"start":{"line":41,"column":2},"end":{"line":41,"column":31}},"14":{"start":{"line":42,"column":2},"end":{"line":42,"column":39}},"15":{"start":{"line":43,"column":2},"end":{"line":43,"column":14}},"16":{"start":{"line":72,"column":0},"end":{"line":79,"column":1}},"17":{"start":{"line":73,"column":2},"end":{"line":73,"column":27}},"18":{"start":{"line":74,"column":2},"end":{"line":74,"column":26}},"19":{"start":{"line":75,"column":2},"end":{"line":75,"column":24}},"20":{"start":{"line":76,"column":2},"end":{"line":76,"column":21}},"21":{"start":{"line":77,"column":2},"end":{"line":77,"column":28}},"22":{"start":{"line":78,"column":2},"end":{"line":78,"column":15}},"23":{"start":{"line":89,"column":0},"end":{"line":89,"column":38}},"24":{"start":{"line":91,"column":0},"end":{"line":93,"column":1}},"25":{"start":{"line":92,"column":2},"end":{"line":92,"column":63}},"26":{"start":{"line":95,"column":0},"end":{"line":101,"column":1}},"27":{"start":{"line":96,"column":2},"end":{"line":96,"column":15}},"28":{"start":{"line":97,"column":2},"end":{"line":99,"column":3}},"29":{"start":{"line":98,"column":4},"end":{"line":98,"column":27}},"30":{"start":{"line":100,"column":2},"end":{"line":100,"column":14}},"31":{"start":{"line":111,"column":0},"end":{"line":132,"column":2}},"32":{"start":{"line":112,"column":2},"end":{"line":112,"column":40}},"33":{"start":{"line":113,"column":2},"end":{"line":113,"column":26}},"34":{"start":{"line":115,"column":2},"end":{"line":119,"column":3}},"35":{"start":{"line":116,"column":4},"end":{"line":116,"column":31}},"36":{"start":{"line":117,"column":4},"end":{"line":117,"column":32}},"37":{"start":{"line":118,"column":4},"end":{"line":118,"column":33}},"38":{"start":{"line":121,"column":2},"end":{"line":129,"column":3}},"39":{"start":{"line":122,"column":4},"end":{"line":122,"column":35}},"40":{"start":{"line":123,"column":4},"end":{"line":127,"column":5}},"41":{"start":{"line":124,"column":6},"end":{"line":124,"column":26}},"42":{"start":{"line":126,"column":6},"end":{"line":126,"column":35}},"43":{"start":{"line":128,"column":4},"end":{"line":128,"column":30}},"44":{"start":{"line":131,"column":2},"end":{"line":131,"column":24}},"45":{"start":{"line":139,"column":0},"end":{"line":170,"column":2}},"46":{"start":{"line":174,"column":0},"end":{"line":205,"column":2}},"47":{"start":{"line":217,"column":0},"end":{"line":217,"column":54}},"48":{"start":{"line":218,"column":0},"end":{"line":224,"column":1}},"49":{"start":{"line":219,"column":2},"end":{"line":219,"column":51}},"50":{"start":{"line":221,"column":2},"end":{"line":221,"column":53}},"51":{"start":{"line":222,"column":2},"end":{"line":222,"column":22}},"52":{"start":{"line":223,"column":2},"end":{"line":223,"column":20}},"53":{"start":{"line":229,"column":0},"end":{"line":232,"column":2}},"54":{"start":{"line":230,"column":2},"end":{"line":230,"column":27}},"55":{"start":{"line":231,"column":2},"end":{"line":231,"column":13}},"56":{"start":{"line":255,"column":0},"end":{"line":306,"column":2}},"57":{"start":{"line":256,"column":2},"end":{"line":257,"column":53}},"58":{"start":{"line":259,"column":2},"end":{"line":259,"column":25}},"59":{"start":{"line":268,"column":2},"end":{"line":305,"column":3}},"60":{"start":{"line":269,"column":4},"end":{"line":269,"column":22}},"61":{"start":{"line":270,"column":4},"end":{"line":270,"column":31}},"62":{"start":{"line":272,"column":4},"end":{"line":279,"column":5}},"63":{"start":{"line":273,"column":6},"end":{"line":273,"column":30}},"64":{"start":{"line":275,"column":6},"end":{"line":275,"column":29}},"65":{"start":{"line":276,"column":6},"end":{"line":276,"column":27}},"66":{"start":{"line":277,"column":6},"end":{"line":277,"column":27}},"67":{"start":{"line":278,"column":6},"end":{"line":278,"column":22}},"68":{"start":{"line":290,"column":4},"end":{"line":294,"column":5}},"69":{"start":{"line":291,"column":6},"end":{"line":291,"column":51}},"70":{"start":{"line":293,"column":6},"end":{"line":293,"column":35}},"71":{"start":{"line":296,"column":4},"end":{"line":296,"column":22}},"72":{"start":{"line":297,"column":4},"end":{"line":302,"column":5}},"73":{"start":{"line":298,"column":6},"end":{"line":298,"column":34}},"74":{"start":{"line":299,"column":6},"end":{"line":299,"column":29}},"75":{"start":{"line":300,"column":6},"end":{"line":300,"column":27}},"76":{"start":{"line":301,"column":6},"end":{"line":301,"column":36}},"77":{"start":{"line":304,"column":4},"end":{"line":304,"column":20}},"78":{"start":{"line":312,"column":0},"end":{"line":331,"column":2}},"79":{"start":{"line":313,"column":2},"end":{"line":313,"column":36}},"80":{"start":{"line":316,"column":2},"end":{"line":316,"column":20}},"81":{"start":{"line":317,"column":2},"end":{"line":319,"column":3}},"82":{"start":{"line":318,"column":4},"end":{"line":318,"column":56}},"83":{"start":{"line":322,"column":2},"end":{"line":328,"column":3}},"84":{"start":{"line":323,"column":4},"end":{"line":323,"column":35}},"85":{"start":{"line":324,"column":4},"end":{"line":326,"column":5}},"86":{"start":{"line":325,"column":6},"end":{"line":325,"column":31}},"87":{"start":{"line":327,"column":4},"end":{"line":327,"column":26}},"88":{"start":{"line":330,"column":2},"end":{"line":330,"column":13}},"89":{"start":{"line":345,"column":0},"end":{"line":345,"column":52}},"90":{"start":{"line":346,"column":0},"end":{"line":352,"column":1}},"91":{"start":{"line":347,"column":2},"end":{"line":347,"column":51}},"92":{"start":{"line":349,"column":2},"end":{"line":349,"column":53}},"93":{"start":{"line":350,"column":2},"end":{"line":350,"column":22}},"94":{"start":{"line":351,"column":2},"end":{"line":351,"column":56}},"95":{"start":{"line":354,"column":0},"end":{"line":362,"column":2}},"96":{"start":{"line":355,"column":2},"end":{"line":356,"column":52}},"97":{"start":{"line":358,"column":2},"end":{"line":360,"column":3}},"98":{"start":{"line":359,"column":4},"end":{"line":359,"column":49}},"99":{"start":{"line":361,"column":2},"end":{"line":361,"column":32}},"100":{"start":{"line":367,"column":0},"end":{"line":468,"column":2}},"101":{"start":{"line":368,"column":2},"end":{"line":368,"column":35}},"102":{"start":{"line":369,"column":2},"end":{"line":369,"column":22}},"103":{"start":{"line":370,"column":2},"end":{"line":370,"column":17}},"104":{"start":{"line":373,"column":2},"end":{"line":373,"column":37}},"105":{"start":{"line":374,"column":2},"end":{"line":384,"column":3}},"106":{"start":{"line":375,"column":4},"end":{"line":375,"column":31}},"107":{"start":{"line":376,"column":4},"end":{"line":383,"column":5}},"108":{"start":{"line":377,"column":6},"end":{"line":382,"column":7}},"109":{"start":{"line":378,"column":8},"end":{"line":378,"column":26}},"110":{"start":{"line":379,"column":8},"end":{"line":379,"column":14}},"111":{"start":{"line":380,"column":13},"end":{"line":382,"column":7}},"112":{"start":{"line":381,"column":8},"end":{"line":381,"column":26}},"113":{"start":{"line":409,"column":2},"end":{"line":465,"column":3}},"114":{"start":{"line":410,"column":4},"end":{"line":410,"column":59}},"115":{"start":{"line":412,"column":4},"end":{"line":434,"column":5}},"116":{"start":{"line":413,"column":6},"end":{"line":413,"column":21}},"117":{"start":{"line":414,"column":6},"end":{"line":414,"column":29}},"118":{"start":{"line":415,"column":6},"end":{"line":415,"column":27}},"119":{"start":{"line":418,"column":9},"end":{"line":434,"column":5}},"120":{"start":{"line":419,"column":6},"end":{"line":419,"column":21}},"121":{"start":{"line":420,"column":6},"end":{"line":420,"column":21}},"122":{"start":{"line":421,"column":6},"end":{"line":421,"column":21}},"123":{"start":{"line":422,"column":6},"end":{"line":422,"column":21}},"124":{"start":{"line":423,"column":6},"end":{"line":423,"column":25}},"125":{"start":{"line":424,"column":6},"end":{"line":424,"column":27}},"126":{"start":{"line":427,"column":9},"end":{"line":434,"column":5}},"127":{"start":{"line":428,"column":6},"end":{"line":428,"column":21}},"128":{"start":{"line":429,"column":6},"end":{"line":429,"column":21}},"129":{"start":{"line":433,"column":6},"end":{"line":433,"column":24}},"130":{"start":{"line":439,"column":4},"end":{"line":439,"column":32}},"131":{"start":{"line":440,"column":4},"end":{"line":440,"column":25}},"132":{"start":{"line":442,"column":4},"end":{"line":442,"column":20}},"133":{"start":{"line":443,"column":4},"end":{"line":449,"column":5}},"134":{"start":{"line":444,"column":6},"end":{"line":444,"column":23}},"135":{"start":{"line":445,"column":11},"end":{"line":449,"column":5}},"136":{"start":{"line":446,"column":6},"end":{"line":446,"column":30}},"137":{"start":{"line":448,"column":6},"end":{"line":448,"column":29}},"138":{"start":{"line":451,"column":4},"end":{"line":462,"column":5}},"139":{"start":{"line":452,"column":6},"end":{"line":452,"column":29}},"140":{"start":{"line":453,"column":6},"end":{"line":453,"column":63}},"141":{"start":{"line":454,"column":6},"end":{"line":461,"column":7}},"142":{"start":{"line":455,"column":8},"end":{"line":455,"column":44}},"143":{"start":{"line":456,"column":8},"end":{"line":460,"column":9}},"144":{"start":{"line":457,"column":10},"end":{"line":457,"column":57}},"145":{"start":{"line":458,"column":10},"end":{"line":458,"column":25}},"146":{"start":{"line":459,"column":10},"end":{"line":459,"column":25}},"147":{"start":{"line":464,"column":4},"end":{"line":464,"column":97}},"148":{"start":{"line":467,"column":2},"end":{"line":467,"column":13}},"149":{"start":{"line":473,"column":0},"end":{"line":486,"column":2}},"150":{"start":{"line":475,"column":2},"end":{"line":483,"column":3}},"151":{"start":{"line":476,"column":4},"end":{"line":476,"column":35}},"152":{"start":{"line":477,"column":4},"end":{"line":480,"column":5}},"153":{"start":{"line":478,"column":6},"end":{"line":478,"column":58}},"154":{"start":{"line":479,"column":6},"end":{"line":479,"column":30}},"155":{"start":{"line":481,"column":4},"end":{"line":481,"column":23}},"156":{"start":{"line":482,"column":4},"end":{"line":482,"column":26}},"157":{"start":{"line":485,"column":2},"end":{"line":485,"column":13}},"158":{"start":{"line":504,"column":0},"end":{"line":530,"column":2}},"159":{"start":{"line":505,"column":2},"end":{"line":505,"column":32}},"160":{"start":{"line":506,"column":2},"end":{"line":508,"column":3}},"161":{"start":{"line":507,"column":4},"end":{"line":507,"column":29}},"162":{"start":{"line":510,"column":2},"end":{"line":510,"column":17}},"163":{"start":{"line":511,"column":2},"end":{"line":513,"column":3}},"164":{"start":{"line":512,"column":4},"end":{"line":512,"column":22}},"165":{"start":{"line":514,"column":2},"end":{"line":514,"column":13}},"166":{"start":{"line":516,"column":2},"end":{"line":516,"column":15}},"167":{"start":{"line":517,"column":2},"end":{"line":527,"column":3}},"168":{"start":{"line":518,"column":4},"end":{"line":518,"column":28}},"169":{"start":{"line":519,"column":4},"end":{"line":519,"column":16}},"170":{"start":{"line":521,"column":4},"end":{"line":523,"column":5}},"171":{"start":{"line":522,"column":6},"end":{"line":522,"column":15}},"172":{"start":{"line":524,"column":4},"end":{"line":524,"column":18}},"173":{"start":{"line":526,"column":4},"end":{"line":526,"column":10}},"174":{"start":{"line":529,"column":2},"end":{"line":529,"column":29}},"175":{"start":{"line":545,"column":0},"end":{"line":563,"column":2}},"176":{"start":{"line":546,"column":2},"end":{"line":546,"column":32}},"177":{"start":{"line":548,"column":2},"end":{"line":548,"column":40}},"178":{"start":{"line":549,"column":2},"end":{"line":551,"column":3}},"179":{"start":{"line":550,"column":4},"end":{"line":550,"column":23}},"180":{"start":{"line":553,"column":2},"end":{"line":560,"column":3}},"181":{"start":{"line":554,"column":4},"end":{"line":554,"column":14}},"182":{"start":{"line":555,"column":4},"end":{"line":559,"column":46}},"183":{"start":{"line":556,"column":6},"end":{"line":556,"column":46}},"184":{"start":{"line":557,"column":6},"end":{"line":557,"column":13}},"185":{"start":{"line":558,"column":6},"end":{"line":558,"column":25}},"186":{"start":{"line":562,"column":2},"end":{"line":562,"column":11}},"187":{"start":{"line":574,"column":0},"end":{"line":578,"column":2}},"188":{"start":{"line":575,"column":2},"end":{"line":575,"column":46}},"189":{"start":{"line":576,"column":2},"end":{"line":576,"column":75}},"190":{"start":{"line":577,"column":2},"end":{"line":577,"column":45}},"191":{"start":{"line":580,"column":0},"end":{"line":585,"column":2}},"192":{"start":{"line":581,"column":2},"end":{"line":581,"column":56}},"193":{"start":{"line":582,"column":2},"end":{"line":582,"column":75}},"194":{"start":{"line":583,"column":2},"end":{"line":583,"column":26}},"195":{"start":{"line":584,"column":2},"end":{"line":584,"column":13}},"196":{"start":{"line":625,"column":0},"end":{"line":630,"column":2}},"197":{"start":{"line":632,"column":0},"end":{"line":666,"column":2}},"198":{"start":{"line":633,"column":2},"end":{"line":633,"column":35}},"199":{"start":{"line":635,"column":2},"end":{"line":643,"column":3}},"200":{"start":{"line":636,"column":4},"end":{"line":636,"column":45}},"201":{"start":{"line":637,"column":9},"end":{"line":643,"column":3}},"202":{"start":{"line":638,"column":4},"end":{"line":638,"column":45}},"203":{"start":{"line":639,"column":9},"end":{"line":643,"column":3}},"204":{"start":{"line":640,"column":4},"end":{"line":640,"column":56}},"205":{"start":{"line":642,"column":4},"end":{"line":642,"column":57}},"206":{"start":{"line":645,"column":2},"end":{"line":661,"column":3}},"207":{"start":{"line":646,"column":4},"end":{"line":646,"column":83}},"208":{"start":{"line":649,"column":4},"end":{"line":654,"column":5}},"209":{"start":{"line":650,"column":6},"end":{"line":650,"column":88}},"210":{"start":{"line":652,"column":6},"end":{"line":652,"column":74}},"211":{"start":{"line":653,"column":6},"end":{"line":653,"column":60}},"212":{"start":{"line":656,"column":4},"end":{"line":658,"column":5}},"213":{"start":{"line":657,"column":6},"end":{"line":657,"column":65}},"214":{"start":{"line":660,"column":4},"end":{"line":660,"column":59}},"215":{"start":{"line":663,"column":2},"end":{"line":663,"column":45}},"216":{"start":{"line":665,"column":2},"end":{"line":665,"column":51}},"217":{"start":{"line":668,"column":0},"end":{"line":706,"column":2}},"218":{"start":{"line":669,"column":2},"end":{"line":669,"column":34}},"219":{"start":{"line":671,"column":2},"end":{"line":671,"column":40}},"220":{"start":{"line":672,"column":2},"end":{"line":682,"column":3}},"221":{"start":{"line":673,"column":4},"end":{"line":673,"column":45}},"222":{"start":{"line":674,"column":9},"end":{"line":682,"column":3}},"223":{"start":{"line":675,"column":4},"end":{"line":679,"column":5}},"224":{"start":{"line":676,"column":6},"end":{"line":676,"column":47}},"225":{"start":{"line":678,"column":6},"end":{"line":678,"column":58}},"226":{"start":{"line":681,"column":4},"end":{"line":681,"column":57}},"227":{"start":{"line":684,"column":2},"end":{"line":703,"column":3}},"228":{"start":{"line":685,"column":4},"end":{"line":685,"column":94}},"229":{"start":{"line":686,"column":4},"end":{"line":686,"column":22}},"230":{"start":{"line":689,"column":4},"end":{"line":689,"column":83}},"231":{"start":{"line":690,"column":4},"end":{"line":692,"column":5}},"232":{"start":{"line":691,"column":6},"end":{"line":691,"column":57}},"233":{"start":{"line":694,"column":4},"end":{"line":700,"column":5}},"234":{"start":{"line":695,"column":6},"end":{"line":695,"column":62}},"235":{"start":{"line":696,"column":11},"end":{"line":700,"column":5}},"236":{"start":{"line":697,"column":6},"end":{"line":697,"column":30}},"237":{"start":{"line":699,"column":6},"end":{"line":699,"column":24}},"238":{"start":{"line":702,"column":4},"end":{"line":702,"column":56}},"239":{"start":{"line":705,"column":2},"end":{"line":705,"column":16}},"240":{"start":{"line":730,"column":0},"end":{"line":730,"column":34}},"241":{"start":{"line":736,"column":0},"end":{"line":736,"column":43}},"242":{"start":{"line":737,"column":0},"end":{"line":746,"column":1}},"243":{"start":{"line":738,"column":2},"end":{"line":738,"column":51}},"244":{"start":{"line":740,"column":2},"end":{"line":740,"column":53}},"245":{"start":{"line":742,"column":2},"end":{"line":742,"column":56}},"246":{"start":{"line":743,"column":2},"end":{"line":744,"column":77}},"247":{"start":{"line":745,"column":2},"end":{"line":745,"column":57}},"248":{"start":{"line":751,"column":0},"end":{"line":770,"column":2}},"249":{"start":{"line":752,"column":2},"end":{"line":752,"column":67}},"250":{"start":{"line":753,"column":2},"end":{"line":762,"column":3}},"251":{"start":{"line":754,"column":4},"end":{"line":754,"column":30}},"252":{"start":{"line":755,"column":4},"end":{"line":761,"column":5}},"253":{"start":{"line":756,"column":6},"end":{"line":758,"column":7}},"254":{"start":{"line":757,"column":8},"end":{"line":757,"column":59}},"255":{"start":{"line":760,"column":6},"end":{"line":760,"column":54}},"256":{"start":{"line":763,"column":2},"end":{"line":763,"column":19}},"257":{"start":{"line":765,"column":2},"end":{"line":765,"column":25}},"258":{"start":{"line":766,"column":2},"end":{"line":768,"column":3}},"259":{"start":{"line":767,"column":4},"end":{"line":767,"column":23}},"260":{"start":{"line":769,"column":2},"end":{"line":769,"column":24}},"261":{"start":{"line":773,"column":0},"end":{"line":817,"column":2}},"262":{"start":{"line":781,"column":2},"end":{"line":814,"column":3}},"263":{"start":{"line":782,"column":4},"end":{"line":782,"column":46}},"264":{"start":{"line":784,"column":4},"end":{"line":784,"column":52}},"265":{"start":{"line":786,"column":4},"end":{"line":808,"column":5}},"266":{"start":{"line":787,"column":6},"end":{"line":787,"column":21}},"267":{"start":{"line":788,"column":6},"end":{"line":788,"column":28}},"268":{"start":{"line":789,"column":6},"end":{"line":789,"column":43}},"269":{"start":{"line":791,"column":6},"end":{"line":801,"column":7}},"270":{"start":{"line":792,"column":8},"end":{"line":792,"column":45}},"271":{"start":{"line":793,"column":8},"end":{"line":793,"column":57}},"272":{"start":{"line":794,"column":8},"end":{"line":794,"column":53}},"273":{"start":{"line":796,"column":8},"end":{"line":800,"column":10}},"274":{"start":{"line":802,"column":6},"end":{"line":804,"column":7}},"275":{"start":{"line":803,"column":8},"end":{"line":803,"column":69}},"276":{"start":{"line":805,"column":6},"end":{"line":805,"column":34}},"277":{"start":{"line":807,"column":6},"end":{"line":807,"column":28}},"278":{"start":{"line":813,"column":4},"end":{"line":813,"column":21}},"279":{"start":{"line":816,"column":2},"end":{"line":816,"column":9}},"280":{"start":{"line":828,"column":0},"end":{"line":828,"column":45}},"281":{"start":{"line":829,"column":0},"end":{"line":841,"column":1}},"282":{"start":{"line":830,"column":2},"end":{"line":830,"column":51}},"283":{"start":{"line":832,"column":2},"end":{"line":832,"column":53}},"284":{"start":{"line":834,"column":2},"end":{"line":834,"column":56}},"285":{"start":{"line":835,"column":2},"end":{"line":836,"column":77}},"286":{"start":{"line":837,"column":2},"end":{"line":837,"column":57}},"287":{"start":{"line":839,"column":2},"end":{"line":839,"column":27}},"288":{"start":{"line":840,"column":2},"end":{"line":840,"column":25}},"289":{"start":{"line":846,"column":0},"end":{"line":867,"column":2}},"290":{"start":{"line":847,"column":2},"end":{"line":847,"column":71}},"291":{"start":{"line":848,"column":2},"end":{"line":848,"column":26}},"292":{"start":{"line":850,"column":2},"end":{"line":850,"column":19}},"293":{"start":{"line":851,"column":2},"end":{"line":851,"column":11}},"294":{"start":{"line":852,"column":2},"end":{"line":864,"column":3}},"295":{"start":{"line":853,"column":4},"end":{"line":853,"column":23}},"296":{"start":{"line":854,"column":4},"end":{"line":854,"column":24}},"297":{"start":{"line":855,"column":4},"end":{"line":863,"column":5}},"298":{"start":{"line":856,"column":6},"end":{"line":860,"column":7}},"299":{"start":{"line":857,"column":8},"end":{"line":857,"column":34}},"300":{"start":{"line":859,"column":8},"end":{"line":859,"column":47}},"301":{"start":{"line":862,"column":6},"end":{"line":862,"column":28}},"302":{"start":{"line":866,"column":2},"end":{"line":866,"column":17}},"303":{"start":{"line":870,"column":0},"end":{"line":914,"column":2}},"304":{"start":{"line":873,"column":2},"end":{"line":893,"column":3}},"305":{"start":{"line":874,"column":4},"end":{"line":878,"column":5}},"306":{"start":{"line":875,"column":6},"end":{"line":875,"column":71}},"307":{"start":{"line":876,"column":6},"end":{"line":876,"column":43}},"308":{"start":{"line":877,"column":6},"end":{"line":877,"column":13}},"309":{"start":{"line":879,"column":4},"end":{"line":879,"column":29}},"310":{"start":{"line":884,"column":7},"end":{"line":893,"column":3}},"311":{"start":{"line":885,"column":4},"end":{"line":885,"column":28}},"312":{"start":{"line":886,"column":4},"end":{"line":886,"column":23}},"313":{"start":{"line":887,"column":4},"end":{"line":887,"column":27}},"314":{"start":{"line":892,"column":4},"end":{"line":892,"column":21}},"315":{"start":{"line":898,"column":2},"end":{"line":911,"column":3}},"316":{"start":{"line":899,"column":4},"end":{"line":901,"column":8}},"317":{"start":{"line":900,"column":6},"end":{"line":900,"column":24}},"318":{"start":{"line":902,"column":4},"end":{"line":908,"column":5}},"319":{"start":{"line":903,"column":6},"end":{"line":903,"column":44}},"320":{"start":{"line":905,"column":6},"end":{"line":905,"column":68}},"321":{"start":{"line":906,"column":6},"end":{"line":906,"column":46}},"322":{"start":{"line":907,"column":6},"end":{"line":907,"column":13}},"323":{"start":{"line":909,"column":4},"end":{"line":909,"column":62}},"324":{"start":{"line":910,"column":4},"end":{"line":910,"column":29}},"325":{"start":{"line":913,"column":2},"end":{"line":913,"column":9}},"326":{"start":{"line":920,"column":0},"end":{"line":932,"column":1}},"327":{"start":{"line":921,"column":2},"end":{"line":921,"column":15}},"328":{"start":{"line":922,"column":2},"end":{"line":924,"column":3}},"329":{"start":{"line":923,"column":4},"end":{"line":923,"column":30}},"330":{"start":{"line":926,"column":2},"end":{"line":926,"column":38}},"331":{"start":{"line":927,"column":2},"end":{"line":929,"column":3}},"332":{"start":{"line":928,"column":4},"end":{"line":928,"column":42}},"333":{"start":{"line":931,"column":2},"end":{"line":931,"column":22}},"334":{"start":{"line":935,"column":0},"end":{"line":944,"column":1}},"335":{"start":{"line":936,"column":2},"end":{"line":936,"column":18}},"336":{"start":{"line":937,"column":2},"end":{"line":937,"column":17}},"337":{"start":{"line":938,"column":2},"end":{"line":942,"column":34}},"338":{"start":{"line":939,"column":4},"end":{"line":939,"column":59}},"339":{"start":{"line":940,"column":4},"end":{"line":940,"column":58}},"340":{"start":{"line":941,"column":4},"end":{"line":941,"column":24}},"341":{"start":{"line":943,"column":2},"end":{"line":943,"column":16}}},"branchMap":{"1":{"line":40,"type":"binary-expr","locations":[{"start":{"line":40,"column":16},"end":{"line":40,"column":21}},{"start":{"line":40,"column":25},"end":{"line":40,"column":51}}]},"2":{"line":115,"type":"binary-expr","locations":[{"start":{"line":115,"column":10},"end":{"line":115,"column":28}},{"start":{"line":115,"column":34},"end":{"line":115,"column":49}}]},"3":{"line":121,"type":"if","locations":[{"start":{"line":121,"column":2},"end":{"line":121,"column":2}},{"start":{"line":121,"column":2},"end":{"line":121,"column":2}}]},"4":{"line":123,"type":"if","locations":[{"start":{"line":123,"column":4},"end":{"line":123,"column":4}},{"start":{"line":123,"column":4},"end":{"line":123,"column":4}}]},"5":{"line":268,"type":"if","locations":[{"start":{"line":268,"column":2},"end":{"line":268,"column":2}},{"start":{"line":268,"column":2},"end":{"line":268,"column":2}}]},"6":{"line":272,"type":"if","locations":[{"start":{"line":272,"column":4},"end":{"line":272,"column":4}},{"start":{"line":272,"column":4},"end":{"line":272,"column":4}}]},"7":{"line":290,"type":"if","locations":[{"start":{"line":290,"column":4},"end":{"line":290,"column":4}},{"start":{"line":290,"column":4},"end":{"line":290,"column":4}}]},"8":{"line":297,"type":"if","locations":[{"start":{"line":297,"column":4},"end":{"line":297,"column":4}},{"start":{"line":297,"column":4},"end":{"line":297,"column":4}}]},"9":{"line":324,"type":"if","locations":[{"start":{"line":324,"column":4},"end":{"line":324,"column":4}},{"start":{"line":324,"column":4},"end":{"line":324,"column":4}}]},"10":{"line":324,"type":"binary-expr","locations":[{"start":{"line":324,"column":8},"end":{"line":324,"column":23}},{"start":{"line":324,"column":27},"end":{"line":324,"column":41}}]},"11":{"line":358,"type":"if","locations":[{"start":{"line":358,"column":2},"end":{"line":358,"column":2}},{"start":{"line":358,"column":2},"end":{"line":358,"column":2}}]},"12":{"line":376,"type":"if","locations":[{"start":{"line":376,"column":4},"end":{"line":376,"column":4}},{"start":{"line":376,"column":4},"end":{"line":376,"column":4}}]},"13":{"line":377,"type":"if","locations":[{"start":{"line":377,"column":6},"end":{"line":377,"column":6}},{"start":{"line":377,"column":6},"end":{"line":377,"column":6}}]},"14":{"line":380,"type":"if","locations":[{"start":{"line":380,"column":13},"end":{"line":380,"column":13}},{"start":{"line":380,"column":13},"end":{"line":380,"column":13}}]},"15":{"line":409,"type":"if","locations":[{"start":{"line":409,"column":2},"end":{"line":409,"column":2}},{"start":{"line":409,"column":2},"end":{"line":409,"column":2}}]},"16":{"line":412,"type":"if","locations":[{"start":{"line":412,"column":4},"end":{"line":412,"column":4}},{"start":{"line":412,"column":4},"end":{"line":412,"column":4}}]},"17":{"line":418,"type":"if","locations":[{"start":{"line":418,"column":9},"end":{"line":418,"column":9}},{"start":{"line":418,"column":9},"end":{"line":418,"column":9}}]},"18":{"line":427,"type":"if","locations":[{"start":{"line":427,"column":9},"end":{"line":427,"column":9}},{"start":{"line":427,"column":9},"end":{"line":427,"column":9}}]},"19":{"line":443,"type":"if","locations":[{"start":{"line":443,"column":4},"end":{"line":443,"column":4}},{"start":{"line":443,"column":4},"end":{"line":443,"column":4}}]},"20":{"line":445,"type":"if","locations":[{"start":{"line":445,"column":11},"end":{"line":445,"column":11}},{"start":{"line":445,"column":11},"end":{"line":445,"column":11}}]},"21":{"line":451,"type":"if","locations":[{"start":{"line":451,"column":4},"end":{"line":451,"column":4}},{"start":{"line":451,"column":4},"end":{"line":451,"column":4}}]},"22":{"line":456,"type":"if","locations":[{"start":{"line":456,"column":8},"end":{"line":456,"column":8}},{"start":{"line":456,"column":8},"end":{"line":456,"column":8}}]},"23":{"line":464,"type":"cond-expr","locations":[{"start":{"line":464,"column":43},"end":{"line":464,"column":52}},{"start":{"line":464,"column":55},"end":{"line":464,"column":59}}]},"24":{"line":477,"type":"if","locations":[{"start":{"line":477,"column":4},"end":{"line":477,"column":4}},{"start":{"line":477,"column":4},"end":{"line":477,"column":4}}]},"25":{"line":477,"type":"binary-expr","locations":[{"start":{"line":477,"column":8},"end":{"line":477,"column":23}},{"start":{"line":477,"column":27},"end":{"line":477,"column":38}},{"start":{"line":477,"column":42},"end":{"line":477,"column":56}}]},"26":{"line":506,"type":"if","locations":[{"start":{"line":506,"column":2},"end":{"line":506,"column":2}},{"start":{"line":506,"column":2},"end":{"line":506,"column":2}}]},"27":{"line":511,"type":"if","locations":[{"start":{"line":511,"column":2},"end":{"line":511,"column":2}},{"start":{"line":511,"column":2},"end":{"line":511,"column":2}}]},"28":{"line":521,"type":"if","locations":[{"start":{"line":521,"column":4},"end":{"line":521,"column":4}},{"start":{"line":521,"column":4},"end":{"line":521,"column":4}}]},"29":{"line":549,"type":"if","locations":[{"start":{"line":549,"column":2},"end":{"line":549,"column":2}},{"start":{"line":549,"column":2},"end":{"line":549,"column":2}}]},"30":{"line":553,"type":"if","locations":[{"start":{"line":553,"column":2},"end":{"line":553,"column":2}},{"start":{"line":553,"column":2},"end":{"line":553,"column":2}}]},"31":{"line":635,"type":"if","locations":[{"start":{"line":635,"column":2},"end":{"line":635,"column":2}},{"start":{"line":635,"column":2},"end":{"line":635,"column":2}}]},"32":{"line":637,"type":"if","locations":[{"start":{"line":637,"column":9},"end":{"line":637,"column":9}},{"start":{"line":637,"column":9},"end":{"line":637,"column":9}}]},"33":{"line":639,"type":"if","locations":[{"start":{"line":639,"column":9},"end":{"line":639,"column":9}},{"start":{"line":639,"column":9},"end":{"line":639,"column":9}}]},"34":{"line":645,"type":"if","locations":[{"start":{"line":645,"column":2},"end":{"line":645,"column":2}},{"start":{"line":645,"column":2},"end":{"line":645,"column":2}}]},"35":{"line":649,"type":"if","locations":[{"start":{"line":649,"column":4},"end":{"line":649,"column":4}},{"start":{"line":649,"column":4},"end":{"line":649,"column":4}}]},"36":{"line":656,"type":"if","locations":[{"start":{"line":656,"column":4},"end":{"line":656,"column":4}},{"start":{"line":656,"column":4},"end":{"line":656,"column":4}}]},"37":{"line":672,"type":"if","locations":[{"start":{"line":672,"column":2},"end":{"line":672,"column":2}},{"start":{"line":672,"column":2},"end":{"line":672,"column":2}}]},"38":{"line":674,"type":"if","locations":[{"start":{"line":674,"column":9},"end":{"line":674,"column":9}},{"start":{"line":674,"column":9},"end":{"line":674,"column":9}}]},"39":{"line":675,"type":"if","locations":[{"start":{"line":675,"column":4},"end":{"line":675,"column":4}},{"start":{"line":675,"column":4},"end":{"line":675,"column":4}}]},"40":{"line":684,"type":"if","locations":[{"start":{"line":684,"column":2},"end":{"line":684,"column":2}},{"start":{"line":684,"column":2},"end":{"line":684,"column":2}}]},"41":{"line":690,"type":"if","locations":[{"start":{"line":690,"column":4},"end":{"line":690,"column":4}},{"start":{"line":690,"column":4},"end":{"line":690,"column":4}}]},"42":{"line":694,"type":"if","locations":[{"start":{"line":694,"column":4},"end":{"line":694,"column":4}},{"start":{"line":694,"column":4},"end":{"line":694,"column":4}}]},"43":{"line":696,"type":"if","locations":[{"start":{"line":696,"column":11},"end":{"line":696,"column":11}},{"start":{"line":696,"column":11},"end":{"line":696,"column":11}}]},"44":{"line":742,"type":"binary-expr","locations":[{"start":{"line":742,"column":10},"end":{"line":742,"column":28}},{"start":{"line":742,"column":34},"end":{"line":742,"column":53}}]},"45":{"line":743,"type":"cond-expr","locations":[{"start":{"line":743,"column":44},"end":{"line":743,"column":75}},{"start":{"line":744,"column":44},"end":{"line":744,"column":76}}]},"46":{"line":755,"type":"if","locations":[{"start":{"line":755,"column":4},"end":{"line":755,"column":4}},{"start":{"line":755,"column":4},"end":{"line":755,"column":4}}]},"47":{"line":781,"type":"if","locations":[{"start":{"line":781,"column":2},"end":{"line":781,"column":2}},{"start":{"line":781,"column":2},"end":{"line":781,"column":2}}]},"48":{"line":781,"type":"binary-expr","locations":[{"start":{"line":781,"column":6},"end":{"line":781,"column":30}},{"start":{"line":781,"column":34},"end":{"line":781,"column":63}}]},"49":{"line":791,"type":"if","locations":[{"start":{"line":791,"column":6},"end":{"line":791,"column":6}},{"start":{"line":791,"column":6},"end":{"line":791,"column":6}}]},"50":{"line":802,"type":"if","locations":[{"start":{"line":802,"column":6},"end":{"line":802,"column":6}},{"start":{"line":802,"column":6},"end":{"line":802,"column":6}}]},"51":{"line":803,"type":"binary-expr","locations":[{"start":{"line":803,"column":38},"end":{"line":803,"column":42}},{"start":{"line":803,"column":46},"end":{"line":803,"column":68}}]},"52":{"line":834,"type":"binary-expr","locations":[{"start":{"line":834,"column":10},"end":{"line":834,"column":28}},{"start":{"line":834,"column":34},"end":{"line":834,"column":53}}]},"53":{"line":835,"type":"cond-expr","locations":[{"start":{"line":835,"column":44},"end":{"line":835,"column":75}},{"start":{"line":836,"column":44},"end":{"line":836,"column":76}}]},"54":{"line":855,"type":"if","locations":[{"start":{"line":855,"column":4},"end":{"line":855,"column":4}},{"start":{"line":855,"column":4},"end":{"line":855,"column":4}}]},"55":{"line":856,"type":"if","locations":[{"start":{"line":856,"column":6},"end":{"line":856,"column":6}},{"start":{"line":856,"column":6},"end":{"line":856,"column":6}}]},"56":{"line":873,"type":"if","locations":[{"start":{"line":873,"column":2},"end":{"line":873,"column":2}},{"start":{"line":873,"column":2},"end":{"line":873,"column":2}}]},"57":{"line":874,"type":"if","locations":[{"start":{"line":874,"column":4},"end":{"line":874,"column":4}},{"start":{"line":874,"column":4},"end":{"line":874,"column":4}}]},"58":{"line":874,"type":"binary-expr","locations":[{"start":{"line":874,"column":9},"end":{"line":874,"column":38}},{"start":{"line":874,"column":44},"end":{"line":874,"column":78}}]},"59":{"line":884,"type":"if","locations":[{"start":{"line":884,"column":7},"end":{"line":884,"column":7}},{"start":{"line":884,"column":7},"end":{"line":884,"column":7}}]},"60":{"line":884,"type":"binary-expr","locations":[{"start":{"line":884,"column":12},"end":{"line":884,"column":36}},{"start":{"line":884,"column":42},"end":{"line":884,"column":71}}]},"61":{"line":898,"type":"if","locations":[{"start":{"line":898,"column":2},"end":{"line":898,"column":2}},{"start":{"line":898,"column":2},"end":{"line":898,"column":2}}]},"62":{"line":898,"type":"binary-expr","locations":[{"start":{"line":898,"column":6},"end":{"line":898,"column":22}},{"start":{"line":898,"column":27},"end":{"line":898,"column":50}},{"start":{"line":898,"column":54},"end":{"line":898,"column":82}}]}}},"/data/upstream/node-http2/lib/connection.js":{"path":"/data/upstream/node-http2/lib/connection.js","s":{"1":1,"2":1,"3":1,"4":1,"5":45,"6":45,"7":45,"8":45,"9":45,"10":45,"11":45,"12":1,"13":1,"14":1,"15":45,"16":45,"17":45,"18":45,"19":45,"20":45,"21":45,"22":45,"23":1,"24":42,"25":42,"26":42,"27":0,"28":0,"29":1,"30":18,"31":18,"32":18,"33":18,"34":0,"35":1,"36":89,"37":43,"38":43,"39":43,"40":43,"41":0,"42":1,"43":45,"44":23,"45":23,"46":22,"47":22,"48":0,"49":0,"50":0,"51":45,"52":45,"53":45,"54":45,"55":45,"56":45,"57":45,"58":1,"59":45,"60":45,"61":45,"62":45,"63":45,"64":1,"65":75,"66":28,"67":47,"68":1,"69":10,"70":10,"71":10,"72":10,"73":10,"74":5,"75":10,"76":1,"77":22,"78":22,"79":22,"80":22,"81":22,"82":22,"83":1,"84":18,"85":18,"86":18,"87":18,"88":1,"89":45,"90":45,"91":45,"92":1,"93":231,"94":4,"95":227,"96":97,"97":130,"98":101,"99":101,"100":130,"101":97,"102":97,"103":97,"104":64,"105":64,"106":64,"107":113,"108":146,"109":146,"110":146,"111":89,"112":57,"113":0,"114":0,"115":57,"116":57,"117":27,"118":57,"119":5,"120":5,"121":57,"122":57,"123":57,"124":57,"125":57,"126":0,"127":113,"128":113,"129":97,"130":69,"131":97,"132":1,"133":98,"134":98,"135":36,"136":36,"137":98,"138":98,"139":17,"140":98,"141":5,"142":98,"143":98,"144":98,"145":1,"146":1,"147":45,"148":45,"149":45,"150":1,"151":36,"152":36,"153":0,"154":0,"155":1,"156":36,"157":54,"158":1,"159":45,"160":45,"161":70,"162":1,"163":45,"164":45,"165":45,"166":45,"167":1,"168":2,"169":2,"170":2,"171":32,"172":2,"173":1,"174":2,"175":2,"176":2,"177":2,"178":2,"179":1,"180":5,"181":3,"182":3,"183":2,"184":2,"185":2,"186":2,"187":2,"188":1,"189":2,"190":2,"191":1,"192":3,"193":0,"194":0,"195":3,"196":3,"197":3,"198":3,"199":1,"200":2,"201":2,"202":2,"203":2,"204":0,"205":1,"206":45,"207":45,"208":45,"209":45,"210":25,"211":45,"212":45,"213":45,"214":45,"215":45,"216":1,"217":1,"218":41,"219":1,"220":1,"221":40,"222":40,"223":40,"224":47,"225":1,"226":24,"227":22,"228":22,"229":2,"230":1,"231":1,"232":1,"233":20,"234":20,"235":20,"236":20,"237":0,"238":0,"239":0},"b":{"1":[42,0],"2":[42,6,2,0],"3":[18,0],"4":[0,18],"5":[43,46],"6":[43,0],"7":[0,43],"8":[23,22],"9":[22,0],"10":[22,22],"11":[28,47],"12":[5,5],"13":[4,227],"14":[97,130],"15":[101,29],"16":[146,0],"17":[89,57],"18":[0,57],"19":[27,30],"20":[27,18],"21":[5,52],"22":[0,57],"23":[69,28],"24":[36,62],"25":[17,81],"26":[5,93],"27":[45,20],"28":[36,0],"29":[36,36],"30":[3,2],"31":[2,1],"32":[2,0],"33":[0,3],"34":[3,2],"35":[0,2],"36":[25,20],"37":[1,40],"38":[41,2],"39":[22,2],"40":[1,1],"41":[20,0],"42":[0,0]},"f":{"1":45,"2":45,"3":42,"4":18,"5":89,"6":45,"7":45,"8":75,"9":10,"10":22,"11":18,"12":45,"13":231,"14":98,"15":45,"16":36,"17":36,"18":45,"19":45,"20":2,"21":2,"22":5,"23":3,"24":2,"25":45,"26":45,"27":40,"28":20,"29":41,"30":47,"31":24,"32":20,"33":20},"fnMap":{"1":{"name":"Connection","line":39,"loc":{"start":{"line":39,"column":0},"end":{"line":39,"column":50}}},"2":{"name":"_initializeStreamManagement","line":100,"loc":{"start":{"line":100,"column":51},"end":{"line":100,"column":103}}},"3":{"name":"_writeControlFrame","line":123,"loc":{"start":{"line":123,"column":42},"end":{"line":123,"column":77}}},"4":{"name":"_updateStreamLimit","line":135,"loc":{"start":{"line":135,"column":42},"end":{"line":135,"column":86}}},"5":{"name":"_changeStreamCount","line":144,"loc":{"start":{"line":144,"column":42},"end":{"line":144,"column":78}}},"6":{"name":"_allocateId","line":164,"loc":{"start":{"line":164,"column":35},"end":{"line":164,"column":68}}},"7":{"name":"_allocatePriority","line":199,"loc":{"start":{"line":199,"column":41},"end":{"line":199,"column":76}}},"8":{"name":"_insert","line":207,"loc":{"start":{"line":207,"column":31},"end":{"line":207,"column":66}}},"9":{"name":"_reprioritize","line":215,"loc":{"start":{"line":215,"column":37},"end":{"line":215,"column":78}}},"10":{"name":"_createIncomingStream","line":229,"loc":{"start":{"line":229,"column":45},"end":{"line":229,"column":80}}},"11":{"name":"createStream","line":241,"loc":{"start":{"line":241,"column":36},"end":{"line":241,"column":60}}},"12":{"name":"_initializeMultiplexing","line":254,"loc":{"start":{"line":254,"column":47},"end":{"line":254,"column":82}}},"13":{"name":"_send","line":262,"loc":{"start":{"line":262,"column":29},"end":{"line":262,"column":55}}},"14":{"name":"_receive","line":346,"loc":{"start":{"line":346,"column":32},"end":{"line":346,"column":63}}},"15":{"name":"_initializeSettingsManagement","line":384,"loc":{"start":{"line":384,"column":53},"end":{"line":384,"column":102}}},"16":{"name":"_onFirstFrameReceived","line":394,"loc":{"start":{"line":394,"column":45},"end":{"line":394,"column":83}}},"17":{"name":"_receiveSettings","line":404,"loc":{"start":{"line":404,"column":40},"end":{"line":404,"column":73}}},"18":{"name":"set","line":411,"loc":{"start":{"line":411,"column":27},"end":{"line":411,"column":50}}},"19":{"name":"_initializeLifecycleManagement","line":433,"loc":{"start":{"line":433,"column":54},"end":{"line":433,"column":96}}},"20":{"name":"_generatePingId","line":441,"loc":{"start":{"line":441,"column":39},"end":{"line":441,"column":66}}},"21":{"name":"ping","line":452,"loc":{"start":{"line":452,"column":28},"end":{"line":452,"column":52}}},"22":{"name":"_receivePing","line":469,"loc":{"start":{"line":469,"column":36},"end":{"line":469,"column":65}}},"23":{"name":"close","line":497,"loc":{"start":{"line":497,"column":29},"end":{"line":497,"column":51}}},"24":{"name":"_receiveGoaway","line":515,"loc":{"start":{"line":515,"column":38},"end":{"line":515,"column":69}}},"25":{"name":"_initializeFlowControl","line":527,"loc":{"start":{"line":527,"column":46},"end":{"line":527,"column":80}}},"26":{"name":"(anonymous_26)","line":530,"loc":{"start":{"line":530,"column":24},"end":{"line":530,"column":41}}},"27":{"name":"noop","line":539,"loc":{"start":{"line":539,"column":49},"end":{"line":539,"column":65}}},"28":{"name":"noop","line":540,"loc":{"start":{"line":540,"column":57},"end":{"line":540,"column":73}}},"29":{"name":"_setInitialStreamWindowSize","line":550,"loc":{"start":{"line":550,"column":51},"end":{"line":550,"column":94}}},"30":{"name":"(anonymous_30)","line":557,"loc":{"start":{"line":557,"column":28},"end":{"line":557,"column":45}}},"31":{"name":"_setLocalFlowControl","line":565,"loc":{"start":{"line":565,"column":44},"end":{"line":565,"column":83}}},"32":{"name":"_setRemoteFlowControl","line":575,"loc":{"start":{"line":575,"column":45},"end":{"line":575,"column":85}}},"33":{"name":"(anonymous_33)","line":578,"loc":{"start":{"line":578,"column":28},"end":{"line":578,"column":45}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":31}},"2":{"start":{"line":10,"column":0},"end":{"line":10,"column":34}},"3":{"start":{"line":12,"column":0},"end":{"line":12,"column":32}},"4":{"start":{"line":39,"column":0},"end":{"line":60,"column":1}},"5":{"start":{"line":41,"column":2},"end":{"line":41,"column":21}},"6":{"start":{"line":44,"column":2},"end":{"line":44,"column":53}},"7":{"start":{"line":47,"column":2},"end":{"line":47,"column":50}},"8":{"start":{"line":50,"column":2},"end":{"line":50,"column":40}},"9":{"start":{"line":53,"column":2},"end":{"line":53,"column":32}},"10":{"start":{"line":56,"column":2},"end":{"line":56,"column":47}},"11":{"start":{"line":59,"column":2},"end":{"line":59,"column":33}},"12":{"start":{"line":61,"column":0},"end":{"line":61,"column":93}},"13":{"start":{"line":97,"column":0},"end":{"line":97,"column":41}},"14":{"start":{"line":100,"column":0},"end":{"line":119,"column":2}},"15":{"start":{"line":104,"column":2},"end":{"line":104,"column":23}},"16":{"start":{"line":105,"column":2},"end":{"line":105,"column":30}},"17":{"start":{"line":108,"column":2},"end":{"line":108,"column":37}},"18":{"start":{"line":109,"column":2},"end":{"line":109,"column":31}},"19":{"start":{"line":112,"column":2},"end":{"line":112,"column":83}},"20":{"start":{"line":116,"column":2},"end":{"line":116,"column":35}},"21":{"start":{"line":117,"column":2},"end":{"line":117,"column":31}},"22":{"start":{"line":118,"column":2},"end":{"line":118,"column":80}},"23":{"start":{"line":123,"column":0},"end":{"line":132,"column":2}},"24":{"start":{"line":124,"column":2},"end":{"line":131,"column":3}},"25":{"start":{"line":126,"column":4},"end":{"line":126,"column":74}},"26":{"start":{"line":127,"column":4},"end":{"line":127,"column":33}},"27":{"start":{"line":129,"column":4},"end":{"line":129,"column":72}},"28":{"start":{"line":130,"column":4},"end":{"line":130,"column":41}},"29":{"start":{"line":135,"column":0},"end":{"line":142,"column":2}},"30":{"start":{"line":136,"column":2},"end":{"line":136,"column":85}},"31":{"start":{"line":137,"column":2},"end":{"line":137,"column":62}},"32":{"start":{"line":138,"column":2},"end":{"line":138,"column":37}},"33":{"start":{"line":139,"column":2},"end":{"line":141,"column":3}},"34":{"start":{"line":140,"column":4},"end":{"line":140,"column":24}},"35":{"start":{"line":144,"column":0},"end":{"line":154,"column":2}},"36":{"start":{"line":145,"column":2},"end":{"line":153,"column":3}},"37":{"start":{"line":146,"column":4},"end":{"line":147,"column":53}},"38":{"start":{"line":148,"column":4},"end":{"line":148,"column":63}},"39":{"start":{"line":149,"column":4},"end":{"line":149,"column":36}},"40":{"start":{"line":150,"column":4},"end":{"line":152,"column":5}},"41":{"start":{"line":151,"column":6},"end":{"line":151,"column":26}},"42":{"start":{"line":164,"column":0},"end":{"line":196,"column":2}},"43":{"start":{"line":166,"column":2},"end":{"line":182,"column":3}},"44":{"start":{"line":167,"column":4},"end":{"line":167,"column":28}},"45":{"start":{"line":168,"column":4},"end":{"line":168,"column":28}},"46":{"start":{"line":172,"column":7},"end":{"line":182,"column":3}},"47":{"start":{"line":173,"column":4},"end":{"line":173,"column":34}},"48":{"start":{"line":178,"column":4},"end":{"line":179,"column":51}},"49":{"start":{"line":180,"column":4},"end":{"line":180,"column":41}},"50":{"start":{"line":181,"column":4},"end":{"line":181,"column":21}},"51":{"start":{"line":184,"column":2},"end":{"line":184,"column":35}},"52":{"start":{"line":187,"column":2},"end":{"line":187,"column":77}},"53":{"start":{"line":188,"column":2},"end":{"line":188,"column":31}},"54":{"start":{"line":189,"column":2},"end":{"line":189,"column":17}},"55":{"start":{"line":190,"column":2},"end":{"line":190,"column":38}},"56":{"start":{"line":193,"column":2},"end":{"line":193,"column":52}},"57":{"start":{"line":195,"column":2},"end":{"line":195,"column":12}},"58":{"start":{"line":199,"column":0},"end":{"line":205,"column":2}},"59":{"start":{"line":200,"column":2},"end":{"line":200,"column":68}},"60":{"start":{"line":201,"column":2},"end":{"line":201,"column":41}},"61":{"start":{"line":202,"column":2},"end":{"line":202,"column":63}},"62":{"start":{"line":203,"column":2},"end":{"line":203,"column":65}},"63":{"start":{"line":204,"column":2},"end":{"line":204,"column":22}},"64":{"start":{"line":207,"column":0},"end":{"line":213,"column":2}},"65":{"start":{"line":208,"column":2},"end":{"line":212,"column":3}},"66":{"start":{"line":209,"column":4},"end":{"line":209,"column":50}},"67":{"start":{"line":211,"column":4},"end":{"line":211,"column":48}},"68":{"start":{"line":215,"column":0},"end":{"line":225,"column":2}},"69":{"start":{"line":216,"column":2},"end":{"line":216,"column":56}},"70":{"start":{"line":217,"column":2},"end":{"line":217,"column":37}},"71":{"start":{"line":218,"column":2},"end":{"line":218,"column":23}},"72":{"start":{"line":219,"column":2},"end":{"line":219,"column":26}},"73":{"start":{"line":220,"column":2},"end":{"line":222,"column":3}},"74":{"start":{"line":221,"column":4},"end":{"line":221,"column":52}},"75":{"start":{"line":224,"column":2},"end":{"line":224,"column":33}},"76":{"start":{"line":229,"column":0},"end":{"line":238,"column":2}},"77":{"start":{"line":230,"column":2},"end":{"line":230,"column":61}},"78":{"start":{"line":232,"column":2},"end":{"line":232,"column":37}},"79":{"start":{"line":233,"column":2},"end":{"line":233,"column":31}},"80":{"start":{"line":234,"column":2},"end":{"line":234,"column":33}},"81":{"start":{"line":235,"column":2},"end":{"line":235,"column":34}},"82":{"start":{"line":237,"column":2},"end":{"line":237,"column":16}},"83":{"start":{"line":241,"column":0},"end":{"line":249,"column":2}},"84":{"start":{"line":242,"column":2},"end":{"line":242,"column":51}},"85":{"start":{"line":245,"column":2},"end":{"line":245,"column":37}},"86":{"start":{"line":246,"column":2},"end":{"line":246,"column":33}},"87":{"start":{"line":248,"column":2},"end":{"line":248,"column":16}},"88":{"start":{"line":254,"column":0},"end":{"line":258,"column":2}},"89":{"start":{"line":255,"column":2},"end":{"line":255,"column":59}},"90":{"start":{"line":256,"column":2},"end":{"line":256,"column":30}},"91":{"start":{"line":257,"column":2},"end":{"line":257,"column":35}},"92":{"start":{"line":262,"column":0},"end":{"line":342,"column":2}},"93":{"start":{"line":264,"column":2},"end":{"line":266,"column":3}},"94":{"start":{"line":265,"column":4},"end":{"line":265,"column":11}},"95":{"start":{"line":269,"column":2},"end":{"line":277,"column":3}},"96":{"start":{"line":270,"column":4},"end":{"line":270,"column":32}},"97":{"start":{"line":272,"column":4},"end":{"line":275,"column":5}},"98":{"start":{"line":273,"column":6},"end":{"line":273,"column":33}},"99":{"start":{"line":274,"column":6},"end":{"line":274,"column":48}},"100":{"start":{"line":276,"column":4},"end":{"line":276,"column":11}},"101":{"start":{"line":279,"column":2},"end":{"line":279,"column":62}},"102":{"start":{"line":282,"column":0},"end":{"line":334,"column":3}},"103":{"start":{"line":283,"column":2},"end":{"line":334,"column":3}},"104":{"start":{"line":284,"column":4},"end":{"line":284,"column":50}},"105":{"start":{"line":285,"column":4},"end":{"line":285,"column":24}},"106":{"start":{"line":298,"column":4},"end":{"line":333,"column":5}},"107":{"start":{"line":299,"column":6},"end":{"line":329,"column":7}},"108":{"start":{"line":300,"column":8},"end":{"line":300,"column":35}},"109":{"start":{"line":301,"column":8},"end":{"line":301,"column":81}},"110":{"start":{"line":303,"column":8},"end":{"line":308,"column":9}},"111":{"start":{"line":304,"column":10},"end":{"line":304,"column":19}},"112":{"start":{"line":305,"column":15},"end":{"line":308,"column":9}},"113":{"start":{"line":306,"column":10},"end":{"line":306,"column":41}},"114":{"start":{"line":307,"column":10},"end":{"line":307,"column":19}},"115":{"start":{"line":310,"column":8},"end":{"line":310,"column":32}},"116":{"start":{"line":312,"column":8},"end":{"line":314,"column":9}},"117":{"start":{"line":313,"column":10},"end":{"line":313,"column":63}},"118":{"start":{"line":316,"column":8},"end":{"line":319,"column":9}},"119":{"start":{"line":317,"column":10},"end":{"line":317,"column":56}},"120":{"start":{"line":318,"column":10},"end":{"line":318,"column":74}},"121":{"start":{"line":321,"column":8},"end":{"line":321,"column":82}},"122":{"start":{"line":322,"column":8},"end":{"line":322,"column":42}},"123":{"start":{"line":323,"column":8},"end":{"line":323,"column":52}},"124":{"start":{"line":325,"column":8},"end":{"line":325,"column":36}},"125":{"start":{"line":326,"column":8},"end":{"line":328,"column":9}},"126":{"start":{"line":327,"column":10},"end":{"line":327,"column":30}},"127":{"start":{"line":331,"column":6},"end":{"line":331,"column":26}},"128":{"start":{"line":332,"column":6},"end":{"line":332,"column":22}},"129":{"start":{"line":337,"column":2},"end":{"line":339,"column":3}},"130":{"start":{"line":338,"column":4},"end":{"line":338,"column":47}},"131":{"start":{"line":341,"column":2},"end":{"line":341,"column":90}},"132":{"start":{"line":346,"column":0},"end":{"line":374,"column":2}},"133":{"start":{"line":347,"column":2},"end":{"line":347,"column":65}},"134":{"start":{"line":350,"column":2},"end":{"line":353,"column":3}},"135":{"start":{"line":351,"column":4},"end":{"line":351,"column":36}},"136":{"start":{"line":352,"column":4},"end":{"line":352,"column":38}},"137":{"start":{"line":356,"column":2},"end":{"line":356,"column":45}},"138":{"start":{"line":359,"column":2},"end":{"line":361,"column":3}},"139":{"start":{"line":360,"column":4},"end":{"line":360,"column":54}},"140":{"start":{"line":364,"column":2},"end":{"line":366,"column":3}},"141":{"start":{"line":365,"column":4},"end":{"line":365,"column":78}},"142":{"start":{"line":368,"column":2},"end":{"line":368,"column":58}},"143":{"start":{"line":371,"column":2},"end":{"line":371,"column":31}},"144":{"start":{"line":373,"column":2},"end":{"line":373,"column":9}},"145":{"start":{"line":379,"column":0},"end":{"line":381,"column":2}},"146":{"start":{"line":384,"column":0},"end":{"line":391,"column":2}},"147":{"start":{"line":386,"column":2},"end":{"line":386,"column":88}},"148":{"start":{"line":387,"column":2},"end":{"line":387,"column":40}},"149":{"start":{"line":390,"column":2},"end":{"line":390,"column":45}},"150":{"start":{"line":394,"column":0},"end":{"line":401,"column":2}},"151":{"start":{"line":395,"column":2},"end":{"line":400,"column":3}},"152":{"start":{"line":396,"column":4},"end":{"line":396,"column":92}},"153":{"start":{"line":398,"column":4},"end":{"line":398,"column":97}},"154":{"start":{"line":399,"column":4},"end":{"line":399,"column":23}},"155":{"start":{"line":404,"column":0},"end":{"line":408,"column":2}},"156":{"start":{"line":405,"column":2},"end":{"line":407,"column":3}},"157":{"start":{"line":406,"column":4},"end":{"line":406,"column":57}},"158":{"start":{"line":411,"column":0},"end":{"line":421,"column":2}},"159":{"start":{"line":412,"column":2},"end":{"line":417,"column":5}},"160":{"start":{"line":418,"column":2},"end":{"line":420,"column":3}},"161":{"start":{"line":419,"column":4},"end":{"line":419,"column":49}},"162":{"start":{"line":433,"column":0},"end":{"line":438,"column":2}},"163":{"start":{"line":434,"column":2},"end":{"line":434,"column":19}},"164":{"start":{"line":435,"column":2},"end":{"line":435,"column":37}},"165":{"start":{"line":436,"column":2},"end":{"line":436,"column":41}},"166":{"start":{"line":437,"column":2},"end":{"line":437,"column":23}},"167":{"start":{"line":441,"column":0},"end":{"line":449,"column":2}},"168":{"start":{"line":442,"column":2},"end":{"line":447,"column":29}},"169":{"start":{"line":443,"column":4},"end":{"line":443,"column":16}},"170":{"start":{"line":444,"column":4},"end":{"line":446,"column":5}},"171":{"start":{"line":445,"column":6},"end":{"line":445,"column":54}},"172":{"start":{"line":448,"column":2},"end":{"line":448,"column":12}},"173":{"start":{"line":452,"column":0},"end":{"line":466,"column":2}},"174":{"start":{"line":453,"column":2},"end":{"line":453,"column":34}},"175":{"start":{"line":454,"column":2},"end":{"line":454,"column":35}},"176":{"start":{"line":455,"column":2},"end":{"line":455,"column":29}},"177":{"start":{"line":457,"column":2},"end":{"line":457,"column":51}},"178":{"start":{"line":458,"column":2},"end":{"line":465,"column":5}},"179":{"start":{"line":469,"column":0},"end":{"line":494,"column":2}},"180":{"start":{"line":470,"column":2},"end":{"line":493,"column":3}},"181":{"start":{"line":471,"column":4},"end":{"line":471,"column":40}},"182":{"start":{"line":472,"column":4},"end":{"line":481,"column":5}},"183":{"start":{"line":473,"column":6},"end":{"line":473,"column":76}},"184":{"start":{"line":474,"column":6},"end":{"line":474,"column":37}},"185":{"start":{"line":475,"column":6},"end":{"line":477,"column":7}},"186":{"start":{"line":476,"column":8},"end":{"line":476,"column":19}},"187":{"start":{"line":478,"column":6},"end":{"line":478,"column":29}},"188":{"start":{"line":480,"column":6},"end":{"line":480,"column":71}},"189":{"start":{"line":484,"column":4},"end":{"line":484,"column":61}},"190":{"start":{"line":485,"column":4},"end":{"line":492,"column":7}},"191":{"start":{"line":497,"column":0},"end":{"line":513,"column":2}},"192":{"start":{"line":498,"column":2},"end":{"line":501,"column":3}},"193":{"start":{"line":499,"column":4},"end":{"line":499,"column":67}},"194":{"start":{"line":500,"column":4},"end":{"line":500,"column":11}},"195":{"start":{"line":503,"column":2},"end":{"line":503,"column":62}},"196":{"start":{"line":504,"column":2},"end":{"line":510,"column":5}},"197":{"start":{"line":511,"column":2},"end":{"line":511,"column":18}},"198":{"start":{"line":512,"column":2},"end":{"line":512,"column":22}},"199":{"start":{"line":515,"column":0},"end":{"line":522,"column":2}},"200":{"start":{"line":516,"column":2},"end":{"line":516,"column":77}},"201":{"start":{"line":517,"column":2},"end":{"line":517,"column":18}},"202":{"start":{"line":518,"column":2},"end":{"line":518,"column":22}},"203":{"start":{"line":519,"column":2},"end":{"line":521,"column":3}},"204":{"start":{"line":520,"column":4},"end":{"line":520,"column":40}},"205":{"start":{"line":527,"column":0},"end":{"line":541,"column":2}},"206":{"start":{"line":529,"column":2},"end":{"line":529,"column":61}},"207":{"start":{"line":530,"column":2},"end":{"line":535,"column":5}},"208":{"start":{"line":531,"column":4},"end":{"line":531,"column":68}},"209":{"start":{"line":532,"column":4},"end":{"line":534,"column":5}},"210":{"start":{"line":533,"column":6},"end":{"line":533,"column":49}},"211":{"start":{"line":536,"column":2},"end":{"line":536,"column":86}},"212":{"start":{"line":537,"column":2},"end":{"line":537,"column":80}},"213":{"start":{"line":538,"column":2},"end":{"line":538,"column":79}},"214":{"start":{"line":539,"column":2},"end":{"line":539,"column":68}},"215":{"start":{"line":540,"column":2},"end":{"line":540,"column":76}},"216":{"start":{"line":544,"column":0},"end":{"line":544,"column":39}},"217":{"start":{"line":550,"column":0},"end":{"line":561,"column":2}},"218":{"start":{"line":551,"column":2},"end":{"line":560,"column":3}},"219":{"start":{"line":552,"column":4},"end":{"line":552,"column":112}},"220":{"start":{"line":553,"column":4},"end":{"line":553,"column":45}},"221":{"start":{"line":555,"column":4},"end":{"line":555,"column":76}},"222":{"start":{"line":556,"column":4},"end":{"line":556,"column":41}},"223":{"start":{"line":557,"column":4},"end":{"line":559,"column":7}},"224":{"start":{"line":558,"column":6},"end":{"line":558,"column":45}},"225":{"start":{"line":565,"column":0},"end":{"line":573,"column":2}},"226":{"start":{"line":566,"column":2},"end":{"line":572,"column":3}},"227":{"start":{"line":567,"column":4},"end":{"line":567,"column":35}},"228":{"start":{"line":568,"column":4},"end":{"line":568,"column":47}},"229":{"start":{"line":569,"column":9},"end":{"line":572,"column":3}},"230":{"start":{"line":570,"column":4},"end":{"line":570,"column":81}},"231":{"start":{"line":571,"column":4},"end":{"line":571,"column":45}},"232":{"start":{"line":575,"column":0},"end":{"line":585,"column":2}},"233":{"start":{"line":576,"column":2},"end":{"line":584,"column":3}},"234":{"start":{"line":577,"column":4},"end":{"line":577,"column":36}},"235":{"start":{"line":578,"column":4},"end":{"line":580,"column":7}},"236":{"start":{"line":579,"column":6},"end":{"line":579,"column":49}},"237":{"start":{"line":581,"column":9},"end":{"line":584,"column":3}},"238":{"start":{"line":582,"column":4},"end":{"line":582,"column":81}},"239":{"start":{"line":583,"column":4},"end":{"line":583,"column":81}}},"branchMap":{"1":{"line":124,"type":"if","locations":[{"start":{"line":124,"column":2},"end":{"line":124,"column":2}},{"start":{"line":124,"column":2},"end":{"line":124,"column":2}}]},"2":{"line":124,"type":"binary-expr","locations":[{"start":{"line":124,"column":7},"end":{"line":124,"column":32}},{"start":{"line":124,"column":38},"end":{"line":124,"column":59}},{"start":{"line":125,"column":7},"end":{"line":125,"column":30}},{"start":{"line":125,"column":36},"end":{"line":125,"column":66}}]},"3":{"line":136,"type":"binary-expr","locations":[{"start":{"line":136,"column":16},"end":{"line":136,"column":43}},{"start":{"line":136,"column":49},"end":{"line":136,"column":83}}]},"4":{"line":139,"type":"if","locations":[{"start":{"line":139,"column":2},"end":{"line":139,"column":2}},{"start":{"line":139,"column":2},"end":{"line":139,"column":2}}]},"5":{"line":145,"type":"if","locations":[{"start":{"line":145,"column":2},"end":{"line":145,"column":2}},{"start":{"line":145,"column":2},"end":{"line":145,"column":2}}]},"6":{"line":148,"type":"binary-expr","locations":[{"start":{"line":148,"column":18},"end":{"line":148,"column":45}},{"start":{"line":148,"column":51},"end":{"line":148,"column":61}}]},"7":{"line":150,"type":"if","locations":[{"start":{"line":150,"column":4},"end":{"line":150,"column":4}},{"start":{"line":150,"column":4},"end":{"line":150,"column":4}}]},"8":{"line":166,"type":"if","locations":[{"start":{"line":166,"column":2},"end":{"line":166,"column":2}},{"start":{"line":166,"column":2},"end":{"line":166,"column":2}}]},"9":{"line":172,"type":"if","locations":[{"start":{"line":172,"column":7},"end":{"line":172,"column":7}},{"start":{"line":172,"column":7},"end":{"line":172,"column":7}}]},"10":{"line":172,"type":"binary-expr","locations":[{"start":{"line":172,"column":12},"end":{"line":172,"column":41}},{"start":{"line":172,"column":47},"end":{"line":172,"column":82}}]},"11":{"line":208,"type":"if","locations":[{"start":{"line":208,"column":2},"end":{"line":208,"column":2}},{"start":{"line":208,"column":2},"end":{"line":208,"column":2}}]},"12":{"line":220,"type":"if","locations":[{"start":{"line":220,"column":2},"end":{"line":220,"column":2}},{"start":{"line":220,"column":2},"end":{"line":220,"column":2}}]},"13":{"line":264,"type":"if","locations":[{"start":{"line":264,"column":2},"end":{"line":264,"column":2}},{"start":{"line":264,"column":2},"end":{"line":264,"column":2}}]},"14":{"line":269,"type":"if","locations":[{"start":{"line":269,"column":2},"end":{"line":269,"column":2}},{"start":{"line":269,"column":2},"end":{"line":269,"column":2}}]},"15":{"line":272,"type":"if","locations":[{"start":{"line":272,"column":4},"end":{"line":272,"column":4}},{"start":{"line":272,"column":4},"end":{"line":272,"column":4}}]},"16":{"line":301,"type":"cond-expr","locations":[{"start":{"line":301,"column":62},"end":{"line":301,"column":74}},{"start":{"line":301,"column":77},"end":{"line":301,"column":79}}]},"17":{"line":303,"type":"if","locations":[{"start":{"line":303,"column":8},"end":{"line":303,"column":8}},{"start":{"line":303,"column":8},"end":{"line":303,"column":8}}]},"18":{"line":305,"type":"if","locations":[{"start":{"line":305,"column":15},"end":{"line":305,"column":15}},{"start":{"line":305,"column":15},"end":{"line":305,"column":15}}]},"19":{"line":312,"type":"if","locations":[{"start":{"line":312,"column":8},"end":{"line":312,"column":8}},{"start":{"line":312,"column":8},"end":{"line":312,"column":8}}]},"20":{"line":313,"type":"binary-expr","locations":[{"start":{"line":313,"column":25},"end":{"line":313,"column":34}},{"start":{"line":313,"column":38},"end":{"line":313,"column":62}}]},"21":{"line":316,"type":"if","locations":[{"start":{"line":316,"column":8},"end":{"line":316,"column":8}},{"start":{"line":316,"column":8},"end":{"line":316,"column":8}}]},"22":{"line":326,"type":"if","locations":[{"start":{"line":326,"column":8},"end":{"line":326,"column":8}},{"start":{"line":326,"column":8},"end":{"line":326,"column":8}}]},"23":{"line":337,"type":"if","locations":[{"start":{"line":337,"column":2},"end":{"line":337,"column":2}},{"start":{"line":337,"column":2},"end":{"line":337,"column":2}}]},"24":{"line":350,"type":"if","locations":[{"start":{"line":350,"column":2},"end":{"line":350,"column":2}},{"start":{"line":350,"column":2},"end":{"line":350,"column":2}}]},"25":{"line":359,"type":"if","locations":[{"start":{"line":359,"column":2},"end":{"line":359,"column":2}},{"start":{"line":359,"column":2},"end":{"line":359,"column":2}}]},"26":{"line":364,"type":"if","locations":[{"start":{"line":364,"column":2},"end":{"line":364,"column":2}},{"start":{"line":364,"column":2},"end":{"line":364,"column":2}}]},"27":{"line":387,"type":"binary-expr","locations":[{"start":{"line":387,"column":11},"end":{"line":387,"column":19}},{"start":{"line":387,"column":23},"end":{"line":387,"column":38}}]},"28":{"line":395,"type":"if","locations":[{"start":{"line":395,"column":2},"end":{"line":395,"column":2}},{"start":{"line":395,"column":2},"end":{"line":395,"column":2}}]},"29":{"line":395,"type":"binary-expr","locations":[{"start":{"line":395,"column":7},"end":{"line":395,"column":25}},{"start":{"line":395,"column":31},"end":{"line":395,"column":56}}]},"30":{"line":470,"type":"if","locations":[{"start":{"line":470,"column":2},"end":{"line":470,"column":2}},{"start":{"line":470,"column":2},"end":{"line":470,"column":2}}]},"31":{"line":472,"type":"if","locations":[{"start":{"line":472,"column":4},"end":{"line":472,"column":4}},{"start":{"line":472,"column":4},"end":{"line":472,"column":4}}]},"32":{"line":475,"type":"if","locations":[{"start":{"line":475,"column":6},"end":{"line":475,"column":6}},{"start":{"line":475,"column":6},"end":{"line":475,"column":6}}]},"33":{"line":498,"type":"if","locations":[{"start":{"line":498,"column":2},"end":{"line":498,"column":2}},{"start":{"line":498,"column":2},"end":{"line":498,"column":2}}]},"34":{"line":509,"type":"binary-expr","locations":[{"start":{"line":509,"column":11},"end":{"line":509,"column":16}},{"start":{"line":509,"column":20},"end":{"line":509,"column":30}}]},"35":{"line":519,"type":"if","locations":[{"start":{"line":519,"column":2},"end":{"line":519,"column":2}},{"start":{"line":519,"column":2},"end":{"line":519,"column":2}}]},"36":{"line":532,"type":"if","locations":[{"start":{"line":532,"column":4},"end":{"line":532,"column":4}},{"start":{"line":532,"column":4},"end":{"line":532,"column":4}}]},"37":{"line":551,"type":"if","locations":[{"start":{"line":551,"column":2},"end":{"line":551,"column":2}},{"start":{"line":551,"column":2},"end":{"line":551,"column":2}}]},"38":{"line":551,"type":"binary-expr","locations":[{"start":{"line":551,"column":7},"end":{"line":551,"column":49}},{"start":{"line":551,"column":55},"end":{"line":551,"column":72}}]},"39":{"line":566,"type":"if","locations":[{"start":{"line":566,"column":2},"end":{"line":566,"column":2}},{"start":{"line":566,"column":2},"end":{"line":566,"column":2}}]},"40":{"line":569,"type":"if","locations":[{"start":{"line":569,"column":9},"end":{"line":569,"column":9}},{"start":{"line":569,"column":9},"end":{"line":569,"column":9}}]},"41":{"line":576,"type":"if","locations":[{"start":{"line":576,"column":2},"end":{"line":576,"column":2}},{"start":{"line":576,"column":2},"end":{"line":576,"column":2}}]},"42":{"line":581,"type":"if","locations":[{"start":{"line":581,"column":9},"end":{"line":581,"column":9}},{"start":{"line":581,"column":9},"end":{"line":581,"column":9}}]}}},"/data/upstream/node-http2/lib/flow.js":{"path":"/data/upstream/node-http2/lib/flow.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":164,"7":164,"8":164,"9":164,"10":164,"11":164,"12":164,"13":1,"14":1,"15":1,"16":1,"17":266,"18":63,"19":266,"20":97,"21":97,"22":97,"23":12,"24":97,"25":169,"26":266,"27":5,"28":1,"29":12,"30":12,"31":6,"32":6,"33":1,"34":45,"35":45,"36":1,"37":1,"38":1,"39":231,"40":216,"41":15,"42":7,"43":7,"44":8,"45":8,"46":7,"47":7,"48":7,"49":8,"50":1,"51":1,"52":610,"53":130,"54":480,"55":0,"56":480,"57":480,"58":480,"59":480,"60":480,"61":401,"62":191,"63":401,"64":79,"65":0,"66":0,"67":0,"68":79,"69":79,"70":79,"71":79,"72":0,"73":79,"74":1,"75":209,"76":209,"77":28,"78":28,"79":28,"80":209,"81":1,"82":210,"83":210,"84":203,"85":7,"86":1,"87":6,"88":6,"89":6,"90":6,"91":1,"92":203,"93":6,"94":197,"95":203,"96":203,"97":202,"98":203,"99":7,"100":203,"101":1,"102":36,"103":36,"104":1,"105":1,"106":87,"107":1,"108":1,"109":86,"110":86,"111":86,"112":1,"113":1,"114":85,"115":1,"116":5,"117":1,"118":52,"119":52,"120":1,"121":1},"b":{"1":[63,203],"2":[266,203],"3":[97,169],"4":[266,129,126],"5":[12,85],"6":[5,261],"7":[266,5,5],"8":[6,6],"9":[12,6,6],"10":[216,15],"11":[7,8],"12":[8,7],"13":[7,1],"14":[7,7,1,1],"15":[130,480],"16":[0,480],"17":[480,0],"18":[480,146],"19":[480,210],"20":[401,79],"21":[480,273,130],"22":[191,210],"23":[0,79],"24":[0,0],"25":[0,79],"26":[28,181],"27":[209,203,51],"28":[210,204,52],"29":[203,7],"30":[210,52],"31":[1,6],"32":[6,197],"33":[202,1],"34":[7,196],"35":[36,36],"36":[1,86],"37":[87,2],"38":[1,85],"39":[86,37],"40":[0,5]},"f":{"1":164,"2":1,"3":266,"4":97,"5":12,"6":45,"7":1,"8":231,"9":610,"10":209,"11":210,"12":203,"13":36,"14":87,"15":5,"16":52,"17":1},"fnMap":{"1":{"name":"Flow","line":63,"loc":{"start":{"line":63,"column":0},"end":{"line":63,"column":29}}},"2":{"name":"_receive","line":79,"loc":{"start":{"line":79,"column":26},"end":{"line":79,"column":61}}},"3":{"name":"_write","line":87,"loc":{"start":{"line":87,"column":24},"end":{"line":87,"column":67}}},"4":{"name":"(anonymous_4)","line":93,"loc":{"start":{"line":93,"column":25},"end":{"line":93,"column":36}}},"5":{"name":"_restoreWindow","line":114,"loc":{"start":{"line":114,"column":32},"end":{"line":114,"column":58}}},"6":{"name":"disableRemoteFlowControl","line":128,"loc":{"start":{"line":128,"column":42},"end":{"line":128,"column":78}}},"7":{"name":"_send","line":152,"loc":{"start":{"line":152,"column":23},"end":{"line":152,"column":40}}},"8":{"name":"_read","line":159,"loc":{"start":{"line":159,"column":23},"end":{"line":159,"column":40}}},"9":{"name":"read","line":193,"loc":{"start":{"line":193,"column":22},"end":{"line":193,"column":43}}},"10":{"name":"_parentPush","line":240,"loc":{"start":{"line":240,"column":29},"end":{"line":240,"column":57}}},"11":{"name":"_push","line":257,"loc":{"start":{"line":257,"column":23},"end":{"line":257,"column":45}}},"12":{"name":"push","line":283,"loc":{"start":{"line":283,"column":22},"end":{"line":283,"column":43}}},"13":{"name":"getLastQueuedFrame","line":304,"loc":{"start":{"line":304,"column":36},"end":{"line":304,"column":66}}},"14":{"name":"_increaseWindow","line":322,"loc":{"start":{"line":322,"column":33},"end":{"line":322,"column":64}}},"15":{"name":"_updateWindow","line":346,"loc":{"start":{"line":346,"column":31},"end":{"line":346,"column":61}}},"16":{"name":"setInitialWindow","line":354,"loc":{"start":{"line":354,"column":34},"end":{"line":354,"column":75}}},"17":{"name":"disableLocalFlowControl","line":360,"loc":{"start":{"line":360,"column":41},"end":{"line":360,"column":76}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":31}},"2":{"start":{"line":10,"column":0},"end":{"line":10,"column":39}},"3":{"start":{"line":12,"column":0},"end":{"line":12,"column":20}},"4":{"start":{"line":60,"column":0},"end":{"line":60,"column":32}},"5":{"start":{"line":63,"column":0},"end":{"line":72,"column":1}},"6":{"start":{"line":64,"column":2},"end":{"line":64,"column":42}},"7":{"start":{"line":66,"column":2},"end":{"line":66,"column":59}},"8":{"start":{"line":67,"column":2},"end":{"line":67,"column":38}},"9":{"start":{"line":68,"column":2},"end":{"line":68,"column":19}},"10":{"start":{"line":69,"column":2},"end":{"line":69,"column":22}},"11":{"start":{"line":70,"column":2},"end":{"line":70,"column":21}},"12":{"start":{"line":71,"column":2},"end":{"line":71,"column":42}},"13":{"start":{"line":73,"column":0},"end":{"line":73,"column":83}},"14":{"start":{"line":79,"column":0},"end":{"line":81,"column":2}},"15":{"start":{"line":80,"column":2},"end":{"line":80,"column":99}},"16":{"start":{"line":87,"column":0},"end":{"line":110,"column":2}},"17":{"start":{"line":88,"column":2},"end":{"line":90,"column":3}},"18":{"start":{"line":89,"column":4},"end":{"line":89,"column":23}},"19":{"start":{"line":92,"column":2},"end":{"line":104,"column":3}},"20":{"start":{"line":93,"column":4},"end":{"line":99,"column":18}},"21":{"start":{"line":94,"column":6},"end":{"line":94,"column":42}},"22":{"start":{"line":95,"column":6},"end":{"line":97,"column":7}},"23":{"start":{"line":96,"column":8},"end":{"line":96,"column":80}},"24":{"start":{"line":98,"column":6},"end":{"line":98,"column":17}},"25":{"start":{"line":103,"column":4},"end":{"line":103,"column":35}},"26":{"start":{"line":106,"column":2},"end":{"line":109,"column":3}},"27":{"start":{"line":108,"column":4},"end":{"line":108,"column":30}},"28":{"start":{"line":114,"column":0},"end":{"line":125,"column":2}},"29":{"start":{"line":115,"column":2},"end":{"line":115,"column":34}},"30":{"start":{"line":116,"column":2},"end":{"line":124,"column":3}},"31":{"start":{"line":117,"column":4},"end":{"line":122,"column":7}},"32":{"start":{"line":123,"column":4},"end":{"line":123,"column":23}},"33":{"start":{"line":128,"column":0},"end":{"line":131,"column":2}},"34":{"start":{"line":129,"column":2},"end":{"line":129,"column":53}},"35":{"start":{"line":130,"column":2},"end":{"line":130,"column":41}},"36":{"start":{"line":152,"column":0},"end":{"line":154,"column":2}},"37":{"start":{"line":153,"column":2},"end":{"line":153,"column":81}},"38":{"start":{"line":159,"column":0},"end":{"line":186,"column":2}},"39":{"start":{"line":161,"column":2},"end":{"line":185,"column":3}},"40":{"start":{"line":162,"column":4},"end":{"line":162,"column":17}},"41":{"start":{"line":167,"column":7},"end":{"line":185,"column":3}},"42":{"start":{"line":168,"column":4},"end":{"line":168,"column":36}},"43":{"start":{"line":169,"column":4},"end":{"line":174,"column":53}},"44":{"start":{"line":170,"column":6},"end":{"line":170,"column":50}},"45":{"start":{"line":171,"column":6},"end":{"line":173,"column":7}},"46":{"start":{"line":172,"column":8},"end":{"line":172,"column":28}},"47":{"start":{"line":175,"column":4},"end":{"line":175,"column":37}},"48":{"start":{"line":177,"column":4},"end":{"line":179,"column":64}},"49":{"start":{"line":184,"column":4},"end":{"line":184,"column":43}},"50":{"start":{"line":188,"column":0},"end":{"line":188,"column":28}},"51":{"start":{"line":193,"column":0},"end":{"line":237,"column":2}},"52":{"start":{"line":194,"column":2},"end":{"line":200,"column":3}},"53":{"start":{"line":195,"column":4},"end":{"line":195,"column":47}},"54":{"start":{"line":196,"column":9},"end":{"line":200,"column":3}},"55":{"start":{"line":197,"column":4},"end":{"line":197,"column":14}},"56":{"start":{"line":198,"column":9},"end":{"line":200,"column":3}},"57":{"start":{"line":199,"column":4},"end":{"line":199,"column":29}},"58":{"start":{"line":204,"column":2},"end":{"line":204,"column":51}},"59":{"start":{"line":205,"column":2},"end":{"line":205,"column":63}},"60":{"start":{"line":207,"column":2},"end":{"line":236,"column":3}},"61":{"start":{"line":208,"column":4},"end":{"line":210,"column":5}},"62":{"start":{"line":209,"column":6},"end":{"line":209,"column":39}},"63":{"start":{"line":211,"column":4},"end":{"line":211,"column":17}},"64":{"start":{"line":214,"column":7},"end":{"line":236,"column":3}},"65":{"start":{"line":215,"column":4},"end":{"line":217,"column":5}},"66":{"start":{"line":216,"column":6},"end":{"line":216,"column":26}},"67":{"start":{"line":218,"column":4},"end":{"line":218,"column":16}},"68":{"start":{"line":222,"column":4},"end":{"line":223,"column":71}},"69":{"start":{"line":224,"column":4},"end":{"line":229,"column":6}},"70":{"start":{"line":230,"column":4},"end":{"line":230,"column":41}},"71":{"start":{"line":232,"column":4},"end":{"line":234,"column":5}},"72":{"start":{"line":233,"column":6},"end":{"line":233,"column":26}},"73":{"start":{"line":235,"column":4},"end":{"line":235,"column":23}},"74":{"start":{"line":240,"column":0},"end":{"line":251,"column":2}},"75":{"start":{"line":241,"column":2},"end":{"line":241,"column":75}},"76":{"start":{"line":243,"column":2},"end":{"line":248,"column":3}},"77":{"start":{"line":244,"column":4},"end":{"line":245,"column":60}},"78":{"start":{"line":246,"column":4},"end":{"line":246,"column":38}},"79":{"start":{"line":247,"column":4},"end":{"line":247,"column":30}},"80":{"start":{"line":250,"column":2},"end":{"line":250,"column":49}},"81":{"start":{"line":257,"column":0},"end":{"line":280,"column":2}},"82":{"start":{"line":258,"column":2},"end":{"line":258,"column":60}},"83":{"start":{"line":260,"column":2},"end":{"line":279,"column":3}},"84":{"start":{"line":261,"column":4},"end":{"line":261,"column":35}},"85":{"start":{"line":264,"column":7},"end":{"line":279,"column":3}},"86":{"start":{"line":265,"column":4},"end":{"line":265,"column":16}},"87":{"start":{"line":269,"column":4},"end":{"line":270,"column":71}},"88":{"start":{"line":271,"column":4},"end":{"line":271,"column":42}},"89":{"start":{"line":272,"column":4},"end":{"line":277,"column":7}},"90":{"start":{"line":278,"column":4},"end":{"line":278,"column":16}},"91":{"start":{"line":283,"column":0},"end":{"line":300,"column":2}},"92":{"start":{"line":284,"column":2},"end":{"line":288,"column":3}},"93":{"start":{"line":285,"column":4},"end":{"line":285,"column":57}},"94":{"start":{"line":287,"column":4},"end":{"line":287,"column":67}},"95":{"start":{"line":290,"column":2},"end":{"line":290,"column":24}},"96":{"start":{"line":291,"column":2},"end":{"line":293,"column":3}},"97":{"start":{"line":292,"column":4},"end":{"line":292,"column":35}},"98":{"start":{"line":295,"column":2},"end":{"line":297,"column":3}},"99":{"start":{"line":296,"column":4},"end":{"line":296,"column":28}},"100":{"start":{"line":299,"column":2},"end":{"line":299,"column":20}},"101":{"start":{"line":304,"column":0},"end":{"line":307,"column":2}},"102":{"start":{"line":305,"column":2},"end":{"line":305,"column":49}},"103":{"start":{"line":306,"column":2},"end":{"line":306,"column":88}},"104":{"start":{"line":320,"column":0},"end":{"line":320,"column":44}},"105":{"start":{"line":322,"column":0},"end":{"line":336,"column":2}},"106":{"start":{"line":323,"column":2},"end":{"line":335,"column":3}},"107":{"start":{"line":324,"column":4},"end":{"line":324,"column":97}},"108":{"start":{"line":325,"column":4},"end":{"line":325,"column":45}},"109":{"start":{"line":327,"column":4},"end":{"line":327,"column":96}},"110":{"start":{"line":328,"column":4},"end":{"line":328,"column":25}},"111":{"start":{"line":329,"column":4},"end":{"line":334,"column":5}},"112":{"start":{"line":330,"column":6},"end":{"line":330,"column":61}},"113":{"start":{"line":331,"column":6},"end":{"line":331,"column":47}},"114":{"start":{"line":333,"column":6},"end":{"line":333,"column":33}},"115":{"start":{"line":346,"column":0},"end":{"line":348,"column":2}},"116":{"start":{"line":347,"column":2},"end":{"line":347,"column":84}},"117":{"start":{"line":354,"column":0},"end":{"line":357,"column":2}},"118":{"start":{"line":355,"column":2},"end":{"line":355,"column":60}},"119":{"start":{"line":356,"column":2},"end":{"line":356,"column":38}},"120":{"start":{"line":360,"column":0},"end":{"line":362,"column":2}},"121":{"start":{"line":361,"column":2},"end":{"line":361,"column":33}}},"branchMap":{"1":{"line":88,"type":"if","locations":[{"start":{"line":88,"column":2},"end":{"line":88,"column":2}},{"start":{"line":88,"column":2},"end":{"line":88,"column":2}}]},"2":{"line":88,"type":"binary-expr","locations":[{"start":{"line":88,"column":6},"end":{"line":88,"column":28}},{"start":{"line":88,"column":33},"end":{"line":88,"column":60}}]},"3":{"line":92,"type":"if","locations":[{"start":{"line":92,"column":2},"end":{"line":92,"column":2}},{"start":{"line":92,"column":2},"end":{"line":92,"column":2}}]},"4":{"line":92,"type":"binary-expr","locations":[{"start":{"line":92,"column":7},"end":{"line":92,"column":28}},{"start":{"line":92,"column":34},"end":{"line":92,"column":55}},{"start":{"line":92,"column":60},"end":{"line":92,"column":92}}]},"5":{"line":95,"type":"if","locations":[{"start":{"line":95,"column":6},"end":{"line":95,"column":6}},{"start":{"line":95,"column":6},"end":{"line":95,"column":6}}]},"6":{"line":106,"type":"if","locations":[{"start":{"line":106,"column":2},"end":{"line":106,"column":2}},{"start":{"line":106,"column":2},"end":{"line":106,"column":2}}]},"7":{"line":106,"type":"binary-expr","locations":[{"start":{"line":106,"column":7},"end":{"line":106,"column":37}},{"start":{"line":107,"column":8},"end":{"line":107,"column":41}},{"start":{"line":107,"column":47},"end":{"line":107,"column":83}}]},"8":{"line":116,"type":"if","locations":[{"start":{"line":116,"column":2},"end":{"line":116,"column":2}},{"start":{"line":116,"column":2},"end":{"line":116,"column":2}}]},"9":{"line":116,"type":"binary-expr","locations":[{"start":{"line":116,"column":6},"end":{"line":116,"column":18}},{"start":{"line":116,"column":22},"end":{"line":116,"column":54}},{"start":{"line":116,"column":59},"end":{"line":116,"column":77}}]},"10":{"line":161,"type":"if","locations":[{"start":{"line":161,"column":2},"end":{"line":161,"column":2}},{"start":{"line":161,"column":2},"end":{"line":161,"column":2}}]},"11":{"line":167,"type":"if","locations":[{"start":{"line":167,"column":7},"end":{"line":167,"column":7}},{"start":{"line":167,"column":7},"end":{"line":167,"column":7}}]},"12":{"line":174,"type":"binary-expr","locations":[{"start":{"line":174,"column":13},"end":{"line":174,"column":23}},{"start":{"line":174,"column":28},"end":{"line":174,"column":50}}]},"13":{"line":171,"type":"if","locations":[{"start":{"line":171,"column":6},"end":{"line":171,"column":6}},{"start":{"line":171,"column":6},"end":{"line":171,"column":6}}]},"14":{"line":177,"type":"binary-expr","locations":[{"start":{"line":177,"column":12},"end":{"line":177,"column":31}},{"start":{"line":178,"column":12},"end":{"line":178,"column":36}},{"start":{"line":179,"column":12},"end":{"line":179,"column":25}},{"start":{"line":179,"column":30},"end":{"line":179,"column":60}}]},"15":{"line":194,"type":"if","locations":[{"start":{"line":194,"column":2},"end":{"line":194,"column":2}},{"start":{"line":194,"column":2},"end":{"line":194,"column":2}}]},"16":{"line":196,"type":"if","locations":[{"start":{"line":196,"column":9},"end":{"line":196,"column":9}},{"start":{"line":196,"column":9},"end":{"line":196,"column":9}}]},"17":{"line":198,"type":"if","locations":[{"start":{"line":198,"column":9},"end":{"line":198,"column":9}},{"start":{"line":198,"column":9},"end":{"line":198,"column":9}}]},"18":{"line":198,"type":"binary-expr","locations":[{"start":{"line":198,"column":14},"end":{"line":198,"column":33}},{"start":{"line":198,"column":39},"end":{"line":198,"column":63}}]},"19":{"line":205,"type":"binary-expr","locations":[{"start":{"line":205,"column":14},"end":{"line":205,"column":26}},{"start":{"line":205,"column":30},"end":{"line":205,"column":62}}]},"20":{"line":207,"type":"if","locations":[{"start":{"line":207,"column":2},"end":{"line":207,"column":2}},{"start":{"line":207,"column":2},"end":{"line":207,"column":2}}]},"21":{"line":207,"type":"binary-expr","locations":[{"start":{"line":207,"column":7},"end":{"line":207,"column":21}},{"start":{"line":207,"column":27},"end":{"line":207,"column":48}},{"start":{"line":207,"column":54},"end":{"line":207,"column":80}}]},"22":{"line":208,"type":"if","locations":[{"start":{"line":208,"column":4},"end":{"line":208,"column":4}},{"start":{"line":208,"column":4},"end":{"line":208,"column":4}}]},"23":{"line":214,"type":"if","locations":[{"start":{"line":214,"column":7},"end":{"line":214,"column":7}},{"start":{"line":214,"column":7},"end":{"line":214,"column":7}}]},"24":{"line":215,"type":"if","locations":[{"start":{"line":215,"column":4},"end":{"line":215,"column":4}},{"start":{"line":215,"column":4},"end":{"line":215,"column":4}}]},"25":{"line":232,"type":"if","locations":[{"start":{"line":232,"column":4},"end":{"line":232,"column":4}},{"start":{"line":232,"column":4},"end":{"line":232,"column":4}}]},"26":{"line":243,"type":"if","locations":[{"start":{"line":243,"column":2},"end":{"line":243,"column":2}},{"start":{"line":243,"column":2},"end":{"line":243,"column":2}}]},"27":{"line":243,"type":"binary-expr","locations":[{"start":{"line":243,"column":6},"end":{"line":243,"column":11}},{"start":{"line":243,"column":16},"end":{"line":243,"column":37}},{"start":{"line":243,"column":43},"end":{"line":243,"column":68}}]},"28":{"line":258,"type":"binary-expr","locations":[{"start":{"line":258,"column":13},"end":{"line":258,"column":18}},{"start":{"line":258,"column":23},"end":{"line":258,"column":44}},{"start":{"line":258,"column":49},"end":{"line":258,"column":59}}]},"29":{"line":260,"type":"if","locations":[{"start":{"line":260,"column":2},"end":{"line":260,"column":2}},{"start":{"line":260,"column":2},"end":{"line":260,"column":2}}]},"30":{"line":260,"type":"binary-expr","locations":[{"start":{"line":260,"column":6},"end":{"line":260,"column":11}},{"start":{"line":260,"column":16},"end":{"line":260,"column":43}}]},"31":{"line":264,"type":"if","locations":[{"start":{"line":264,"column":7},"end":{"line":264,"column":7}},{"start":{"line":264,"column":7},"end":{"line":264,"column":7}}]},"32":{"line":284,"type":"if","locations":[{"start":{"line":284,"column":2},"end":{"line":284,"column":2}},{"start":{"line":284,"column":2},"end":{"line":284,"column":2}}]},"33":{"line":291,"type":"if","locations":[{"start":{"line":291,"column":2},"end":{"line":291,"column":2}},{"start":{"line":291,"column":2},"end":{"line":291,"column":2}}]},"34":{"line":295,"type":"if","locations":[{"start":{"line":295,"column":2},"end":{"line":295,"column":2}},{"start":{"line":295,"column":2},"end":{"line":295,"column":2}}]},"35":{"line":306,"type":"binary-expr","locations":[{"start":{"line":306,"column":9},"end":{"line":306,"column":44}},{"start":{"line":306,"column":48},"end":{"line":306,"column":87}}]},"36":{"line":323,"type":"if","locations":[{"start":{"line":323,"column":2},"end":{"line":323,"column":2}},{"start":{"line":323,"column":2},"end":{"line":323,"column":2}}]},"37":{"line":323,"type":"binary-expr","locations":[{"start":{"line":323,"column":7},"end":{"line":323,"column":32}},{"start":{"line":323,"column":38},"end":{"line":323,"column":55}}]},"38":{"line":329,"type":"if","locations":[{"start":{"line":329,"column":4},"end":{"line":329,"column":4}},{"start":{"line":329,"column":4},"end":{"line":329,"column":4}}]},"39":{"line":329,"type":"binary-expr","locations":[{"start":{"line":329,"column":9},"end":{"line":329,"column":34}},{"start":{"line":329,"column":40},"end":{"line":329,"column":72}}]},"40":{"line":347,"type":"cond-expr","locations":[{"start":{"line":347,"column":54},"end":{"line":347,"column":62}},{"start":{"line":347,"column":65},"end":{"line":347,"column":82}}]}}},"/data/upstream/node-http2/lib/stream.js":{"path":"/data/upstream/node-http2/lib/stream.js","s":{"1":1,"2":1,"3":1,"4":1,"5":105,"6":105,"7":105,"8":105,"9":105,"10":1,"11":1,"12":1,"13":1,"14":105,"15":105,"16":105,"17":1,"18":6,"19":6,"20":6,"21":6,"22":1,"23":6,"24":1,"25":44,"26":1,"27":43,"28":0,"29":43,"30":1,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":1,"42":0,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":105,"50":105,"51":105,"52":105,"53":105,"54":105,"55":105,"56":105,"57":105,"58":1,"59":71,"60":71,"61":1,"62":70,"63":70,"64":70,"65":70,"66":43,"67":27,"68":6,"69":21,"70":0,"71":21,"72":0,"73":0,"74":70,"75":1,"76":70,"77":21,"78":21,"79":0,"80":70,"81":35,"82":35,"83":70,"84":70,"85":1,"86":38,"87":0,"88":0,"89":0,"90":1,"91":19,"92":19,"93":0,"94":19,"95":1,"96":91,"97":19,"98":19,"99":19,"100":1,"101":1,"102":36,"103":36,"104":36,"105":35,"106":35,"107":35,"108":1,"109":1,"110":105,"111":105,"112":105,"113":105,"114":1,"115":145,"116":145,"117":145,"118":145,"119":1,"120":206,"121":1,"122":240,"123":240,"124":240,"125":240,"126":240,"127":88,"128":88,"129":95,"130":95,"131":8,"132":8,"133":15,"134":15,"135":24,"136":24,"137":10,"138":10,"139":240,"140":240,"141":52,"142":42,"143":42,"144":11,"145":42,"146":10,"147":1,"148":9,"149":52,"150":14,"151":4,"152":10,"153":2,"154":8,"155":8,"156":14,"157":14,"158":2,"159":12,"160":4,"161":8,"162":8,"163":14,"164":37,"165":21,"166":16,"167":2,"168":37,"169":42,"170":21,"171":21,"172":3,"173":42,"174":58,"175":22,"176":36,"177":3,"178":58,"179":23,"180":14,"181":23,"182":240,"183":50,"184":50,"185":240,"186":13,"187":13,"188":13,"189":240,"190":103,"191":103,"192":59,"193":44,"194":137,"195":72,"196":240,"197":45,"198":45,"199":20,"200":20,"201":25,"202":25,"203":1,"204":1,"205":1,"206":6,"207":2,"208":2,"209":6},"b":{"1":[0,43],"2":[0,0],"3":[0,0,0],"4":[0,0],"5":[0,0],"6":[0,0,0],"7":[1,0],"8":[43,27],"9":[6,21],"10":[0,21],"11":[0,21],"12":[21,0,0],"13":[21,49],"14":[70,70],"15":[0,21],"16":[35,35],"17":[70,70,35],"18":[70,0],"19":[0,38],"20":[0,19],"21":[19,72],"22":[35,1],"23":[36,35,17],"24":[206,139,121],"25":[88,95,8,15,24,10],"26":[52,14,14,37,42,58,23],"27":[42,10],"28":[11,31],"29":[0,11],"30":[1,9],"31":[10,5],"32":[4,10],"33":[14,9],"34":[2,8],"35":[0,8],"36":[8,4],"37":[2,12],"38":[4,8],"39":[12,8],"40":[0,8],"41":[8,4],"42":[21,16],"43":[16,5],"44":[2,14],"45":[21,21],"46":[42,40,37],"47":[18,3],"48":[21,3,3,3],"49":[22,36],"50":[58,56,53],"51":[33,3],"52":[36,3,3,3],"53":[9,14],"54":[23,5,23,18,12,6,5,4],"55":[50,190],"56":[240,73],"57":[13,227],"58":[240,24],"59":[6,7],"60":[103,137],"61":[59,44],"62":[72,65],"63":[45,195],"64":[20,25],"65":[2,4]},"f":{"1":105,"2":105,"3":6,"4":6,"5":44,"6":43,"7":0,"8":0,"9":1,"10":105,"11":71,"12":70,"13":70,"14":38,"15":19,"16":91,"17":36,"18":105,"19":145,"20":206,"21":240,"22":6},"fnMap":{"1":{"name":"Stream","line":49,"loc":{"start":{"line":49,"column":0},"end":{"line":49,"column":21}}},"2":{"name":"_initializeManagement","line":75,"loc":{"start":{"line":75,"column":41},"end":{"line":75,"column":74}}},"3":{"name":"promise","line":81,"loc":{"start":{"line":81,"column":27},"end":{"line":81,"column":53}}},"4":{"name":"_onPromise","line":94,"loc":{"start":{"line":94,"column":30},"end":{"line":94,"column":57}}},"5":{"name":"headers","line":98,"loc":{"start":{"line":98,"column":27},"end":{"line":98,"column":53}}},"6":{"name":"_onHeaders","line":107,"loc":{"start":{"line":107,"column":30},"end":{"line":107,"column":57}}},"7":{"name":"priority","line":114,"loc":{"start":{"line":114,"column":28},"end":{"line":114,"column":62}}},"8":{"name":"_onPriority","line":138,"loc":{"start":{"line":138,"column":31},"end":{"line":138,"column":59}}},"9":{"name":"reset","line":144,"loc":{"start":{"line":144,"column":25},"end":{"line":144,"column":47}}},"10":{"name":"_initializeDataFlow","line":191,"loc":{"start":{"line":191,"column":39},"end":{"line":191,"column":70}}},"11":{"name":"_pushUpstream","line":206,"loc":{"start":{"line":206,"column":33},"end":{"line":206,"column":63}}},"12":{"name":"_writeUpstream","line":213,"loc":{"start":{"line":213,"column":34},"end":{"line":213,"column":65}}},"13":{"name":"_receive","line":242,"loc":{"start":{"line":242,"column":28},"end":{"line":242,"column":60}}},"14":{"name":"_read","line":266,"loc":{"start":{"line":266,"column":25},"end":{"line":266,"column":42}}},"15":{"name":"_write","line":275,"loc":{"start":{"line":275,"column":26},"end":{"line":275,"column":67}}},"16":{"name":"_send","line":295,"loc":{"start":{"line":295,"column":25},"end":{"line":295,"column":42}}},"17":{"name":"_finishing","line":308,"loc":{"start":{"line":308,"column":30},"end":{"line":308,"column":52}}},"18":{"name":"_initializeState","line":355,"loc":{"start":{"line":355,"column":36},"end":{"line":355,"column":64}}},"19":{"name":"transition","line":364,"loc":{"start":{"line":364,"column":29},"end":{"line":364,"column":56}}},"20":{"name":"activeState","line":373,"loc":{"start":{"line":373,"column":0},"end":{"line":373,"column":28}}},"21":{"name":"transition","line":380,"loc":{"start":{"line":380,"column":31},"end":{"line":380,"column":67}}},"22":{"name":"(anonymous_22)","line":609,"loc":{"start":{"line":609,"column":24},"end":{"line":609,"column":41}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":31}},"2":{"start":{"line":12,"column":0},"end":{"line":12,"column":38}},"3":{"start":{"line":14,"column":0},"end":{"line":14,"column":24}},"4":{"start":{"line":49,"column":0},"end":{"line":63,"column":1}},"5":{"start":{"line":50,"column":2},"end":{"line":50,"column":20}},"6":{"start":{"line":53,"column":2},"end":{"line":53,"column":58}},"7":{"start":{"line":56,"column":2},"end":{"line":56,"column":31}},"8":{"start":{"line":59,"column":2},"end":{"line":59,"column":29}},"9":{"start":{"line":62,"column":2},"end":{"line":62,"column":26}},"10":{"start":{"line":65,"column":0},"end":{"line":65,"column":87}},"11":{"start":{"line":71,"column":0},"end":{"line":71,"column":39}},"12":{"start":{"line":72,"column":0},"end":{"line":72,"column":39}},"13":{"start":{"line":75,"column":0},"end":{"line":79,"column":2}},"14":{"start":{"line":76,"column":2},"end":{"line":76,"column":26}},"15":{"start":{"line":77,"column":2},"end":{"line":77,"column":36}},"16":{"start":{"line":78,"column":2},"end":{"line":78,"column":33}},"17":{"start":{"line":81,"column":0},"end":{"line":92,"column":2}},"18":{"start":{"line":82,"column":2},"end":{"line":82,"column":37}},"19":{"start":{"line":83,"column":2},"end":{"line":83,"column":64}},"20":{"start":{"line":84,"column":2},"end":{"line":90,"column":5}},"21":{"start":{"line":91,"column":2},"end":{"line":91,"column":16}},"22":{"start":{"line":94,"column":0},"end":{"line":96,"column":2}},"23":{"start":{"line":95,"column":2},"end":{"line":95,"column":61}},"24":{"start":{"line":98,"column":0},"end":{"line":105,"column":2}},"25":{"start":{"line":99,"column":2},"end":{"line":104,"column":5}},"26":{"start":{"line":107,"column":0},"end":{"line":112,"column":2}},"27":{"start":{"line":108,"column":2},"end":{"line":110,"column":3}},"28":{"start":{"line":109,"column":4},"end":{"line":109,"column":40}},"29":{"start":{"line":111,"column":2},"end":{"line":111,"column":38}},"30":{"start":{"line":114,"column":0},"end":{"line":136,"column":2}},"31":{"start":{"line":115,"column":2},"end":{"line":135,"column":3}},"32":{"start":{"line":116,"column":4},"end":{"line":130,"column":5}},"33":{"start":{"line":117,"column":6},"end":{"line":117,"column":38}},"34":{"start":{"line":119,"column":6},"end":{"line":119,"column":57}},"35":{"start":{"line":120,"column":6},"end":{"line":129,"column":7}},"36":{"start":{"line":121,"column":8},"end":{"line":121,"column":38}},"37":{"start":{"line":123,"column":8},"end":{"line":128,"column":11}},"38":{"start":{"line":132,"column":4},"end":{"line":132,"column":65}},"39":{"start":{"line":133,"column":4},"end":{"line":133,"column":36}},"40":{"start":{"line":134,"column":4},"end":{"line":134,"column":30}},"41":{"start":{"line":138,"column":0},"end":{"line":140,"column":2}},"42":{"start":{"line":139,"column":2},"end":{"line":139,"column":38}},"43":{"start":{"line":144,"column":0},"end":{"line":154,"column":2}},"44":{"start":{"line":145,"column":2},"end":{"line":153,"column":3}},"45":{"start":{"line":146,"column":4},"end":{"line":146,"column":27}},"46":{"start":{"line":147,"column":4},"end":{"line":152,"column":7}},"47":{"start":{"line":189,"column":0},"end":{"line":189,"column":34}},"48":{"start":{"line":191,"column":0},"end":{"line":204,"column":2}},"49":{"start":{"line":192,"column":2},"end":{"line":192,"column":22}},"50":{"start":{"line":194,"column":2},"end":{"line":194,"column":22}},"51":{"start":{"line":196,"column":2},"end":{"line":196,"column":29}},"52":{"start":{"line":197,"column":2},"end":{"line":197,"column":33}},"53":{"start":{"line":198,"column":2},"end":{"line":198,"column":46}},"54":{"start":{"line":199,"column":2},"end":{"line":199,"column":52}},"55":{"start":{"line":200,"column":2},"end":{"line":200,"column":55}},"56":{"start":{"line":201,"column":2},"end":{"line":201,"column":59}},"57":{"start":{"line":203,"column":2},"end":{"line":203,"column":37}},"58":{"start":{"line":206,"column":0},"end":{"line":209,"column":2}},"59":{"start":{"line":207,"column":2},"end":{"line":207,"column":28}},"60":{"start":{"line":208,"column":2},"end":{"line":208,"column":32}},"61":{"start":{"line":213,"column":0},"end":{"line":239,"column":2}},"62":{"start":{"line":214,"column":2},"end":{"line":214,"column":55}},"63":{"start":{"line":216,"column":2},"end":{"line":216,"column":67}},"64":{"start":{"line":219,"column":2},"end":{"line":219,"column":33}},"65":{"start":{"line":222,"column":2},"end":{"line":236,"column":3}},"66":{"start":{"line":223,"column":4},"end":{"line":223,"column":27}},"67":{"start":{"line":224,"column":9},"end":{"line":236,"column":3}},"68":{"start":{"line":225,"column":4},"end":{"line":225,"column":27}},"69":{"start":{"line":226,"column":9},"end":{"line":236,"column":3}},"70":{"start":{"line":227,"column":4},"end":{"line":227,"column":28}},"71":{"start":{"line":231,"column":7},"end":{"line":236,"column":3}},"72":{"start":{"line":234,"column":4},"end":{"line":234,"column":68}},"73":{"start":{"line":235,"column":4},"end":{"line":235,"column":41}},"74":{"start":{"line":238,"column":2},"end":{"line":238,"column":20}},"75":{"start":{"line":242,"column":0},"end":{"line":262,"column":2}},"76":{"start":{"line":245,"column":2},"end":{"line":250,"column":3}},"77":{"start":{"line":246,"column":4},"end":{"line":246,"column":43}},"78":{"start":{"line":247,"column":4},"end":{"line":249,"column":5}},"79":{"start":{"line":248,"column":6},"end":{"line":248,"column":32}},"80":{"start":{"line":253,"column":2},"end":{"line":256,"column":3}},"81":{"start":{"line":254,"column":4},"end":{"line":254,"column":20}},"82":{"start":{"line":255,"column":4},"end":{"line":255,"column":23}},"83":{"start":{"line":259,"column":2},"end":{"line":261,"column":3}},"84":{"start":{"line":260,"column":4},"end":{"line":260,"column":12}},"85":{"start":{"line":266,"column":0},"end":{"line":272,"column":2}},"86":{"start":{"line":267,"column":2},"end":{"line":271,"column":3}},"87":{"start":{"line":268,"column":4},"end":{"line":268,"column":40}},"88":{"start":{"line":269,"column":4},"end":{"line":269,"column":29}},"89":{"start":{"line":270,"column":4},"end":{"line":270,"column":18}},"90":{"start":{"line":275,"column":0},"end":{"line":290,"column":2}},"91":{"start":{"line":277,"column":2},"end":{"line":282,"column":5}},"92":{"start":{"line":285,"column":2},"end":{"line":289,"column":3}},"93":{"start":{"line":286,"column":4},"end":{"line":286,"column":12}},"94":{"start":{"line":288,"column":4},"end":{"line":288,"column":27}},"95":{"start":{"line":295,"column":0},"end":{"line":301,"column":2}},"96":{"start":{"line":296,"column":2},"end":{"line":300,"column":3}},"97":{"start":{"line":297,"column":4},"end":{"line":297,"column":34}},"98":{"start":{"line":298,"column":4},"end":{"line":298,"column":26}},"99":{"start":{"line":299,"column":4},"end":{"line":299,"column":15}},"100":{"start":{"line":307,"column":0},"end":{"line":307,"column":32}},"101":{"start":{"line":308,"column":0},"end":{"line":323,"column":2}},"102":{"start":{"line":309,"column":2},"end":{"line":314,"column":4}},"103":{"start":{"line":315,"column":2},"end":{"line":315,"column":53}},"104":{"start":{"line":316,"column":2},"end":{"line":322,"column":3}},"105":{"start":{"line":317,"column":4},"end":{"line":317,"column":86}},"106":{"start":{"line":318,"column":4},"end":{"line":318,"column":38}},"107":{"start":{"line":319,"column":4},"end":{"line":319,"column":37}},"108":{"start":{"line":321,"column":4},"end":{"line":321,"column":33}},"109":{"start":{"line":355,"column":0},"end":{"line":360,"column":2}},"110":{"start":{"line":356,"column":2},"end":{"line":356,"column":22}},"111":{"start":{"line":357,"column":2},"end":{"line":357,"column":30}},"112":{"start":{"line":358,"column":2},"end":{"line":358,"column":31}},"113":{"start":{"line":359,"column":2},"end":{"line":359,"column":34}},"114":{"start":{"line":364,"column":0},"end":{"line":369,"column":2}},"115":{"start":{"line":365,"column":2},"end":{"line":365,"column":31}},"116":{"start":{"line":366,"column":2},"end":{"line":366,"column":71}},"117":{"start":{"line":367,"column":2},"end":{"line":367,"column":21}},"118":{"start":{"line":368,"column":2},"end":{"line":368,"column":28}},"119":{"start":{"line":373,"column":0},"end":{"line":375,"column":1}},"120":{"start":{"line":374,"column":2},"end":{"line":374,"column":101}},"121":{"start":{"line":380,"column":0},"end":{"line":601,"column":2}},"122":{"start":{"line":381,"column":2},"end":{"line":381,"column":27}},"123":{"start":{"line":382,"column":2},"end":{"line":382,"column":24}},"124":{"start":{"line":384,"column":2},"end":{"line":384,"column":54}},"125":{"start":{"line":385,"column":2},"end":{"line":385,"column":70}},"126":{"start":{"line":386,"column":2},"end":{"line":393,"column":3}},"127":{"start":{"line":387,"column":26},"end":{"line":387,"column":47}},"128":{"start":{"line":387,"column":48},"end":{"line":387,"column":54}},"129":{"start":{"line":388,"column":26},"end":{"line":388,"column":47}},"130":{"start":{"line":388,"column":48},"end":{"line":388,"column":54}},"131":{"start":{"line":389,"column":26},"end":{"line":389,"column":47}},"132":{"start":{"line":389,"column":48},"end":{"line":389,"column":54}},"133":{"start":{"line":390,"column":26},"end":{"line":390,"column":47}},"134":{"start":{"line":390,"column":48},"end":{"line":390,"column":54}},"135":{"start":{"line":391,"column":26},"end":{"line":391,"column":47}},"136":{"start":{"line":391,"column":48},"end":{"line":391,"column":54}},"137":{"start":{"line":392,"column":26},"end":{"line":392,"column":47}},"138":{"start":{"line":392,"column":48},"end":{"line":392,"column":54}},"139":{"start":{"line":395,"column":2},"end":{"line":395,"column":33}},"140":{"start":{"line":397,"column":2},"end":{"line":541,"column":3}},"141":{"start":{"line":404,"column":6},"end":{"line":414,"column":7}},"142":{"start":{"line":405,"column":8},"end":{"line":405,"column":31}},"143":{"start":{"line":406,"column":8},"end":{"line":408,"column":9}},"144":{"start":{"line":407,"column":10},"end":{"line":407,"column":79}},"145":{"start":{"line":409,"column":8},"end":{"line":409,"column":34}},"146":{"start":{"line":410,"column":13},"end":{"line":414,"column":7}},"147":{"start":{"line":411,"column":8},"end":{"line":411,"column":33}},"148":{"start":{"line":413,"column":8},"end":{"line":413,"column":33}},"149":{"start":{"line":415,"column":6},"end":{"line":415,"column":12}},"150":{"start":{"line":427,"column":6},"end":{"line":435,"column":7}},"151":{"start":{"line":428,"column":8},"end":{"line":428,"column":45}},"152":{"start":{"line":429,"column":13},"end":{"line":435,"column":7}},"153":{"start":{"line":430,"column":8},"end":{"line":430,"column":33}},"154":{"start":{"line":431,"column":13},"end":{"line":435,"column":7}},"155":{"start":{"line":434,"column":8},"end":{"line":434,"column":33}},"156":{"start":{"line":436,"column":6},"end":{"line":436,"column":12}},"157":{"start":{"line":446,"column":6},"end":{"line":454,"column":7}},"158":{"start":{"line":447,"column":8},"end":{"line":447,"column":33}},"159":{"start":{"line":448,"column":13},"end":{"line":454,"column":7}},"160":{"start":{"line":449,"column":8},"end":{"line":449,"column":44}},"161":{"start":{"line":450,"column":13},"end":{"line":454,"column":7}},"162":{"start":{"line":453,"column":8},"end":{"line":453,"column":33}},"163":{"start":{"line":455,"column":6},"end":{"line":455,"column":12}},"164":{"start":{"line":467,"column":6},"end":{"line":473,"column":7}},"165":{"start":{"line":468,"column":8},"end":{"line":468,"column":77}},"166":{"start":{"line":469,"column":13},"end":{"line":473,"column":7}},"167":{"start":{"line":470,"column":8},"end":{"line":470,"column":33}},"168":{"start":{"line":474,"column":6},"end":{"line":474,"column":12}},"169":{"start":{"line":483,"column":6},"end":{"line":489,"column":7}},"170":{"start":{"line":484,"column":8},"end":{"line":484,"column":33}},"171":{"start":{"line":485,"column":13},"end":{"line":489,"column":7}},"172":{"start":{"line":488,"column":8},"end":{"line":488,"column":33}},"173":{"start":{"line":490,"column":6},"end":{"line":490,"column":12}},"174":{"start":{"line":503,"column":6},"end":{"line":509,"column":7}},"175":{"start":{"line":504,"column":8},"end":{"line":504,"column":33}},"176":{"start":{"line":505,"column":13},"end":{"line":509,"column":7}},"177":{"start":{"line":508,"column":8},"end":{"line":508,"column":33}},"178":{"start":{"line":510,"column":6},"end":{"line":510,"column":12}},"179":{"start":{"line":533,"column":6},"end":{"line":539,"column":7}},"180":{"start":{"line":538,"column":8},"end":{"line":538,"column":32}},"181":{"start":{"line":540,"column":6},"end":{"line":540,"column":12}},"182":{"start":{"line":546,"column":2},"end":{"line":549,"column":3}},"183":{"start":{"line":547,"column":4},"end":{"line":547,"column":31}},"184":{"start":{"line":548,"column":4},"end":{"line":548,"column":37}},"185":{"start":{"line":557,"column":2},"end":{"line":564,"column":3}},"186":{"start":{"line":561,"column":4},"end":{"line":561,"column":80}},"187":{"start":{"line":562,"column":4},"end":{"line":562,"column":84}},"188":{"start":{"line":563,"column":4},"end":{"line":563,"column":47}},"189":{"start":{"line":567,"column":2},"end":{"line":576,"column":3}},"190":{"start":{"line":568,"column":4},"end":{"line":568,"column":72}},"191":{"start":{"line":569,"column":4},"end":{"line":573,"column":5}},"192":{"start":{"line":570,"column":6},"end":{"line":570,"column":34}},"193":{"start":{"line":572,"column":6},"end":{"line":572,"column":33}},"194":{"start":{"line":574,"column":9},"end":{"line":576,"column":3}},"195":{"start":{"line":575,"column":4},"end":{"line":575,"column":27}},"196":{"start":{"line":579,"column":2},"end":{"line":600,"column":3}},"197":{"start":{"line":580,"column":4},"end":{"line":586,"column":6}},"198":{"start":{"line":589,"column":4},"end":{"line":599,"column":5}},"199":{"start":{"line":590,"column":6},"end":{"line":590,"column":54}},"200":{"start":{"line":591,"column":6},"end":{"line":591,"column":97}},"201":{"start":{"line":597,"column":6},"end":{"line":597,"column":55}},"202":{"start":{"line":598,"column":6},"end":{"line":598,"column":32}},"203":{"start":{"line":606,"column":0},"end":{"line":606,"column":25}},"204":{"start":{"line":608,"column":0},"end":{"line":608,"column":15}},"205":{"start":{"line":609,"column":0},"end":{"line":615,"column":2}},"206":{"start":{"line":610,"column":2},"end":{"line":613,"column":3}},"207":{"start":{"line":611,"column":4},"end":{"line":611,"column":24}},"208":{"start":{"line":612,"column":4},"end":{"line":612,"column":16}},"209":{"start":{"line":614,"column":2},"end":{"line":614,"column":20}}},"branchMap":{"1":{"line":108,"type":"if","locations":[{"start":{"line":108,"column":2},"end":{"line":108,"column":2}},{"start":{"line":108,"column":2},"end":{"line":108,"column":2}}]},"2":{"line":115,"type":"if","locations":[{"start":{"line":115,"column":2},"end":{"line":115,"column":2}},{"start":{"line":115,"column":2},"end":{"line":115,"column":2}}]},"3":{"line":115,"type":"binary-expr","locations":[{"start":{"line":115,"column":7},"end":{"line":115,"column":11}},{"start":{"line":115,"column":15},"end":{"line":115,"column":38}},{"start":{"line":115,"column":43},"end":{"line":115,"column":48}}]},"4":{"line":116,"type":"if","locations":[{"start":{"line":116,"column":4},"end":{"line":116,"column":4}},{"start":{"line":116,"column":4},"end":{"line":116,"column":4}}]},"5":{"line":120,"type":"if","locations":[{"start":{"line":120,"column":6},"end":{"line":120,"column":6}},{"start":{"line":120,"column":6},"end":{"line":120,"column":6}}]},"6":{"line":120,"type":"binary-expr","locations":[{"start":{"line":120,"column":10},"end":{"line":120,"column":19}},{"start":{"line":120,"column":25},"end":{"line":120,"column":53}},{"start":{"line":120,"column":59},"end":{"line":120,"column":88}}]},"7":{"line":145,"type":"if","locations":[{"start":{"line":145,"column":2},"end":{"line":145,"column":2}},{"start":{"line":145,"column":2},"end":{"line":145,"column":2}}]},"8":{"line":222,"type":"if","locations":[{"start":{"line":222,"column":2},"end":{"line":222,"column":2}},{"start":{"line":222,"column":2},"end":{"line":222,"column":2}}]},"9":{"line":224,"type":"if","locations":[{"start":{"line":224,"column":9},"end":{"line":224,"column":9}},{"start":{"line":224,"column":9},"end":{"line":224,"column":9}}]},"10":{"line":226,"type":"if","locations":[{"start":{"line":226,"column":9},"end":{"line":226,"column":9}},{"start":{"line":226,"column":9},"end":{"line":226,"column":9}}]},"11":{"line":231,"type":"if","locations":[{"start":{"line":231,"column":7},"end":{"line":231,"column":7}},{"start":{"line":231,"column":7},"end":{"line":231,"column":7}}]},"12":{"line":231,"type":"binary-expr","locations":[{"start":{"line":231,"column":12},"end":{"line":231,"column":33}},{"start":{"line":232,"column":12},"end":{"line":232,"column":42}},{"start":{"line":233,"column":12},"end":{"line":233,"column":39}}]},"13":{"line":245,"type":"if","locations":[{"start":{"line":245,"column":2},"end":{"line":245,"column":2}},{"start":{"line":245,"column":2},"end":{"line":245,"column":2}}]},"14":{"line":245,"type":"binary-expr","locations":[{"start":{"line":245,"column":6},"end":{"line":245,"column":18}},{"start":{"line":245,"column":23},"end":{"line":245,"column":44}}]},"15":{"line":247,"type":"if","locations":[{"start":{"line":247,"column":4},"end":{"line":247,"column":4}},{"start":{"line":247,"column":4},"end":{"line":247,"column":4}}]},"16":{"line":253,"type":"if","locations":[{"start":{"line":253,"column":2},"end":{"line":253,"column":2}},{"start":{"line":253,"column":2},"end":{"line":253,"column":2}}]},"17":{"line":253,"type":"binary-expr","locations":[{"start":{"line":253,"column":6},"end":{"line":253,"column":18}},{"start":{"line":253,"column":23},"end":{"line":253,"column":45}},{"start":{"line":253,"column":50},"end":{"line":253,"column":77}}]},"18":{"line":259,"type":"if","locations":[{"start":{"line":259,"column":2},"end":{"line":259,"column":2}},{"start":{"line":259,"column":2},"end":{"line":259,"column":2}}]},"19":{"line":267,"type":"if","locations":[{"start":{"line":267,"column":2},"end":{"line":267,"column":2}},{"start":{"line":267,"column":2},"end":{"line":267,"column":2}}]},"20":{"line":285,"type":"if","locations":[{"start":{"line":285,"column":2},"end":{"line":285,"column":2}},{"start":{"line":285,"column":2},"end":{"line":285,"column":2}}]},"21":{"line":296,"type":"if","locations":[{"start":{"line":296,"column":2},"end":{"line":296,"column":2}},{"start":{"line":296,"column":2},"end":{"line":296,"column":2}}]},"22":{"line":316,"type":"if","locations":[{"start":{"line":316,"column":2},"end":{"line":316,"column":2}},{"start":{"line":316,"column":2},"end":{"line":316,"column":2}}]},"23":{"line":316,"type":"binary-expr","locations":[{"start":{"line":316,"column":6},"end":{"line":316,"column":15}},{"start":{"line":316,"column":21},"end":{"line":316,"column":46}},{"start":{"line":316,"column":52},"end":{"line":316,"column":80}}]},"24":{"line":374,"type":"binary-expr","locations":[{"start":{"line":374,"column":11},"end":{"line":374,"column":40}},{"start":{"line":374,"column":46},"end":{"line":374,"column":76}},{"start":{"line":374,"column":82},"end":{"line":374,"column":98}}]},"25":{"line":386,"type":"switch","locations":[{"start":{"line":387,"column":4},"end":{"line":387,"column":54}},{"start":{"line":388,"column":4},"end":{"line":388,"column":54}},{"start":{"line":389,"column":4},"end":{"line":389,"column":54}},{"start":{"line":390,"column":4},"end":{"line":390,"column":54}},{"start":{"line":391,"column":4},"end":{"line":391,"column":54}},{"start":{"line":392,"column":4},"end":{"line":392,"column":54}}]},"26":{"line":397,"type":"switch","locations":[{"start":{"line":403,"column":4},"end":{"line":415,"column":12}},{"start":{"line":426,"column":4},"end":{"line":436,"column":12}},{"start":{"line":445,"column":4},"end":{"line":455,"column":12}},{"start":{"line":466,"column":4},"end":{"line":474,"column":12}},{"start":{"line":482,"column":4},"end":{"line":490,"column":12}},{"start":{"line":502,"column":4},"end":{"line":510,"column":12}},{"start":{"line":532,"column":4},"end":{"line":540,"column":12}}]},"27":{"line":404,"type":"if","locations":[{"start":{"line":404,"column":6},"end":{"line":404,"column":6}},{"start":{"line":404,"column":6},"end":{"line":404,"column":6}}]},"28":{"line":406,"type":"if","locations":[{"start":{"line":406,"column":8},"end":{"line":406,"column":8}},{"start":{"line":406,"column":8},"end":{"line":406,"column":8}}]},"29":{"line":407,"type":"cond-expr","locations":[{"start":{"line":407,"column":35},"end":{"line":407,"column":54}},{"start":{"line":407,"column":57},"end":{"line":407,"column":77}}]},"30":{"line":410,"type":"if","locations":[{"start":{"line":410,"column":13},"end":{"line":410,"column":13}},{"start":{"line":410,"column":13},"end":{"line":410,"column":13}}]},"31":{"line":410,"type":"binary-expr","locations":[{"start":{"line":410,"column":17},"end":{"line":410,"column":24}},{"start":{"line":410,"column":28},"end":{"line":410,"column":38}}]},"32":{"line":427,"type":"if","locations":[{"start":{"line":427,"column":6},"end":{"line":427,"column":6}},{"start":{"line":427,"column":6},"end":{"line":427,"column":6}}]},"33":{"line":427,"type":"binary-expr","locations":[{"start":{"line":427,"column":10},"end":{"line":427,"column":17}},{"start":{"line":427,"column":21},"end":{"line":427,"column":28}}]},"34":{"line":429,"type":"if","locations":[{"start":{"line":429,"column":13},"end":{"line":429,"column":13}},{"start":{"line":429,"column":13},"end":{"line":429,"column":13}}]},"35":{"line":431,"type":"if","locations":[{"start":{"line":431,"column":13},"end":{"line":431,"column":13}},{"start":{"line":431,"column":13},"end":{"line":431,"column":13}}]},"36":{"line":431,"type":"binary-expr","locations":[{"start":{"line":431,"column":17},"end":{"line":431,"column":26}},{"start":{"line":431,"column":30},"end":{"line":431,"column":38}}]},"37":{"line":446,"type":"if","locations":[{"start":{"line":446,"column":6},"end":{"line":446,"column":6}},{"start":{"line":446,"column":6},"end":{"line":446,"column":6}}]},"38":{"line":448,"type":"if","locations":[{"start":{"line":448,"column":13},"end":{"line":448,"column":13}},{"start":{"line":448,"column":13},"end":{"line":448,"column":13}}]},"39":{"line":448,"type":"binary-expr","locations":[{"start":{"line":448,"column":17},"end":{"line":448,"column":26}},{"start":{"line":448,"column":30},"end":{"line":448,"column":37}}]},"40":{"line":450,"type":"if","locations":[{"start":{"line":450,"column":13},"end":{"line":450,"column":13}},{"start":{"line":450,"column":13},"end":{"line":450,"column":13}}]},"41":{"line":450,"type":"binary-expr","locations":[{"start":{"line":450,"column":17},"end":{"line":450,"column":24}},{"start":{"line":450,"column":28},"end":{"line":450,"column":36}}]},"42":{"line":467,"type":"if","locations":[{"start":{"line":467,"column":6},"end":{"line":467,"column":6}},{"start":{"line":467,"column":6},"end":{"line":467,"column":6}}]},"43":{"line":468,"type":"cond-expr","locations":[{"start":{"line":468,"column":33},"end":{"line":468,"column":52}},{"start":{"line":468,"column":55},"end":{"line":468,"column":75}}]},"44":{"line":469,"type":"if","locations":[{"start":{"line":469,"column":13},"end":{"line":469,"column":13}},{"start":{"line":469,"column":13},"end":{"line":469,"column":13}}]},"45":{"line":483,"type":"if","locations":[{"start":{"line":483,"column":6},"end":{"line":483,"column":6}},{"start":{"line":483,"column":6},"end":{"line":483,"column":6}}]},"46":{"line":483,"type":"binary-expr","locations":[{"start":{"line":483,"column":10},"end":{"line":483,"column":20}},{"start":{"line":483,"column":25},"end":{"line":483,"column":34}},{"start":{"line":483,"column":38},"end":{"line":483,"column":60}}]},"47":{"line":485,"type":"if","locations":[{"start":{"line":485,"column":13},"end":{"line":485,"column":13}},{"start":{"line":485,"column":13},"end":{"line":485,"column":13}}]},"48":{"line":485,"type":"binary-expr","locations":[{"start":{"line":485,"column":17},"end":{"line":485,"column":26}},{"start":{"line":485,"column":31},"end":{"line":485,"column":38}},{"start":{"line":485,"column":43},"end":{"line":485,"column":51}},{"start":{"line":485,"column":55},"end":{"line":485,"column":68}}]},"49":{"line":503,"type":"if","locations":[{"start":{"line":503,"column":6},"end":{"line":503,"column":6}},{"start":{"line":503,"column":6},"end":{"line":503,"column":6}}]},"50":{"line":503,"type":"binary-expr","locations":[{"start":{"line":503,"column":10},"end":{"line":503,"column":20}},{"start":{"line":503,"column":25},"end":{"line":503,"column":32}},{"start":{"line":503,"column":36},"end":{"line":503,"column":58}}]},"51":{"line":505,"type":"if","locations":[{"start":{"line":505,"column":13},"end":{"line":505,"column":13}},{"start":{"line":505,"column":13},"end":{"line":505,"column":13}}]},"52":{"line":505,"type":"binary-expr","locations":[{"start":{"line":505,"column":17},"end":{"line":505,"column":24}},{"start":{"line":505,"column":29},"end":{"line":505,"column":38}},{"start":{"line":505,"column":43},"end":{"line":505,"column":56}},{"start":{"line":505,"column":60},"end":{"line":505,"column":68}}]},"53":{"line":533,"type":"if","locations":[{"start":{"line":533,"column":6},"end":{"line":533,"column":6}},{"start":{"line":533,"column":6},"end":{"line":533,"column":6}}]},"54":{"line":533,"type":"binary-expr","locations":[{"start":{"line":533,"column":11},"end":{"line":533,"column":18}},{"start":{"line":533,"column":22},"end":{"line":533,"column":32}},{"start":{"line":534,"column":11},"end":{"line":534,"column":20}},{"start":{"line":534,"column":24},"end":{"line":534,"column":40}},{"start":{"line":535,"column":12},"end":{"line":535,"column":31}},{"start":{"line":535,"column":35},"end":{"line":535,"column":48}},{"start":{"line":535,"column":52},"end":{"line":535,"column":60}},{"start":{"line":535,"column":64},"end":{"line":535,"column":74}}]},"55":{"line":546,"type":"if","locations":[{"start":{"line":546,"column":2},"end":{"line":546,"column":2}},{"start":{"line":546,"column":2},"end":{"line":546,"column":2}}]},"56":{"line":546,"type":"binary-expr","locations":[{"start":{"line":546,"column":7},"end":{"line":546,"column":30}},{"start":{"line":546,"column":36},"end":{"line":546,"column":62}}]},"57":{"line":557,"type":"if","locations":[{"start":{"line":557,"column":2},"end":{"line":557,"column":2}},{"start":{"line":557,"column":2},"end":{"line":557,"column":2}}]},"58":{"line":557,"type":"binary-expr","locations":[{"start":{"line":557,"column":6},"end":{"line":557,"column":18}},{"start":{"line":557,"column":22},"end":{"line":557,"column":28}}]},"59":{"line":562,"type":"cond-expr","locations":[{"start":{"line":562,"column":46},"end":{"line":562,"column":62}},{"start":{"line":562,"column":65},"end":{"line":562,"column":82}}]},"60":{"line":567,"type":"if","locations":[{"start":{"line":567,"column":2},"end":{"line":567,"column":2}},{"start":{"line":567,"column":2},"end":{"line":567,"column":2}}]},"61":{"line":569,"type":"if","locations":[{"start":{"line":569,"column":4},"end":{"line":569,"column":4}},{"start":{"line":569,"column":4},"end":{"line":569,"column":4}}]},"62":{"line":574,"type":"if","locations":[{"start":{"line":574,"column":9},"end":{"line":574,"column":9}},{"start":{"line":574,"column":9},"end":{"line":574,"column":9}}]},"63":{"line":579,"type":"if","locations":[{"start":{"line":579,"column":2},"end":{"line":579,"column":2}},{"start":{"line":579,"column":2},"end":{"line":579,"column":2}}]},"64":{"line":589,"type":"if","locations":[{"start":{"line":589,"column":4},"end":{"line":589,"column":4}},{"start":{"line":589,"column":4},"end":{"line":589,"column":4}}]},"65":{"line":610,"type":"if","locations":[{"start":{"line":610,"column":2},"end":{"line":610,"column":2}},{"start":{"line":610,"column":2},"end":{"line":610,"column":2}}]}}},"/data/upstream/node-http2/lib/endpoint.js":{"path":"/data/upstream/node-http2/lib/endpoint.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":24,"12":24,"13":24,"14":24,"15":12,"16":12,"17":24,"18":24,"19":24,"20":1,"21":1,"22":1,"23":12,"24":12,"25":1,"26":12,"27":12,"28":11,"29":11,"30":241,"31":1,"32":1,"33":1,"34":240,"35":10,"36":10,"37":10,"38":10,"39":10,"40":1,"41":0,"42":0,"43":0,"44":0,"45":0,"46":1,"47":96,"48":0,"49":96,"50":1,"51":1,"52":24,"53":24,"54":12,"55":12,"56":12,"57":12,"58":12,"59":12,"60":24,"61":24,"62":24,"63":24,"64":24,"65":24,"66":24,"67":24,"68":24,"69":1,"70":1,"71":155,"72":155,"73":155,"74":130,"75":155,"76":67,"77":155,"78":1,"79":50,"80":1,"81":24,"82":1,"83":11,"84":1,"85":24,"86":24,"87":24,"88":24,"89":24,"90":24,"91":1,"92":1,"93":1,"94":1,"95":1,"96":2,"97":1,"98":1,"99":1,"100":6,"101":2,"102":2,"103":6},"b":{"1":[24,12],"2":[12,12],"3":[24,24],"4":[251,241],"5":[1,240],"6":[10,0],"7":[0,96],"8":[12,12],"9":[285,285],"10":[67,88],"11":[2,4]},"f":{"1":24,"2":12,"3":12,"4":11,"5":0,"6":0,"7":96,"8":24,"9":155,"10":50,"11":24,"12":11,"13":24,"14":1,"15":2,"16":6},"fnMap":{"1":{"name":"Endpoint","line":50,"loc":{"start":{"line":50,"column":0},"end":{"line":50,"column":48}}},"2":{"name":"_writePrelude","line":84,"loc":{"start":{"line":84,"column":35},"end":{"line":84,"column":60}}},"3":{"name":"_readPrelude","line":90,"loc":{"start":{"line":90,"column":34},"end":{"line":90,"column":58}}},"4":{"name":"_temporalWrite","line":95,"loc":{"start":{"line":95,"column":16},"end":{"line":95,"column":63}}},"5":{"name":"createTransformStream","line":153,"loc":{"start":{"line":153,"column":0},"end":{"line":153,"column":39}}},"6":{"name":"(anonymous_6)","line":156,"loc":{"start":{"line":156,"column":25},"end":{"line":156,"column":57}}},"7":{"name":"pipeAndFilter","line":162,"loc":{"start":{"line":162,"column":0},"end":{"line":162,"column":49}}},"8":{"name":"_initializeDataFlow","line":172,"loc":{"start":{"line":172,"column":41},"end":{"line":172,"column":95}}},"9":{"name":"_read","line":197,"loc":{"start":{"line":197,"column":27},"end":{"line":197,"column":44}}},"10":{"name":"_write","line":209,"loc":{"start":{"line":209,"column":28},"end":{"line":209,"column":67}}},"11":{"name":"_initializeManagement","line":216,"loc":{"start":{"line":216,"column":43},"end":{"line":216,"column":76}}},"12":{"name":"createStream","line":220,"loc":{"start":{"line":220,"column":34},"end":{"line":220,"column":58}}},"13":{"name":"_initializeErrorHandling","line":227,"loc":{"start":{"line":227,"column":46},"end":{"line":227,"column":82}}},"14":{"name":"_error","line":237,"loc":{"start":{"line":237,"column":28},"end":{"line":237,"column":62}}},"15":{"name":"close","line":243,"loc":{"start":{"line":243,"column":27},"end":{"line":243,"column":49}}},"16":{"name":"(anonymous_16)","line":253,"loc":{"start":{"line":253,"column":24},"end":{"line":253,"column":43}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":31}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":50}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":52}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":54}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":56}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":54}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":44}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":47}},"9":{"start":{"line":11,"column":0},"end":{"line":11,"column":28}},"10":{"start":{"line":50,"column":0},"end":{"line":75,"column":1}},"11":{"start":{"line":51,"column":2},"end":{"line":51,"column":20}},"12":{"start":{"line":54,"column":2},"end":{"line":54,"column":60}},"13":{"start":{"line":58,"column":2},"end":{"line":58,"column":51}},"14":{"start":{"line":59,"column":2},"end":{"line":63,"column":3}},"15":{"start":{"line":60,"column":4},"end":{"line":60,"column":25}},"16":{"start":{"line":62,"column":4},"end":{"line":62,"column":24}},"17":{"start":{"line":68,"column":2},"end":{"line":68,"column":58}},"18":{"start":{"line":71,"column":2},"end":{"line":71,"column":31}},"19":{"start":{"line":74,"column":2},"end":{"line":74,"column":34}},"20":{"start":{"line":76,"column":0},"end":{"line":76,"column":91}},"21":{"start":{"line":81,"column":0},"end":{"line":81,"column":68}},"22":{"start":{"line":84,"column":0},"end":{"line":87,"column":2}},"23":{"start":{"line":85,"column":2},"end":{"line":85,"column":67}},"24":{"start":{"line":86,"column":2},"end":{"line":86,"column":28}},"25":{"start":{"line":90,"column":0},"end":{"line":118,"column":2}},"26":{"start":{"line":92,"column":2},"end":{"line":92,"column":17}},"27":{"start":{"line":95,"column":2},"end":{"line":117,"column":4}},"28":{"start":{"line":98,"column":4},"end":{"line":98,"column":24}},"29":{"start":{"line":99,"column":4},"end":{"line":107,"column":5}},"30":{"start":{"line":100,"column":6},"end":{"line":105,"column":7}},"31":{"start":{"line":101,"column":8},"end":{"line":102,"column":76}},"32":{"start":{"line":103,"column":8},"end":{"line":103,"column":51}},"33":{"start":{"line":104,"column":8},"end":{"line":104,"column":15}},"34":{"start":{"line":106,"column":6},"end":{"line":106,"column":18}},"35":{"start":{"line":111,"column":4},"end":{"line":116,"column":5}},"36":{"start":{"line":112,"column":6},"end":{"line":112,"column":85}},"37":{"start":{"line":113,"column":6},"end":{"line":113,"column":25}},"38":{"start":{"line":114,"column":6},"end":{"line":114,"column":43}},"39":{"start":{"line":115,"column":6},"end":{"line":115,"column":41}},"40":{"start":{"line":153,"column":0},"end":{"line":160,"column":1}},"41":{"start":{"line":154,"column":2},"end":{"line":154,"column":54}},"42":{"start":{"line":155,"column":2},"end":{"line":155,"column":44}},"43":{"start":{"line":156,"column":2},"end":{"line":158,"column":4}},"44":{"start":{"line":157,"column":4},"end":{"line":157,"column":30}},"45":{"start":{"line":159,"column":2},"end":{"line":159,"column":19}},"46":{"start":{"line":162,"column":0},"end":{"line":168,"column":1}},"47":{"start":{"line":163,"column":2},"end":{"line":167,"column":3}},"48":{"start":{"line":164,"column":4},"end":{"line":164,"column":62}},"49":{"start":{"line":166,"column":4},"end":{"line":166,"column":26}},"50":{"start":{"line":170,"column":0},"end":{"line":170,"column":34}},"51":{"start":{"line":172,"column":0},"end":{"line":194,"column":2}},"52":{"start":{"line":173,"column":2},"end":{"line":173,"column":54}},"53":{"start":{"line":174,"column":2},"end":{"line":182,"column":3}},"54":{"start":{"line":175,"column":4},"end":{"line":175,"column":22}},"55":{"start":{"line":176,"column":4},"end":{"line":176,"column":31}},"56":{"start":{"line":177,"column":4},"end":{"line":177,"column":34}},"57":{"start":{"line":179,"column":4},"end":{"line":179,"column":22}},"58":{"start":{"line":180,"column":4},"end":{"line":180,"column":32}},"59":{"start":{"line":181,"column":4},"end":{"line":181,"column":33}},"60":{"start":{"line":184,"column":2},"end":{"line":184,"column":72}},"61":{"start":{"line":185,"column":2},"end":{"line":185,"column":74}},"62":{"start":{"line":186,"column":2},"end":{"line":186,"column":65}},"63":{"start":{"line":187,"column":2},"end":{"line":187,"column":69}},"64":{"start":{"line":188,"column":2},"end":{"line":188,"column":74}},"65":{"start":{"line":190,"column":2},"end":{"line":190,"column":79}},"66":{"start":{"line":191,"column":2},"end":{"line":191,"column":81}},"67":{"start":{"line":192,"column":2},"end":{"line":192,"column":86}},"68":{"start":{"line":193,"column":2},"end":{"line":193,"column":82}},"69":{"start":{"line":196,"column":0},"end":{"line":196,"column":16}},"70":{"start":{"line":197,"column":0},"end":{"line":207,"column":2}},"71":{"start":{"line":198,"column":2},"end":{"line":198,"column":34}},"72":{"start":{"line":199,"column":2},"end":{"line":199,"column":33}},"73":{"start":{"line":200,"column":2},"end":{"line":202,"column":3}},"74":{"start":{"line":201,"column":4},"end":{"line":201,"column":34}},"75":{"start":{"line":203,"column":2},"end":{"line":205,"column":3}},"76":{"start":{"line":204,"column":4},"end":{"line":204,"column":61}},"77":{"start":{"line":206,"column":2},"end":{"line":206,"column":35}},"78":{"start":{"line":209,"column":0},"end":{"line":211,"column":2}},"79":{"start":{"line":210,"column":2},"end":{"line":210,"column":50}},"80":{"start":{"line":216,"column":0},"end":{"line":218,"column":2}},"81":{"start":{"line":217,"column":2},"end":{"line":217,"column":64}},"82":{"start":{"line":220,"column":0},"end":{"line":222,"column":2}},"83":{"start":{"line":221,"column":2},"end":{"line":221,"column":41}},"84":{"start":{"line":227,"column":0},"end":{"line":235,"column":2}},"85":{"start":{"line":228,"column":2},"end":{"line":228,"column":69}},"86":{"start":{"line":229,"column":2},"end":{"line":229,"column":73}},"87":{"start":{"line":230,"column":2},"end":{"line":230,"column":69}},"88":{"start":{"line":231,"column":2},"end":{"line":231,"column":73}},"89":{"start":{"line":232,"column":2},"end":{"line":232,"column":69}},"90":{"start":{"line":234,"column":2},"end":{"line":234,"column":70}},"91":{"start":{"line":237,"column":0},"end":{"line":241,"column":2}},"92":{"start":{"line":238,"column":2},"end":{"line":238,"column":92}},"93":{"start":{"line":239,"column":2},"end":{"line":239,"column":20}},"94":{"start":{"line":240,"column":2},"end":{"line":240,"column":53}},"95":{"start":{"line":243,"column":0},"end":{"line":245,"column":2}},"96":{"start":{"line":244,"column":2},"end":{"line":244,"column":32}},"97":{"start":{"line":250,"column":0},"end":{"line":250,"column":25}},"98":{"start":{"line":252,"column":0},"end":{"line":252,"column":15}},"99":{"start":{"line":253,"column":0},"end":{"line":259,"column":2}},"100":{"start":{"line":254,"column":2},"end":{"line":257,"column":3}},"101":{"start":{"line":255,"column":4},"end":{"line":255,"column":25}},"102":{"start":{"line":256,"column":4},"end":{"line":256,"column":16}},"103":{"start":{"line":258,"column":2},"end":{"line":258,"column":21}}},"branchMap":{"1":{"line":58,"type":"binary-expr","locations":[{"start":{"line":58,"column":10},"end":{"line":58,"column":27}},{"start":{"line":58,"column":32},"end":{"line":58,"column":49}}]},"2":{"line":59,"type":"if","locations":[{"start":{"line":59,"column":2},"end":{"line":59,"column":2}},{"start":{"line":59,"column":2},"end":{"line":59,"column":2}}]},"3":{"line":68,"type":"binary-expr","locations":[{"start":{"line":68,"column":43},"end":{"line":68,"column":50}},{"start":{"line":68,"column":54},"end":{"line":68,"column":56}}]},"4":{"line":99,"type":"binary-expr","locations":[{"start":{"line":99,"column":10},"end":{"line":99,"column":40}},{"start":{"line":99,"column":44},"end":{"line":99,"column":76}}]},"5":{"line":100,"type":"if","locations":[{"start":{"line":100,"column":6},"end":{"line":100,"column":6}},{"start":{"line":100,"column":6},"end":{"line":100,"column":6}}]},"6":{"line":111,"type":"if","locations":[{"start":{"line":111,"column":4},"end":{"line":111,"column":4}},{"start":{"line":111,"column":4},"end":{"line":111,"column":4}}]},"7":{"line":163,"type":"if","locations":[{"start":{"line":163,"column":2},"end":{"line":163,"column":2}},{"start":{"line":163,"column":2},"end":{"line":163,"column":2}}]},"8":{"line":174,"type":"if","locations":[{"start":{"line":174,"column":2},"end":{"line":174,"column":2}},{"start":{"line":174,"column":2},"end":{"line":174,"column":2}}]},"9":{"line":200,"type":"binary-expr","locations":[{"start":{"line":200,"column":9},"end":{"line":200,"column":19}},{"start":{"line":200,"column":24},"end":{"line":200,"column":55}}]},"10":{"line":203,"type":"if","locations":[{"start":{"line":203,"column":2},"end":{"line":203,"column":2}},{"start":{"line":203,"column":2},"end":{"line":203,"column":2}}]},"11":{"line":254,"type":"if","locations":[{"start":{"line":254,"column":2},"end":{"line":254,"column":2}},{"start":{"line":254,"column":2},"end":{"line":254,"column":2}}]}}},"/data/upstream/node-http2/lib/framer.js":{"path":"/data/upstream/node-http2/lib/framer.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":25,"8":25,"9":25,"10":1,"11":1,"12":76,"13":76,"14":76,"15":76,"16":76,"17":76,"18":76,"19":156,"20":0,"21":156,"22":76,"23":1,"24":25,"25":25,"26":25,"27":25,"28":1,"29":1,"30":165,"31":165,"32":165,"33":165,"34":95,"35":1,"36":66,"37":66,"38":0,"39":66,"40":147,"41":147,"42":147,"43":147,"44":147,"45":70,"46":70,"47":70,"48":0,"49":0,"50":147,"51":70,"52":70,"53":70,"54":0,"55":0,"56":70,"57":70,"58":0,"59":70,"60":66,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":87,"69":87,"70":87,"71":91,"72":87,"73":87,"74":87,"75":87,"76":87,"77":87,"78":93,"79":93,"80":93,"81":54,"82":87,"83":87,"84":87,"85":87,"86":1,"87":81,"88":81,"89":81,"90":81,"91":81,"92":81,"93":152,"94":81,"95":81,"96":1,"97":1,"98":1,"99":1,"100":14,"101":1,"102":14,"103":1,"104":1,"105":1,"106":1,"107":29,"108":2,"109":2,"110":2,"111":2,"112":29,"113":1,"114":28,"115":2,"116":2,"117":26,"118":1,"119":1,"120":1,"121":1,"122":2,"123":2,"124":2,"125":1,"126":2,"127":1,"128":1,"129":1,"130":1,"131":2,"132":2,"133":2,"134":2,"135":2,"136":1,"137":2,"138":1,"139":1,"140":1,"141":1,"142":26,"143":26,"144":78,"145":34,"146":34,"147":34,"148":26,"149":26,"150":26,"151":34,"152":34,"153":26,"154":1,"155":22,"156":22,"157":0,"158":22,"159":28,"160":28,"161":28,"162":28,"163":28,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"172":4,"173":4,"174":4,"175":4,"176":4,"177":4,"178":1,"179":4,"180":4,"181":1,"182":1,"183":1,"184":1,"185":2,"186":1,"187":2,"188":0,"189":2,"190":1,"191":1,"192":1,"193":1,"194":4,"195":4,"196":4,"197":4,"198":4,"199":4,"200":4,"201":4,"202":1,"203":3,"204":3,"205":1,"206":1,"207":1,"208":1,"209":2,"210":2,"211":2,"212":2,"213":2,"214":1,"215":2,"216":1,"217":1,"218":1,"219":1,"220":2,"221":1,"222":2,"223":1,"224":1,"225":1,"226":1,"227":6,"228":0,"229":6,"230":4,"231":2,"232":2,"233":2,"234":2,"235":8,"236":2,"237":1,"238":0,"239":1,"240":1,"241":1,"242":2,"243":0,"244":2,"245":0,"246":2,"247":1,"248":0},"b":{"1":[25,1],"2":[0,156],"3":[25,1],"4":[95,70],"5":[0,66],"6":[70,77],"7":[147,134],"8":[70,0],"9":[70,77],"10":[147,70],"11":[70,0],"12":[0,70],"13":[54,39],"14":[87,87],"15":[87,26],"16":[2,27],"17":[2,2],"18":[2,26],"19":[2,2],"20":[34,44],"21":[22,12],"22":[0,22],"23":[28,0],"24":[20,8],"25":[4,4],"26":[0,2],"27":[4,4],"28":[4,4],"29":[2,2],"30":[0,6],"31":[4,2],"32":[1,1],"33":[0,1],"34":[1,0],"35":[0,2],"36":[2,2]},"f":{"1":25,"2":76,"3":25,"4":165,"5":66,"6":87,"7":81,"8":14,"9":14,"10":29,"11":28,"12":2,"13":2,"14":2,"15":2,"16":26,"17":78,"18":22,"19":4,"20":4,"21":2,"22":2,"23":4,"24":3,"25":2,"26":2,"27":2,"28":2,"29":6,"30":8,"31":0,"32":0},"fnMap":{"1":{"name":"Serializer","line":25,"loc":{"start":{"line":25,"column":0},"end":{"line":25,"column":36}}},"2":{"name":"_transform","line":35,"loc":{"start":{"line":35,"column":34},"end":{"line":35,"column":77}}},"3":{"name":"Deserializer","line":67,"loc":{"start":{"line":67,"column":0},"end":{"line":67,"column":38}}},"4":{"name":"(anonymous_4)","line":80,"loc":{"start":{"line":80,"column":31},"end":{"line":80,"column":46}}},"5":{"name":"_transform","line":91,"loc":{"start":{"line":91,"column":36},"end":{"line":91,"column":79}}},"6":{"name":"writeCommonHeader","line":202,"loc":{"start":{"line":202,"column":26},"end":{"line":202,"column":69}}},"7":{"name":"readCommonHeader","line":231,"loc":{"start":{"line":231,"column":28},"end":{"line":231,"column":69}}},"8":{"name":"writeData","line":278,"loc":{"start":{"line":278,"column":18},"end":{"line":278,"column":53}}},"9":{"name":"readData","line":282,"loc":{"start":{"line":282,"column":20},"end":{"line":282,"column":53}}},"10":{"name":"writeHeadersPriority","line":321,"loc":{"start":{"line":321,"column":21},"end":{"line":321,"column":67}}},"11":{"name":"readHeadersPriority","line":331,"loc":{"start":{"line":331,"column":23},"end":{"line":331,"column":67}}},"12":{"name":"writePriority","line":361,"loc":{"start":{"line":361,"column":22},"end":{"line":361,"column":61}}},"13":{"name":"readPriority","line":367,"loc":{"start":{"line":367,"column":24},"end":{"line":367,"column":61}}},"14":{"name":"writeRstStream","line":393,"loc":{"start":{"line":393,"column":24},"end":{"line":393,"column":64}}},"15":{"name":"readRstStream","line":401,"loc":{"start":{"line":401,"column":26},"end":{"line":401,"column":64}}},"16":{"name":"writeSettings","line":437,"loc":{"start":{"line":437,"column":22},"end":{"line":437,"column":61}}},"17":{"name":"(anonymous_17)","line":439,"loc":{"start":{"line":439,"column":26},"end":{"line":439,"column":48}}},"18":{"name":"readSettings","line":457,"loc":{"start":{"line":457,"column":24},"end":{"line":457,"column":61}}},"19":{"name":"writePushPromise","line":522,"loc":{"start":{"line":522,"column":26},"end":{"line":522,"column":68}}},"20":{"name":"readPushPromise","line":533,"loc":{"start":{"line":533,"column":28},"end":{"line":533,"column":68}}},"21":{"name":"writePing","line":557,"loc":{"start":{"line":557,"column":18},"end":{"line":557,"column":53}}},"22":{"name":"readPing","line":561,"loc":{"start":{"line":561,"column":20},"end":{"line":561,"column":53}}},"23":{"name":"writeGoaway","line":596,"loc":{"start":{"line":596,"column":20},"end":{"line":596,"column":57}}},"24":{"name":"readGoaway","line":610,"loc":{"start":{"line":610,"column":22},"end":{"line":610,"column":57}}},"25":{"name":"writeWindowUpdate","line":633,"loc":{"start":{"line":633,"column":27},"end":{"line":633,"column":70}}},"26":{"name":"readWindowUpdate","line":643,"loc":{"start":{"line":643,"column":29},"end":{"line":643,"column":70}}},"27":{"name":"writeContinuation","line":669,"loc":{"start":{"line":669,"column":26},"end":{"line":669,"column":69}}},"28":{"name":"readContinuation","line":673,"loc":{"start":{"line":673,"column":28},"end":{"line":673,"column":69}}},"29":{"name":"(anonymous_29)","line":703,"loc":{"start":{"line":703,"column":28},"end":{"line":703,"column":44}}},"30":{"name":"(anonymous_30)","line":716,"loc":{"start":{"line":716,"column":71},"end":{"line":716,"column":86}}},"31":{"name":"(anonymous_31)","line":736,"loc":{"start":{"line":736,"column":57},"end":{"line":736,"column":72}}},"32":{"name":"(anonymous_32)","line":744,"loc":{"start":{"line":744,"column":27},"end":{"line":744,"column":42}}}},"statementMap":{"1":{"start":{"line":5,"column":0},"end":{"line":5,"column":31}},"2":{"start":{"line":7,"column":0},"end":{"line":7,"column":44}},"3":{"start":{"line":9,"column":0},"end":{"line":9,"column":32}},"4":{"start":{"line":10,"column":0},"end":{"line":10,"column":36}},"5":{"start":{"line":12,"column":0},"end":{"line":12,"column":50}},"6":{"start":{"line":25,"column":0},"end":{"line":29,"column":1}},"7":{"start":{"line":26,"column":2},"end":{"line":26,"column":53}},"8":{"start":{"line":27,"column":2},"end":{"line":27,"column":50}},"9":{"start":{"line":28,"column":2},"end":{"line":28,"column":45}},"10":{"start":{"line":30,"column":0},"end":{"line":30,"column":98}},"11":{"start":{"line":35,"column":0},"end":{"line":54,"column":2}},"12":{"start":{"line":36,"column":2},"end":{"line":36,"column":54}},"13":{"start":{"line":38,"column":2},"end":{"line":38,"column":72}},"14":{"start":{"line":40,"column":2},"end":{"line":40,"column":19}},"15":{"start":{"line":41,"column":2},"end":{"line":41,"column":41}},"16":{"start":{"line":42,"column":2},"end":{"line":42,"column":42}},"17":{"start":{"line":44,"column":2},"end":{"line":44,"column":76}},"18":{"start":{"line":46,"column":2},"end":{"line":51,"column":3}},"19":{"start":{"line":47,"column":4},"end":{"line":49,"column":5}},"20":{"start":{"line":48,"column":6},"end":{"line":48,"column":61}},"21":{"start":{"line":50,"column":4},"end":{"line":50,"column":26}},"22":{"start":{"line":53,"column":2},"end":{"line":53,"column":9}},"23":{"start":{"line":67,"column":0},"end":{"line":72,"column":1}},"24":{"start":{"line":68,"column":2},"end":{"line":68,"column":55}},"25":{"start":{"line":69,"column":2},"end":{"line":69,"column":50}},"26":{"start":{"line":70,"column":2},"end":{"line":70,"column":45}},"27":{"start":{"line":71,"column":2},"end":{"line":71,"column":33}},"28":{"start":{"line":73,"column":0},"end":{"line":73,"column":102}},"29":{"start":{"line":80,"column":0},"end":{"line":87,"column":2}},"30":{"start":{"line":81,"column":2},"end":{"line":81,"column":19}},"31":{"start":{"line":82,"column":2},"end":{"line":82,"column":34}},"32":{"start":{"line":83,"column":2},"end":{"line":83,"column":51}},"33":{"start":{"line":84,"column":2},"end":{"line":86,"column":3}},"34":{"start":{"line":85,"column":4},"end":{"line":85,"column":21}},"35":{"start":{"line":91,"column":0},"end":{"line":144,"column":2}},"36":{"start":{"line":92,"column":2},"end":{"line":92,"column":17}},"37":{"start":{"line":94,"column":2},"end":{"line":96,"column":3}},"38":{"start":{"line":95,"column":4},"end":{"line":95,"column":54}},"39":{"start":{"line":98,"column":2},"end":{"line":141,"column":3}},"40":{"start":{"line":101,"column":4},"end":{"line":101,"column":85}},"41":{"start":{"line":102,"column":4},"end":{"line":102,"column":68}},"42":{"start":{"line":103,"column":4},"end":{"line":103,"column":27}},"43":{"start":{"line":104,"column":4},"end":{"line":104,"column":21}},"44":{"start":{"line":111,"column":4},"end":{"line":119,"column":5}},"45":{"start":{"line":112,"column":6},"end":{"line":112,"column":77}},"46":{"start":{"line":113,"column":6},"end":{"line":118,"column":7}},"47":{"start":{"line":114,"column":8},"end":{"line":114,"column":32}},"48":{"start":{"line":116,"column":8},"end":{"line":116,"column":46}},"49":{"start":{"line":117,"column":8},"end":{"line":117,"column":15}},"50":{"start":{"line":126,"column":4},"end":{"line":140,"column":5}},"51":{"start":{"line":127,"column":6},"end":{"line":138,"column":7}},"52":{"start":{"line":128,"column":8},"end":{"line":128,"column":78}},"53":{"start":{"line":129,"column":8},"end":{"line":135,"column":9}},"54":{"start":{"line":130,"column":10},"end":{"line":130,"column":68}},"55":{"start":{"line":131,"column":10},"end":{"line":131,"column":47}},"56":{"start":{"line":133,"column":10},"end":{"line":133,"column":68}},"57":{"start":{"line":134,"column":10},"end":{"line":134,"column":33}},"58":{"start":{"line":137,"column":8},"end":{"line":137,"column":78}},"59":{"start":{"line":139,"column":6},"end":{"line":139,"column":37}},"60":{"start":{"line":143,"column":2},"end":{"line":143,"column":9}},"61":{"start":{"line":191,"column":0},"end":{"line":191,"column":27}},"62":{"start":{"line":192,"column":0},"end":{"line":192,"column":29}},"63":{"start":{"line":194,"column":0},"end":{"line":194,"column":20}},"64":{"start":{"line":196,"column":0},"end":{"line":196,"column":20}},"65":{"start":{"line":198,"column":0},"end":{"line":198,"column":52}},"66":{"start":{"line":200,"column":0},"end":{"line":200,"column":32}},"67":{"start":{"line":202,"column":0},"end":{"line":229,"column":2}},"68":{"start":{"line":203,"column":2},"end":{"line":203,"column":52}},"69":{"start":{"line":205,"column":2},"end":{"line":205,"column":15}},"70":{"start":{"line":206,"column":2},"end":{"line":208,"column":3}},"71":{"start":{"line":207,"column":4},"end":{"line":207,"column":30}},"72":{"start":{"line":209,"column":2},"end":{"line":209,"column":41}},"73":{"start":{"line":210,"column":2},"end":{"line":210,"column":38}},"74":{"start":{"line":212,"column":2},"end":{"line":212,"column":46}},"75":{"start":{"line":213,"column":2},"end":{"line":213,"column":37}},"76":{"start":{"line":215,"column":2},"end":{"line":215,"column":19}},"77":{"start":{"line":216,"column":2},"end":{"line":222,"column":3}},"78":{"start":{"line":217,"column":4},"end":{"line":217,"column":56}},"79":{"start":{"line":218,"column":4},"end":{"line":218,"column":87}},"80":{"start":{"line":219,"column":4},"end":{"line":221,"column":5}},"81":{"start":{"line":220,"column":6},"end":{"line":220,"column":34}},"82":{"start":{"line":223,"column":2},"end":{"line":223,"column":39}},"83":{"start":{"line":225,"column":2},"end":{"line":225,"column":75}},"84":{"start":{"line":226,"column":2},"end":{"line":226,"column":51}},"85":{"start":{"line":228,"column":2},"end":{"line":228,"column":32}},"86":{"start":{"line":231,"column":0},"end":{"line":246,"column":2}},"87":{"start":{"line":232,"column":2},"end":{"line":232,"column":38}},"88":{"start":{"line":234,"column":2},"end":{"line":234,"column":47}},"89":{"start":{"line":236,"column":2},"end":{"line":236,"column":19}},"90":{"start":{"line":237,"column":2},"end":{"line":237,"column":37}},"91":{"start":{"line":238,"column":2},"end":{"line":238,"column":44}},"92":{"start":{"line":239,"column":2},"end":{"line":241,"column":3}},"93":{"start":{"line":240,"column":4},"end":{"line":240,"column":64}},"94":{"start":{"line":243,"column":2},"end":{"line":243,"column":53}},"95":{"start":{"line":245,"column":2},"end":{"line":245,"column":16}},"96":{"start":{"line":272,"column":0},"end":{"line":272,"column":25}},"97":{"start":{"line":274,"column":0},"end":{"line":274,"column":45}},"98":{"start":{"line":276,"column":0},"end":{"line":276,"column":39}},"99":{"start":{"line":278,"column":0},"end":{"line":280,"column":2}},"100":{"start":{"line":279,"column":2},"end":{"line":279,"column":27}},"101":{"start":{"line":282,"column":0},"end":{"line":284,"column":2}},"102":{"start":{"line":283,"column":2},"end":{"line":283,"column":22}},"103":{"start":{"line":305,"column":0},"end":{"line":305,"column":28}},"104":{"start":{"line":307,"column":0},"end":{"line":307,"column":75}},"105":{"start":{"line":309,"column":0},"end":{"line":309,"column":65}},"106":{"start":{"line":321,"column":0},"end":{"line":329,"column":2}},"107":{"start":{"line":322,"column":2},"end":{"line":327,"column":3}},"108":{"start":{"line":323,"column":4},"end":{"line":323,"column":31}},"109":{"start":{"line":324,"column":4},"end":{"line":324,"column":84}},"110":{"start":{"line":325,"column":4},"end":{"line":325,"column":44}},"111":{"start":{"line":326,"column":4},"end":{"line":326,"column":25}},"112":{"start":{"line":328,"column":2},"end":{"line":328,"column":27}},"113":{"start":{"line":331,"column":0},"end":{"line":338,"column":2}},"114":{"start":{"line":332,"column":2},"end":{"line":337,"column":3}},"115":{"start":{"line":333,"column":4},"end":{"line":333,"column":57}},"116":{"start":{"line":334,"column":4},"end":{"line":334,"column":33}},"117":{"start":{"line":336,"column":4},"end":{"line":336,"column":24}},"118":{"start":{"line":347,"column":0},"end":{"line":347,"column":29}},"119":{"start":{"line":349,"column":0},"end":{"line":349,"column":25}},"120":{"start":{"line":351,"column":0},"end":{"line":351,"column":47}},"121":{"start":{"line":361,"column":0},"end":{"line":365,"column":2}},"122":{"start":{"line":362,"column":2},"end":{"line":362,"column":29}},"123":{"start":{"line":363,"column":2},"end":{"line":363,"column":42}},"124":{"start":{"line":364,"column":2},"end":{"line":364,"column":23}},"125":{"start":{"line":367,"column":0},"end":{"line":369,"column":2}},"126":{"start":{"line":368,"column":2},"end":{"line":368,"column":42}},"127":{"start":{"line":378,"column":0},"end":{"line":378,"column":31}},"128":{"start":{"line":380,"column":0},"end":{"line":380,"column":27}},"129":{"start":{"line":382,"column":0},"end":{"line":382,"column":46}},"130":{"start":{"line":393,"column":0},"end":{"line":399,"column":2}},"131":{"start":{"line":394,"column":2},"end":{"line":394,"column":29}},"132":{"start":{"line":395,"column":2},"end":{"line":395,"column":45}},"133":{"start":{"line":396,"column":2},"end":{"line":396,"column":52}},"134":{"start":{"line":397,"column":2},"end":{"line":397,"column":32}},"135":{"start":{"line":398,"column":2},"end":{"line":398,"column":23}},"136":{"start":{"line":401,"column":0},"end":{"line":403,"column":2}},"137":{"start":{"line":402,"column":2},"end":{"line":402,"column":51}},"138":{"start":{"line":413,"column":0},"end":{"line":413,"column":29}},"139":{"start":{"line":415,"column":0},"end":{"line":415,"column":25}},"140":{"start":{"line":417,"column":0},"end":{"line":417,"column":47}},"141":{"start":{"line":437,"column":0},"end":{"line":455,"column":2}},"142":{"start":{"line":438,"column":2},"end":{"line":438,"column":64}},"143":{"start":{"line":439,"column":2},"end":{"line":445,"column":5}},"144":{"start":{"line":440,"column":4},"end":{"line":444,"column":5}},"145":{"start":{"line":441,"column":6},"end":{"line":441,"column":65}},"146":{"start":{"line":442,"column":6},"end":{"line":442,"column":47}},"147":{"start":{"line":443,"column":6},"end":{"line":443,"column":78}},"148":{"start":{"line":446,"column":2},"end":{"line":446,"column":84}},"149":{"start":{"line":448,"column":2},"end":{"line":448,"column":47}},"150":{"start":{"line":449,"column":2},"end":{"line":452,"column":3}},"151":{"start":{"line":450,"column":4},"end":{"line":450,"column":57}},"152":{"start":{"line":451,"column":4},"end":{"line":451,"column":53}},"153":{"start":{"line":454,"column":2},"end":{"line":454,"column":23}},"154":{"start":{"line":457,"column":0},"end":{"line":473,"column":2}},"155":{"start":{"line":458,"column":2},"end":{"line":458,"column":22}},"156":{"start":{"line":460,"column":2},"end":{"line":462,"column":3}},"157":{"start":{"line":461,"column":4},"end":{"line":461,"column":36}},"158":{"start":{"line":463,"column":2},"end":{"line":472,"column":3}},"159":{"start":{"line":464,"column":4},"end":{"line":464,"column":49}},"160":{"start":{"line":465,"column":4},"end":{"line":465,"column":38}},"161":{"start":{"line":466,"column":4},"end":{"line":471,"column":5}},"162":{"start":{"line":467,"column":6},"end":{"line":467,"column":47}},"163":{"start":{"line":468,"column":6},"end":{"line":468,"column":81}},"164":{"start":{"line":476,"column":0},"end":{"line":476,"column":25}},"165":{"start":{"line":480,"column":0},"end":{"line":480,"column":78}},"166":{"start":{"line":484,"column":0},"end":{"line":484,"column":75}},"167":{"start":{"line":490,"column":0},"end":{"line":490,"column":76}},"168":{"start":{"line":504,"column":0},"end":{"line":504,"column":33}},"169":{"start":{"line":506,"column":0},"end":{"line":506,"column":47}},"170":{"start":{"line":508,"column":0},"end":{"line":508,"column":77}},"171":{"start":{"line":522,"column":0},"end":{"line":531,"column":2}},"172":{"start":{"line":523,"column":2},"end":{"line":523,"column":29}},"173":{"start":{"line":525,"column":2},"end":{"line":525,"column":46}},"174":{"start":{"line":526,"column":2},"end":{"line":526,"column":85}},"175":{"start":{"line":527,"column":2},"end":{"line":527,"column":43}},"176":{"start":{"line":529,"column":2},"end":{"line":529,"column":23}},"177":{"start":{"line":530,"column":2},"end":{"line":530,"column":27}},"178":{"start":{"line":533,"column":0},"end":{"line":536,"column":2}},"179":{"start":{"line":534,"column":2},"end":{"line":534,"column":62}},"180":{"start":{"line":535,"column":2},"end":{"line":535,"column":31}},"181":{"start":{"line":549,"column":0},"end":{"line":549,"column":25}},"182":{"start":{"line":551,"column":0},"end":{"line":551,"column":27}},"183":{"start":{"line":553,"column":0},"end":{"line":553,"column":39}},"184":{"start":{"line":557,"column":0},"end":{"line":559,"column":2}},"185":{"start":{"line":558,"column":2},"end":{"line":558,"column":27}},"186":{"start":{"line":561,"column":0},"end":{"line":566,"column":2}},"187":{"start":{"line":562,"column":2},"end":{"line":564,"column":3}},"188":{"start":{"line":563,"column":4},"end":{"line":563,"column":37}},"189":{"start":{"line":565,"column":2},"end":{"line":565,"column":22}},"190":{"start":{"line":575,"column":0},"end":{"line":575,"column":27}},"191":{"start":{"line":577,"column":0},"end":{"line":577,"column":23}},"192":{"start":{"line":579,"column":0},"end":{"line":579,"column":57}},"193":{"start":{"line":596,"column":0},"end":{"line":608,"column":2}},"194":{"start":{"line":597,"column":2},"end":{"line":597,"column":29}},"195":{"start":{"line":599,"column":2},"end":{"line":599,"column":38}},"196":{"start":{"line":600,"column":2},"end":{"line":600,"column":73}},"197":{"start":{"line":601,"column":2},"end":{"line":601,"column":39}},"198":{"start":{"line":603,"column":2},"end":{"line":603,"column":45}},"199":{"start":{"line":604,"column":2},"end":{"line":604,"column":52}},"200":{"start":{"line":605,"column":2},"end":{"line":605,"column":32}},"201":{"start":{"line":607,"column":2},"end":{"line":607,"column":23}},"202":{"start":{"line":610,"column":0},"end":{"line":613,"column":2}},"203":{"start":{"line":611,"column":2},"end":{"line":611,"column":58}},"204":{"start":{"line":612,"column":2},"end":{"line":612,"column":51}},"205":{"start":{"line":622,"column":0},"end":{"line":622,"column":34}},"206":{"start":{"line":624,"column":0},"end":{"line":624,"column":30}},"207":{"start":{"line":626,"column":0},"end":{"line":626,"column":55}},"208":{"start":{"line":633,"column":0},"end":{"line":641,"column":2}},"209":{"start":{"line":634,"column":2},"end":{"line":634,"column":29}},"210":{"start":{"line":636,"column":2},"end":{"line":636,"column":38}},"211":{"start":{"line":637,"column":2},"end":{"line":637,"column":73}},"212":{"start":{"line":638,"column":2},"end":{"line":638,"column":39}},"213":{"start":{"line":640,"column":2},"end":{"line":640,"column":23}},"214":{"start":{"line":643,"column":0},"end":{"line":645,"column":2}},"215":{"start":{"line":644,"column":2},"end":{"line":644,"column":58}},"216":{"start":{"line":663,"column":0},"end":{"line":663,"column":33}},"217":{"start":{"line":665,"column":0},"end":{"line":665,"column":68}},"218":{"start":{"line":667,"column":0},"end":{"line":667,"column":58}},"219":{"start":{"line":669,"column":0},"end":{"line":671,"column":2}},"220":{"start":{"line":670,"column":2},"end":{"line":670,"column":27}},"221":{"start":{"line":673,"column":0},"end":{"line":675,"column":2}},"222":{"start":{"line":674,"column":2},"end":{"line":674,"column":22}},"223":{"start":{"line":680,"column":0},"end":{"line":691,"column":2}},"224":{"start":{"line":698,"column":0},"end":{"line":698,"column":25}},"225":{"start":{"line":702,"column":0},"end":{"line":702,"column":21}},"226":{"start":{"line":703,"column":0},"end":{"line":741,"column":2}},"227":{"start":{"line":704,"column":2},"end":{"line":706,"column":3}},"228":{"start":{"line":705,"column":4},"end":{"line":705,"column":16}},"229":{"start":{"line":708,"column":2},"end":{"line":710,"column":3}},"230":{"start":{"line":709,"column":4},"end":{"line":709,"column":20}},"231":{"start":{"line":712,"column":2},"end":{"line":712,"column":26}},"232":{"start":{"line":713,"column":2},"end":{"line":713,"column":20}},"233":{"start":{"line":715,"column":2},"end":{"line":715,"column":34}},"234":{"start":{"line":716,"column":2},"end":{"line":718,"column":5}},"235":{"start":{"line":717,"column":4},"end":{"line":717,"column":33}},"236":{"start":{"line":720,"column":2},"end":{"line":730,"column":3}},"237":{"start":{"line":721,"column":4},"end":{"line":725,"column":5}},"238":{"start":{"line":722,"column":6},"end":{"line":722,"column":70}},"239":{"start":{"line":724,"column":6},"end":{"line":724,"column":49}},"240":{"start":{"line":727,"column":4},"end":{"line":729,"column":5}},"241":{"start":{"line":728,"column":6},"end":{"line":728,"column":42}},"242":{"start":{"line":732,"column":2},"end":{"line":734,"column":3}},"243":{"start":{"line":733,"column":4},"end":{"line":733,"column":68}},"244":{"start":{"line":736,"column":2},"end":{"line":738,"column":5}},"245":{"start":{"line":737,"column":4},"end":{"line":737,"column":38}},"246":{"start":{"line":740,"column":2},"end":{"line":740,"column":18}},"247":{"start":{"line":744,"column":0},"end":{"line":746,"column":2}},"248":{"start":{"line":745,"column":2},"end":{"line":745,"column":30}}},"branchMap":{"1":{"line":27,"type":"binary-expr","locations":[{"start":{"line":27,"column":20},"end":{"line":27,"column":29}},{"start":{"line":27,"column":33},"end":{"line":27,"column":49}}]},"2":{"line":47,"type":"if","locations":[{"start":{"line":47,"column":4},"end":{"line":47,"column":4}},{"start":{"line":47,"column":4},"end":{"line":47,"column":4}}]},"3":{"line":69,"type":"binary-expr","locations":[{"start":{"line":69,"column":20},"end":{"line":69,"column":29}},{"start":{"line":69,"column":33},"end":{"line":69,"column":49}}]},"4":{"line":84,"type":"if","locations":[{"start":{"line":84,"column":2},"end":{"line":84,"column":2}},{"start":{"line":84,"column":2},"end":{"line":84,"column":2}}]},"5":{"line":94,"type":"if","locations":[{"start":{"line":94,"column":2},"end":{"line":94,"column":2}},{"start":{"line":94,"column":2},"end":{"line":94,"column":2}}]},"6":{"line":111,"type":"if","locations":[{"start":{"line":111,"column":4},"end":{"line":111,"column":4}},{"start":{"line":111,"column":4},"end":{"line":111,"column":4}}]},"7":{"line":111,"type":"binary-expr","locations":[{"start":{"line":111,"column":9},"end":{"line":111,"column":45}},{"start":{"line":111,"column":50},"end":{"line":111,"column":72}}]},"8":{"line":113,"type":"if","locations":[{"start":{"line":113,"column":6},"end":{"line":113,"column":6}},{"start":{"line":113,"column":6},"end":{"line":113,"column":6}}]},"9":{"line":126,"type":"if","locations":[{"start":{"line":126,"column":4},"end":{"line":126,"column":4}},{"start":{"line":126,"column":4},"end":{"line":126,"column":4}}]},"10":{"line":126,"type":"binary-expr","locations":[{"start":{"line":126,"column":9},"end":{"line":126,"column":45}},{"start":{"line":126,"column":50},"end":{"line":126,"column":73}}]},"11":{"line":127,"type":"if","locations":[{"start":{"line":127,"column":6},"end":{"line":127,"column":6}},{"start":{"line":127,"column":6},"end":{"line":127,"column":6}}]},"12":{"line":129,"type":"if","locations":[{"start":{"line":129,"column":8},"end":{"line":129,"column":8}},{"start":{"line":129,"column":8},"end":{"line":129,"column":8}}]},"13":{"line":219,"type":"if","locations":[{"start":{"line":219,"column":4},"end":{"line":219,"column":4}},{"start":{"line":219,"column":4},"end":{"line":219,"column":4}}]},"14":{"line":225,"type":"binary-expr","locations":[{"start":{"line":225,"column":10},"end":{"line":225,"column":27}},{"start":{"line":225,"column":33},"end":{"line":225,"column":58}}]},"15":{"line":226,"type":"binary-expr","locations":[{"start":{"line":226,"column":29},"end":{"line":226,"column":41}},{"start":{"line":226,"column":45},"end":{"line":226,"column":46}}]},"16":{"line":322,"type":"if","locations":[{"start":{"line":322,"column":2},"end":{"line":322,"column":2}},{"start":{"line":322,"column":2},"end":{"line":322,"column":2}}]},"17":{"line":324,"type":"binary-expr","locations":[{"start":{"line":324,"column":12},"end":{"line":324,"column":31}},{"start":{"line":324,"column":37},"end":{"line":324,"column":65}}]},"18":{"line":332,"type":"if","locations":[{"start":{"line":332,"column":2},"end":{"line":332,"column":2}},{"start":{"line":332,"column":2},"end":{"line":332,"column":2}}]},"19":{"line":396,"type":"binary-expr","locations":[{"start":{"line":396,"column":10},"end":{"line":396,"column":19}},{"start":{"line":396,"column":25},"end":{"line":396,"column":43}}]},"20":{"line":440,"type":"if","locations":[{"start":{"line":440,"column":4},"end":{"line":440,"column":4}},{"start":{"line":440,"column":4},"end":{"line":440,"column":4}}]},"21":{"line":443,"type":"cond-expr","locations":[{"start":{"line":443,"column":52},"end":{"line":443,"column":66}},{"start":{"line":443,"column":69},"end":{"line":443,"column":74}}]},"22":{"line":460,"type":"if","locations":[{"start":{"line":460,"column":2},"end":{"line":460,"column":2}},{"start":{"line":460,"column":2},"end":{"line":460,"column":2}}]},"23":{"line":466,"type":"if","locations":[{"start":{"line":466,"column":4},"end":{"line":466,"column":4}},{"start":{"line":466,"column":4},"end":{"line":466,"column":4}}]},"24":{"line":468,"type":"cond-expr","locations":[{"start":{"line":468,"column":52},"end":{"line":468,"column":72}},{"start":{"line":468,"column":75},"end":{"line":468,"column":80}}]},"25":{"line":526,"type":"binary-expr","locations":[{"start":{"line":526,"column":10},"end":{"line":526,"column":30}},{"start":{"line":526,"column":36},"end":{"line":526,"column":65}}]},"26":{"line":562,"type":"if","locations":[{"start":{"line":562,"column":2},"end":{"line":562,"column":2}},{"start":{"line":562,"column":2},"end":{"line":562,"column":2}}]},"27":{"line":600,"type":"binary-expr","locations":[{"start":{"line":600,"column":10},"end":{"line":600,"column":26}},{"start":{"line":600,"column":32},"end":{"line":600,"column":57}}]},"28":{"line":604,"type":"binary-expr","locations":[{"start":{"line":604,"column":10},"end":{"line":604,"column":19}},{"start":{"line":604,"column":25},"end":{"line":604,"column":43}}]},"29":{"line":637,"type":"binary-expr","locations":[{"start":{"line":637,"column":10},"end":{"line":637,"column":26}},{"start":{"line":637,"column":32},"end":{"line":637,"column":57}}]},"30":{"line":704,"type":"if","locations":[{"start":{"line":704,"column":2},"end":{"line":704,"column":2}},{"start":{"line":704,"column":2},"end":{"line":704,"column":2}}]},"31":{"line":708,"type":"if","locations":[{"start":{"line":708,"column":2},"end":{"line":708,"column":2}},{"start":{"line":708,"column":2},"end":{"line":708,"column":2}}]},"32":{"line":720,"type":"if","locations":[{"start":{"line":720,"column":2},"end":{"line":720,"column":2}},{"start":{"line":720,"column":2},"end":{"line":720,"column":2}}]},"33":{"line":721,"type":"if","locations":[{"start":{"line":721,"column":4},"end":{"line":721,"column":4}},{"start":{"line":721,"column":4},"end":{"line":721,"column":4}}]},"34":{"line":727,"type":"if","locations":[{"start":{"line":727,"column":4},"end":{"line":727,"column":4}},{"start":{"line":727,"column":4},"end":{"line":727,"column":4}}]},"35":{"line":732,"type":"if","locations":[{"start":{"line":732,"column":2},"end":{"line":732,"column":2}},{"start":{"line":732,"column":2},"end":{"line":732,"column":2}}]},"36":{"line":736,"type":"binary-expr","locations":[{"start":{"line":736,"column":31},"end":{"line":736,"column":42}},{"start":{"line":736,"column":46},"end":{"line":736,"column":48}}]}}},"/data/upstream/node-http2/lib/http.js":{"path":"/data/upstream/node-http2/lib/http.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":3,"24":1,"25":1,"26":1,"27":6,"28":1,"29":25,"30":25,"31":25,"32":25,"33":25,"34":25,"35":25,"36":25,"37":25,"38":25,"39":25,"40":25,"41":1,"42":1,"43":24,"44":168,"45":168,"46":0,"47":0,"48":0,"49":24,"50":73,"51":13,"52":24,"53":24,"54":2,"55":1,"56":24,"57":1,"58":1,"59":60,"60":0,"61":0,"62":60,"63":1,"64":27,"65":27,"66":27,"67":27,"68":27,"69":1,"70":1,"71":13,"72":12,"73":1,"74":1,"75":31,"76":23,"77":2,"78":0,"79":2,"80":23,"81":8,"82":1,"83":4,"84":0,"85":4,"86":4,"87":0,"88":4,"89":1,"90":1,"91":0,"92":1,"93":1,"94":3,"95":1,"96":2,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":13,"106":13,"107":13,"108":13,"109":13,"110":13,"111":10,"112":10,"113":10,"114":10,"115":10,"116":10,"117":10,"118":9,"119":9,"120":0,"121":10,"122":3,"123":1,"124":1,"125":1,"126":2,"127":2,"128":11,"129":1,"130":1,"131":10,"132":10,"133":10,"134":10,"135":10,"136":10,"137":10,"138":10,"139":10,"140":10,"141":1,"142":0,"143":0,"144":0,"145":0,"146":1,"147":9,"148":9,"149":1,"150":4,"151":4,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":0,"159":1,"160":1,"161":1,"162":9,"163":0,"164":9,"165":1,"166":0,"167":0,"168":1,"169":10,"170":1,"171":1,"172":10,"173":9,"174":9,"175":9,"176":1,"177":12,"178":1,"179":1,"180":12,"181":12,"182":12,"183":12,"184":12,"185":12,"186":12,"187":12,"188":1,"189":12,"190":12,"191":12,"192":12,"193":12,"194":12,"195":1,"196":1,"197":12,"198":1,"199":11,"200":12,"201":1,"202":12,"203":12,"204":11,"205":12,"206":12,"207":12,"208":12,"209":1,"210":23,"211":11,"212":1,"213":11,"214":11,"215":1,"216":12,"217":12,"218":1,"219":10,"220":1,"221":2,"222":1,"223":2,"224":0,"225":2,"226":2,"227":2,"228":2,"229":1,"230":12,"231":0,"232":12,"233":1,"234":1,"235":1,"236":1,"237":1,"238":1,"239":4,"240":1,"241":7,"242":1,"243":4,"244":4,"245":4,"246":4,"247":4,"248":4,"249":4,"250":4,"251":4,"252":4,"253":1,"254":1,"255":12,"256":8,"257":12,"258":12,"259":12,"260":12,"261":12,"262":12,"263":1,"264":1,"265":11,"266":11,"267":7,"268":11,"269":11,"270":1,"271":1,"272":10,"273":1,"274":1,"275":1,"276":1,"277":9,"278":9,"279":9,"280":9,"281":9,"282":9,"283":9,"284":0,"285":9,"286":9,"287":1,"288":9,"289":9,"290":9,"291":9,"292":9,"293":9,"294":9,"295":9,"296":1,"297":1,"298":0,"299":8,"300":8,"301":8,"302":8,"303":0,"304":9,"305":9,"306":9,"307":9,"308":0,"309":11,"310":1,"311":7,"312":7,"313":7,"314":1,"315":9,"316":9,"317":9,"318":9,"319":9,"320":9,"321":9,"322":9,"323":1,"324":1,"325":1,"326":1,"327":1,"328":15,"329":15,"330":15,"331":1,"332":1,"333":11,"334":11,"335":11,"336":1,"337":11,"338":11,"339":11,"340":0,"341":11,"342":11,"343":11,"344":11,"345":11,"346":11,"347":11,"348":11,"349":11,"350":11,"351":11,"352":1,"353":4,"354":4,"355":4,"356":1,"357":0,"358":0,"359":0,"360":1,"361":40,"362":0,"363":40,"364":1,"365":3,"366":1,"367":2,"368":1,"369":1,"370":3,"371":1,"372":2,"373":1,"374":1,"375":3,"376":1,"377":2,"378":1,"379":1,"380":3,"381":1,"382":2,"383":1,"384":1,"385":1,"386":2,"387":2,"388":2,"389":2,"390":0,"391":1,"392":13,"393":1,"394":1,"395":12,"396":12,"397":12,"398":12,"399":1,"400":2,"401":2,"402":2,"403":2,"404":2,"405":2,"406":2,"407":2,"408":2,"409":2,"410":1,"411":1,"412":0,"413":1,"414":0,"415":1},"b":{"1":[0,1],"2":[0,1],"3":[0,1],"4":[0,168],"5":[13,60],"6":[0,60],"7":[60,60],"8":[12,1],"9":[23,8],"10":[2,21],"11":[0,2],"12":[0,4],"13":[0,4],"14":[0,1],"15":[13,2],"16":[13,2],"17":[10,3],"18":[13,10,3],"19":[9,0],"20":[9,9],"21":[1,2],"22":[0,9],"23":[1,0],"24":[1,0],"25":[1,0],"26":[0,9],"27":[9,9],"28":[0,0],"29":[0,0],"30":[1,9],"31":[9,0],"32":[1,11],"33":[11,1],"34":[12,11],"35":[11,12],"36":[1,1],"37":[0,2],"38":[2,2],"39":[2,1,1],"40":[2,2,2],"41":[0,12],"42":[12,0],"43":[0,0],"44":[4,4],"45":[7,7],"46":[4,1],"47":[4,1],"48":[8,4],"49":[12,12],"50":[12,3],"51":[12,4,1],"52":[12,1],"53":[12,1],"54":[1,11],"55":[12,11],"56":[7,4],"57":[1,10],"58":[1,9],"59":[0,9],"60":[9,0],"61":[1,8],"62":[1,0],"63":[8,0],"64":[9,0],"65":[0,11],"66":[11,10],"67":[0,0],"68":[0,40],"69":[40,0],"70":[0,0],"71":[1,2],"72":[1,1],"73":[1,2],"74":[1,1],"75":[1,2],"76":[1,1],"77":[1,2],"78":[1,1],"79":[2,0]},"f":{"1":2,"2":3,"3":6,"4":25,"5":24,"6":2,"7":24,"8":60,"9":27,"10":13,"11":31,"12":4,"13":1,"14":3,"15":2,"16":13,"17":9,"18":10,"19":10,"20":0,"21":9,"22":4,"23":1,"24":1,"25":1,"26":9,"27":0,"28":10,"29":12,"30":12,"31":12,"32":12,"33":23,"34":11,"35":12,"36":10,"37":2,"38":12,"39":4,"40":7,"41":4,"42":12,"43":9,"44":9,"45":9,"46":7,"47":9,"48":1,"49":1,"50":15,"51":11,"52":4,"53":0,"54":40,"55":3,"56":3,"57":3,"58":3,"59":2,"60":13,"61":12,"62":2,"63":0,"64":0},"fnMap":{"1":{"name":"noop","line":173,"loc":{"start":{"line":173,"column":0},"end":{"line":173,"column":16}}},"2":{"name":"(anonymous_2)","line":182,"loc":{"start":{"line":182,"column":9},"end":{"line":182,"column":20}}},"3":{"name":"(anonymous_3)","line":188,"loc":{"start":{"line":188,"column":16},"end":{"line":188,"column":33}}},"4":{"name":"IncomingMessage","line":195,"loc":{"start":{"line":195,"column":0},"end":{"line":195,"column":33}}},"5":{"name":"_onHeaders","line":224,"loc":{"start":{"line":224,"column":39},"end":{"line":224,"column":68}}},"6":{"name":"(anonymous_6)","line":247,"loc":{"start":{"line":247,"column":28},"end":{"line":247,"column":46}}},"7":{"name":"_onEnd","line":252,"loc":{"start":{"line":252,"column":35},"end":{"line":252,"column":53}}},"8":{"name":"_checkSpecialHeader","line":258,"loc":{"start":{"line":258,"column":48},"end":{"line":258,"column":89}}},"9":{"name":"OutgoingMessage","line":271,"loc":{"start":{"line":271,"column":0},"end":{"line":271,"column":27}}},"10":{"name":"_write","line":283,"loc":{"start":{"line":283,"column":35},"end":{"line":283,"column":78}}},"11":{"name":"_finish","line":291,"loc":{"start":{"line":291,"column":36},"end":{"line":291,"column":55}}},"12":{"name":"setHeader","line":306,"loc":{"start":{"line":306,"column":38},"end":{"line":306,"column":70}}},"13":{"name":"removeHeader","line":318,"loc":{"start":{"line":318,"column":41},"end":{"line":318,"column":69}}},"14":{"name":"getHeader","line":326,"loc":{"start":{"line":326,"column":38},"end":{"line":326,"column":63}}},"15":{"name":"addTrailers","line":330,"loc":{"start":{"line":330,"column":40},"end":{"line":330,"column":71}}},"16":{"name":"Server","line":350,"loc":{"start":{"line":350,"column":0},"end":{"line":350,"column":25}}},"17":{"name":"(anonymous_17)","line":367,"loc":{"start":{"line":367,"column":40},"end":{"line":367,"column":57}}},"18":{"name":"_start","line":395,"loc":{"start":{"line":395,"column":26},"end":{"line":395,"column":50}}},"19":{"name":"_onStream","line":406,"loc":{"start":{"line":406,"column":24},"end":{"line":406,"column":51}}},"20":{"name":"_fallback","line":418,"loc":{"start":{"line":418,"column":29},"end":{"line":418,"column":56}}},"21":{"name":"listen","line":434,"loc":{"start":{"line":434,"column":26},"end":{"line":434,"column":58}}},"22":{"name":"close","line":440,"loc":{"start":{"line":440,"column":25},"end":{"line":440,"column":50}}},"23":{"name":"setTimeout","line":445,"loc":{"start":{"line":445,"column":30},"end":{"line":445,"column":69}}},"24":{"name":"getTimeout","line":452,"loc":{"start":{"line":452,"column":7},"end":{"line":452,"column":29}}},"25":{"name":"setTimeout","line":459,"loc":{"start":{"line":459,"column":7},"end":{"line":459,"column":36}}},"26":{"name":"on","line":470,"loc":{"start":{"line":470,"column":22},"end":{"line":470,"column":51}}},"27":{"name":"addContext","line":479,"loc":{"start":{"line":479,"column":30},"end":{"line":479,"column":73}}},"28":{"name":"createServer","line":485,"loc":{"start":{"line":485,"column":0},"end":{"line":485,"column":48}}},"29":{"name":"IncomingRequest","line":503,"loc":{"start":{"line":503,"column":0},"end":{"line":503,"column":33}}},"30":{"name":"_onHeaders","line":512,"loc":{"start":{"line":512,"column":39},"end":{"line":512,"column":68}}},"31":{"name":"OutgoingResponse","line":543,"loc":{"start":{"line":543,"column":0},"end":{"line":543,"column":34}}},"32":{"name":"writeHead","line":556,"loc":{"start":{"line":556,"column":39},"end":{"line":556,"column":93}}},"33":{"name":"_implicitHeaders","line":580,"loc":{"start":{"line":580,"column":46},"end":{"line":580,"column":74}}},"34":{"name":"write","line":586,"loc":{"start":{"line":586,"column":35},"end":{"line":586,"column":52}}},"35":{"name":"end","line":591,"loc":{"start":{"line":591,"column":33},"end":{"line":591,"column":48}}},"36":{"name":"_onRequestHeaders","line":596,"loc":{"start":{"line":596,"column":47},"end":{"line":596,"column":83}}},"37":{"name":"push","line":600,"loc":{"start":{"line":600,"column":34},"end":{"line":600,"column":57}}},"38":{"name":"on","line":626,"loc":{"start":{"line":626,"column":32},"end":{"line":626,"column":61}}},"39":{"name":"request","line":642,"loc":{"start":{"line":642,"column":18},"end":{"line":642,"column":54}}},"40":{"name":"get","line":645,"loc":{"start":{"line":645,"column":14},"end":{"line":645,"column":46}}},"41":{"name":"Agent","line":652,"loc":{"start":{"line":652,"column":0},"end":{"line":652,"column":24}}},"42":{"name":"request","line":674,"loc":{"start":{"line":674,"column":26},"end":{"line":674,"column":62}}},"43":{"name":"(anonymous_43)","line":728,"loc":{"start":{"line":728,"column":30},"end":{"line":728,"column":47}}},"44":{"name":"negotiated","line":737,"loc":{"start":{"line":737,"column":4},"end":{"line":737,"column":26}}},"45":{"name":"(anonymous_45)","line":764,"loc":{"start":{"line":764,"column":19},"end":{"line":764,"column":38}}},"46":{"name":"get","line":777,"loc":{"start":{"line":777,"column":22},"end":{"line":777,"column":54}}},"47":{"name":"unbundleSocket","line":783,"loc":{"start":{"line":783,"column":0},"end":{"line":783,"column":32}}},"48":{"name":"getMaxSockets","line":795,"loc":{"start":{"line":795,"column":7},"end":{"line":795,"column":32}}},"49":{"name":"setMaxSockets","line":798,"loc":{"start":{"line":798,"column":7},"end":{"line":798,"column":37}}},"50":{"name":"OutgoingRequest","line":808,"loc":{"start":{"line":808,"column":0},"end":{"line":808,"column":27}}},"51":{"name":"_start","line":817,"loc":{"start":{"line":817,"column":35},"end":{"line":817,"column":68}}},"52":{"name":"_fallback","line":850,"loc":{"start":{"line":850,"column":38},"end":{"line":850,"column":66}}},"53":{"name":"setPriority","line":856,"loc":{"start":{"line":856,"column":40},"end":{"line":856,"column":71}}},"54":{"name":"on","line":866,"loc":{"start":{"line":866,"column":31},"end":{"line":866,"column":60}}},"55":{"name":"setNoDelay","line":875,"loc":{"start":{"line":875,"column":39},"end":{"line":875,"column":68}}},"56":{"name":"setSocketKeepAlive","line":883,"loc":{"start":{"line":883,"column":47},"end":{"line":883,"column":97}}},"57":{"name":"setTimeout","line":891,"loc":{"start":{"line":891,"column":39},"end":{"line":891,"column":78}}},"58":{"name":"abort","line":900,"loc":{"start":{"line":900,"column":34},"end":{"line":900,"column":51}}},"59":{"name":"_onPromise","line":911,"loc":{"start":{"line":911,"column":39},"end":{"line":911,"column":76}}},"60":{"name":"IncomingResponse","line":926,"loc":{"start":{"line":926,"column":0},"end":{"line":926,"column":34}}},"61":{"name":"_onHeaders","line":935,"loc":{"start":{"line":935,"column":40},"end":{"line":935,"column":69}}},"62":{"name":"IncomingPromise","line":956,"loc":{"start":{"line":956,"column":0},"end":{"line":956,"column":57}}},"63":{"name":"cancel","line":975,"loc":{"start":{"line":975,"column":35},"end":{"line":975,"column":53}}},"64":{"name":"setPriority","line":979,"loc":{"start":{"line":979,"column":40},"end":{"line":979,"column":71}}}},"statementMap":{"1":{"start":{"line":131,"column":0},"end":{"line":131,"column":25}},"2":{"start":{"line":132,"column":0},"end":{"line":132,"column":25}},"3":{"start":{"line":133,"column":0},"end":{"line":133,"column":27}},"4":{"start":{"line":134,"column":0},"end":{"line":134,"column":50}},"5":{"start":{"line":135,"column":0},"end":{"line":135,"column":48}},"6":{"start":{"line":136,"column":0},"end":{"line":136,"column":42}},"7":{"start":{"line":137,"column":0},"end":{"line":137,"column":42}},"8":{"start":{"line":138,"column":0},"end":{"line":138,"column":46}},"9":{"start":{"line":139,"column":0},"end":{"line":139,"column":27}},"10":{"start":{"line":140,"column":0},"end":{"line":140,"column":29}},"11":{"start":{"line":142,"column":0},"end":{"line":142,"column":41}},"12":{"start":{"line":143,"column":0},"end":{"line":143,"column":42}},"13":{"start":{"line":144,"column":0},"end":{"line":144,"column":42}},"14":{"start":{"line":145,"column":0},"end":{"line":145,"column":28}},"15":{"start":{"line":147,"column":0},"end":{"line":155,"column":2}},"16":{"start":{"line":159,"column":0},"end":{"line":159,"column":45}},"17":{"start":{"line":162,"column":0},"end":{"line":162,"column":70}},"18":{"start":{"line":165,"column":0},"end":{"line":165,"column":67}},"19":{"start":{"line":166,"column":0},"end":{"line":166,"column":80}},"20":{"start":{"line":167,"column":0},"end":{"line":167,"column":84}},"21":{"start":{"line":173,"column":0},"end":{"line":173,"column":18}},"22":{"start":{"line":174,"column":0},"end":{"line":183,"column":2}},"23":{"start":{"line":182,"column":22},"end":{"line":182,"column":34}},"24":{"start":{"line":186,"column":0},"end":{"line":186,"column":25}},"25":{"start":{"line":187,"column":0},"end":{"line":187,"column":95}},"26":{"start":{"line":188,"column":0},"end":{"line":190,"column":3}},"27":{"start":{"line":189,"column":2},"end":{"line":189,"column":65}},"28":{"start":{"line":195,"column":0},"end":{"line":217,"column":1}},"29":{"start":{"line":197,"column":2},"end":{"line":197,"column":25}},"30":{"start":{"line":198,"column":2},"end":{"line":198,"column":20}},"31":{"start":{"line":199,"column":2},"end":{"line":199,"column":37}},"32":{"start":{"line":201,"column":2},"end":{"line":201,"column":55}},"33":{"start":{"line":205,"column":2},"end":{"line":205,"column":27}},"34":{"start":{"line":206,"column":2},"end":{"line":206,"column":28}},"35":{"start":{"line":207,"column":2},"end":{"line":207,"column":28}},"36":{"start":{"line":210,"column":2},"end":{"line":210,"column":20}},"37":{"start":{"line":211,"column":2},"end":{"line":211,"column":28}},"38":{"start":{"line":212,"column":2},"end":{"line":212,"column":36}},"39":{"start":{"line":215,"column":2},"end":{"line":215,"column":53}},"40":{"start":{"line":216,"column":2},"end":{"line":216,"column":45}},"41":{"start":{"line":218,"column":0},"end":{"line":218,"column":110}},"42":{"start":{"line":224,"column":0},"end":{"line":250,"column":2}},"43":{"start":{"line":229,"column":2},"end":{"line":236,"column":3}},"44":{"start":{"line":230,"column":4},"end":{"line":230,"column":35}},"45":{"start":{"line":231,"column":4},"end":{"line":235,"column":5}},"46":{"start":{"line":232,"column":6},"end":{"line":232,"column":84}},"47":{"start":{"line":233,"column":6},"end":{"line":233,"column":50}},"48":{"start":{"line":234,"column":6},"end":{"line":234,"column":13}},"49":{"start":{"line":239,"column":2},"end":{"line":243,"column":3}},"50":{"start":{"line":240,"column":4},"end":{"line":242,"column":5}},"51":{"start":{"line":241,"column":6},"end":{"line":241,"column":41}},"52":{"start":{"line":246,"column":2},"end":{"line":246,"column":18}},"53":{"start":{"line":247,"column":2},"end":{"line":249,"column":5}},"54":{"start":{"line":248,"column":4},"end":{"line":248,"column":36}},"55":{"start":{"line":252,"column":0},"end":{"line":254,"column":2}},"56":{"start":{"line":253,"column":2},"end":{"line":253,"column":40}},"57":{"start":{"line":256,"column":0},"end":{"line":256,"column":44}},"58":{"start":{"line":258,"column":0},"end":{"line":266,"column":0}},"59":{"start":{"line":259,"column":2},"end":{"line":262,"column":3}},"60":{"start":{"line":260,"column":4},"end":{"line":260,"column":91}},"61":{"start":{"line":261,"column":4},"end":{"line":261,"column":48}},"62":{"start":{"line":264,"column":2},"end":{"line":264,"column":15}},"63":{"start":{"line":271,"column":0},"end":{"line":280,"column":1}},"64":{"start":{"line":273,"column":2},"end":{"line":273,"column":22}},"65":{"start":{"line":275,"column":2},"end":{"line":275,"column":21}},"66":{"start":{"line":276,"column":2},"end":{"line":276,"column":29}},"67":{"start":{"line":277,"column":2},"end":{"line":277,"column":27}},"68":{"start":{"line":279,"column":2},"end":{"line":279,"column":34}},"69":{"start":{"line":281,"column":0},"end":{"line":281,"column":107}},"70":{"start":{"line":283,"column":0},"end":{"line":289,"column":2}},"71":{"start":{"line":284,"column":2},"end":{"line":288,"column":3}},"72":{"start":{"line":285,"column":4},"end":{"line":285,"column":49}},"73":{"start":{"line":287,"column":4},"end":{"line":287,"column":75}},"74":{"start":{"line":291,"column":0},"end":{"line":304,"column":2}},"75":{"start":{"line":292,"column":2},"end":{"line":303,"column":3}},"76":{"start":{"line":293,"column":4},"end":{"line":299,"column":5}},"77":{"start":{"line":294,"column":6},"end":{"line":298,"column":7}},"78":{"start":{"line":295,"column":8},"end":{"line":295,"column":49}},"79":{"start":{"line":297,"column":8},"end":{"line":297,"column":44}},"80":{"start":{"line":300,"column":4},"end":{"line":300,"column":22}},"81":{"start":{"line":302,"column":4},"end":{"line":302,"column":49}},"82":{"start":{"line":306,"column":0},"end":{"line":316,"column":2}},"83":{"start":{"line":307,"column":2},"end":{"line":315,"column":3}},"84":{"start":{"line":308,"column":4},"end":{"line":308,"column":63}},"85":{"start":{"line":310,"column":4},"end":{"line":310,"column":30}},"86":{"start":{"line":311,"column":4},"end":{"line":313,"column":5}},"87":{"start":{"line":312,"column":6},"end":{"line":312,"column":63}},"88":{"start":{"line":314,"column":4},"end":{"line":314,"column":32}},"89":{"start":{"line":318,"column":0},"end":{"line":324,"column":2}},"90":{"start":{"line":319,"column":2},"end":{"line":323,"column":3}},"91":{"start":{"line":320,"column":4},"end":{"line":320,"column":66}},"92":{"start":{"line":322,"column":4},"end":{"line":322,"column":45}},"93":{"start":{"line":326,"column":0},"end":{"line":328,"column":2}},"94":{"start":{"line":327,"column":2},"end":{"line":327,"column":43}},"95":{"start":{"line":330,"column":0},"end":{"line":332,"column":2}},"96":{"start":{"line":331,"column":2},"end":{"line":331,"column":28}},"97":{"start":{"line":334,"column":0},"end":{"line":334,"column":44}},"98":{"start":{"line":336,"column":0},"end":{"line":336,"column":94}},"99":{"start":{"line":341,"column":0},"end":{"line":341,"column":36}},"100":{"start":{"line":342,"column":0},"end":{"line":342,"column":24}},"101":{"start":{"line":343,"column":0},"end":{"line":343,"column":42}},"102":{"start":{"line":344,"column":0},"end":{"line":344,"column":44}},"103":{"start":{"line":345,"column":0},"end":{"line":345,"column":42}},"104":{"start":{"line":350,"column":0},"end":{"line":391,"column":1}},"105":{"start":{"line":351,"column":2},"end":{"line":351,"column":26}},"106":{"start":{"line":353,"column":2},"end":{"line":353,"column":74}},"107":{"start":{"line":354,"column":2},"end":{"line":354,"column":36}},"108":{"start":{"line":356,"column":2},"end":{"line":356,"column":37}},"109":{"start":{"line":357,"column":2},"end":{"line":357,"column":43}},"110":{"start":{"line":360,"column":2},"end":{"line":388,"column":3}},"111":{"start":{"line":361,"column":4},"end":{"line":361,"column":75}},"112":{"start":{"line":362,"column":4},"end":{"line":362,"column":23}},"113":{"start":{"line":363,"column":4},"end":{"line":363,"column":47}},"114":{"start":{"line":364,"column":4},"end":{"line":364,"column":47}},"115":{"start":{"line":365,"column":4},"end":{"line":365,"column":79}},"116":{"start":{"line":366,"column":4},"end":{"line":366,"column":56}},"117":{"start":{"line":367,"column":4},"end":{"line":373,"column":7}},"118":{"start":{"line":368,"column":6},"end":{"line":372,"column":7}},"119":{"start":{"line":369,"column":8},"end":{"line":369,"column":22}},"120":{"start":{"line":371,"column":8},"end":{"line":371,"column":25}},"121":{"start":{"line":374,"column":4},"end":{"line":374,"column":64}},"122":{"start":{"line":378,"column":7},"end":{"line":388,"column":3}},"123":{"start":{"line":379,"column":4},"end":{"line":379,"column":60}},"124":{"start":{"line":380,"column":4},"end":{"line":380,"column":25}},"125":{"start":{"line":381,"column":4},"end":{"line":381,"column":43}},"126":{"start":{"line":386,"column":4},"end":{"line":386,"column":81}},"127":{"start":{"line":387,"column":4},"end":{"line":387,"column":95}},"128":{"start":{"line":390,"column":2},"end":{"line":390,"column":58}},"129":{"start":{"line":392,"column":0},"end":{"line":392,"column":93}},"130":{"start":{"line":395,"column":0},"end":{"line":416,"column":2}},"131":{"start":{"line":396,"column":2},"end":{"line":396,"column":67}},"132":{"start":{"line":398,"column":2},"end":{"line":401,"column":54}},"133":{"start":{"line":403,"column":2},"end":{"line":403,"column":39}},"134":{"start":{"line":405,"column":2},"end":{"line":405,"column":18}},"135":{"start":{"line":406,"column":2},"end":{"line":411,"column":5}},"136":{"start":{"line":407,"column":4},"end":{"line":407,"column":48}},"137":{"start":{"line":408,"column":4},"end":{"line":408,"column":46}},"138":{"start":{"line":410,"column":4},"end":{"line":410,"column":78}},"139":{"start":{"line":413,"column":2},"end":{"line":413,"column":60}},"140":{"start":{"line":415,"column":2},"end":{"line":415,"column":44}},"141":{"start":{"line":418,"column":0},"end":{"line":429,"column":2}},"142":{"start":{"line":419,"column":2},"end":{"line":422,"column":52}},"143":{"start":{"line":424,"column":2},"end":{"line":426,"column":3}},"144":{"start":{"line":425,"column":4},"end":{"line":425,"column":64}},"145":{"start":{"line":428,"column":2},"end":{"line":428,"column":34}},"146":{"start":{"line":434,"column":0},"end":{"line":438,"column":2}},"147":{"start":{"line":435,"column":2},"end":{"line":436,"column":55}},"148":{"start":{"line":437,"column":2},"end":{"line":437,"column":53}},"149":{"start":{"line":440,"column":0},"end":{"line":443,"column":2}},"150":{"start":{"line":441,"column":2},"end":{"line":441,"column":35}},"151":{"start":{"line":442,"column":2},"end":{"line":442,"column":31}},"152":{"start":{"line":445,"column":0},"end":{"line":449,"column":2}},"153":{"start":{"line":446,"column":2},"end":{"line":448,"column":3}},"154":{"start":{"line":447,"column":4},"end":{"line":447,"column":47}},"155":{"start":{"line":451,"column":0},"end":{"line":464,"column":3}},"156":{"start":{"line":453,"column":4},"end":{"line":457,"column":5}},"157":{"start":{"line":454,"column":6},"end":{"line":454,"column":34}},"158":{"start":{"line":456,"column":6},"end":{"line":456,"column":23}},"159":{"start":{"line":460,"column":4},"end":{"line":462,"column":5}},"160":{"start":{"line":461,"column":6},"end":{"line":461,"column":37}},"161":{"start":{"line":470,"column":0},"end":{"line":476,"column":2}},"162":{"start":{"line":471,"column":2},"end":{"line":475,"column":3}},"163":{"start":{"line":472,"column":4},"end":{"line":472,"column":60}},"164":{"start":{"line":474,"column":4},"end":{"line":474,"column":58}},"165":{"start":{"line":479,"column":0},"end":{"line":483,"column":2}},"166":{"start":{"line":480,"column":2},"end":{"line":482,"column":3}},"167":{"start":{"line":481,"column":4},"end":{"line":481,"column":51}},"168":{"start":{"line":485,"column":0},"end":{"line":498,"column":1}},"169":{"start":{"line":486,"column":2},"end":{"line":489,"column":3}},"170":{"start":{"line":487,"column":4},"end":{"line":487,"column":30}},"171":{"start":{"line":488,"column":4},"end":{"line":488,"column":24}},"172":{"start":{"line":491,"column":2},"end":{"line":491,"column":35}},"173":{"start":{"line":493,"column":2},"end":{"line":495,"column":3}},"174":{"start":{"line":494,"column":4},"end":{"line":494,"column":42}},"175":{"start":{"line":497,"column":2},"end":{"line":497,"column":16}},"176":{"start":{"line":503,"column":0},"end":{"line":505,"column":1}},"177":{"start":{"line":504,"column":2},"end":{"line":504,"column":37}},"178":{"start":{"line":506,"column":0},"end":{"line":506,"column":114}},"179":{"start":{"line":512,"column":0},"end":{"line":538,"column":2}},"180":{"start":{"line":523,"column":2},"end":{"line":523,"column":72}},"181":{"start":{"line":524,"column":2},"end":{"line":524,"column":72}},"182":{"start":{"line":525,"column":2},"end":{"line":525,"column":72}},"183":{"start":{"line":526,"column":2},"end":{"line":526,"column":72}},"184":{"start":{"line":529,"column":2},"end":{"line":529,"column":32}},"185":{"start":{"line":532,"column":2},"end":{"line":532,"column":59}},"186":{"start":{"line":535,"column":2},"end":{"line":536,"column":80}},"187":{"start":{"line":537,"column":2},"end":{"line":537,"column":21}},"188":{"start":{"line":543,"column":0},"end":{"line":553,"column":1}},"189":{"start":{"line":544,"column":2},"end":{"line":544,"column":29}},"190":{"start":{"line":546,"column":2},"end":{"line":546,"column":55}},"191":{"start":{"line":548,"column":2},"end":{"line":548,"column":23}},"192":{"start":{"line":549,"column":2},"end":{"line":549,"column":24}},"193":{"start":{"line":550,"column":2},"end":{"line":550,"column":23}},"194":{"start":{"line":552,"column":2},"end":{"line":552,"column":65}},"195":{"start":{"line":554,"column":0},"end":{"line":554,"column":116}},"196":{"start":{"line":556,"column":0},"end":{"line":578,"column":2}},"197":{"start":{"line":557,"column":2},"end":{"line":561,"column":3}},"198":{"start":{"line":558,"column":4},"end":{"line":558,"column":93}},"199":{"start":{"line":560,"column":4},"end":{"line":560,"column":27}},"200":{"start":{"line":563,"column":2},"end":{"line":565,"column":3}},"201":{"start":{"line":564,"column":4},"end":{"line":564,"column":40}},"202":{"start":{"line":566,"column":2},"end":{"line":566,"column":26}},"203":{"start":{"line":568,"column":2},"end":{"line":570,"column":3}},"204":{"start":{"line":569,"column":4},"end":{"line":569,"column":46}},"205":{"start":{"line":572,"column":2},"end":{"line":572,"column":92}},"206":{"start":{"line":574,"column":2},"end":{"line":574,"column":52}},"207":{"start":{"line":576,"column":2},"end":{"line":576,"column":31}},"208":{"start":{"line":577,"column":2},"end":{"line":577,"column":26}},"209":{"start":{"line":580,"column":0},"end":{"line":584,"column":2}},"210":{"start":{"line":581,"column":2},"end":{"line":583,"column":3}},"211":{"start":{"line":582,"column":4},"end":{"line":582,"column":36}},"212":{"start":{"line":586,"column":0},"end":{"line":589,"column":2}},"213":{"start":{"line":587,"column":2},"end":{"line":587,"column":26}},"214":{"start":{"line":588,"column":2},"end":{"line":588,"column":64}},"215":{"start":{"line":591,"column":0},"end":{"line":594,"column":2}},"216":{"start":{"line":592,"column":2},"end":{"line":592,"column":26}},"217":{"start":{"line":593,"column":2},"end":{"line":593,"column":62}},"218":{"start":{"line":596,"column":0},"end":{"line":598,"column":2}},"219":{"start":{"line":597,"column":2},"end":{"line":597,"column":33}},"220":{"start":{"line":600,"column":0},"end":{"line":622,"column":2}},"221":{"start":{"line":601,"column":2},"end":{"line":603,"column":3}},"222":{"start":{"line":602,"column":4},"end":{"line":602,"column":33}},"223":{"start":{"line":605,"column":2},"end":{"line":607,"column":3}},"224":{"start":{"line":606,"column":4},"end":{"line":606,"column":51}},"225":{"start":{"line":609,"column":2},"end":{"line":614,"column":22}},"226":{"start":{"line":616,"column":2},"end":{"line":617,"column":96}},"227":{"start":{"line":619,"column":2},"end":{"line":619,"column":48}},"228":{"start":{"line":621,"column":2},"end":{"line":621,"column":42}},"229":{"start":{"line":626,"column":0},"end":{"line":632,"column":2}},"230":{"start":{"line":627,"column":2},"end":{"line":631,"column":3}},"231":{"start":{"line":628,"column":4},"end":{"line":628,"column":60}},"232":{"start":{"line":630,"column":4},"end":{"line":630,"column":61}},"233":{"start":{"line":637,"column":0},"end":{"line":637,"column":40}},"234":{"start":{"line":638,"column":0},"end":{"line":638,"column":42}},"235":{"start":{"line":639,"column":0},"end":{"line":639,"column":44}},"236":{"start":{"line":640,"column":0},"end":{"line":640,"column":22}},"237":{"start":{"line":641,"column":0},"end":{"line":641,"column":32}},"238":{"start":{"line":642,"column":0},"end":{"line":644,"column":2}},"239":{"start":{"line":643,"column":2},"end":{"line":643,"column":75}},"240":{"start":{"line":645,"column":0},"end":{"line":647,"column":2}},"241":{"start":{"line":646,"column":2},"end":{"line":646,"column":71}},"242":{"start":{"line":652,"column":0},"end":{"line":671,"column":1}},"243":{"start":{"line":653,"column":2},"end":{"line":653,"column":26}},"244":{"start":{"line":655,"column":2},"end":{"line":655,"column":26}},"245":{"start":{"line":657,"column":2},"end":{"line":657,"column":36}},"246":{"start":{"line":658,"column":2},"end":{"line":658,"column":74}},"247":{"start":{"line":659,"column":2},"end":{"line":659,"column":22}},"248":{"start":{"line":665,"column":2},"end":{"line":665,"column":24}},"249":{"start":{"line":666,"column":2},"end":{"line":666,"column":50}},"250":{"start":{"line":667,"column":2},"end":{"line":667,"column":51}},"251":{"start":{"line":669,"column":2},"end":{"line":669,"column":42}},"252":{"start":{"line":670,"column":2},"end":{"line":670,"column":44}},"253":{"start":{"line":672,"column":0},"end":{"line":672,"column":91}},"254":{"start":{"line":674,"column":0},"end":{"line":775,"column":2}},"255":{"start":{"line":675,"column":2},"end":{"line":677,"column":3}},"256":{"start":{"line":676,"column":4},"end":{"line":676,"column":33}},"257":{"start":{"line":679,"column":2},"end":{"line":679,"column":59}},"258":{"start":{"line":680,"column":2},"end":{"line":680,"column":50}},"259":{"start":{"line":681,"column":2},"end":{"line":681,"column":65}},"260":{"start":{"line":682,"column":2},"end":{"line":682,"column":37}},"261":{"start":{"line":683,"column":2},"end":{"line":683,"column":37}},"262":{"start":{"line":685,"column":2},"end":{"line":688,"column":3}},"263":{"start":{"line":686,"column":4},"end":{"line":686,"column":85}},"264":{"start":{"line":687,"column":4},"end":{"line":687,"column":70}},"265":{"start":{"line":690,"column":2},"end":{"line":690,"column":47}},"266":{"start":{"line":692,"column":2},"end":{"line":694,"column":3}},"267":{"start":{"line":693,"column":4},"end":{"line":693,"column":37}},"268":{"start":{"line":696,"column":2},"end":{"line":700,"column":14}},"269":{"start":{"line":703,"column":2},"end":{"line":772,"column":3}},"270":{"start":{"line":704,"column":4},"end":{"line":704,"column":39}},"271":{"start":{"line":705,"column":4},"end":{"line":705,"column":53}},"272":{"start":{"line":709,"column":7},"end":{"line":772,"column":3}},"273":{"start":{"line":710,"column":4},"end":{"line":710,"column":65}},"274":{"start":{"line":711,"column":4},"end":{"line":715,"column":7}},"275":{"start":{"line":716,"column":4},"end":{"line":716,"column":50}},"276":{"start":{"line":717,"column":4},"end":{"line":717,"column":53}},"277":{"start":{"line":722,"column":4},"end":{"line":722,"column":24}},"278":{"start":{"line":723,"column":4},"end":{"line":723,"column":47}},"279":{"start":{"line":724,"column":4},"end":{"line":724,"column":38}},"280":{"start":{"line":725,"column":4},"end":{"line":725,"column":37}},"281":{"start":{"line":726,"column":4},"end":{"line":726,"column":46}},"282":{"start":{"line":728,"column":4},"end":{"line":734,"column":7}},"283":{"start":{"line":729,"column":6},"end":{"line":733,"column":7}},"284":{"start":{"line":730,"column":8},"end":{"line":730,"column":21}},"285":{"start":{"line":732,"column":8},"end":{"line":732,"column":47}},"286":{"start":{"line":736,"column":4},"end":{"line":736,"column":20}},"287":{"start":{"line":737,"column":4},"end":{"line":762,"column":5}},"288":{"start":{"line":738,"column":6},"end":{"line":738,"column":19}},"289":{"start":{"line":739,"column":6},"end":{"line":745,"column":7}},"290":{"start":{"line":740,"column":8},"end":{"line":740,"column":48}},"291":{"start":{"line":741,"column":8},"end":{"line":741,"column":44}},"292":{"start":{"line":742,"column":8},"end":{"line":742,"column":69}},"293":{"start":{"line":743,"column":8},"end":{"line":743,"column":46}},"294":{"start":{"line":744,"column":8},"end":{"line":744,"column":54}},"295":{"start":{"line":746,"column":6},"end":{"line":761,"column":7}},"296":{"start":{"line":747,"column":8},"end":{"line":751,"column":9}},"297":{"start":{"line":748,"column":10},"end":{"line":748,"column":27}},"298":{"start":{"line":750,"column":10},"end":{"line":750,"column":31}},"299":{"start":{"line":753,"column":8},"end":{"line":760,"column":9}},"300":{"start":{"line":754,"column":10},"end":{"line":755,"column":59}},"301":{"start":{"line":756,"column":10},"end":{"line":756,"column":41}},"302":{"start":{"line":757,"column":10},"end":{"line":757,"column":35}},"303":{"start":{"line":759,"column":10},"end":{"line":759,"column":36}},"304":{"start":{"line":764,"column":4},"end":{"line":771,"column":7}},"305":{"start":{"line":765,"column":6},"end":{"line":765,"column":21}},"306":{"start":{"line":766,"column":6},"end":{"line":770,"column":7}},"307":{"start":{"line":767,"column":8},"end":{"line":767,"column":57}},"308":{"start":{"line":769,"column":8},"end":{"line":769,"column":40}},"309":{"start":{"line":774,"column":2},"end":{"line":774,"column":17}},"310":{"start":{"line":777,"column":0},"end":{"line":781,"column":2}},"311":{"start":{"line":778,"column":2},"end":{"line":778,"column":48}},"312":{"start":{"line":779,"column":2},"end":{"line":779,"column":16}},"313":{"start":{"line":780,"column":2},"end":{"line":780,"column":17}},"314":{"start":{"line":783,"column":0},"end":{"line":792,"column":1}},"315":{"start":{"line":784,"column":2},"end":{"line":784,"column":36}},"316":{"start":{"line":785,"column":2},"end":{"line":785,"column":35}},"317":{"start":{"line":786,"column":2},"end":{"line":786,"column":40}},"318":{"start":{"line":787,"column":2},"end":{"line":787,"column":37}},"319":{"start":{"line":788,"column":2},"end":{"line":788,"column":37}},"320":{"start":{"line":789,"column":2},"end":{"line":789,"column":18}},"321":{"start":{"line":790,"column":2},"end":{"line":790,"column":23}},"322":{"start":{"line":791,"column":2},"end":{"line":791,"column":22}},"323":{"start":{"line":794,"column":0},"end":{"line":801,"column":3}},"324":{"start":{"line":796,"column":4},"end":{"line":796,"column":39}},"325":{"start":{"line":799,"column":4},"end":{"line":799,"column":40}},"326":{"start":{"line":803,"column":0},"end":{"line":803,"column":34}},"327":{"start":{"line":808,"column":0},"end":{"line":814,"column":1}},"328":{"start":{"line":809,"column":2},"end":{"line":809,"column":29}},"329":{"start":{"line":811,"column":2},"end":{"line":811,"column":24}},"330":{"start":{"line":813,"column":2},"end":{"line":813,"column":26}},"331":{"start":{"line":815,"column":0},"end":{"line":815,"column":114}},"332":{"start":{"line":817,"column":0},"end":{"line":848,"column":2}},"333":{"start":{"line":818,"column":2},"end":{"line":818,"column":23}},"334":{"start":{"line":820,"column":2},"end":{"line":820,"column":55}},"335":{"start":{"line":822,"column":2},"end":{"line":824,"column":3}},"336":{"start":{"line":823,"column":4},"end":{"line":823,"column":46}},"337":{"start":{"line":825,"column":2},"end":{"line":825,"column":30}},"338":{"start":{"line":826,"column":2},"end":{"line":826,"column":22}},"339":{"start":{"line":828,"column":2},"end":{"line":830,"column":3}},"340":{"start":{"line":829,"column":4},"end":{"line":829,"column":83}},"341":{"start":{"line":832,"column":2},"end":{"line":832,"column":53}},"342":{"start":{"line":833,"column":2},"end":{"line":833,"column":38}},"343":{"start":{"line":834,"column":2},"end":{"line":834,"column":34}},"344":{"start":{"line":835,"column":2},"end":{"line":835,"column":34}},"345":{"start":{"line":837,"column":2},"end":{"line":838,"column":98}},"346":{"start":{"line":839,"column":2},"end":{"line":839,"column":31}},"347":{"start":{"line":840,"column":2},"end":{"line":840,"column":26}},"348":{"start":{"line":842,"column":2},"end":{"line":842,"column":35}},"349":{"start":{"line":844,"column":2},"end":{"line":844,"column":51}},"350":{"start":{"line":845,"column":2},"end":{"line":845,"column":69}},"351":{"start":{"line":847,"column":2},"end":{"line":847,"column":56}},"352":{"start":{"line":850,"column":0},"end":{"line":854,"column":2}},"353":{"start":{"line":851,"column":2},"end":{"line":851,"column":59}},"354":{"start":{"line":852,"column":2},"end":{"line":852,"column":39}},"355":{"start":{"line":853,"column":2},"end":{"line":853,"column":35}},"356":{"start":{"line":856,"column":0},"end":{"line":862,"column":2}},"357":{"start":{"line":857,"column":2},"end":{"line":861,"column":3}},"358":{"start":{"line":858,"column":4},"end":{"line":858,"column":35}},"359":{"start":{"line":860,"column":4},"end":{"line":860,"column":63}},"360":{"start":{"line":866,"column":0},"end":{"line":872,"column":2}},"361":{"start":{"line":867,"column":2},"end":{"line":871,"column":3}},"362":{"start":{"line":868,"column":4},"end":{"line":868,"column":60}},"363":{"start":{"line":870,"column":4},"end":{"line":870,"column":61}},"364":{"start":{"line":875,"column":0},"end":{"line":881,"column":2}},"365":{"start":{"line":876,"column":2},"end":{"line":880,"column":3}},"366":{"start":{"line":877,"column":4},"end":{"line":877,"column":37}},"367":{"start":{"line":878,"column":9},"end":{"line":880,"column":3}},"368":{"start":{"line":879,"column":4},"end":{"line":879,"column":59}},"369":{"start":{"line":883,"column":0},"end":{"line":889,"column":2}},"370":{"start":{"line":884,"column":2},"end":{"line":888,"column":3}},"371":{"start":{"line":885,"column":4},"end":{"line":885,"column":58}},"372":{"start":{"line":886,"column":9},"end":{"line":888,"column":3}},"373":{"start":{"line":887,"column":4},"end":{"line":887,"column":80}},"374":{"start":{"line":891,"column":0},"end":{"line":897,"column":2}},"375":{"start":{"line":892,"column":2},"end":{"line":896,"column":3}},"376":{"start":{"line":893,"column":4},"end":{"line":893,"column":47}},"377":{"start":{"line":894,"column":9},"end":{"line":896,"column":3}},"378":{"start":{"line":895,"column":4},"end":{"line":895,"column":69}},"379":{"start":{"line":900,"column":0},"end":{"line":908,"column":2}},"380":{"start":{"line":901,"column":2},"end":{"line":907,"column":3}},"381":{"start":{"line":902,"column":4},"end":{"line":902,"column":25}},"382":{"start":{"line":903,"column":9},"end":{"line":907,"column":3}},"383":{"start":{"line":904,"column":4},"end":{"line":904,"column":32}},"384":{"start":{"line":906,"column":4},"end":{"line":906,"column":45}},"385":{"start":{"line":911,"column":0},"end":{"line":921,"column":2}},"386":{"start":{"line":912,"column":2},"end":{"line":912,"column":71}},"387":{"start":{"line":914,"column":2},"end":{"line":914,"column":53}},"388":{"start":{"line":916,"column":2},"end":{"line":920,"column":3}},"389":{"start":{"line":917,"column":4},"end":{"line":917,"column":31}},"390":{"start":{"line":919,"column":4},"end":{"line":919,"column":21}},"391":{"start":{"line":926,"column":0},"end":{"line":928,"column":1}},"392":{"start":{"line":927,"column":2},"end":{"line":927,"column":37}},"393":{"start":{"line":929,"column":0},"end":{"line":929,"column":116}},"394":{"start":{"line":935,"column":0},"end":{"line":951,"column":2}},"395":{"start":{"line":943,"column":2},"end":{"line":943,"column":86}},"396":{"start":{"line":946,"column":2},"end":{"line":946,"column":59}},"397":{"start":{"line":949,"column":2},"end":{"line":949,"column":89}},"398":{"start":{"line":950,"column":2},"end":{"line":950,"column":21}},"399":{"start":{"line":956,"column":0},"end":{"line":972,"column":1}},"400":{"start":{"line":957,"column":2},"end":{"line":957,"column":30}},"401":{"start":{"line":958,"column":2},"end":{"line":958,"column":22}},"402":{"start":{"line":959,"column":2},"end":{"line":959,"column":20}},"403":{"start":{"line":960,"column":2},"end":{"line":960,"column":36}},"404":{"start":{"line":962,"column":2},"end":{"line":962,"column":37}},"405":{"start":{"line":964,"column":2},"end":{"line":964,"column":34}},"406":{"start":{"line":966,"column":2},"end":{"line":966,"column":40}},"407":{"start":{"line":968,"column":2},"end":{"line":968,"column":60}},"408":{"start":{"line":969,"column":2},"end":{"line":969,"column":69}},"409":{"start":{"line":971,"column":2},"end":{"line":971,"column":56}},"410":{"start":{"line":973,"column":0},"end":{"line":973,"column":114}},"411":{"start":{"line":975,"column":0},"end":{"line":977,"column":2}},"412":{"start":{"line":976,"column":2},"end":{"line":976,"column":39}},"413":{"start":{"line":979,"column":0},"end":{"line":981,"column":2}},"414":{"start":{"line":980,"column":2},"end":{"line":980,"column":42}},"415":{"start":{"line":983,"column":0},"end":{"line":983,"column":76}}},"branchMap":{"1":{"line":165,"type":"cond-expr","locations":[{"start":{"line":165,"column":52},"end":{"line":165,"column":58}},{"start":{"line":165,"column":61},"end":{"line":165,"column":66}}]},"2":{"line":166,"type":"cond-expr","locations":[{"start":{"line":166,"column":47},"end":{"line":166,"column":62}},{"start":{"line":166,"column":65},"end":{"line":166,"column":79}}]},"3":{"line":167,"type":"cond-expr","locations":[{"start":{"line":167,"column":53},"end":{"line":167,"column":67}},{"start":{"line":167,"column":70},"end":{"line":167,"column":83}}]},"4":{"line":231,"type":"if","locations":[{"start":{"line":231,"column":4},"end":{"line":231,"column":4}},{"start":{"line":231,"column":4},"end":{"line":231,"column":4}}]},"5":{"line":240,"type":"if","locations":[{"start":{"line":240,"column":4},"end":{"line":240,"column":4}},{"start":{"line":240,"column":4},"end":{"line":240,"column":4}}]},"6":{"line":259,"type":"if","locations":[{"start":{"line":259,"column":2},"end":{"line":259,"column":2}},{"start":{"line":259,"column":2},"end":{"line":259,"column":2}}]},"7":{"line":259,"type":"binary-expr","locations":[{"start":{"line":259,"column":7},"end":{"line":259,"column":32}},{"start":{"line":259,"column":38},"end":{"line":259,"column":56}}]},"8":{"line":284,"type":"if","locations":[{"start":{"line":284,"column":2},"end":{"line":284,"column":2}},{"start":{"line":284,"column":2},"end":{"line":284,"column":2}}]},"9":{"line":292,"type":"if","locations":[{"start":{"line":292,"column":2},"end":{"line":292,"column":2}},{"start":{"line":292,"column":2},"end":{"line":292,"column":2}}]},"10":{"line":293,"type":"if","locations":[{"start":{"line":293,"column":4},"end":{"line":293,"column":4}},{"start":{"line":293,"column":4},"end":{"line":293,"column":4}}]},"11":{"line":294,"type":"if","locations":[{"start":{"line":294,"column":6},"end":{"line":294,"column":6}},{"start":{"line":294,"column":6},"end":{"line":294,"column":6}}]},"12":{"line":307,"type":"if","locations":[{"start":{"line":307,"column":2},"end":{"line":307,"column":2}},{"start":{"line":307,"column":2},"end":{"line":307,"column":2}}]},"13":{"line":311,"type":"if","locations":[{"start":{"line":311,"column":4},"end":{"line":311,"column":4}},{"start":{"line":311,"column":4},"end":{"line":311,"column":4}}]},"14":{"line":319,"type":"if","locations":[{"start":{"line":319,"column":2},"end":{"line":319,"column":2}},{"start":{"line":319,"column":2},"end":{"line":319,"column":2}}]},"15":{"line":351,"type":"binary-expr","locations":[{"start":{"line":351,"column":12},"end":{"line":351,"column":19}},{"start":{"line":351,"column":23},"end":{"line":351,"column":25}}]},"16":{"line":353,"type":"binary-expr","locations":[{"start":{"line":353,"column":15},"end":{"line":353,"column":26}},{"start":{"line":353,"column":30},"end":{"line":353,"column":43}}]},"17":{"line":360,"type":"if","locations":[{"start":{"line":360,"column":2},"end":{"line":360,"column":2}},{"start":{"line":360,"column":2},"end":{"line":360,"column":2}}]},"18":{"line":360,"type":"binary-expr","locations":[{"start":{"line":360,"column":7},"end":{"line":360,"column":18}},{"start":{"line":360,"column":22},"end":{"line":360,"column":34}},{"start":{"line":360,"column":39},"end":{"line":360,"column":50}}]},"19":{"line":368,"type":"if","locations":[{"start":{"line":368,"column":6},"end":{"line":368,"column":6}},{"start":{"line":368,"column":6},"end":{"line":368,"column":6}}]},"20":{"line":368,"type":"binary-expr","locations":[{"start":{"line":368,"column":10},"end":{"line":368,"column":59}},{"start":{"line":368,"column":63},"end":{"line":368,"column":80}}]},"21":{"line":378,"type":"if","locations":[{"start":{"line":378,"column":7},"end":{"line":378,"column":7}},{"start":{"line":378,"column":7},"end":{"line":378,"column":7}}]},"22":{"line":435,"type":"cond-expr","locations":[{"start":{"line":435,"column":58},"end":{"line":435,"column":79}},{"start":{"line":435,"column":83},"end":{"line":435,"column":87}}]},"23":{"line":446,"type":"if","locations":[{"start":{"line":446,"column":2},"end":{"line":446,"column":2}},{"start":{"line":446,"column":2},"end":{"line":446,"column":2}}]},"24":{"line":453,"type":"if","locations":[{"start":{"line":453,"column":4},"end":{"line":453,"column":4}},{"start":{"line":453,"column":4},"end":{"line":453,"column":4}}]},"25":{"line":460,"type":"if","locations":[{"start":{"line":460,"column":4},"end":{"line":460,"column":4}},{"start":{"line":460,"column":4},"end":{"line":460,"column":4}}]},"26":{"line":471,"type":"if","locations":[{"start":{"line":471,"column":2},"end":{"line":471,"column":2}},{"start":{"line":471,"column":2},"end":{"line":471,"column":2}}]},"27":{"line":471,"type":"binary-expr","locations":[{"start":{"line":471,"column":7},"end":{"line":471,"column":26}},{"start":{"line":471,"column":32},"end":{"line":471,"column":51}}]},"28":{"line":472,"type":"binary-expr","locations":[{"start":{"line":472,"column":27},"end":{"line":472,"column":35}},{"start":{"line":472,"column":39},"end":{"line":472,"column":58}}]},"29":{"line":480,"type":"if","locations":[{"start":{"line":480,"column":2},"end":{"line":480,"column":2}},{"start":{"line":480,"column":2},"end":{"line":480,"column":2}}]},"30":{"line":486,"type":"if","locations":[{"start":{"line":486,"column":2},"end":{"line":486,"column":2}},{"start":{"line":486,"column":2},"end":{"line":486,"column":2}}]},"31":{"line":493,"type":"if","locations":[{"start":{"line":493,"column":2},"end":{"line":493,"column":2}},{"start":{"line":493,"column":2},"end":{"line":493,"column":2}}]},"32":{"line":557,"type":"if","locations":[{"start":{"line":557,"column":2},"end":{"line":557,"column":2}},{"start":{"line":557,"column":2},"end":{"line":557,"column":2}}]},"33":{"line":568,"type":"if","locations":[{"start":{"line":568,"column":2},"end":{"line":568,"column":2}},{"start":{"line":568,"column":2},"end":{"line":568,"column":2}}]},"34":{"line":568,"type":"binary-expr","locations":[{"start":{"line":568,"column":6},"end":{"line":568,"column":19}},{"start":{"line":568,"column":23},"end":{"line":568,"column":49}}]},"35":{"line":581,"type":"if","locations":[{"start":{"line":581,"column":2},"end":{"line":581,"column":2}},{"start":{"line":581,"column":2},"end":{"line":581,"column":2}}]},"36":{"line":601,"type":"if","locations":[{"start":{"line":601,"column":2},"end":{"line":601,"column":2}},{"start":{"line":601,"column":2},"end":{"line":601,"column":2}}]},"37":{"line":605,"type":"if","locations":[{"start":{"line":605,"column":2},"end":{"line":605,"column":2}},{"start":{"line":605,"column":2},"end":{"line":605,"column":2}}]},"38":{"line":610,"type":"binary-expr","locations":[{"start":{"line":610,"column":16},"end":{"line":610,"column":30}},{"start":{"line":610,"column":34},"end":{"line":610,"column":39}}]},"39":{"line":611,"type":"binary-expr","locations":[{"start":{"line":611,"column":16},"end":{"line":611,"column":32}},{"start":{"line":611,"column":36},"end":{"line":611,"column":65}},{"start":{"line":611,"column":70},"end":{"line":611,"column":101}}]},"40":{"line":612,"type":"binary-expr","locations":[{"start":{"line":612,"column":13},"end":{"line":612,"column":29}},{"start":{"line":612,"column":33},"end":{"line":612,"column":45}},{"start":{"line":612,"column":49},"end":{"line":612,"column":78}}]},"41":{"line":627,"type":"if","locations":[{"start":{"line":627,"column":2},"end":{"line":627,"column":2}},{"start":{"line":627,"column":2},"end":{"line":627,"column":2}}]},"42":{"line":627,"type":"binary-expr","locations":[{"start":{"line":627,"column":6},"end":{"line":627,"column":18}},{"start":{"line":627,"column":23},"end":{"line":627,"column":42}}]},"43":{"line":628,"type":"binary-expr","locations":[{"start":{"line":628,"column":27},"end":{"line":628,"column":35}},{"start":{"line":628,"column":39},"end":{"line":628,"column":58}}]},"44":{"line":643,"type":"binary-expr","locations":[{"start":{"line":643,"column":10},"end":{"line":643,"column":23}},{"start":{"line":643,"column":27},"end":{"line":643,"column":46}}]},"45":{"line":646,"type":"binary-expr","locations":[{"start":{"line":646,"column":10},"end":{"line":646,"column":23}},{"start":{"line":646,"column":27},"end":{"line":646,"column":46}}]},"46":{"line":655,"type":"binary-expr","locations":[{"start":{"line":655,"column":12},"end":{"line":655,"column":19}},{"start":{"line":655,"column":23},"end":{"line":655,"column":25}}]},"47":{"line":658,"type":"binary-expr","locations":[{"start":{"line":658,"column":15},"end":{"line":658,"column":26}},{"start":{"line":658,"column":30},"end":{"line":658,"column":43}}]},"48":{"line":675,"type":"if","locations":[{"start":{"line":675,"column":2},"end":{"line":675,"column":2}},{"start":{"line":675,"column":2},"end":{"line":675,"column":2}}]},"49":{"line":679,"type":"binary-expr","locations":[{"start":{"line":679,"column":20},"end":{"line":679,"column":34}},{"start":{"line":679,"column":38},"end":{"line":679,"column":43}}]},"50":{"line":680,"type":"binary-expr","locations":[{"start":{"line":680,"column":21},"end":{"line":680,"column":37}},{"start":{"line":680,"column":41},"end":{"line":680,"column":49}}]},"51":{"line":681,"type":"binary-expr","locations":[{"start":{"line":681,"column":17},"end":{"line":681,"column":33}},{"start":{"line":681,"column":37},"end":{"line":681,"column":49}},{"start":{"line":681,"column":53},"end":{"line":681,"column":64}}]},"52":{"line":682,"type":"binary-expr","locations":[{"start":{"line":682,"column":17},"end":{"line":682,"column":29}},{"start":{"line":682,"column":33},"end":{"line":682,"column":36}}]},"53":{"line":683,"type":"binary-expr","locations":[{"start":{"line":683,"column":17},"end":{"line":683,"column":29}},{"start":{"line":683,"column":33},"end":{"line":683,"column":36}}]},"54":{"line":685,"type":"if","locations":[{"start":{"line":685,"column":2},"end":{"line":685,"column":2}},{"start":{"line":685,"column":2},"end":{"line":685,"column":2}}]},"55":{"line":685,"type":"binary-expr","locations":[{"start":{"line":685,"column":6},"end":{"line":685,"column":20}},{"start":{"line":685,"column":24},"end":{"line":685,"column":52}}]},"56":{"line":692,"type":"if","locations":[{"start":{"line":692,"column":2},"end":{"line":692,"column":2}},{"start":{"line":692,"column":2},"end":{"line":692,"column":2}}]},"57":{"line":703,"type":"if","locations":[{"start":{"line":703,"column":2},"end":{"line":703,"column":2}},{"start":{"line":703,"column":2},"end":{"line":703,"column":2}}]},"58":{"line":709,"type":"if","locations":[{"start":{"line":709,"column":7},"end":{"line":709,"column":7}},{"start":{"line":709,"column":7},"end":{"line":709,"column":7}}]},"59":{"line":729,"type":"if","locations":[{"start":{"line":729,"column":6},"end":{"line":729,"column":6}},{"start":{"line":729,"column":6},"end":{"line":729,"column":6}}]},"60":{"line":739,"type":"if","locations":[{"start":{"line":739,"column":6},"end":{"line":739,"column":6}},{"start":{"line":739,"column":6},"end":{"line":739,"column":6}}]},"61":{"line":746,"type":"if","locations":[{"start":{"line":746,"column":6},"end":{"line":746,"column":6}},{"start":{"line":746,"column":6},"end":{"line":746,"column":6}}]},"62":{"line":747,"type":"if","locations":[{"start":{"line":747,"column":8},"end":{"line":747,"column":8}},{"start":{"line":747,"column":8},"end":{"line":747,"column":8}}]},"63":{"line":753,"type":"if","locations":[{"start":{"line":753,"column":8},"end":{"line":753,"column":8}},{"start":{"line":753,"column":8},"end":{"line":753,"column":8}}]},"64":{"line":766,"type":"if","locations":[{"start":{"line":766,"column":6},"end":{"line":766,"column":6}},{"start":{"line":766,"column":6},"end":{"line":766,"column":6}}]},"65":{"line":828,"type":"if","locations":[{"start":{"line":828,"column":2},"end":{"line":828,"column":2}},{"start":{"line":828,"column":2},"end":{"line":828,"column":2}}]},"66":{"line":838,"type":"binary-expr","locations":[{"start":{"line":838,"column":53},"end":{"line":838,"column":68}},{"start":{"line":838,"column":72},"end":{"line":838,"column":74}}]},"67":{"line":857,"type":"if","locations":[{"start":{"line":857,"column":2},"end":{"line":857,"column":2}},{"start":{"line":857,"column":2},"end":{"line":857,"column":2}}]},"68":{"line":867,"type":"if","locations":[{"start":{"line":867,"column":2},"end":{"line":867,"column":2}},{"start":{"line":867,"column":2},"end":{"line":867,"column":2}}]},"69":{"line":867,"type":"binary-expr","locations":[{"start":{"line":867,"column":6},"end":{"line":867,"column":18}},{"start":{"line":867,"column":23},"end":{"line":867,"column":42}}]},"70":{"line":868,"type":"binary-expr","locations":[{"start":{"line":868,"column":27},"end":{"line":868,"column":35}},{"start":{"line":868,"column":39},"end":{"line":868,"column":58}}]},"71":{"line":876,"type":"if","locations":[{"start":{"line":876,"column":2},"end":{"line":876,"column":2}},{"start":{"line":876,"column":2},"end":{"line":876,"column":2}}]},"72":{"line":878,"type":"if","locations":[{"start":{"line":878,"column":9},"end":{"line":878,"column":9}},{"start":{"line":878,"column":9},"end":{"line":878,"column":9}}]},"73":{"line":884,"type":"if","locations":[{"start":{"line":884,"column":2},"end":{"line":884,"column":2}},{"start":{"line":884,"column":2},"end":{"line":884,"column":2}}]},"74":{"line":886,"type":"if","locations":[{"start":{"line":886,"column":9},"end":{"line":886,"column":9}},{"start":{"line":886,"column":9},"end":{"line":886,"column":9}}]},"75":{"line":892,"type":"if","locations":[{"start":{"line":892,"column":2},"end":{"line":892,"column":2}},{"start":{"line":892,"column":2},"end":{"line":892,"column":2}}]},"76":{"line":894,"type":"if","locations":[{"start":{"line":894,"column":9},"end":{"line":894,"column":9}},{"start":{"line":894,"column":9},"end":{"line":894,"column":9}}]},"77":{"line":901,"type":"if","locations":[{"start":{"line":901,"column":2},"end":{"line":901,"column":2}},{"start":{"line":901,"column":2},"end":{"line":901,"column":2}}]},"78":{"line":903,"type":"if","locations":[{"start":{"line":903,"column":9},"end":{"line":903,"column":9}},{"start":{"line":903,"column":9},"end":{"line":903,"column":9}}]},"79":{"line":916,"type":"if","locations":[{"start":{"line":916,"column":2},"end":{"line":916,"column":2}},{"start":{"line":916,"column":2},"end":{"line":916,"column":2}}]}}}} \ No newline at end of file diff --git a/coverage/lcov-report/index.html b/coverage/lcov-report/index.html index 26c634b0..34a98d26 100644 --- a/coverage/lcov-report/index.html +++ b/coverage/lcov-report/index.html @@ -183,16 +183,16 @@

Code coverage report for All files

- Statements: 93.22% (1553 / 1666)      + Statements: 93.26% (1563 / 1676)      - Branches: 85.11% (600 / 705)      + Branches: 84.85% (605 / 713)      - Functions: 94.79% (200 / 211)      + Functions: 94.81% (201 / 212)      - Lines: 93.19% (1547 / 1660)      + Lines: 93.23% (1557 / 1670)     

@@ -216,15 +216,15 @@

lib/ - - 93.22% - (1553 / 1666) - 85.11% - (600 / 705) - 94.79% - (200 / 211) - 93.19% - (1547 / 1660) + + 93.26% + (1563 / 1676) + 84.85% + (605 / 713) + 94.81% + (201 / 212) + 93.23% + (1557 / 1670) @@ -232,7 +232,7 @@

diff --git a/coverage/lcov-report/lib/compressor.js.html b/coverage/lcov-report/lib/compressor.js.html index 1f389531..7334b186 100644 --- a/coverage/lcov-report/lib/compressor.js.html +++ b/coverage/lcov-report/lib/compressor.js.html @@ -3036,7 +3036,7 @@

diff --git a/coverage/lcov-report/lib/connection.js.html b/coverage/lcov-report/lib/connection.js.html index d6e33765..e62ae323 100644 --- a/coverage/lcov-report/lib/connection.js.html +++ b/coverage/lcov-report/lib/connection.js.html @@ -992,9 +992,9 @@

  1 75 -27 +28   -48 +47       @@ -1004,7 +1004,7 @@

10 10 10 -6 +5     10 @@ -1959,7 +1959,7 @@

diff --git a/coverage/lcov-report/lib/endpoint.js.html b/coverage/lcov-report/lib/endpoint.js.html index 48e483bd..613b9a42 100644 --- a/coverage/lcov-report/lib/endpoint.js.html +++ b/coverage/lcov-report/lib/endpoint.js.html @@ -981,7 +981,7 @@

diff --git a/coverage/lcov-report/lib/flow.js.html b/coverage/lcov-report/lib/flow.js.html index 89c3b805..0e0693b9 100644 --- a/coverage/lcov-report/lib/flow.js.html +++ b/coverage/lcov-report/lib/flow.js.html @@ -648,42 +648,42 @@

    1 -281 +266 63     -281 -111 -111 -111 -13 +266 +97 +97 +97 +12   -111 +97         -170 +169     -281 +266   -6 +5           1 -13 -13 -7 +12 +12 +6           -7 +6       @@ -721,30 +721,30 @@

  1   -234 -217 +231 +216         -17 +15 +7 +7 8 8 -9 -9 7     -8 +7   -8 +7             -9 +8       @@ -754,27 +754,27 @@

    1 -627 +610 130 -497 +480   -497 -497 +480 +480         -497 -497 +480 +480   -497 -405 -193 +480 +401 +191   -405 +401     -92 +79       @@ -782,35 +782,35 @@

      -92 +79   -92 +79           -92 +79   -92 +79     -92 +79         1 -211 +209   -211 -29 +209 +28   -29 -29 +28 +28     -211 +209       @@ -818,48 +818,48 @@

    1 -212 +210   -212 -204 +210 +203     -8 +7 1       -7 +6   -7 -7 +6 +6           -7 +6         1 -204 +203 6   -198 +197     -204 -204 203 +203 +202     -204 +203 7     -204 +203       @@ -883,17 +883,17 @@

1   1 -88 +87 1 1   -87 -87 -87 +86 +86 +86 1 1   -86 +85       @@ -907,7 +907,7 @@

    1 -6 +5       @@ -1290,7 +1290,7 @@

diff --git a/coverage/lcov-report/lib/framer.js.html b/coverage/lcov-report/lib/framer.js.html index 26196574..2454b2ed 100644 --- a/coverage/lcov-report/lib/framer.js.html +++ b/coverage/lcov-report/lib/framer.js.html @@ -1036,26 +1036,26 @@

    1 -68 +66   -68 +66       -68 +66     -149 -149 -149 -149 +147 +147 +147 +147             -149 +147 70 70 70 @@ -1070,7 +1070,7 @@

      -149 +147 70 70 70 @@ -1087,7 +1087,7 @@

      -68 +66       @@ -2442,7 +2442,7 @@

diff --git a/coverage/lcov-report/lib/http.js.html b/coverage/lcov-report/lib/http.js.html index b9fca323..dd1e1aed 100644 --- a/coverage/lcov-report/lib/http.js.html +++ b/coverage/lcov-report/lib/http.js.html @@ -183,16 +183,16 @@

Code coverage report for lib/http.js

- Statements: 92.1% (373 / 405)      + Statements: 92.29% (383 / 415)      - Branches: 77.27% (119 / 154)      + Branches: 76.54% (124 / 162)      - Functions: 92.06% (58 / 63)      + Functions: 92.19% (59 / 64)      - Lines: 92.1% (373 / 405)      + Lines: 92.29% (383 / 415)     

All files » lib/ » http.js
@@ -1165,7 +1165,27 @@

964 965 966 -967  +967 +968 +969 +970 +971 +972 +973 +974 +975 +976 +977 +978 +979 +980 +981 +982 +983 +984  +  +  +        @@ -1323,6 +1343,14 @@

1     +1 +  +  +1 +1 +1 +  +        @@ -1365,9 +1393,11 @@

  25 25 +25     25 +25   1   @@ -1398,10 +1428,13 @@

    24 +24 +2 +      1 -2 +24     1 @@ -1814,8 +1847,8 @@

    4 -  -  +4 +4   4 4 @@ -2090,6 +2123,7 @@

      +  12     @@ -2143,6 +2177,9 @@

// Additional and modified API elements // ------------------------------------ // +// - **Class: http2.Endpoint**: an API for using the raw HTTP/2 framing layer. For documentation +// see the [lib/endpoint.js](endpoint.html) file. +// // - **Class: http2.Server** // - **Event: 'connection' (socket, [endpoint])**: there's a second argument if the negotiation of // HTTP/2 was successful: the reference to the [Endpoint](endpoint.html) object tied to the @@ -2288,6 +2325,14 @@

// [1]: http://tools.ietf.org/html/draft-ietf-httpbis-http2-04 var implementedVersion = 'HTTP-draft-06/2.0';   +// When doing NPN/ALPN negotiation, HTTP/1.1 is used as fallback +var supportedProtocols = [implementedVersion, 'http/1.1', 'http/1.0']; +  +// Using ALPN or NPN depending on node.js support (preferring ALPN) +var negotiationMethod = process.features.tls_alpn ? 'ALPN' : 'NPN'; +var protocolList = process.features.tls_alpn ? 'ALPNProtocols' : 'NPNProtocols'; +var negotiatedProtocol = process.features.tls_alpn ? 'alpnProtocol' : 'npnProtocol'; +  // Logging // -------   @@ -2331,9 +2376,11 @@

// * `this.headers` will store the regular headers (and none of the special colon headers) this.headers = {}; this.trailers = undefined; + this._lastHeadersSeen = undefined;   // * Other metadata is filled in when the headers arrive. stream.once('headers', this._onHeaders.bind(this)); + stream.once('end', this._onEnd.bind(this)); } IncomingMessage.prototype = Object.create(PassThrough.prototype, { constructor: { value: IncomingMessage } });   @@ -2362,12 +2409,15 @@

} }   - // * The next header block, if any, will represent the trailers - this.stream.once('headers', this._onTrailers.bind(this)); + // * The last header block, if it's not the first, will represent the trailers + var self = this; + this.stream.on('headers', function(headers) { + self._lastHeadersSeen = headers; + }); };   -IncomingMessage.prototype._onTrailers = function _onTrailers(trailers) { - this.trailers = trailers; +IncomingMessage.prototype._onEnd = function _onEnd() { + this.trailers = this._lastHeadersSeen; };   IncomingMessage.prototype.setTimeout = noop; @@ -2473,16 +2523,16 @@

var start = this._start.bind(this); var fallback = this._fallback.bind(this);   - // HTTP2 over TLS (using NPN instean of ALPN) + // HTTP2 over TLS (using NPN or ALPN) if ((options.key && options.cert) || options.pfx) { - this._log.info('Creating HTTP/2 server over TLS/NPN'); + this._log.info('Creating HTTP/2 server over TLS/' + negotiationMethod); this._mode = 'tls'; - options.NPNProtocols = [implementedVersion, 'http/1.1', 'http/1.0']; + options[protocolList] = supportedProtocols; this._server = https.createServer(options); this._originalSocketListeners = this._server.listeners('secureConnection'); this._server.removeAllListeners('secureConnection'); this._server.on('secureConnection', function(socket) { - Eif (socket.npnProtocol === implementedVersion && socket.servername) { + Eif (socket[negotiatedProtocol] === implementedVersion && socket.servername) { start(socket); } else { fallback(socket); @@ -2534,7 +2584,7 @@

  Server.prototype._fallback = function _fallback(socket) { this._log.info({ client: socket.remoteAddress + ':' + socket.remotePort, - protocol: socket.npnProtocol, + protocol: socket[negotiatedProtocol], SNI: socket.servername }, 'Falling back to simple HTTPS');   @@ -2775,13 +2825,13 @@

this._log = (options.log || defaultLogger).child({ component: 'http' }); this.endpoints = {};   - // * Using an own HTTPS agent, because the global agent does not look at `NPNProtocols` when + // * Using an own HTTPS agent, because the global agent does not look at `NPN/ALPNProtocols` when // generating the key identifying the connection, so we may get useless non-negotiated TLS // channels even if we ask for a negotiated one. This agent will contain only negotiated // channels. - this._httpsAgent = new https.Agent({ - NPNProtocols: [implementedVersion, 'http/1.1', 'http/1.0'] - }); + var agentOptions = {}; + agentOptions[protocolList] = supportedProtocols; + this._httpsAgent = new https.Agent(agentOptions);   this.sockets = this._httpsAgent.sockets; this.requests = this._httpsAgent.requests; @@ -2799,7 +2849,7 @@

options.port = options.port || 443; options.path = options.path || '/';   - if (options.protocol === 'http:') { + if (!options.plain && options.protocol === 'http:') { this._log.error('Trying to negotiate client request with Upgrade from HTTP/1.1'); throw new Error('HTTP1.1 -> HTTP2 upgrade is not yet supported.'); } @@ -2834,16 +2884,16 @@

request._start(endpoint.createStream(), options); }   - // * HTTP/2 over TLS negotiated using NPN (or later ALPN) + // * HTTP/2 over TLS negotiated using NPN or ALPN else { var started = false; - options.NPNProtocols = [implementedVersion, 'http/1.1', 'http/1.0']; + options[protocolList] = supportedProtocols; options.servername = options.host; // Server Name Indication options.agent = this._httpsAgent; var httpsRequest = https.request(options);   httpsRequest.on('socket', function(socket) { - Iif (socket.npnProtocol !== undefined) { + Iif (socket[negotiatedProtocol] !== undefined) { negotiated(); } else { socket.on('secureConnect', negotiated); @@ -2853,7 +2903,7 @@

var self = this; function negotiated() { var endpoint; - Eif (httpsRequest.socket.npnProtocol === implementedVersion) { + Eif (httpsRequest.socket[negotiatedProtocol] === implementedVersion) { httpsRequest.socket.emit('agentRemove'); unbundleSocket(httpsRequest.socket); endpoint = new Endpoint(self._log, 'CLIENT', self._settings); @@ -3054,9 +3104,10 @@

// header field MUST be included in all responses. // * A client MUST treat the absence of the ":status" header field, the presence of multiple // values, or an invalid value as a stream error of type PROTOCOL_ERROR. + // Note: currently, we do not enforce it strictly: we accept any format, and parse it as int // * HTTP/2.0 does not define a way to carry the reason phrase that is included in an HTTP/1.1 // status line. - this.statusCode = this._checkSpecialHeader(':status', headers[':status']); + this.statusCode = parseInt(this._checkSpecialHeader(':status', headers[':status']));   // * Handling regular headers. IncomingMessage.prototype._onHeaders.call(this, headers); @@ -3102,7 +3153,7 @@

diff --git a/coverage/lcov-report/lib/index.html b/coverage/lcov-report/lib/index.html index aa701793..67edfafa 100644 --- a/coverage/lcov-report/lib/index.html +++ b/coverage/lcov-report/lib/index.html @@ -183,16 +183,16 @@

Code coverage report for lib/

- Statements: 93.22% (1553 / 1666)      + Statements: 93.26% (1563 / 1676)      - Branches: 85.11% (600 / 705)      + Branches: 84.85% (605 / 713)      - Functions: 94.79% (200 / 211)      + Functions: 94.81% (201 / 212)      - Lines: 93.19% (1547 / 1660)      + Lines: 93.23% (1557 / 1670)     

All files » lib/
@@ -281,15 +281,15 @@

http.js - - 92.1% - (373 / 405) - 77.27% - (119 / 154) - 92.06% - (58 / 63) - 92.1% - (373 / 405) + + 92.29% + (383 / 415) + 76.54% + (124 / 162) + 92.19% + (59 / 64) + 92.29% + (383 / 415) @@ -310,7 +310,7 @@

diff --git a/coverage/lcov-report/lib/stream.js.html b/coverage/lcov-report/lib/stream.js.html index 75d20e0f..2a492ebe 100644 --- a/coverage/lcov-report/lib/stream.js.html +++ b/coverage/lcov-report/lib/stream.js.html @@ -2049,7 +2049,7 @@

diff --git a/coverage/lcov.info b/coverage/lcov.info index cc5b8efd..af8f8d2a 100644 --- a/coverage/lcov.info +++ b/coverage/lcov.info @@ -665,15 +665,15 @@ DA:203,45 DA:204,45 DA:207,1 DA:208,75 -DA:209,27 -DA:211,48 +DA:209,28 +DA:211,47 DA:215,1 DA:216,10 DA:217,10 DA:218,10 DA:219,10 DA:220,10 -DA:221,6 +DA:221,5 DA:224,10 DA:229,1 DA:230,22 @@ -863,10 +863,10 @@ BRDA:172,9,0,22 BRDA:172,9,1,0 BRDA:172,10,0,22 BRDA:172,10,1,22 -BRDA:208,11,0,27 -BRDA:208,11,1,48 -BRDA:220,12,0,6 -BRDA:220,12,1,4 +BRDA:208,11,0,28 +BRDA:208,11,1,47 +BRDA:220,12,0,5 +BRDA:220,12,1,5 BRDA:264,13,0,4 BRDA:264,13,1,227 BRDA:269,14,0,97 @@ -953,19 +953,19 @@ FNF:17 FNH:17 FNDA:164,Flow FNDA:1,_receive -FNDA:281,_write -FNDA:111,(anonymous_4) -FNDA:13,_restoreWindow +FNDA:266,_write +FNDA:97,(anonymous_4) +FNDA:12,_restoreWindow FNDA:45,disableRemoteFlowControl FNDA:1,_send -FNDA:234,_read -FNDA:627,read -FNDA:211,_parentPush -FNDA:212,_push -FNDA:204,push +FNDA:231,_read +FNDA:610,read +FNDA:209,_parentPush +FNDA:210,_push +FNDA:203,push FNDA:36,getLastQueuedFrame -FNDA:88,_increaseWindow -FNDA:6,_updateWindow +FNDA:87,_increaseWindow +FNDA:5,_updateWindow FNDA:52,setInitialWindow FNDA:1,disableLocalFlowControl DA:1,1 @@ -984,106 +984,106 @@ DA:73,1 DA:79,1 DA:80,1 DA:87,1 -DA:88,281 +DA:88,266 DA:89,63 -DA:92,281 -DA:93,111 -DA:94,111 -DA:95,111 -DA:96,13 -DA:98,111 -DA:103,170 -DA:106,281 -DA:108,6 +DA:92,266 +DA:93,97 +DA:94,97 +DA:95,97 +DA:96,12 +DA:98,97 +DA:103,169 +DA:106,266 +DA:108,5 DA:114,1 -DA:115,13 -DA:116,13 -DA:117,7 -DA:123,7 +DA:115,12 +DA:116,12 +DA:117,6 +DA:123,6 DA:128,1 DA:129,45 DA:130,45 DA:152,1 DA:153,1 DA:159,1 -DA:161,234 -DA:162,217 -DA:167,17 -DA:168,8 -DA:169,8 -DA:170,9 -DA:171,9 +DA:161,231 +DA:162,216 +DA:167,15 +DA:168,7 +DA:169,7 +DA:170,8 +DA:171,8 DA:172,7 -DA:175,8 -DA:177,8 -DA:184,9 +DA:175,7 +DA:177,7 +DA:184,8 DA:188,1 DA:193,1 -DA:194,627 +DA:194,610 DA:195,130 -DA:196,497 +DA:196,480 DA:197,0 -DA:198,497 -DA:199,497 -DA:204,497 -DA:205,497 -DA:207,497 -DA:208,405 -DA:209,193 -DA:211,405 -DA:214,92 +DA:198,480 +DA:199,480 +DA:204,480 +DA:205,480 +DA:207,480 +DA:208,401 +DA:209,191 +DA:211,401 +DA:214,79 DA:215,0 DA:216,0 DA:218,0 -DA:222,92 -DA:224,92 -DA:230,92 -DA:232,92 +DA:222,79 +DA:224,79 +DA:230,79 +DA:232,79 DA:233,0 -DA:235,92 +DA:235,79 DA:240,1 -DA:241,211 -DA:243,211 -DA:244,29 -DA:246,29 -DA:247,29 -DA:250,211 +DA:241,209 +DA:243,209 +DA:244,28 +DA:246,28 +DA:247,28 +DA:250,209 DA:257,1 -DA:258,212 -DA:260,212 -DA:261,204 -DA:264,8 +DA:258,210 +DA:260,210 +DA:261,203 +DA:264,7 DA:265,1 -DA:269,7 -DA:271,7 -DA:272,7 -DA:278,7 +DA:269,6 +DA:271,6 +DA:272,6 +DA:278,6 DA:283,1 -DA:284,204 +DA:284,203 DA:285,6 -DA:287,198 -DA:290,204 -DA:291,204 -DA:292,203 -DA:295,204 +DA:287,197 +DA:290,203 +DA:291,203 +DA:292,202 +DA:295,203 DA:296,7 -DA:299,204 +DA:299,203 DA:304,1 DA:305,36 DA:306,36 DA:320,1 DA:322,1 -DA:323,88 +DA:323,87 DA:324,1 DA:325,1 -DA:327,87 -DA:328,87 -DA:329,87 +DA:327,86 +DA:328,86 +DA:329,86 DA:330,1 DA:331,1 -DA:333,86 +DA:333,85 DA:346,1 -DA:347,6 +DA:347,5 DA:354,1 DA:355,52 DA:356,52 @@ -1092,93 +1092,93 @@ DA:361,1 LF:121 LH:116 BRDA:88,1,0,63 -BRDA:88,1,1,218 -BRDA:88,2,0,281 -BRDA:88,2,1,218 -BRDA:92,3,0,111 -BRDA:92,3,1,170 -BRDA:92,4,0,281 -BRDA:92,4,1,143 -BRDA:92,4,2,140 -BRDA:95,5,0,13 -BRDA:95,5,1,98 -BRDA:106,6,0,6 -BRDA:106,6,1,275 -BRDA:106,7,0,281 -BRDA:106,7,1,6 -BRDA:106,7,2,6 -BRDA:116,8,0,7 +BRDA:88,1,1,203 +BRDA:88,2,0,266 +BRDA:88,2,1,203 +BRDA:92,3,0,97 +BRDA:92,3,1,169 +BRDA:92,4,0,266 +BRDA:92,4,1,129 +BRDA:92,4,2,126 +BRDA:95,5,0,12 +BRDA:95,5,1,85 +BRDA:106,6,0,5 +BRDA:106,6,1,261 +BRDA:106,7,0,266 +BRDA:106,7,1,5 +BRDA:106,7,2,5 +BRDA:116,8,0,6 BRDA:116,8,1,6 -BRDA:116,9,0,13 -BRDA:116,9,1,7 -BRDA:116,9,2,7 -BRDA:161,10,0,217 -BRDA:161,10,1,17 -BRDA:167,11,0,8 -BRDA:167,11,1,9 -BRDA:174,12,0,9 +BRDA:116,9,0,12 +BRDA:116,9,1,6 +BRDA:116,9,2,6 +BRDA:161,10,0,216 +BRDA:161,10,1,15 +BRDA:167,11,0,7 +BRDA:167,11,1,8 +BRDA:174,12,0,8 BRDA:174,12,1,7 BRDA:171,13,0,7 -BRDA:171,13,1,2 -BRDA:177,14,0,8 -BRDA:177,14,1,8 -BRDA:177,14,2,2 -BRDA:177,14,3,2 +BRDA:171,13,1,1 +BRDA:177,14,0,7 +BRDA:177,14,1,7 +BRDA:177,14,2,1 +BRDA:177,14,3,1 BRDA:194,15,0,130 -BRDA:194,15,1,497 +BRDA:194,15,1,480 BRDA:196,16,0,0 -BRDA:196,16,1,497 -BRDA:198,17,0,497 +BRDA:196,16,1,480 +BRDA:198,17,0,480 BRDA:198,17,1,0 -BRDA:198,18,0,497 +BRDA:198,18,0,480 BRDA:198,18,1,146 -BRDA:205,19,0,497 -BRDA:205,19,1,212 -BRDA:207,20,0,405 -BRDA:207,20,1,92 -BRDA:207,21,0,497 -BRDA:207,21,1,288 -BRDA:207,21,2,144 -BRDA:208,22,0,193 -BRDA:208,22,1,212 +BRDA:205,19,0,480 +BRDA:205,19,1,210 +BRDA:207,20,0,401 +BRDA:207,20,1,79 +BRDA:207,21,0,480 +BRDA:207,21,1,273 +BRDA:207,21,2,130 +BRDA:208,22,0,191 +BRDA:208,22,1,210 BRDA:214,23,0,0 -BRDA:214,23,1,92 +BRDA:214,23,1,79 BRDA:215,24,0,0 BRDA:215,24,1,0 BRDA:232,25,0,0 -BRDA:232,25,1,92 -BRDA:243,26,0,29 -BRDA:243,26,1,182 -BRDA:243,27,0,211 -BRDA:243,27,1,205 -BRDA:243,27,2,52 -BRDA:258,28,0,212 -BRDA:258,28,1,206 -BRDA:258,28,2,53 -BRDA:260,29,0,204 -BRDA:260,29,1,8 -BRDA:260,30,0,212 -BRDA:260,30,1,53 +BRDA:232,25,1,79 +BRDA:243,26,0,28 +BRDA:243,26,1,181 +BRDA:243,27,0,209 +BRDA:243,27,1,203 +BRDA:243,27,2,51 +BRDA:258,28,0,210 +BRDA:258,28,1,204 +BRDA:258,28,2,52 +BRDA:260,29,0,203 +BRDA:260,29,1,7 +BRDA:260,30,0,210 +BRDA:260,30,1,52 BRDA:264,31,0,1 -BRDA:264,31,1,7 +BRDA:264,31,1,6 BRDA:284,32,0,6 -BRDA:284,32,1,198 -BRDA:291,33,0,203 +BRDA:284,32,1,197 +BRDA:291,33,0,202 BRDA:291,33,1,1 BRDA:295,34,0,7 -BRDA:295,34,1,197 +BRDA:295,34,1,196 BRDA:306,35,0,36 BRDA:306,35,1,36 BRDA:323,36,0,1 -BRDA:323,36,1,87 -BRDA:323,37,0,88 +BRDA:323,36,1,86 +BRDA:323,37,0,87 BRDA:323,37,1,2 BRDA:329,38,0,1 -BRDA:329,38,1,86 -BRDA:329,39,0,87 -BRDA:329,39,1,38 +BRDA:329,38,1,85 +BRDA:329,39,0,86 +BRDA:329,39,1,37 BRDA:347,40,0,0 -BRDA:347,40,1,6 +BRDA:347,40,1,5 BRF:88 BRH:81 end_of_record @@ -1801,7 +1801,7 @@ FNDA:25,Serializer FNDA:76,_transform FNDA:25,Deserializer FNDA:165,(anonymous_4) -FNDA:68,_transform +FNDA:66,_transform FNDA:87,writeCommonHeader FNDA:81,readCommonHeader FNDA:14,writeData @@ -1864,21 +1864,21 @@ DA:83,165 DA:84,165 DA:85,95 DA:91,1 -DA:92,68 -DA:94,68 +DA:92,66 +DA:94,66 DA:95,0 -DA:98,68 -DA:101,149 -DA:102,149 -DA:103,149 -DA:104,149 -DA:111,149 +DA:98,66 +DA:101,147 +DA:102,147 +DA:103,147 +DA:104,147 +DA:111,147 DA:112,70 DA:113,70 DA:114,70 DA:116,0 DA:117,0 -DA:126,149 +DA:126,147 DA:127,70 DA:128,70 DA:129,70 @@ -1888,7 +1888,7 @@ DA:133,70 DA:134,70 DA:137,0 DA:139,70 -DA:143,68 +DA:143,66 DA:191,1 DA:192,1 DA:194,1 @@ -2088,16 +2088,16 @@ BRDA:69,3,1,1 BRDA:84,4,0,95 BRDA:84,4,1,70 BRDA:94,5,0,0 -BRDA:94,5,1,68 +BRDA:94,5,1,66 BRDA:111,6,0,70 -BRDA:111,6,1,79 -BRDA:111,7,0,149 +BRDA:111,6,1,77 +BRDA:111,7,0,147 BRDA:111,7,1,134 BRDA:113,8,0,70 BRDA:113,8,1,0 BRDA:126,9,0,70 -BRDA:126,9,1,79 -BRDA:126,10,0,149 +BRDA:126,9,1,77 +BRDA:126,10,0,147 BRDA:126,10,1,70 BRDA:127,11,0,70 BRDA:127,11,1,0 @@ -2156,77 +2156,79 @@ BRH:60 end_of_record TN: SF:/data/upstream/node-http2/lib/http.js -FN:162,noop -FN:171,(anonymous_2) -FN:177,(anonymous_3) -FN:184,IncomingMessage -FN:211,_onHeaders -FN:236,_onTrailers -FN:242,_checkSpecialHeader -FN:255,OutgoingMessage -FN:267,_write -FN:275,_finish -FN:290,setHeader -FN:302,removeHeader -FN:310,getHeader -FN:314,addTrailers -FN:334,Server -FN:351,(anonymous_16) -FN:379,_start -FN:390,_onStream -FN:402,_fallback -FN:418,listen -FN:424,close -FN:429,setTimeout -FN:436,getTimeout -FN:443,setTimeout -FN:454,on -FN:463,addContext -FN:469,createServer -FN:487,IncomingRequest -FN:496,_onHeaders -FN:527,OutgoingResponse -FN:540,writeHead -FN:564,_implicitHeaders -FN:570,write -FN:575,end -FN:580,_onRequestHeaders -FN:584,push -FN:610,on -FN:626,request -FN:629,get -FN:636,Agent -FN:658,request -FN:712,(anonymous_42) -FN:721,negotiated -FN:748,(anonymous_44) -FN:761,get -FN:767,unbundleSocket -FN:779,getMaxSockets -FN:782,setMaxSockets -FN:792,OutgoingRequest -FN:801,_start -FN:834,_fallback -FN:840,setPriority -FN:850,on -FN:859,setNoDelay -FN:867,setSocketKeepAlive -FN:875,setTimeout -FN:884,abort -FN:895,_onPromise -FN:910,IncomingResponse -FN:919,_onHeaders -FN:939,IncomingPromise -FN:958,cancel -FN:962,setPriority -FNF:63 -FNH:58 +FN:173,noop +FN:182,(anonymous_2) +FN:188,(anonymous_3) +FN:195,IncomingMessage +FN:224,_onHeaders +FN:247,(anonymous_6) +FN:252,_onEnd +FN:258,_checkSpecialHeader +FN:271,OutgoingMessage +FN:283,_write +FN:291,_finish +FN:306,setHeader +FN:318,removeHeader +FN:326,getHeader +FN:330,addTrailers +FN:350,Server +FN:367,(anonymous_17) +FN:395,_start +FN:406,_onStream +FN:418,_fallback +FN:434,listen +FN:440,close +FN:445,setTimeout +FN:452,getTimeout +FN:459,setTimeout +FN:470,on +FN:479,addContext +FN:485,createServer +FN:503,IncomingRequest +FN:512,_onHeaders +FN:543,OutgoingResponse +FN:556,writeHead +FN:580,_implicitHeaders +FN:586,write +FN:591,end +FN:596,_onRequestHeaders +FN:600,push +FN:626,on +FN:642,request +FN:645,get +FN:652,Agent +FN:674,request +FN:728,(anonymous_43) +FN:737,negotiated +FN:764,(anonymous_45) +FN:777,get +FN:783,unbundleSocket +FN:795,getMaxSockets +FN:798,setMaxSockets +FN:808,OutgoingRequest +FN:817,_start +FN:850,_fallback +FN:856,setPriority +FN:866,on +FN:875,setNoDelay +FN:883,setSocketKeepAlive +FN:891,setTimeout +FN:900,abort +FN:911,_onPromise +FN:926,IncomingResponse +FN:935,_onHeaders +FN:956,IncomingPromise +FN:975,cancel +FN:979,setPriority +FNF:64 +FNH:59 FNDA:2,noop FNDA:3,(anonymous_2) FNDA:6,(anonymous_3) FNDA:25,IncomingMessage FNDA:24,_onHeaders -FNDA:2,_onTrailers +FNDA:2,(anonymous_6) +FNDA:24,_onEnd FNDA:60,_checkSpecialHeader FNDA:27,OutgoingMessage FNDA:13,_write @@ -2236,7 +2238,7 @@ FNDA:1,removeHeader FNDA:3,getHeader FNDA:2,addTrailers FNDA:13,Server -FNDA:9,(anonymous_16) +FNDA:9,(anonymous_17) FNDA:10,_start FNDA:10,_onStream FNDA:0,_fallback @@ -2262,9 +2264,9 @@ FNDA:4,request FNDA:7,get FNDA:4,Agent FNDA:12,request -FNDA:9,(anonymous_42) +FNDA:9,(anonymous_43) FNDA:9,negotiated -FNDA:9,(anonymous_44) +FNDA:9,(anonymous_45) FNDA:7,get FNDA:9,unbundleSocket FNDA:1,getMaxSockets @@ -2284,9 +2286,6 @@ FNDA:12,_onHeaders FNDA:2,IncomingPromise FNDA:0,cancel FNDA:0,setPriority -DA:128,1 -DA:129,1 -DA:130,1 DA:131,1 DA:132,1 DA:133,1 @@ -2294,557 +2293,578 @@ DA:134,1 DA:135,1 DA:136,1 DA:137,1 +DA:138,1 DA:139,1 DA:140,1 -DA:141,1 DA:142,1 +DA:143,1 DA:144,1 -DA:156,1 +DA:145,1 +DA:147,1 +DA:159,1 DA:162,1 -DA:163,1 -DA:171,3 -DA:175,1 -DA:176,1 -DA:177,1 -DA:178,6 -DA:184,1 -DA:186,25 -DA:187,25 -DA:188,25 -DA:190,25 -DA:194,25 -DA:195,25 -DA:196,25 +DA:165,1 +DA:166,1 +DA:167,1 +DA:173,1 +DA:174,1 +DA:182,3 +DA:186,1 +DA:187,1 +DA:188,1 +DA:189,6 +DA:195,1 +DA:197,25 +DA:198,25 DA:199,25 -DA:200,25 -DA:203,25 -DA:205,1 -DA:211,1 -DA:216,24 -DA:217,168 -DA:218,168 -DA:219,0 -DA:220,0 -DA:221,0 -DA:226,24 -DA:227,73 -DA:228,13 -DA:233,24 -DA:236,1 -DA:237,2 -DA:240,1 -DA:242,1 -DA:243,60 -DA:244,0 -DA:245,0 -DA:248,60 -DA:255,1 -DA:257,27 -DA:259,27 -DA:260,27 -DA:261,27 -DA:263,27 -DA:265,1 -DA:267,1 -DA:268,13 -DA:269,12 +DA:201,25 +DA:205,25 +DA:206,25 +DA:207,25 +DA:210,25 +DA:211,25 +DA:212,25 +DA:215,25 +DA:216,25 +DA:218,1 +DA:224,1 +DA:229,24 +DA:230,168 +DA:231,168 +DA:232,0 +DA:233,0 +DA:234,0 +DA:239,24 +DA:240,73 +DA:241,13 +DA:246,24 +DA:247,24 +DA:248,2 +DA:252,1 +DA:253,24 +DA:256,1 +DA:258,1 +DA:259,60 +DA:260,0 +DA:261,0 +DA:264,60 DA:271,1 -DA:275,1 -DA:276,31 -DA:277,23 -DA:278,2 -DA:279,0 -DA:281,2 -DA:284,23 -DA:286,8 -DA:290,1 -DA:291,4 -DA:292,0 -DA:294,4 -DA:295,4 -DA:296,0 -DA:298,4 -DA:302,1 -DA:303,1 -DA:304,0 +DA:273,27 +DA:275,27 +DA:276,27 +DA:277,27 +DA:279,27 +DA:281,1 +DA:283,1 +DA:284,13 +DA:285,12 +DA:287,1 +DA:291,1 +DA:292,31 +DA:293,23 +DA:294,2 +DA:295,0 +DA:297,2 +DA:300,23 +DA:302,8 DA:306,1 -DA:310,1 -DA:311,3 -DA:314,1 -DA:315,2 +DA:307,4 +DA:308,0 +DA:310,4 +DA:311,4 +DA:312,0 +DA:314,4 DA:318,1 -DA:320,1 -DA:325,1 +DA:319,1 +DA:320,0 +DA:322,1 DA:326,1 -DA:327,1 -DA:328,1 -DA:329,1 +DA:327,3 +DA:330,1 +DA:331,2 DA:334,1 -DA:335,13 -DA:337,13 -DA:338,13 -DA:340,13 -DA:341,13 -DA:344,13 -DA:345,10 -DA:346,10 -DA:347,10 -DA:348,10 -DA:349,10 -DA:350,10 -DA:351,10 -DA:352,9 -DA:353,9 -DA:355,0 -DA:358,10 -DA:362,3 -DA:363,1 -DA:364,1 -DA:365,1 -DA:370,2 -DA:371,2 -DA:374,11 -DA:376,1 +DA:336,1 +DA:341,1 +DA:342,1 +DA:343,1 +DA:344,1 +DA:345,1 +DA:350,1 +DA:351,13 +DA:353,13 +DA:354,13 +DA:356,13 +DA:357,13 +DA:360,13 +DA:361,10 +DA:362,10 +DA:363,10 +DA:364,10 +DA:365,10 +DA:366,10 +DA:367,10 +DA:368,9 +DA:369,9 +DA:371,0 +DA:374,10 +DA:378,3 DA:379,1 -DA:380,10 -DA:382,10 -DA:387,10 -DA:389,10 -DA:390,10 -DA:391,10 -DA:392,10 -DA:394,10 -DA:397,10 -DA:399,10 -DA:402,1 -DA:403,0 -DA:408,0 -DA:409,0 -DA:412,0 +DA:380,1 +DA:381,1 +DA:386,2 +DA:387,2 +DA:390,11 +DA:392,1 +DA:395,1 +DA:396,10 +DA:398,10 +DA:403,10 +DA:405,10 +DA:406,10 +DA:407,10 +DA:408,10 +DA:410,10 +DA:413,10 +DA:415,10 DA:418,1 -DA:419,9 -DA:421,9 -DA:424,1 -DA:425,4 -DA:426,4 -DA:429,1 -DA:430,1 -DA:431,1 -DA:435,1 -DA:437,1 -DA:438,1 -DA:440,0 -DA:444,1 +DA:419,0 +DA:424,0 +DA:425,0 +DA:428,0 +DA:434,1 +DA:435,9 +DA:437,9 +DA:440,1 +DA:441,4 +DA:442,4 DA:445,1 +DA:446,1 +DA:447,1 +DA:451,1 +DA:453,1 DA:454,1 -DA:455,9 DA:456,0 -DA:458,9 -DA:463,1 -DA:464,0 -DA:465,0 -DA:469,1 -DA:470,10 -DA:471,1 -DA:472,1 -DA:475,10 -DA:477,9 -DA:478,9 -DA:481,9 +DA:460,1 +DA:461,1 +DA:470,1 +DA:471,9 +DA:472,0 +DA:474,9 +DA:479,1 +DA:480,0 +DA:481,0 +DA:485,1 +DA:486,10 DA:487,1 -DA:488,12 -DA:490,1 -DA:496,1 -DA:507,12 -DA:508,12 -DA:509,12 -DA:510,12 -DA:513,12 -DA:516,12 -DA:519,12 -DA:521,12 -DA:527,1 -DA:528,12 -DA:530,12 +DA:488,1 +DA:491,10 +DA:493,9 +DA:494,9 +DA:497,9 +DA:503,1 +DA:504,12 +DA:506,1 +DA:512,1 +DA:523,12 +DA:524,12 +DA:525,12 +DA:526,12 +DA:529,12 DA:532,12 -DA:533,12 -DA:534,12 -DA:536,12 -DA:538,1 -DA:540,1 -DA:541,12 -DA:542,1 -DA:544,11 -DA:547,12 -DA:548,1 +DA:535,12 +DA:537,12 +DA:543,1 +DA:544,12 +DA:546,12 +DA:548,12 +DA:549,12 DA:550,12 DA:552,12 -DA:553,11 -DA:556,12 -DA:558,12 -DA:560,12 -DA:561,12 +DA:554,1 +DA:556,1 +DA:557,12 +DA:558,1 +DA:560,11 +DA:563,12 DA:564,1 -DA:565,23 -DA:566,11 -DA:570,1 -DA:571,11 -DA:572,11 -DA:575,1 +DA:566,12 +DA:568,12 +DA:569,11 +DA:572,12 +DA:574,12 DA:576,12 DA:577,12 DA:580,1 -DA:581,10 -DA:584,1 -DA:585,2 +DA:581,23 +DA:582,11 DA:586,1 -DA:589,2 -DA:590,0 -DA:593,2 -DA:600,2 -DA:603,2 +DA:587,11 +DA:588,11 +DA:591,1 +DA:592,12 +DA:593,12 +DA:596,1 +DA:597,10 +DA:600,1 +DA:601,2 +DA:602,1 DA:605,2 -DA:610,1 -DA:611,12 -DA:612,0 -DA:614,12 -DA:621,1 -DA:622,1 -DA:623,1 -DA:624,1 -DA:625,1 +DA:606,0 +DA:609,2 +DA:616,2 +DA:619,2 +DA:621,2 DA:626,1 -DA:627,4 -DA:629,1 -DA:630,7 -DA:636,1 -DA:637,4 -DA:639,4 -DA:641,4 -DA:642,4 +DA:627,12 +DA:628,0 +DA:630,12 +DA:637,1 +DA:638,1 +DA:639,1 +DA:640,1 +DA:641,1 +DA:642,1 DA:643,4 -DA:649,4 +DA:645,1 +DA:646,7 +DA:652,1 DA:653,4 -DA:654,4 -DA:656,1 -DA:658,1 -DA:659,12 -DA:660,8 -DA:663,12 -DA:664,12 -DA:665,12 -DA:666,12 -DA:667,12 -DA:669,12 -DA:670,1 -DA:671,1 -DA:674,11 -DA:676,11 -DA:677,7 -DA:680,11 -DA:687,11 -DA:688,1 -DA:689,1 -DA:693,10 -DA:694,1 -DA:695,1 -DA:700,1 -DA:701,1 -DA:706,9 -DA:707,9 -DA:708,9 -DA:709,9 -DA:710,9 -DA:712,9 -DA:713,9 -DA:714,0 -DA:716,9 -DA:720,9 -DA:721,1 +DA:655,4 +DA:657,4 +DA:658,4 +DA:659,4 +DA:665,4 +DA:666,4 +DA:667,4 +DA:669,4 +DA:670,4 +DA:672,1 +DA:674,1 +DA:675,12 +DA:676,8 +DA:679,12 +DA:680,12 +DA:681,12 +DA:682,12 +DA:683,12 +DA:685,12 +DA:686,1 +DA:687,1 +DA:690,11 +DA:692,11 +DA:693,7 +DA:696,11 +DA:703,11 +DA:704,1 +DA:705,1 +DA:709,10 +DA:710,1 +DA:711,1 +DA:716,1 +DA:717,1 DA:722,9 DA:723,9 DA:724,9 DA:725,9 DA:726,9 -DA:727,9 DA:728,9 -DA:730,9 -DA:731,1 -DA:732,1 -DA:734,0 -DA:737,8 -DA:738,8 -DA:740,8 -DA:741,8 -DA:743,0 -DA:748,9 -DA:749,9 -DA:750,9 -DA:751,9 -DA:753,0 -DA:758,11 -DA:761,1 -DA:762,7 -DA:763,7 -DA:764,7 -DA:767,1 -DA:768,9 -DA:769,9 -DA:770,9 -DA:771,9 -DA:772,9 -DA:773,9 -DA:774,9 -DA:775,9 -DA:778,1 -DA:780,1 +DA:729,9 +DA:730,0 +DA:732,9 +DA:736,9 +DA:737,1 +DA:738,9 +DA:739,9 +DA:740,9 +DA:741,9 +DA:742,9 +DA:743,9 +DA:744,9 +DA:746,9 +DA:747,1 +DA:748,1 +DA:750,0 +DA:753,8 +DA:754,8 +DA:756,8 +DA:757,8 +DA:759,0 +DA:764,9 +DA:765,9 +DA:766,9 +DA:767,9 +DA:769,0 +DA:774,11 +DA:777,1 +DA:778,7 +DA:779,7 +DA:780,7 DA:783,1 -DA:787,1 -DA:792,1 -DA:793,15 -DA:795,15 -DA:797,15 +DA:784,9 +DA:785,9 +DA:786,9 +DA:787,9 +DA:788,9 +DA:789,9 +DA:790,9 +DA:791,9 +DA:794,1 +DA:796,1 DA:799,1 -DA:801,1 -DA:802,11 -DA:804,11 -DA:806,11 -DA:807,1 -DA:809,11 -DA:810,11 -DA:812,11 -DA:813,0 -DA:816,11 -DA:817,11 +DA:803,1 +DA:808,1 +DA:809,15 +DA:811,15 +DA:813,15 +DA:815,1 +DA:817,1 DA:818,11 -DA:819,11 -DA:821,11 -DA:823,11 -DA:824,11 +DA:820,11 +DA:822,11 +DA:823,1 +DA:825,11 DA:826,11 DA:828,11 -DA:829,11 -DA:831,11 -DA:834,1 -DA:835,4 -DA:836,4 -DA:837,4 -DA:840,1 -DA:841,0 -DA:842,0 -DA:844,0 +DA:829,0 +DA:832,11 +DA:833,11 +DA:834,11 +DA:835,11 +DA:837,11 +DA:839,11 +DA:840,11 +DA:842,11 +DA:844,11 +DA:845,11 +DA:847,11 DA:850,1 -DA:851,40 -DA:852,0 -DA:854,40 -DA:859,1 -DA:860,3 -DA:861,1 -DA:862,2 -DA:863,1 -DA:867,1 -DA:868,3 -DA:869,1 -DA:870,2 -DA:871,1 +DA:851,4 +DA:852,4 +DA:853,4 +DA:856,1 +DA:857,0 +DA:858,0 +DA:860,0 +DA:866,1 +DA:867,40 +DA:868,0 +DA:870,40 DA:875,1 DA:876,3 DA:877,1 DA:878,2 DA:879,1 -DA:884,1 -DA:885,3 -DA:886,1 -DA:887,2 -DA:888,1 -DA:890,1 +DA:883,1 +DA:884,3 +DA:885,1 +DA:886,2 +DA:887,1 +DA:891,1 +DA:892,3 +DA:893,1 +DA:894,2 DA:895,1 -DA:896,2 -DA:898,2 -DA:900,2 -DA:901,2 -DA:903,0 -DA:910,1 -DA:911,13 -DA:913,1 -DA:919,1 -DA:926,12 -DA:929,12 -DA:932,12 -DA:933,12 -DA:939,1 -DA:940,2 -DA:941,2 -DA:942,2 -DA:943,2 -DA:945,2 -DA:947,2 -DA:949,2 -DA:951,2 -DA:952,2 -DA:954,2 +DA:900,1 +DA:901,3 +DA:902,1 +DA:903,2 +DA:904,1 +DA:906,1 +DA:911,1 +DA:912,2 +DA:914,2 +DA:916,2 +DA:917,2 +DA:919,0 +DA:926,1 +DA:927,13 +DA:929,1 +DA:935,1 +DA:943,12 +DA:946,12 +DA:949,12 +DA:950,12 DA:956,1 -DA:958,1 -DA:959,0 -DA:962,1 -DA:963,0 -DA:966,1 -LF:405 -LH:373 -BRDA:218,1,0,0 -BRDA:218,1,1,168 -BRDA:227,2,0,13 -BRDA:227,2,1,60 -BRDA:243,3,0,0 -BRDA:243,3,1,60 -BRDA:243,4,0,60 -BRDA:243,4,1,60 -BRDA:268,5,0,12 -BRDA:268,5,1,1 -BRDA:276,6,0,23 -BRDA:276,6,1,8 -BRDA:277,7,0,2 -BRDA:277,7,1,21 -BRDA:278,8,0,0 -BRDA:278,8,1,2 -BRDA:291,9,0,0 -BRDA:291,9,1,4 -BRDA:295,10,0,0 -BRDA:295,10,1,4 -BRDA:303,11,0,0 -BRDA:303,11,1,1 -BRDA:335,12,0,13 -BRDA:335,12,1,2 -BRDA:337,13,0,13 -BRDA:337,13,1,2 -BRDA:344,14,0,10 -BRDA:344,14,1,3 -BRDA:344,15,0,13 -BRDA:344,15,1,10 -BRDA:344,15,2,3 -BRDA:352,16,0,9 -BRDA:352,16,1,0 -BRDA:352,17,0,9 -BRDA:352,17,1,9 -BRDA:362,18,0,1 -BRDA:362,18,1,2 -BRDA:419,19,0,0 -BRDA:419,19,1,9 -BRDA:430,20,0,1 -BRDA:430,20,1,0 -BRDA:437,21,0,1 -BRDA:437,21,1,0 -BRDA:444,22,0,1 -BRDA:444,22,1,0 -BRDA:455,23,0,0 -BRDA:455,23,1,9 -BRDA:455,24,0,9 -BRDA:455,24,1,9 -BRDA:456,25,0,0 -BRDA:456,25,1,0 -BRDA:464,26,0,0 -BRDA:464,26,1,0 -BRDA:470,27,0,1 -BRDA:470,27,1,9 -BRDA:477,28,0,9 -BRDA:477,28,1,0 -BRDA:541,29,0,1 -BRDA:541,29,1,11 -BRDA:552,30,0,11 -BRDA:552,30,1,1 -BRDA:552,31,0,12 -BRDA:552,31,1,11 -BRDA:565,32,0,11 -BRDA:565,32,1,12 -BRDA:585,33,0,1 -BRDA:585,33,1,1 -BRDA:589,34,0,0 -BRDA:589,34,1,2 -BRDA:594,35,0,2 -BRDA:594,35,1,2 -BRDA:595,36,0,2 -BRDA:595,36,1,1 -BRDA:595,36,2,1 -BRDA:596,37,0,2 -BRDA:596,37,1,2 -BRDA:596,37,2,2 -BRDA:611,38,0,0 -BRDA:611,38,1,12 -BRDA:611,39,0,12 -BRDA:611,39,1,0 -BRDA:612,40,0,0 -BRDA:612,40,1,0 -BRDA:627,41,0,4 -BRDA:627,41,1,4 -BRDA:630,42,0,7 -BRDA:630,42,1,7 -BRDA:639,43,0,4 -BRDA:639,43,1,1 -BRDA:642,44,0,4 -BRDA:642,44,1,1 -BRDA:659,45,0,8 -BRDA:659,45,1,4 -BRDA:663,46,0,12 -BRDA:663,46,1,12 -BRDA:664,47,0,12 -BRDA:664,47,1,3 -BRDA:665,48,0,12 -BRDA:665,48,1,4 -BRDA:665,48,2,1 -BRDA:666,49,0,12 -BRDA:666,49,1,1 -BRDA:667,50,0,12 -BRDA:667,50,1,1 -BRDA:669,51,0,1 -BRDA:669,51,1,11 -BRDA:676,52,0,7 -BRDA:676,52,1,4 -BRDA:687,53,0,1 -BRDA:687,53,1,10 -BRDA:693,54,0,1 -BRDA:693,54,1,9 -BRDA:713,55,0,0 -BRDA:713,55,1,9 -BRDA:723,56,0,9 -BRDA:723,56,1,0 -BRDA:730,57,0,1 -BRDA:730,57,1,8 -BRDA:731,58,0,1 -BRDA:731,58,1,0 -BRDA:737,59,0,8 -BRDA:737,59,1,0 -BRDA:750,60,0,9 -BRDA:750,60,1,0 -BRDA:812,61,0,0 -BRDA:812,61,1,11 -BRDA:822,62,0,11 -BRDA:822,62,1,10 -BRDA:841,63,0,0 -BRDA:841,63,1,0 -BRDA:851,64,0,0 -BRDA:851,64,1,40 -BRDA:851,65,0,40 -BRDA:851,65,1,0 -BRDA:852,66,0,0 -BRDA:852,66,1,0 -BRDA:860,67,0,1 -BRDA:860,67,1,2 -BRDA:862,68,0,1 -BRDA:862,68,1,1 -BRDA:868,69,0,1 -BRDA:868,69,1,2 -BRDA:870,70,0,1 -BRDA:870,70,1,1 +DA:957,2 +DA:958,2 +DA:959,2 +DA:960,2 +DA:962,2 +DA:964,2 +DA:966,2 +DA:968,2 +DA:969,2 +DA:971,2 +DA:973,1 +DA:975,1 +DA:976,0 +DA:979,1 +DA:980,0 +DA:983,1 +LF:415 +LH:383 +BRDA:165,1,0,0 +BRDA:165,1,1,1 +BRDA:166,2,0,0 +BRDA:166,2,1,1 +BRDA:167,3,0,0 +BRDA:167,3,1,1 +BRDA:231,4,0,0 +BRDA:231,4,1,168 +BRDA:240,5,0,13 +BRDA:240,5,1,60 +BRDA:259,6,0,0 +BRDA:259,6,1,60 +BRDA:259,7,0,60 +BRDA:259,7,1,60 +BRDA:284,8,0,12 +BRDA:284,8,1,1 +BRDA:292,9,0,23 +BRDA:292,9,1,8 +BRDA:293,10,0,2 +BRDA:293,10,1,21 +BRDA:294,11,0,0 +BRDA:294,11,1,2 +BRDA:307,12,0,0 +BRDA:307,12,1,4 +BRDA:311,13,0,0 +BRDA:311,13,1,4 +BRDA:319,14,0,0 +BRDA:319,14,1,1 +BRDA:351,15,0,13 +BRDA:351,15,1,2 +BRDA:353,16,0,13 +BRDA:353,16,1,2 +BRDA:360,17,0,10 +BRDA:360,17,1,3 +BRDA:360,18,0,13 +BRDA:360,18,1,10 +BRDA:360,18,2,3 +BRDA:368,19,0,9 +BRDA:368,19,1,0 +BRDA:368,20,0,9 +BRDA:368,20,1,9 +BRDA:378,21,0,1 +BRDA:378,21,1,2 +BRDA:435,22,0,0 +BRDA:435,22,1,9 +BRDA:446,23,0,1 +BRDA:446,23,1,0 +BRDA:453,24,0,1 +BRDA:453,24,1,0 +BRDA:460,25,0,1 +BRDA:460,25,1,0 +BRDA:471,26,0,0 +BRDA:471,26,1,9 +BRDA:471,27,0,9 +BRDA:471,27,1,9 +BRDA:472,28,0,0 +BRDA:472,28,1,0 +BRDA:480,29,0,0 +BRDA:480,29,1,0 +BRDA:486,30,0,1 +BRDA:486,30,1,9 +BRDA:493,31,0,9 +BRDA:493,31,1,0 +BRDA:557,32,0,1 +BRDA:557,32,1,11 +BRDA:568,33,0,11 +BRDA:568,33,1,1 +BRDA:568,34,0,12 +BRDA:568,34,1,11 +BRDA:581,35,0,11 +BRDA:581,35,1,12 +BRDA:601,36,0,1 +BRDA:601,36,1,1 +BRDA:605,37,0,0 +BRDA:605,37,1,2 +BRDA:610,38,0,2 +BRDA:610,38,1,2 +BRDA:611,39,0,2 +BRDA:611,39,1,1 +BRDA:611,39,2,1 +BRDA:612,40,0,2 +BRDA:612,40,1,2 +BRDA:612,40,2,2 +BRDA:627,41,0,0 +BRDA:627,41,1,12 +BRDA:627,42,0,12 +BRDA:627,42,1,0 +BRDA:628,43,0,0 +BRDA:628,43,1,0 +BRDA:643,44,0,4 +BRDA:643,44,1,4 +BRDA:646,45,0,7 +BRDA:646,45,1,7 +BRDA:655,46,0,4 +BRDA:655,46,1,1 +BRDA:658,47,0,4 +BRDA:658,47,1,1 +BRDA:675,48,0,8 +BRDA:675,48,1,4 +BRDA:679,49,0,12 +BRDA:679,49,1,12 +BRDA:680,50,0,12 +BRDA:680,50,1,3 +BRDA:681,51,0,12 +BRDA:681,51,1,4 +BRDA:681,51,2,1 +BRDA:682,52,0,12 +BRDA:682,52,1,1 +BRDA:683,53,0,12 +BRDA:683,53,1,1 +BRDA:685,54,0,1 +BRDA:685,54,1,11 +BRDA:685,55,0,12 +BRDA:685,55,1,11 +BRDA:692,56,0,7 +BRDA:692,56,1,4 +BRDA:703,57,0,1 +BRDA:703,57,1,10 +BRDA:709,58,0,1 +BRDA:709,58,1,9 +BRDA:729,59,0,0 +BRDA:729,59,1,9 +BRDA:739,60,0,9 +BRDA:739,60,1,0 +BRDA:746,61,0,1 +BRDA:746,61,1,8 +BRDA:747,62,0,1 +BRDA:747,62,1,0 +BRDA:753,63,0,8 +BRDA:753,63,1,0 +BRDA:766,64,0,9 +BRDA:766,64,1,0 +BRDA:828,65,0,0 +BRDA:828,65,1,11 +BRDA:838,66,0,11 +BRDA:838,66,1,10 +BRDA:857,67,0,0 +BRDA:857,67,1,0 +BRDA:867,68,0,0 +BRDA:867,68,1,40 +BRDA:867,69,0,40 +BRDA:867,69,1,0 +BRDA:868,70,0,0 +BRDA:868,70,1,0 BRDA:876,71,0,1 BRDA:876,71,1,2 BRDA:878,72,0,1 BRDA:878,72,1,1 -BRDA:885,73,0,1 -BRDA:885,73,1,2 -BRDA:887,74,0,1 -BRDA:887,74,1,1 -BRDA:900,75,0,2 -BRDA:900,75,1,0 -BRF:154 -BRH:119 +BRDA:884,73,0,1 +BRDA:884,73,1,2 +BRDA:886,74,0,1 +BRDA:886,74,1,1 +BRDA:892,75,0,1 +BRDA:892,75,1,2 +BRDA:894,76,0,1 +BRDA:894,76,1,1 +BRDA:901,77,0,1 +BRDA:901,77,1,2 +BRDA:903,78,0,1 +BRDA:903,78,1,1 +BRDA:916,79,0,2 +BRDA:916,79,1,0 +BRF:162 +BRH:124 end_of_record From eedbe88c5f4e1ec4d1c4e6b2260933914fef99d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Moln=C3=A1r?= Date: Wed, 12 Mar 2014 11:35:24 +0100 Subject: [PATCH 15/20] Adding .gitignore --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..64326427 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +node_modules +.idea + From 2cd9bfec87904aec4ea4c7104091524eea6e4924 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Moln=C3=A1r?= Date: Wed, 12 Mar 2014 11:35:44 +0100 Subject: [PATCH 16/20] Regenerating docs --- coverage/coverage.json | 2 +- coverage/lcov-report/index.html | 28 +- coverage/lcov-report/lib/compressor.js.html | 3137 ------------------ coverage/lcov-report/lib/connection.js.html | 2060 ------------ coverage/lcov-report/lib/endpoint.js.html | 1082 ------- coverage/lcov-report/lib/flow.js.html | 1391 -------- coverage/lcov-report/lib/framer.js.html | 2543 --------------- coverage/lcov-report/lib/http.js.html | 266 +- coverage/lcov-report/lib/index.html | 106 +- coverage/lcov-report/lib/stream.js.html | 2150 ------------- coverage/lcov.info | 3214 +++---------------- doc/compressor.html | 1630 ---------- doc/connection.html | 1521 --------- doc/docco.css | 511 --- doc/endpoint.html | 658 ---- doc/flow.html | 792 ----- doc/framer.html | 1387 -------- doc/http.html | 371 +-- doc/https.html | 208 -- doc/index.html | 138 +- doc/stream.html | 1312 -------- 21 files changed, 885 insertions(+), 23622 deletions(-) delete mode 100644 coverage/lcov-report/lib/compressor.js.html delete mode 100644 coverage/lcov-report/lib/connection.js.html delete mode 100644 coverage/lcov-report/lib/endpoint.js.html delete mode 100644 coverage/lcov-report/lib/flow.js.html delete mode 100644 coverage/lcov-report/lib/framer.js.html delete mode 100644 coverage/lcov-report/lib/stream.js.html delete mode 100644 doc/compressor.html delete mode 100644 doc/connection.html delete mode 100644 doc/docco.css delete mode 100644 doc/endpoint.html delete mode 100644 doc/flow.html delete mode 100644 doc/framer.html delete mode 100644 doc/https.html delete mode 100644 doc/stream.html diff --git a/coverage/coverage.json b/coverage/coverage.json index 95eea1fe..533db4d9 100644 --- a/coverage/coverage.json +++ b/coverage/coverage.json @@ -1 +1 @@ -{"/data/upstream/node-http2/lib/compressor.js":{"path":"/data/upstream/node-http2/lib/compressor.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":54,"11":54,"12":54,"13":54,"14":54,"15":54,"16":1,"17":1806,"18":1806,"19":1806,"20":1806,"21":1806,"22":1806,"23":1,"24":1,"25":1806,"26":1,"27":54,"28":54,"29":1620,"30":54,"31":1,"32":182,"33":182,"34":182,"35":0,"36":0,"37":0,"38":182,"39":182,"40":182,"41":0,"42":182,"43":182,"44":182,"45":1,"46":1,"47":1,"48":1,"49":49,"50":49,"51":49,"52":49,"53":1,"54":49,"55":49,"56":1,"57":151,"58":151,"59":151,"60":54,"61":54,"62":54,"63":32,"64":22,"65":22,"66":22,"67":22,"68":97,"69":78,"70":19,"71":97,"72":97,"73":92,"74":92,"75":92,"76":92,"77":97,"78":1,"79":49,"80":49,"81":49,"82":151,"83":49,"84":1559,"85":1559,"86":46,"87":1559,"88":49,"89":1,"90":1,"91":47,"92":47,"93":47,"94":47,"95":1,"96":147,"97":147,"98":143,"99":147,"100":1,"101":159,"102":159,"103":159,"104":159,"105":159,"106":3760,"107":3760,"108":152,"109":65,"110":65,"111":87,"112":87,"113":159,"114":65,"115":65,"116":19,"117":19,"118":19,"119":46,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":46,"127":4,"128":4,"129":42,"130":94,"131":94,"132":94,"133":94,"134":4,"135":90,"136":76,"137":14,"138":94,"139":90,"140":90,"141":90,"142":0,"143":0,"144":0,"145":0,"146":0,"147":94,"148":159,"149":1,"150":47,"151":1488,"152":1488,"153":26,"154":26,"155":1488,"156":1488,"157":47,"158":1,"159":351,"160":351,"161":149,"162":202,"163":202,"164":2,"165":202,"166":202,"167":202,"168":210,"169":210,"170":210,"171":8,"172":210,"173":210,"174":202,"175":1,"176":363,"177":363,"178":363,"179":161,"180":363,"181":207,"182":207,"183":217,"184":217,"185":217,"186":363,"187":1,"188":123,"189":123,"190":123,"191":1,"192":125,"193":125,"194":125,"195":125,"196":1,"197":1,"198":151,"199":151,"200":51,"201":100,"202":5,"203":95,"204":18,"205":77,"206":151,"207":51,"208":100,"209":81,"210":19,"211":19,"212":100,"213":77,"214":100,"215":151,"216":151,"217":1,"218":159,"219":159,"220":159,"221":56,"222":103,"223":28,"224":6,"225":22,"226":75,"227":159,"228":56,"229":56,"230":103,"231":103,"232":20,"233":103,"234":75,"235":28,"236":22,"237":6,"238":103,"239":159,"240":1,"241":1,"242":1,"243":26,"244":26,"245":26,"246":26,"247":26,"248":1,"249":47,"250":47,"251":143,"252":143,"253":8,"254":24,"255":135,"256":47,"257":47,"258":47,"259":447,"260":47,"261":1,"262":75,"263":37,"264":37,"265":37,"266":39,"267":39,"268":39,"269":39,"270":37,"271":37,"272":37,"273":2,"274":39,"275":32,"276":39,"277":39,"278":38,"279":75,"280":1,"281":1,"282":28,"283":28,"284":28,"285":28,"286":28,"287":28,"288":28,"289":1,"290":49,"291":49,"292":49,"293":49,"294":49,"295":165,"296":165,"297":165,"298":17,"299":8,"300":9,"301":148,"302":49,"303":1,"304":73,"305":3,"306":1,"307":1,"308":1,"309":2,"310":70,"311":37,"312":37,"313":37,"314":33,"315":72,"316":36,"317":38,"318":36,"319":36,"320":0,"321":0,"322":0,"323":36,"324":36,"325":72,"326":1,"327":132,"328":132,"329":534,"330":132,"331":132,"332":534,"333":132,"334":1,"335":37,"336":37,"337":37,"338":39,"339":39,"340":39,"341":37},"b":{"1":[54,54],"2":[182,0],"3":[182,0],"4":[0,182],"5":[54,97],"6":[32,22],"7":[78,19],"8":[92,5],"9":[46,1513],"10":[1559,144],"11":[143,4],"12":[152,3608],"13":[65,87],"14":[87,0],"15":[65,94],"16":[19,46],"17":[0,46],"18":[4,42],"19":[4,90],"20":[76,14],"21":[90,4],"22":[0,0],"23":[76,18],"24":[26,1462],"25":[1488,165,123],"26":[149,202],"27":[2,200],"28":[8,202],"29":[161,202],"30":[207,156],"31":[51,100],"32":[5,95],"33":[18,77],"34":[51,100],"35":[81,19],"36":[77,23],"37":[56,103],"38":[28,75],"39":[6,22],"40":[56,103],"41":[20,83],"42":[75,28],"43":[22,6],"44":[26,13],"45":[13,13],"46":[8,135],"47":[37,38],"48":[75,45],"49":[37,2],"50":[32,7],"51":[32,30],"52":[28,13],"53":[15,13],"54":[17,148],"55":[8,9],"56":[3,70],"57":[1,2],"58":[3,2],"59":[37,33],"60":[70,40],"61":[36,36],"62":[72,39,10]},"f":{"1":54,"2":1806,"3":1806,"4":54,"5":182,"6":49,"7":49,"8":151,"9":49,"10":47,"11":147,"12":159,"13":47,"14":351,"15":363,"16":123,"17":125,"18":151,"19":159,"20":26,"21":47,"22":75,"23":28,"24":49,"25":73,"26":38,"27":132,"28":37},"fnMap":{"1":{"name":"HeaderTable","line":37,"loc":{"start":{"line":37,"column":0},"end":{"line":37,"column":40}}},"2":{"name":"entryFromPair","line":72,"loc":{"start":{"line":72,"column":0},"end":{"line":72,"column":29}}},"3":{"name":"size","line":91,"loc":{"start":{"line":91,"column":0},"end":{"line":91,"column":21}}},"4":{"name":"tableSize","line":95,"loc":{"start":{"line":95,"column":0},"end":{"line":95,"column":26}}},"5":{"name":"(anonymous_5)","line":111,"loc":{"start":{"line":111,"column":28},"end":{"line":111,"column":51}}},"6":{"name":"HeaderSetDecompressor","line":218,"loc":{"start":{"line":218,"column":0},"end":{"line":218,"column":43}}},"7":{"name":"_transform","line":229,"loc":{"start":{"line":229,"column":45},"end":{"line":229,"column":92}}},"8":{"name":"_execute","line":255,"loc":{"start":{"line":255,"column":43},"end":{"line":255,"column":66}}},"9":{"name":"_flush","line":312,"loc":{"start":{"line":312,"column":41},"end":{"line":312,"column":67}}},"10":{"name":"HeaderSetCompressor","line":346,"loc":{"start":{"line":346,"column":0},"end":{"line":346,"column":41}}},"11":{"name":"send","line":354,"loc":{"start":{"line":354,"column":37},"end":{"line":354,"column":56}}},"12":{"name":"_transform","line":367,"loc":{"start":{"line":367,"column":43},"end":{"line":367,"column":89}}},"13":{"name":"_flush","line":473,"loc":{"start":{"line":473,"column":39},"end":{"line":473,"column":65}}},"14":{"name":"writeInteger","line":504,"loc":{"start":{"line":504,"column":30},"end":{"line":504,"column":58}}},"15":{"name":"readInteger","line":545,"loc":{"start":{"line":545,"column":32},"end":{"line":545,"column":64}}},"16":{"name":"writeString","line":574,"loc":{"start":{"line":574,"column":29},"end":{"line":574,"column":55}}},"17":{"name":"readString","line":580,"loc":{"start":{"line":580,"column":31},"end":{"line":580,"column":59}}},"18":{"name":"writeHeader","line":632,"loc":{"start":{"line":632,"column":29},"end":{"line":632,"column":58}}},"19":{"name":"readHeader","line":668,"loc":{"start":{"line":668,"column":31},"end":{"line":668,"column":59}}},"20":{"name":"Compressor","line":737,"loc":{"start":{"line":737,"column":0},"end":{"line":737,"column":31}}},"21":{"name":"compress","line":751,"loc":{"start":{"line":751,"column":32},"end":{"line":751,"column":59}}},"22":{"name":"_transform","line":773,"loc":{"start":{"line":773,"column":34},"end":{"line":773,"column":77}}},"23":{"name":"Decompressor","line":829,"loc":{"start":{"line":829,"column":0},"end":{"line":829,"column":33}}},"24":{"name":"decompress","line":846,"loc":{"start":{"line":846,"column":36},"end":{"line":846,"column":63}}},"25":{"name":"_transform","line":870,"loc":{"start":{"line":870,"column":36},"end":{"line":870,"column":79}}},"26":{"name":"(anonymous_26)","line":899,"loc":{"start":{"line":899,"column":41},"end":{"line":899,"column":57}}},"27":{"name":"concat","line":920,"loc":{"start":{"line":920,"column":0},"end":{"line":920,"column":25}}},"28":{"name":"cut","line":935,"loc":{"start":{"line":935,"column":0},"end":{"line":935,"column":27}}}},"statementMap":{"1":{"start":{"line":18,"column":0},"end":{"line":18,"column":34}},"2":{"start":{"line":19,"column":0},"end":{"line":19,"column":50}},"3":{"start":{"line":20,"column":0},"end":{"line":20,"column":54}},"4":{"start":{"line":21,"column":0},"end":{"line":21,"column":32}},"5":{"start":{"line":22,"column":0},"end":{"line":22,"column":36}},"6":{"start":{"line":24,"column":0},"end":{"line":24,"column":50}},"7":{"start":{"line":25,"column":0},"end":{"line":25,"column":31}},"8":{"start":{"line":26,"column":0},"end":{"line":26,"column":27}},"9":{"start":{"line":37,"column":0},"end":{"line":44,"column":1}},"10":{"start":{"line":38,"column":2},"end":{"line":38,"column":38}},"11":{"start":{"line":39,"column":2},"end":{"line":39,"column":18}},"12":{"start":{"line":40,"column":2},"end":{"line":40,"column":52}},"13":{"start":{"line":41,"column":2},"end":{"line":41,"column":31}},"14":{"start":{"line":42,"column":2},"end":{"line":42,"column":39}},"15":{"start":{"line":43,"column":2},"end":{"line":43,"column":14}},"16":{"start":{"line":72,"column":0},"end":{"line":79,"column":1}},"17":{"start":{"line":73,"column":2},"end":{"line":73,"column":27}},"18":{"start":{"line":74,"column":2},"end":{"line":74,"column":26}},"19":{"start":{"line":75,"column":2},"end":{"line":75,"column":24}},"20":{"start":{"line":76,"column":2},"end":{"line":76,"column":21}},"21":{"start":{"line":77,"column":2},"end":{"line":77,"column":28}},"22":{"start":{"line":78,"column":2},"end":{"line":78,"column":15}},"23":{"start":{"line":89,"column":0},"end":{"line":89,"column":38}},"24":{"start":{"line":91,"column":0},"end":{"line":93,"column":1}},"25":{"start":{"line":92,"column":2},"end":{"line":92,"column":63}},"26":{"start":{"line":95,"column":0},"end":{"line":101,"column":1}},"27":{"start":{"line":96,"column":2},"end":{"line":96,"column":15}},"28":{"start":{"line":97,"column":2},"end":{"line":99,"column":3}},"29":{"start":{"line":98,"column":4},"end":{"line":98,"column":27}},"30":{"start":{"line":100,"column":2},"end":{"line":100,"column":14}},"31":{"start":{"line":111,"column":0},"end":{"line":132,"column":2}},"32":{"start":{"line":112,"column":2},"end":{"line":112,"column":40}},"33":{"start":{"line":113,"column":2},"end":{"line":113,"column":26}},"34":{"start":{"line":115,"column":2},"end":{"line":119,"column":3}},"35":{"start":{"line":116,"column":4},"end":{"line":116,"column":31}},"36":{"start":{"line":117,"column":4},"end":{"line":117,"column":32}},"37":{"start":{"line":118,"column":4},"end":{"line":118,"column":33}},"38":{"start":{"line":121,"column":2},"end":{"line":129,"column":3}},"39":{"start":{"line":122,"column":4},"end":{"line":122,"column":35}},"40":{"start":{"line":123,"column":4},"end":{"line":127,"column":5}},"41":{"start":{"line":124,"column":6},"end":{"line":124,"column":26}},"42":{"start":{"line":126,"column":6},"end":{"line":126,"column":35}},"43":{"start":{"line":128,"column":4},"end":{"line":128,"column":30}},"44":{"start":{"line":131,"column":2},"end":{"line":131,"column":24}},"45":{"start":{"line":139,"column":0},"end":{"line":170,"column":2}},"46":{"start":{"line":174,"column":0},"end":{"line":205,"column":2}},"47":{"start":{"line":217,"column":0},"end":{"line":217,"column":54}},"48":{"start":{"line":218,"column":0},"end":{"line":224,"column":1}},"49":{"start":{"line":219,"column":2},"end":{"line":219,"column":51}},"50":{"start":{"line":221,"column":2},"end":{"line":221,"column":53}},"51":{"start":{"line":222,"column":2},"end":{"line":222,"column":22}},"52":{"start":{"line":223,"column":2},"end":{"line":223,"column":20}},"53":{"start":{"line":229,"column":0},"end":{"line":232,"column":2}},"54":{"start":{"line":230,"column":2},"end":{"line":230,"column":27}},"55":{"start":{"line":231,"column":2},"end":{"line":231,"column":13}},"56":{"start":{"line":255,"column":0},"end":{"line":306,"column":2}},"57":{"start":{"line":256,"column":2},"end":{"line":257,"column":53}},"58":{"start":{"line":259,"column":2},"end":{"line":259,"column":25}},"59":{"start":{"line":268,"column":2},"end":{"line":305,"column":3}},"60":{"start":{"line":269,"column":4},"end":{"line":269,"column":22}},"61":{"start":{"line":270,"column":4},"end":{"line":270,"column":31}},"62":{"start":{"line":272,"column":4},"end":{"line":279,"column":5}},"63":{"start":{"line":273,"column":6},"end":{"line":273,"column":30}},"64":{"start":{"line":275,"column":6},"end":{"line":275,"column":29}},"65":{"start":{"line":276,"column":6},"end":{"line":276,"column":27}},"66":{"start":{"line":277,"column":6},"end":{"line":277,"column":27}},"67":{"start":{"line":278,"column":6},"end":{"line":278,"column":22}},"68":{"start":{"line":290,"column":4},"end":{"line":294,"column":5}},"69":{"start":{"line":291,"column":6},"end":{"line":291,"column":51}},"70":{"start":{"line":293,"column":6},"end":{"line":293,"column":35}},"71":{"start":{"line":296,"column":4},"end":{"line":296,"column":22}},"72":{"start":{"line":297,"column":4},"end":{"line":302,"column":5}},"73":{"start":{"line":298,"column":6},"end":{"line":298,"column":34}},"74":{"start":{"line":299,"column":6},"end":{"line":299,"column":29}},"75":{"start":{"line":300,"column":6},"end":{"line":300,"column":27}},"76":{"start":{"line":301,"column":6},"end":{"line":301,"column":36}},"77":{"start":{"line":304,"column":4},"end":{"line":304,"column":20}},"78":{"start":{"line":312,"column":0},"end":{"line":331,"column":2}},"79":{"start":{"line":313,"column":2},"end":{"line":313,"column":36}},"80":{"start":{"line":316,"column":2},"end":{"line":316,"column":20}},"81":{"start":{"line":317,"column":2},"end":{"line":319,"column":3}},"82":{"start":{"line":318,"column":4},"end":{"line":318,"column":56}},"83":{"start":{"line":322,"column":2},"end":{"line":328,"column":3}},"84":{"start":{"line":323,"column":4},"end":{"line":323,"column":35}},"85":{"start":{"line":324,"column":4},"end":{"line":326,"column":5}},"86":{"start":{"line":325,"column":6},"end":{"line":325,"column":31}},"87":{"start":{"line":327,"column":4},"end":{"line":327,"column":26}},"88":{"start":{"line":330,"column":2},"end":{"line":330,"column":13}},"89":{"start":{"line":345,"column":0},"end":{"line":345,"column":52}},"90":{"start":{"line":346,"column":0},"end":{"line":352,"column":1}},"91":{"start":{"line":347,"column":2},"end":{"line":347,"column":51}},"92":{"start":{"line":349,"column":2},"end":{"line":349,"column":53}},"93":{"start":{"line":350,"column":2},"end":{"line":350,"column":22}},"94":{"start":{"line":351,"column":2},"end":{"line":351,"column":56}},"95":{"start":{"line":354,"column":0},"end":{"line":362,"column":2}},"96":{"start":{"line":355,"column":2},"end":{"line":356,"column":52}},"97":{"start":{"line":358,"column":2},"end":{"line":360,"column":3}},"98":{"start":{"line":359,"column":4},"end":{"line":359,"column":49}},"99":{"start":{"line":361,"column":2},"end":{"line":361,"column":32}},"100":{"start":{"line":367,"column":0},"end":{"line":468,"column":2}},"101":{"start":{"line":368,"column":2},"end":{"line":368,"column":35}},"102":{"start":{"line":369,"column":2},"end":{"line":369,"column":22}},"103":{"start":{"line":370,"column":2},"end":{"line":370,"column":17}},"104":{"start":{"line":373,"column":2},"end":{"line":373,"column":37}},"105":{"start":{"line":374,"column":2},"end":{"line":384,"column":3}},"106":{"start":{"line":375,"column":4},"end":{"line":375,"column":31}},"107":{"start":{"line":376,"column":4},"end":{"line":383,"column":5}},"108":{"start":{"line":377,"column":6},"end":{"line":382,"column":7}},"109":{"start":{"line":378,"column":8},"end":{"line":378,"column":26}},"110":{"start":{"line":379,"column":8},"end":{"line":379,"column":14}},"111":{"start":{"line":380,"column":13},"end":{"line":382,"column":7}},"112":{"start":{"line":381,"column":8},"end":{"line":381,"column":26}},"113":{"start":{"line":409,"column":2},"end":{"line":465,"column":3}},"114":{"start":{"line":410,"column":4},"end":{"line":410,"column":59}},"115":{"start":{"line":412,"column":4},"end":{"line":434,"column":5}},"116":{"start":{"line":413,"column":6},"end":{"line":413,"column":21}},"117":{"start":{"line":414,"column":6},"end":{"line":414,"column":29}},"118":{"start":{"line":415,"column":6},"end":{"line":415,"column":27}},"119":{"start":{"line":418,"column":9},"end":{"line":434,"column":5}},"120":{"start":{"line":419,"column":6},"end":{"line":419,"column":21}},"121":{"start":{"line":420,"column":6},"end":{"line":420,"column":21}},"122":{"start":{"line":421,"column":6},"end":{"line":421,"column":21}},"123":{"start":{"line":422,"column":6},"end":{"line":422,"column":21}},"124":{"start":{"line":423,"column":6},"end":{"line":423,"column":25}},"125":{"start":{"line":424,"column":6},"end":{"line":424,"column":27}},"126":{"start":{"line":427,"column":9},"end":{"line":434,"column":5}},"127":{"start":{"line":428,"column":6},"end":{"line":428,"column":21}},"128":{"start":{"line":429,"column":6},"end":{"line":429,"column":21}},"129":{"start":{"line":433,"column":6},"end":{"line":433,"column":24}},"130":{"start":{"line":439,"column":4},"end":{"line":439,"column":32}},"131":{"start":{"line":440,"column":4},"end":{"line":440,"column":25}},"132":{"start":{"line":442,"column":4},"end":{"line":442,"column":20}},"133":{"start":{"line":443,"column":4},"end":{"line":449,"column":5}},"134":{"start":{"line":444,"column":6},"end":{"line":444,"column":23}},"135":{"start":{"line":445,"column":11},"end":{"line":449,"column":5}},"136":{"start":{"line":446,"column":6},"end":{"line":446,"column":30}},"137":{"start":{"line":448,"column":6},"end":{"line":448,"column":29}},"138":{"start":{"line":451,"column":4},"end":{"line":462,"column":5}},"139":{"start":{"line":452,"column":6},"end":{"line":452,"column":29}},"140":{"start":{"line":453,"column":6},"end":{"line":453,"column":63}},"141":{"start":{"line":454,"column":6},"end":{"line":461,"column":7}},"142":{"start":{"line":455,"column":8},"end":{"line":455,"column":44}},"143":{"start":{"line":456,"column":8},"end":{"line":460,"column":9}},"144":{"start":{"line":457,"column":10},"end":{"line":457,"column":57}},"145":{"start":{"line":458,"column":10},"end":{"line":458,"column":25}},"146":{"start":{"line":459,"column":10},"end":{"line":459,"column":25}},"147":{"start":{"line":464,"column":4},"end":{"line":464,"column":97}},"148":{"start":{"line":467,"column":2},"end":{"line":467,"column":13}},"149":{"start":{"line":473,"column":0},"end":{"line":486,"column":2}},"150":{"start":{"line":475,"column":2},"end":{"line":483,"column":3}},"151":{"start":{"line":476,"column":4},"end":{"line":476,"column":35}},"152":{"start":{"line":477,"column":4},"end":{"line":480,"column":5}},"153":{"start":{"line":478,"column":6},"end":{"line":478,"column":58}},"154":{"start":{"line":479,"column":6},"end":{"line":479,"column":30}},"155":{"start":{"line":481,"column":4},"end":{"line":481,"column":23}},"156":{"start":{"line":482,"column":4},"end":{"line":482,"column":26}},"157":{"start":{"line":485,"column":2},"end":{"line":485,"column":13}},"158":{"start":{"line":504,"column":0},"end":{"line":530,"column":2}},"159":{"start":{"line":505,"column":2},"end":{"line":505,"column":32}},"160":{"start":{"line":506,"column":2},"end":{"line":508,"column":3}},"161":{"start":{"line":507,"column":4},"end":{"line":507,"column":29}},"162":{"start":{"line":510,"column":2},"end":{"line":510,"column":17}},"163":{"start":{"line":511,"column":2},"end":{"line":513,"column":3}},"164":{"start":{"line":512,"column":4},"end":{"line":512,"column":22}},"165":{"start":{"line":514,"column":2},"end":{"line":514,"column":13}},"166":{"start":{"line":516,"column":2},"end":{"line":516,"column":15}},"167":{"start":{"line":517,"column":2},"end":{"line":527,"column":3}},"168":{"start":{"line":518,"column":4},"end":{"line":518,"column":28}},"169":{"start":{"line":519,"column":4},"end":{"line":519,"column":16}},"170":{"start":{"line":521,"column":4},"end":{"line":523,"column":5}},"171":{"start":{"line":522,"column":6},"end":{"line":522,"column":15}},"172":{"start":{"line":524,"column":4},"end":{"line":524,"column":18}},"173":{"start":{"line":526,"column":4},"end":{"line":526,"column":10}},"174":{"start":{"line":529,"column":2},"end":{"line":529,"column":29}},"175":{"start":{"line":545,"column":0},"end":{"line":563,"column":2}},"176":{"start":{"line":546,"column":2},"end":{"line":546,"column":32}},"177":{"start":{"line":548,"column":2},"end":{"line":548,"column":40}},"178":{"start":{"line":549,"column":2},"end":{"line":551,"column":3}},"179":{"start":{"line":550,"column":4},"end":{"line":550,"column":23}},"180":{"start":{"line":553,"column":2},"end":{"line":560,"column":3}},"181":{"start":{"line":554,"column":4},"end":{"line":554,"column":14}},"182":{"start":{"line":555,"column":4},"end":{"line":559,"column":46}},"183":{"start":{"line":556,"column":6},"end":{"line":556,"column":46}},"184":{"start":{"line":557,"column":6},"end":{"line":557,"column":13}},"185":{"start":{"line":558,"column":6},"end":{"line":558,"column":25}},"186":{"start":{"line":562,"column":2},"end":{"line":562,"column":11}},"187":{"start":{"line":574,"column":0},"end":{"line":578,"column":2}},"188":{"start":{"line":575,"column":2},"end":{"line":575,"column":46}},"189":{"start":{"line":576,"column":2},"end":{"line":576,"column":75}},"190":{"start":{"line":577,"column":2},"end":{"line":577,"column":45}},"191":{"start":{"line":580,"column":0},"end":{"line":585,"column":2}},"192":{"start":{"line":581,"column":2},"end":{"line":581,"column":56}},"193":{"start":{"line":582,"column":2},"end":{"line":582,"column":75}},"194":{"start":{"line":583,"column":2},"end":{"line":583,"column":26}},"195":{"start":{"line":584,"column":2},"end":{"line":584,"column":13}},"196":{"start":{"line":625,"column":0},"end":{"line":630,"column":2}},"197":{"start":{"line":632,"column":0},"end":{"line":666,"column":2}},"198":{"start":{"line":633,"column":2},"end":{"line":633,"column":35}},"199":{"start":{"line":635,"column":2},"end":{"line":643,"column":3}},"200":{"start":{"line":636,"column":4},"end":{"line":636,"column":45}},"201":{"start":{"line":637,"column":9},"end":{"line":643,"column":3}},"202":{"start":{"line":638,"column":4},"end":{"line":638,"column":45}},"203":{"start":{"line":639,"column":9},"end":{"line":643,"column":3}},"204":{"start":{"line":640,"column":4},"end":{"line":640,"column":56}},"205":{"start":{"line":642,"column":4},"end":{"line":642,"column":57}},"206":{"start":{"line":645,"column":2},"end":{"line":661,"column":3}},"207":{"start":{"line":646,"column":4},"end":{"line":646,"column":83}},"208":{"start":{"line":649,"column":4},"end":{"line":654,"column":5}},"209":{"start":{"line":650,"column":6},"end":{"line":650,"column":88}},"210":{"start":{"line":652,"column":6},"end":{"line":652,"column":74}},"211":{"start":{"line":653,"column":6},"end":{"line":653,"column":60}},"212":{"start":{"line":656,"column":4},"end":{"line":658,"column":5}},"213":{"start":{"line":657,"column":6},"end":{"line":657,"column":65}},"214":{"start":{"line":660,"column":4},"end":{"line":660,"column":59}},"215":{"start":{"line":663,"column":2},"end":{"line":663,"column":45}},"216":{"start":{"line":665,"column":2},"end":{"line":665,"column":51}},"217":{"start":{"line":668,"column":0},"end":{"line":706,"column":2}},"218":{"start":{"line":669,"column":2},"end":{"line":669,"column":34}},"219":{"start":{"line":671,"column":2},"end":{"line":671,"column":40}},"220":{"start":{"line":672,"column":2},"end":{"line":682,"column":3}},"221":{"start":{"line":673,"column":4},"end":{"line":673,"column":45}},"222":{"start":{"line":674,"column":9},"end":{"line":682,"column":3}},"223":{"start":{"line":675,"column":4},"end":{"line":679,"column":5}},"224":{"start":{"line":676,"column":6},"end":{"line":676,"column":47}},"225":{"start":{"line":678,"column":6},"end":{"line":678,"column":58}},"226":{"start":{"line":681,"column":4},"end":{"line":681,"column":57}},"227":{"start":{"line":684,"column":2},"end":{"line":703,"column":3}},"228":{"start":{"line":685,"column":4},"end":{"line":685,"column":94}},"229":{"start":{"line":686,"column":4},"end":{"line":686,"column":22}},"230":{"start":{"line":689,"column":4},"end":{"line":689,"column":83}},"231":{"start":{"line":690,"column":4},"end":{"line":692,"column":5}},"232":{"start":{"line":691,"column":6},"end":{"line":691,"column":57}},"233":{"start":{"line":694,"column":4},"end":{"line":700,"column":5}},"234":{"start":{"line":695,"column":6},"end":{"line":695,"column":62}},"235":{"start":{"line":696,"column":11},"end":{"line":700,"column":5}},"236":{"start":{"line":697,"column":6},"end":{"line":697,"column":30}},"237":{"start":{"line":699,"column":6},"end":{"line":699,"column":24}},"238":{"start":{"line":702,"column":4},"end":{"line":702,"column":56}},"239":{"start":{"line":705,"column":2},"end":{"line":705,"column":16}},"240":{"start":{"line":730,"column":0},"end":{"line":730,"column":34}},"241":{"start":{"line":736,"column":0},"end":{"line":736,"column":43}},"242":{"start":{"line":737,"column":0},"end":{"line":746,"column":1}},"243":{"start":{"line":738,"column":2},"end":{"line":738,"column":51}},"244":{"start":{"line":740,"column":2},"end":{"line":740,"column":53}},"245":{"start":{"line":742,"column":2},"end":{"line":742,"column":56}},"246":{"start":{"line":743,"column":2},"end":{"line":744,"column":77}},"247":{"start":{"line":745,"column":2},"end":{"line":745,"column":57}},"248":{"start":{"line":751,"column":0},"end":{"line":770,"column":2}},"249":{"start":{"line":752,"column":2},"end":{"line":752,"column":67}},"250":{"start":{"line":753,"column":2},"end":{"line":762,"column":3}},"251":{"start":{"line":754,"column":4},"end":{"line":754,"column":30}},"252":{"start":{"line":755,"column":4},"end":{"line":761,"column":5}},"253":{"start":{"line":756,"column":6},"end":{"line":758,"column":7}},"254":{"start":{"line":757,"column":8},"end":{"line":757,"column":59}},"255":{"start":{"line":760,"column":6},"end":{"line":760,"column":54}},"256":{"start":{"line":763,"column":2},"end":{"line":763,"column":19}},"257":{"start":{"line":765,"column":2},"end":{"line":765,"column":25}},"258":{"start":{"line":766,"column":2},"end":{"line":768,"column":3}},"259":{"start":{"line":767,"column":4},"end":{"line":767,"column":23}},"260":{"start":{"line":769,"column":2},"end":{"line":769,"column":24}},"261":{"start":{"line":773,"column":0},"end":{"line":817,"column":2}},"262":{"start":{"line":781,"column":2},"end":{"line":814,"column":3}},"263":{"start":{"line":782,"column":4},"end":{"line":782,"column":46}},"264":{"start":{"line":784,"column":4},"end":{"line":784,"column":52}},"265":{"start":{"line":786,"column":4},"end":{"line":808,"column":5}},"266":{"start":{"line":787,"column":6},"end":{"line":787,"column":21}},"267":{"start":{"line":788,"column":6},"end":{"line":788,"column":28}},"268":{"start":{"line":789,"column":6},"end":{"line":789,"column":43}},"269":{"start":{"line":791,"column":6},"end":{"line":801,"column":7}},"270":{"start":{"line":792,"column":8},"end":{"line":792,"column":45}},"271":{"start":{"line":793,"column":8},"end":{"line":793,"column":57}},"272":{"start":{"line":794,"column":8},"end":{"line":794,"column":53}},"273":{"start":{"line":796,"column":8},"end":{"line":800,"column":10}},"274":{"start":{"line":802,"column":6},"end":{"line":804,"column":7}},"275":{"start":{"line":803,"column":8},"end":{"line":803,"column":69}},"276":{"start":{"line":805,"column":6},"end":{"line":805,"column":34}},"277":{"start":{"line":807,"column":6},"end":{"line":807,"column":28}},"278":{"start":{"line":813,"column":4},"end":{"line":813,"column":21}},"279":{"start":{"line":816,"column":2},"end":{"line":816,"column":9}},"280":{"start":{"line":828,"column":0},"end":{"line":828,"column":45}},"281":{"start":{"line":829,"column":0},"end":{"line":841,"column":1}},"282":{"start":{"line":830,"column":2},"end":{"line":830,"column":51}},"283":{"start":{"line":832,"column":2},"end":{"line":832,"column":53}},"284":{"start":{"line":834,"column":2},"end":{"line":834,"column":56}},"285":{"start":{"line":835,"column":2},"end":{"line":836,"column":77}},"286":{"start":{"line":837,"column":2},"end":{"line":837,"column":57}},"287":{"start":{"line":839,"column":2},"end":{"line":839,"column":27}},"288":{"start":{"line":840,"column":2},"end":{"line":840,"column":25}},"289":{"start":{"line":846,"column":0},"end":{"line":867,"column":2}},"290":{"start":{"line":847,"column":2},"end":{"line":847,"column":71}},"291":{"start":{"line":848,"column":2},"end":{"line":848,"column":26}},"292":{"start":{"line":850,"column":2},"end":{"line":850,"column":19}},"293":{"start":{"line":851,"column":2},"end":{"line":851,"column":11}},"294":{"start":{"line":852,"column":2},"end":{"line":864,"column":3}},"295":{"start":{"line":853,"column":4},"end":{"line":853,"column":23}},"296":{"start":{"line":854,"column":4},"end":{"line":854,"column":24}},"297":{"start":{"line":855,"column":4},"end":{"line":863,"column":5}},"298":{"start":{"line":856,"column":6},"end":{"line":860,"column":7}},"299":{"start":{"line":857,"column":8},"end":{"line":857,"column":34}},"300":{"start":{"line":859,"column":8},"end":{"line":859,"column":47}},"301":{"start":{"line":862,"column":6},"end":{"line":862,"column":28}},"302":{"start":{"line":866,"column":2},"end":{"line":866,"column":17}},"303":{"start":{"line":870,"column":0},"end":{"line":914,"column":2}},"304":{"start":{"line":873,"column":2},"end":{"line":893,"column":3}},"305":{"start":{"line":874,"column":4},"end":{"line":878,"column":5}},"306":{"start":{"line":875,"column":6},"end":{"line":875,"column":71}},"307":{"start":{"line":876,"column":6},"end":{"line":876,"column":43}},"308":{"start":{"line":877,"column":6},"end":{"line":877,"column":13}},"309":{"start":{"line":879,"column":4},"end":{"line":879,"column":29}},"310":{"start":{"line":884,"column":7},"end":{"line":893,"column":3}},"311":{"start":{"line":885,"column":4},"end":{"line":885,"column":28}},"312":{"start":{"line":886,"column":4},"end":{"line":886,"column":23}},"313":{"start":{"line":887,"column":4},"end":{"line":887,"column":27}},"314":{"start":{"line":892,"column":4},"end":{"line":892,"column":21}},"315":{"start":{"line":898,"column":2},"end":{"line":911,"column":3}},"316":{"start":{"line":899,"column":4},"end":{"line":901,"column":8}},"317":{"start":{"line":900,"column":6},"end":{"line":900,"column":24}},"318":{"start":{"line":902,"column":4},"end":{"line":908,"column":5}},"319":{"start":{"line":903,"column":6},"end":{"line":903,"column":44}},"320":{"start":{"line":905,"column":6},"end":{"line":905,"column":68}},"321":{"start":{"line":906,"column":6},"end":{"line":906,"column":46}},"322":{"start":{"line":907,"column":6},"end":{"line":907,"column":13}},"323":{"start":{"line":909,"column":4},"end":{"line":909,"column":62}},"324":{"start":{"line":910,"column":4},"end":{"line":910,"column":29}},"325":{"start":{"line":913,"column":2},"end":{"line":913,"column":9}},"326":{"start":{"line":920,"column":0},"end":{"line":932,"column":1}},"327":{"start":{"line":921,"column":2},"end":{"line":921,"column":15}},"328":{"start":{"line":922,"column":2},"end":{"line":924,"column":3}},"329":{"start":{"line":923,"column":4},"end":{"line":923,"column":30}},"330":{"start":{"line":926,"column":2},"end":{"line":926,"column":38}},"331":{"start":{"line":927,"column":2},"end":{"line":929,"column":3}},"332":{"start":{"line":928,"column":4},"end":{"line":928,"column":42}},"333":{"start":{"line":931,"column":2},"end":{"line":931,"column":22}},"334":{"start":{"line":935,"column":0},"end":{"line":944,"column":1}},"335":{"start":{"line":936,"column":2},"end":{"line":936,"column":18}},"336":{"start":{"line":937,"column":2},"end":{"line":937,"column":17}},"337":{"start":{"line":938,"column":2},"end":{"line":942,"column":34}},"338":{"start":{"line":939,"column":4},"end":{"line":939,"column":59}},"339":{"start":{"line":940,"column":4},"end":{"line":940,"column":58}},"340":{"start":{"line":941,"column":4},"end":{"line":941,"column":24}},"341":{"start":{"line":943,"column":2},"end":{"line":943,"column":16}}},"branchMap":{"1":{"line":40,"type":"binary-expr","locations":[{"start":{"line":40,"column":16},"end":{"line":40,"column":21}},{"start":{"line":40,"column":25},"end":{"line":40,"column":51}}]},"2":{"line":115,"type":"binary-expr","locations":[{"start":{"line":115,"column":10},"end":{"line":115,"column":28}},{"start":{"line":115,"column":34},"end":{"line":115,"column":49}}]},"3":{"line":121,"type":"if","locations":[{"start":{"line":121,"column":2},"end":{"line":121,"column":2}},{"start":{"line":121,"column":2},"end":{"line":121,"column":2}}]},"4":{"line":123,"type":"if","locations":[{"start":{"line":123,"column":4},"end":{"line":123,"column":4}},{"start":{"line":123,"column":4},"end":{"line":123,"column":4}}]},"5":{"line":268,"type":"if","locations":[{"start":{"line":268,"column":2},"end":{"line":268,"column":2}},{"start":{"line":268,"column":2},"end":{"line":268,"column":2}}]},"6":{"line":272,"type":"if","locations":[{"start":{"line":272,"column":4},"end":{"line":272,"column":4}},{"start":{"line":272,"column":4},"end":{"line":272,"column":4}}]},"7":{"line":290,"type":"if","locations":[{"start":{"line":290,"column":4},"end":{"line":290,"column":4}},{"start":{"line":290,"column":4},"end":{"line":290,"column":4}}]},"8":{"line":297,"type":"if","locations":[{"start":{"line":297,"column":4},"end":{"line":297,"column":4}},{"start":{"line":297,"column":4},"end":{"line":297,"column":4}}]},"9":{"line":324,"type":"if","locations":[{"start":{"line":324,"column":4},"end":{"line":324,"column":4}},{"start":{"line":324,"column":4},"end":{"line":324,"column":4}}]},"10":{"line":324,"type":"binary-expr","locations":[{"start":{"line":324,"column":8},"end":{"line":324,"column":23}},{"start":{"line":324,"column":27},"end":{"line":324,"column":41}}]},"11":{"line":358,"type":"if","locations":[{"start":{"line":358,"column":2},"end":{"line":358,"column":2}},{"start":{"line":358,"column":2},"end":{"line":358,"column":2}}]},"12":{"line":376,"type":"if","locations":[{"start":{"line":376,"column":4},"end":{"line":376,"column":4}},{"start":{"line":376,"column":4},"end":{"line":376,"column":4}}]},"13":{"line":377,"type":"if","locations":[{"start":{"line":377,"column":6},"end":{"line":377,"column":6}},{"start":{"line":377,"column":6},"end":{"line":377,"column":6}}]},"14":{"line":380,"type":"if","locations":[{"start":{"line":380,"column":13},"end":{"line":380,"column":13}},{"start":{"line":380,"column":13},"end":{"line":380,"column":13}}]},"15":{"line":409,"type":"if","locations":[{"start":{"line":409,"column":2},"end":{"line":409,"column":2}},{"start":{"line":409,"column":2},"end":{"line":409,"column":2}}]},"16":{"line":412,"type":"if","locations":[{"start":{"line":412,"column":4},"end":{"line":412,"column":4}},{"start":{"line":412,"column":4},"end":{"line":412,"column":4}}]},"17":{"line":418,"type":"if","locations":[{"start":{"line":418,"column":9},"end":{"line":418,"column":9}},{"start":{"line":418,"column":9},"end":{"line":418,"column":9}}]},"18":{"line":427,"type":"if","locations":[{"start":{"line":427,"column":9},"end":{"line":427,"column":9}},{"start":{"line":427,"column":9},"end":{"line":427,"column":9}}]},"19":{"line":443,"type":"if","locations":[{"start":{"line":443,"column":4},"end":{"line":443,"column":4}},{"start":{"line":443,"column":4},"end":{"line":443,"column":4}}]},"20":{"line":445,"type":"if","locations":[{"start":{"line":445,"column":11},"end":{"line":445,"column":11}},{"start":{"line":445,"column":11},"end":{"line":445,"column":11}}]},"21":{"line":451,"type":"if","locations":[{"start":{"line":451,"column":4},"end":{"line":451,"column":4}},{"start":{"line":451,"column":4},"end":{"line":451,"column":4}}]},"22":{"line":456,"type":"if","locations":[{"start":{"line":456,"column":8},"end":{"line":456,"column":8}},{"start":{"line":456,"column":8},"end":{"line":456,"column":8}}]},"23":{"line":464,"type":"cond-expr","locations":[{"start":{"line":464,"column":43},"end":{"line":464,"column":52}},{"start":{"line":464,"column":55},"end":{"line":464,"column":59}}]},"24":{"line":477,"type":"if","locations":[{"start":{"line":477,"column":4},"end":{"line":477,"column":4}},{"start":{"line":477,"column":4},"end":{"line":477,"column":4}}]},"25":{"line":477,"type":"binary-expr","locations":[{"start":{"line":477,"column":8},"end":{"line":477,"column":23}},{"start":{"line":477,"column":27},"end":{"line":477,"column":38}},{"start":{"line":477,"column":42},"end":{"line":477,"column":56}}]},"26":{"line":506,"type":"if","locations":[{"start":{"line":506,"column":2},"end":{"line":506,"column":2}},{"start":{"line":506,"column":2},"end":{"line":506,"column":2}}]},"27":{"line":511,"type":"if","locations":[{"start":{"line":511,"column":2},"end":{"line":511,"column":2}},{"start":{"line":511,"column":2},"end":{"line":511,"column":2}}]},"28":{"line":521,"type":"if","locations":[{"start":{"line":521,"column":4},"end":{"line":521,"column":4}},{"start":{"line":521,"column":4},"end":{"line":521,"column":4}}]},"29":{"line":549,"type":"if","locations":[{"start":{"line":549,"column":2},"end":{"line":549,"column":2}},{"start":{"line":549,"column":2},"end":{"line":549,"column":2}}]},"30":{"line":553,"type":"if","locations":[{"start":{"line":553,"column":2},"end":{"line":553,"column":2}},{"start":{"line":553,"column":2},"end":{"line":553,"column":2}}]},"31":{"line":635,"type":"if","locations":[{"start":{"line":635,"column":2},"end":{"line":635,"column":2}},{"start":{"line":635,"column":2},"end":{"line":635,"column":2}}]},"32":{"line":637,"type":"if","locations":[{"start":{"line":637,"column":9},"end":{"line":637,"column":9}},{"start":{"line":637,"column":9},"end":{"line":637,"column":9}}]},"33":{"line":639,"type":"if","locations":[{"start":{"line":639,"column":9},"end":{"line":639,"column":9}},{"start":{"line":639,"column":9},"end":{"line":639,"column":9}}]},"34":{"line":645,"type":"if","locations":[{"start":{"line":645,"column":2},"end":{"line":645,"column":2}},{"start":{"line":645,"column":2},"end":{"line":645,"column":2}}]},"35":{"line":649,"type":"if","locations":[{"start":{"line":649,"column":4},"end":{"line":649,"column":4}},{"start":{"line":649,"column":4},"end":{"line":649,"column":4}}]},"36":{"line":656,"type":"if","locations":[{"start":{"line":656,"column":4},"end":{"line":656,"column":4}},{"start":{"line":656,"column":4},"end":{"line":656,"column":4}}]},"37":{"line":672,"type":"if","locations":[{"start":{"line":672,"column":2},"end":{"line":672,"column":2}},{"start":{"line":672,"column":2},"end":{"line":672,"column":2}}]},"38":{"line":674,"type":"if","locations":[{"start":{"line":674,"column":9},"end":{"line":674,"column":9}},{"start":{"line":674,"column":9},"end":{"line":674,"column":9}}]},"39":{"line":675,"type":"if","locations":[{"start":{"line":675,"column":4},"end":{"line":675,"column":4}},{"start":{"line":675,"column":4},"end":{"line":675,"column":4}}]},"40":{"line":684,"type":"if","locations":[{"start":{"line":684,"column":2},"end":{"line":684,"column":2}},{"start":{"line":684,"column":2},"end":{"line":684,"column":2}}]},"41":{"line":690,"type":"if","locations":[{"start":{"line":690,"column":4},"end":{"line":690,"column":4}},{"start":{"line":690,"column":4},"end":{"line":690,"column":4}}]},"42":{"line":694,"type":"if","locations":[{"start":{"line":694,"column":4},"end":{"line":694,"column":4}},{"start":{"line":694,"column":4},"end":{"line":694,"column":4}}]},"43":{"line":696,"type":"if","locations":[{"start":{"line":696,"column":11},"end":{"line":696,"column":11}},{"start":{"line":696,"column":11},"end":{"line":696,"column":11}}]},"44":{"line":742,"type":"binary-expr","locations":[{"start":{"line":742,"column":10},"end":{"line":742,"column":28}},{"start":{"line":742,"column":34},"end":{"line":742,"column":53}}]},"45":{"line":743,"type":"cond-expr","locations":[{"start":{"line":743,"column":44},"end":{"line":743,"column":75}},{"start":{"line":744,"column":44},"end":{"line":744,"column":76}}]},"46":{"line":755,"type":"if","locations":[{"start":{"line":755,"column":4},"end":{"line":755,"column":4}},{"start":{"line":755,"column":4},"end":{"line":755,"column":4}}]},"47":{"line":781,"type":"if","locations":[{"start":{"line":781,"column":2},"end":{"line":781,"column":2}},{"start":{"line":781,"column":2},"end":{"line":781,"column":2}}]},"48":{"line":781,"type":"binary-expr","locations":[{"start":{"line":781,"column":6},"end":{"line":781,"column":30}},{"start":{"line":781,"column":34},"end":{"line":781,"column":63}}]},"49":{"line":791,"type":"if","locations":[{"start":{"line":791,"column":6},"end":{"line":791,"column":6}},{"start":{"line":791,"column":6},"end":{"line":791,"column":6}}]},"50":{"line":802,"type":"if","locations":[{"start":{"line":802,"column":6},"end":{"line":802,"column":6}},{"start":{"line":802,"column":6},"end":{"line":802,"column":6}}]},"51":{"line":803,"type":"binary-expr","locations":[{"start":{"line":803,"column":38},"end":{"line":803,"column":42}},{"start":{"line":803,"column":46},"end":{"line":803,"column":68}}]},"52":{"line":834,"type":"binary-expr","locations":[{"start":{"line":834,"column":10},"end":{"line":834,"column":28}},{"start":{"line":834,"column":34},"end":{"line":834,"column":53}}]},"53":{"line":835,"type":"cond-expr","locations":[{"start":{"line":835,"column":44},"end":{"line":835,"column":75}},{"start":{"line":836,"column":44},"end":{"line":836,"column":76}}]},"54":{"line":855,"type":"if","locations":[{"start":{"line":855,"column":4},"end":{"line":855,"column":4}},{"start":{"line":855,"column":4},"end":{"line":855,"column":4}}]},"55":{"line":856,"type":"if","locations":[{"start":{"line":856,"column":6},"end":{"line":856,"column":6}},{"start":{"line":856,"column":6},"end":{"line":856,"column":6}}]},"56":{"line":873,"type":"if","locations":[{"start":{"line":873,"column":2},"end":{"line":873,"column":2}},{"start":{"line":873,"column":2},"end":{"line":873,"column":2}}]},"57":{"line":874,"type":"if","locations":[{"start":{"line":874,"column":4},"end":{"line":874,"column":4}},{"start":{"line":874,"column":4},"end":{"line":874,"column":4}}]},"58":{"line":874,"type":"binary-expr","locations":[{"start":{"line":874,"column":9},"end":{"line":874,"column":38}},{"start":{"line":874,"column":44},"end":{"line":874,"column":78}}]},"59":{"line":884,"type":"if","locations":[{"start":{"line":884,"column":7},"end":{"line":884,"column":7}},{"start":{"line":884,"column":7},"end":{"line":884,"column":7}}]},"60":{"line":884,"type":"binary-expr","locations":[{"start":{"line":884,"column":12},"end":{"line":884,"column":36}},{"start":{"line":884,"column":42},"end":{"line":884,"column":71}}]},"61":{"line":898,"type":"if","locations":[{"start":{"line":898,"column":2},"end":{"line":898,"column":2}},{"start":{"line":898,"column":2},"end":{"line":898,"column":2}}]},"62":{"line":898,"type":"binary-expr","locations":[{"start":{"line":898,"column":6},"end":{"line":898,"column":22}},{"start":{"line":898,"column":27},"end":{"line":898,"column":50}},{"start":{"line":898,"column":54},"end":{"line":898,"column":82}}]}}},"/data/upstream/node-http2/lib/connection.js":{"path":"/data/upstream/node-http2/lib/connection.js","s":{"1":1,"2":1,"3":1,"4":1,"5":45,"6":45,"7":45,"8":45,"9":45,"10":45,"11":45,"12":1,"13":1,"14":1,"15":45,"16":45,"17":45,"18":45,"19":45,"20":45,"21":45,"22":45,"23":1,"24":42,"25":42,"26":42,"27":0,"28":0,"29":1,"30":18,"31":18,"32":18,"33":18,"34":0,"35":1,"36":89,"37":43,"38":43,"39":43,"40":43,"41":0,"42":1,"43":45,"44":23,"45":23,"46":22,"47":22,"48":0,"49":0,"50":0,"51":45,"52":45,"53":45,"54":45,"55":45,"56":45,"57":45,"58":1,"59":45,"60":45,"61":45,"62":45,"63":45,"64":1,"65":75,"66":28,"67":47,"68":1,"69":10,"70":10,"71":10,"72":10,"73":10,"74":5,"75":10,"76":1,"77":22,"78":22,"79":22,"80":22,"81":22,"82":22,"83":1,"84":18,"85":18,"86":18,"87":18,"88":1,"89":45,"90":45,"91":45,"92":1,"93":231,"94":4,"95":227,"96":97,"97":130,"98":101,"99":101,"100":130,"101":97,"102":97,"103":97,"104":64,"105":64,"106":64,"107":113,"108":146,"109":146,"110":146,"111":89,"112":57,"113":0,"114":0,"115":57,"116":57,"117":27,"118":57,"119":5,"120":5,"121":57,"122":57,"123":57,"124":57,"125":57,"126":0,"127":113,"128":113,"129":97,"130":69,"131":97,"132":1,"133":98,"134":98,"135":36,"136":36,"137":98,"138":98,"139":17,"140":98,"141":5,"142":98,"143":98,"144":98,"145":1,"146":1,"147":45,"148":45,"149":45,"150":1,"151":36,"152":36,"153":0,"154":0,"155":1,"156":36,"157":54,"158":1,"159":45,"160":45,"161":70,"162":1,"163":45,"164":45,"165":45,"166":45,"167":1,"168":2,"169":2,"170":2,"171":32,"172":2,"173":1,"174":2,"175":2,"176":2,"177":2,"178":2,"179":1,"180":5,"181":3,"182":3,"183":2,"184":2,"185":2,"186":2,"187":2,"188":1,"189":2,"190":2,"191":1,"192":3,"193":0,"194":0,"195":3,"196":3,"197":3,"198":3,"199":1,"200":2,"201":2,"202":2,"203":2,"204":0,"205":1,"206":45,"207":45,"208":45,"209":45,"210":25,"211":45,"212":45,"213":45,"214":45,"215":45,"216":1,"217":1,"218":41,"219":1,"220":1,"221":40,"222":40,"223":40,"224":47,"225":1,"226":24,"227":22,"228":22,"229":2,"230":1,"231":1,"232":1,"233":20,"234":20,"235":20,"236":20,"237":0,"238":0,"239":0},"b":{"1":[42,0],"2":[42,6,2,0],"3":[18,0],"4":[0,18],"5":[43,46],"6":[43,0],"7":[0,43],"8":[23,22],"9":[22,0],"10":[22,22],"11":[28,47],"12":[5,5],"13":[4,227],"14":[97,130],"15":[101,29],"16":[146,0],"17":[89,57],"18":[0,57],"19":[27,30],"20":[27,18],"21":[5,52],"22":[0,57],"23":[69,28],"24":[36,62],"25":[17,81],"26":[5,93],"27":[45,20],"28":[36,0],"29":[36,36],"30":[3,2],"31":[2,1],"32":[2,0],"33":[0,3],"34":[3,2],"35":[0,2],"36":[25,20],"37":[1,40],"38":[41,2],"39":[22,2],"40":[1,1],"41":[20,0],"42":[0,0]},"f":{"1":45,"2":45,"3":42,"4":18,"5":89,"6":45,"7":45,"8":75,"9":10,"10":22,"11":18,"12":45,"13":231,"14":98,"15":45,"16":36,"17":36,"18":45,"19":45,"20":2,"21":2,"22":5,"23":3,"24":2,"25":45,"26":45,"27":40,"28":20,"29":41,"30":47,"31":24,"32":20,"33":20},"fnMap":{"1":{"name":"Connection","line":39,"loc":{"start":{"line":39,"column":0},"end":{"line":39,"column":50}}},"2":{"name":"_initializeStreamManagement","line":100,"loc":{"start":{"line":100,"column":51},"end":{"line":100,"column":103}}},"3":{"name":"_writeControlFrame","line":123,"loc":{"start":{"line":123,"column":42},"end":{"line":123,"column":77}}},"4":{"name":"_updateStreamLimit","line":135,"loc":{"start":{"line":135,"column":42},"end":{"line":135,"column":86}}},"5":{"name":"_changeStreamCount","line":144,"loc":{"start":{"line":144,"column":42},"end":{"line":144,"column":78}}},"6":{"name":"_allocateId","line":164,"loc":{"start":{"line":164,"column":35},"end":{"line":164,"column":68}}},"7":{"name":"_allocatePriority","line":199,"loc":{"start":{"line":199,"column":41},"end":{"line":199,"column":76}}},"8":{"name":"_insert","line":207,"loc":{"start":{"line":207,"column":31},"end":{"line":207,"column":66}}},"9":{"name":"_reprioritize","line":215,"loc":{"start":{"line":215,"column":37},"end":{"line":215,"column":78}}},"10":{"name":"_createIncomingStream","line":229,"loc":{"start":{"line":229,"column":45},"end":{"line":229,"column":80}}},"11":{"name":"createStream","line":241,"loc":{"start":{"line":241,"column":36},"end":{"line":241,"column":60}}},"12":{"name":"_initializeMultiplexing","line":254,"loc":{"start":{"line":254,"column":47},"end":{"line":254,"column":82}}},"13":{"name":"_send","line":262,"loc":{"start":{"line":262,"column":29},"end":{"line":262,"column":55}}},"14":{"name":"_receive","line":346,"loc":{"start":{"line":346,"column":32},"end":{"line":346,"column":63}}},"15":{"name":"_initializeSettingsManagement","line":384,"loc":{"start":{"line":384,"column":53},"end":{"line":384,"column":102}}},"16":{"name":"_onFirstFrameReceived","line":394,"loc":{"start":{"line":394,"column":45},"end":{"line":394,"column":83}}},"17":{"name":"_receiveSettings","line":404,"loc":{"start":{"line":404,"column":40},"end":{"line":404,"column":73}}},"18":{"name":"set","line":411,"loc":{"start":{"line":411,"column":27},"end":{"line":411,"column":50}}},"19":{"name":"_initializeLifecycleManagement","line":433,"loc":{"start":{"line":433,"column":54},"end":{"line":433,"column":96}}},"20":{"name":"_generatePingId","line":441,"loc":{"start":{"line":441,"column":39},"end":{"line":441,"column":66}}},"21":{"name":"ping","line":452,"loc":{"start":{"line":452,"column":28},"end":{"line":452,"column":52}}},"22":{"name":"_receivePing","line":469,"loc":{"start":{"line":469,"column":36},"end":{"line":469,"column":65}}},"23":{"name":"close","line":497,"loc":{"start":{"line":497,"column":29},"end":{"line":497,"column":51}}},"24":{"name":"_receiveGoaway","line":515,"loc":{"start":{"line":515,"column":38},"end":{"line":515,"column":69}}},"25":{"name":"_initializeFlowControl","line":527,"loc":{"start":{"line":527,"column":46},"end":{"line":527,"column":80}}},"26":{"name":"(anonymous_26)","line":530,"loc":{"start":{"line":530,"column":24},"end":{"line":530,"column":41}}},"27":{"name":"noop","line":539,"loc":{"start":{"line":539,"column":49},"end":{"line":539,"column":65}}},"28":{"name":"noop","line":540,"loc":{"start":{"line":540,"column":57},"end":{"line":540,"column":73}}},"29":{"name":"_setInitialStreamWindowSize","line":550,"loc":{"start":{"line":550,"column":51},"end":{"line":550,"column":94}}},"30":{"name":"(anonymous_30)","line":557,"loc":{"start":{"line":557,"column":28},"end":{"line":557,"column":45}}},"31":{"name":"_setLocalFlowControl","line":565,"loc":{"start":{"line":565,"column":44},"end":{"line":565,"column":83}}},"32":{"name":"_setRemoteFlowControl","line":575,"loc":{"start":{"line":575,"column":45},"end":{"line":575,"column":85}}},"33":{"name":"(anonymous_33)","line":578,"loc":{"start":{"line":578,"column":28},"end":{"line":578,"column":45}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":31}},"2":{"start":{"line":10,"column":0},"end":{"line":10,"column":34}},"3":{"start":{"line":12,"column":0},"end":{"line":12,"column":32}},"4":{"start":{"line":39,"column":0},"end":{"line":60,"column":1}},"5":{"start":{"line":41,"column":2},"end":{"line":41,"column":21}},"6":{"start":{"line":44,"column":2},"end":{"line":44,"column":53}},"7":{"start":{"line":47,"column":2},"end":{"line":47,"column":50}},"8":{"start":{"line":50,"column":2},"end":{"line":50,"column":40}},"9":{"start":{"line":53,"column":2},"end":{"line":53,"column":32}},"10":{"start":{"line":56,"column":2},"end":{"line":56,"column":47}},"11":{"start":{"line":59,"column":2},"end":{"line":59,"column":33}},"12":{"start":{"line":61,"column":0},"end":{"line":61,"column":93}},"13":{"start":{"line":97,"column":0},"end":{"line":97,"column":41}},"14":{"start":{"line":100,"column":0},"end":{"line":119,"column":2}},"15":{"start":{"line":104,"column":2},"end":{"line":104,"column":23}},"16":{"start":{"line":105,"column":2},"end":{"line":105,"column":30}},"17":{"start":{"line":108,"column":2},"end":{"line":108,"column":37}},"18":{"start":{"line":109,"column":2},"end":{"line":109,"column":31}},"19":{"start":{"line":112,"column":2},"end":{"line":112,"column":83}},"20":{"start":{"line":116,"column":2},"end":{"line":116,"column":35}},"21":{"start":{"line":117,"column":2},"end":{"line":117,"column":31}},"22":{"start":{"line":118,"column":2},"end":{"line":118,"column":80}},"23":{"start":{"line":123,"column":0},"end":{"line":132,"column":2}},"24":{"start":{"line":124,"column":2},"end":{"line":131,"column":3}},"25":{"start":{"line":126,"column":4},"end":{"line":126,"column":74}},"26":{"start":{"line":127,"column":4},"end":{"line":127,"column":33}},"27":{"start":{"line":129,"column":4},"end":{"line":129,"column":72}},"28":{"start":{"line":130,"column":4},"end":{"line":130,"column":41}},"29":{"start":{"line":135,"column":0},"end":{"line":142,"column":2}},"30":{"start":{"line":136,"column":2},"end":{"line":136,"column":85}},"31":{"start":{"line":137,"column":2},"end":{"line":137,"column":62}},"32":{"start":{"line":138,"column":2},"end":{"line":138,"column":37}},"33":{"start":{"line":139,"column":2},"end":{"line":141,"column":3}},"34":{"start":{"line":140,"column":4},"end":{"line":140,"column":24}},"35":{"start":{"line":144,"column":0},"end":{"line":154,"column":2}},"36":{"start":{"line":145,"column":2},"end":{"line":153,"column":3}},"37":{"start":{"line":146,"column":4},"end":{"line":147,"column":53}},"38":{"start":{"line":148,"column":4},"end":{"line":148,"column":63}},"39":{"start":{"line":149,"column":4},"end":{"line":149,"column":36}},"40":{"start":{"line":150,"column":4},"end":{"line":152,"column":5}},"41":{"start":{"line":151,"column":6},"end":{"line":151,"column":26}},"42":{"start":{"line":164,"column":0},"end":{"line":196,"column":2}},"43":{"start":{"line":166,"column":2},"end":{"line":182,"column":3}},"44":{"start":{"line":167,"column":4},"end":{"line":167,"column":28}},"45":{"start":{"line":168,"column":4},"end":{"line":168,"column":28}},"46":{"start":{"line":172,"column":7},"end":{"line":182,"column":3}},"47":{"start":{"line":173,"column":4},"end":{"line":173,"column":34}},"48":{"start":{"line":178,"column":4},"end":{"line":179,"column":51}},"49":{"start":{"line":180,"column":4},"end":{"line":180,"column":41}},"50":{"start":{"line":181,"column":4},"end":{"line":181,"column":21}},"51":{"start":{"line":184,"column":2},"end":{"line":184,"column":35}},"52":{"start":{"line":187,"column":2},"end":{"line":187,"column":77}},"53":{"start":{"line":188,"column":2},"end":{"line":188,"column":31}},"54":{"start":{"line":189,"column":2},"end":{"line":189,"column":17}},"55":{"start":{"line":190,"column":2},"end":{"line":190,"column":38}},"56":{"start":{"line":193,"column":2},"end":{"line":193,"column":52}},"57":{"start":{"line":195,"column":2},"end":{"line":195,"column":12}},"58":{"start":{"line":199,"column":0},"end":{"line":205,"column":2}},"59":{"start":{"line":200,"column":2},"end":{"line":200,"column":68}},"60":{"start":{"line":201,"column":2},"end":{"line":201,"column":41}},"61":{"start":{"line":202,"column":2},"end":{"line":202,"column":63}},"62":{"start":{"line":203,"column":2},"end":{"line":203,"column":65}},"63":{"start":{"line":204,"column":2},"end":{"line":204,"column":22}},"64":{"start":{"line":207,"column":0},"end":{"line":213,"column":2}},"65":{"start":{"line":208,"column":2},"end":{"line":212,"column":3}},"66":{"start":{"line":209,"column":4},"end":{"line":209,"column":50}},"67":{"start":{"line":211,"column":4},"end":{"line":211,"column":48}},"68":{"start":{"line":215,"column":0},"end":{"line":225,"column":2}},"69":{"start":{"line":216,"column":2},"end":{"line":216,"column":56}},"70":{"start":{"line":217,"column":2},"end":{"line":217,"column":37}},"71":{"start":{"line":218,"column":2},"end":{"line":218,"column":23}},"72":{"start":{"line":219,"column":2},"end":{"line":219,"column":26}},"73":{"start":{"line":220,"column":2},"end":{"line":222,"column":3}},"74":{"start":{"line":221,"column":4},"end":{"line":221,"column":52}},"75":{"start":{"line":224,"column":2},"end":{"line":224,"column":33}},"76":{"start":{"line":229,"column":0},"end":{"line":238,"column":2}},"77":{"start":{"line":230,"column":2},"end":{"line":230,"column":61}},"78":{"start":{"line":232,"column":2},"end":{"line":232,"column":37}},"79":{"start":{"line":233,"column":2},"end":{"line":233,"column":31}},"80":{"start":{"line":234,"column":2},"end":{"line":234,"column":33}},"81":{"start":{"line":235,"column":2},"end":{"line":235,"column":34}},"82":{"start":{"line":237,"column":2},"end":{"line":237,"column":16}},"83":{"start":{"line":241,"column":0},"end":{"line":249,"column":2}},"84":{"start":{"line":242,"column":2},"end":{"line":242,"column":51}},"85":{"start":{"line":245,"column":2},"end":{"line":245,"column":37}},"86":{"start":{"line":246,"column":2},"end":{"line":246,"column":33}},"87":{"start":{"line":248,"column":2},"end":{"line":248,"column":16}},"88":{"start":{"line":254,"column":0},"end":{"line":258,"column":2}},"89":{"start":{"line":255,"column":2},"end":{"line":255,"column":59}},"90":{"start":{"line":256,"column":2},"end":{"line":256,"column":30}},"91":{"start":{"line":257,"column":2},"end":{"line":257,"column":35}},"92":{"start":{"line":262,"column":0},"end":{"line":342,"column":2}},"93":{"start":{"line":264,"column":2},"end":{"line":266,"column":3}},"94":{"start":{"line":265,"column":4},"end":{"line":265,"column":11}},"95":{"start":{"line":269,"column":2},"end":{"line":277,"column":3}},"96":{"start":{"line":270,"column":4},"end":{"line":270,"column":32}},"97":{"start":{"line":272,"column":4},"end":{"line":275,"column":5}},"98":{"start":{"line":273,"column":6},"end":{"line":273,"column":33}},"99":{"start":{"line":274,"column":6},"end":{"line":274,"column":48}},"100":{"start":{"line":276,"column":4},"end":{"line":276,"column":11}},"101":{"start":{"line":279,"column":2},"end":{"line":279,"column":62}},"102":{"start":{"line":282,"column":0},"end":{"line":334,"column":3}},"103":{"start":{"line":283,"column":2},"end":{"line":334,"column":3}},"104":{"start":{"line":284,"column":4},"end":{"line":284,"column":50}},"105":{"start":{"line":285,"column":4},"end":{"line":285,"column":24}},"106":{"start":{"line":298,"column":4},"end":{"line":333,"column":5}},"107":{"start":{"line":299,"column":6},"end":{"line":329,"column":7}},"108":{"start":{"line":300,"column":8},"end":{"line":300,"column":35}},"109":{"start":{"line":301,"column":8},"end":{"line":301,"column":81}},"110":{"start":{"line":303,"column":8},"end":{"line":308,"column":9}},"111":{"start":{"line":304,"column":10},"end":{"line":304,"column":19}},"112":{"start":{"line":305,"column":15},"end":{"line":308,"column":9}},"113":{"start":{"line":306,"column":10},"end":{"line":306,"column":41}},"114":{"start":{"line":307,"column":10},"end":{"line":307,"column":19}},"115":{"start":{"line":310,"column":8},"end":{"line":310,"column":32}},"116":{"start":{"line":312,"column":8},"end":{"line":314,"column":9}},"117":{"start":{"line":313,"column":10},"end":{"line":313,"column":63}},"118":{"start":{"line":316,"column":8},"end":{"line":319,"column":9}},"119":{"start":{"line":317,"column":10},"end":{"line":317,"column":56}},"120":{"start":{"line":318,"column":10},"end":{"line":318,"column":74}},"121":{"start":{"line":321,"column":8},"end":{"line":321,"column":82}},"122":{"start":{"line":322,"column":8},"end":{"line":322,"column":42}},"123":{"start":{"line":323,"column":8},"end":{"line":323,"column":52}},"124":{"start":{"line":325,"column":8},"end":{"line":325,"column":36}},"125":{"start":{"line":326,"column":8},"end":{"line":328,"column":9}},"126":{"start":{"line":327,"column":10},"end":{"line":327,"column":30}},"127":{"start":{"line":331,"column":6},"end":{"line":331,"column":26}},"128":{"start":{"line":332,"column":6},"end":{"line":332,"column":22}},"129":{"start":{"line":337,"column":2},"end":{"line":339,"column":3}},"130":{"start":{"line":338,"column":4},"end":{"line":338,"column":47}},"131":{"start":{"line":341,"column":2},"end":{"line":341,"column":90}},"132":{"start":{"line":346,"column":0},"end":{"line":374,"column":2}},"133":{"start":{"line":347,"column":2},"end":{"line":347,"column":65}},"134":{"start":{"line":350,"column":2},"end":{"line":353,"column":3}},"135":{"start":{"line":351,"column":4},"end":{"line":351,"column":36}},"136":{"start":{"line":352,"column":4},"end":{"line":352,"column":38}},"137":{"start":{"line":356,"column":2},"end":{"line":356,"column":45}},"138":{"start":{"line":359,"column":2},"end":{"line":361,"column":3}},"139":{"start":{"line":360,"column":4},"end":{"line":360,"column":54}},"140":{"start":{"line":364,"column":2},"end":{"line":366,"column":3}},"141":{"start":{"line":365,"column":4},"end":{"line":365,"column":78}},"142":{"start":{"line":368,"column":2},"end":{"line":368,"column":58}},"143":{"start":{"line":371,"column":2},"end":{"line":371,"column":31}},"144":{"start":{"line":373,"column":2},"end":{"line":373,"column":9}},"145":{"start":{"line":379,"column":0},"end":{"line":381,"column":2}},"146":{"start":{"line":384,"column":0},"end":{"line":391,"column":2}},"147":{"start":{"line":386,"column":2},"end":{"line":386,"column":88}},"148":{"start":{"line":387,"column":2},"end":{"line":387,"column":40}},"149":{"start":{"line":390,"column":2},"end":{"line":390,"column":45}},"150":{"start":{"line":394,"column":0},"end":{"line":401,"column":2}},"151":{"start":{"line":395,"column":2},"end":{"line":400,"column":3}},"152":{"start":{"line":396,"column":4},"end":{"line":396,"column":92}},"153":{"start":{"line":398,"column":4},"end":{"line":398,"column":97}},"154":{"start":{"line":399,"column":4},"end":{"line":399,"column":23}},"155":{"start":{"line":404,"column":0},"end":{"line":408,"column":2}},"156":{"start":{"line":405,"column":2},"end":{"line":407,"column":3}},"157":{"start":{"line":406,"column":4},"end":{"line":406,"column":57}},"158":{"start":{"line":411,"column":0},"end":{"line":421,"column":2}},"159":{"start":{"line":412,"column":2},"end":{"line":417,"column":5}},"160":{"start":{"line":418,"column":2},"end":{"line":420,"column":3}},"161":{"start":{"line":419,"column":4},"end":{"line":419,"column":49}},"162":{"start":{"line":433,"column":0},"end":{"line":438,"column":2}},"163":{"start":{"line":434,"column":2},"end":{"line":434,"column":19}},"164":{"start":{"line":435,"column":2},"end":{"line":435,"column":37}},"165":{"start":{"line":436,"column":2},"end":{"line":436,"column":41}},"166":{"start":{"line":437,"column":2},"end":{"line":437,"column":23}},"167":{"start":{"line":441,"column":0},"end":{"line":449,"column":2}},"168":{"start":{"line":442,"column":2},"end":{"line":447,"column":29}},"169":{"start":{"line":443,"column":4},"end":{"line":443,"column":16}},"170":{"start":{"line":444,"column":4},"end":{"line":446,"column":5}},"171":{"start":{"line":445,"column":6},"end":{"line":445,"column":54}},"172":{"start":{"line":448,"column":2},"end":{"line":448,"column":12}},"173":{"start":{"line":452,"column":0},"end":{"line":466,"column":2}},"174":{"start":{"line":453,"column":2},"end":{"line":453,"column":34}},"175":{"start":{"line":454,"column":2},"end":{"line":454,"column":35}},"176":{"start":{"line":455,"column":2},"end":{"line":455,"column":29}},"177":{"start":{"line":457,"column":2},"end":{"line":457,"column":51}},"178":{"start":{"line":458,"column":2},"end":{"line":465,"column":5}},"179":{"start":{"line":469,"column":0},"end":{"line":494,"column":2}},"180":{"start":{"line":470,"column":2},"end":{"line":493,"column":3}},"181":{"start":{"line":471,"column":4},"end":{"line":471,"column":40}},"182":{"start":{"line":472,"column":4},"end":{"line":481,"column":5}},"183":{"start":{"line":473,"column":6},"end":{"line":473,"column":76}},"184":{"start":{"line":474,"column":6},"end":{"line":474,"column":37}},"185":{"start":{"line":475,"column":6},"end":{"line":477,"column":7}},"186":{"start":{"line":476,"column":8},"end":{"line":476,"column":19}},"187":{"start":{"line":478,"column":6},"end":{"line":478,"column":29}},"188":{"start":{"line":480,"column":6},"end":{"line":480,"column":71}},"189":{"start":{"line":484,"column":4},"end":{"line":484,"column":61}},"190":{"start":{"line":485,"column":4},"end":{"line":492,"column":7}},"191":{"start":{"line":497,"column":0},"end":{"line":513,"column":2}},"192":{"start":{"line":498,"column":2},"end":{"line":501,"column":3}},"193":{"start":{"line":499,"column":4},"end":{"line":499,"column":67}},"194":{"start":{"line":500,"column":4},"end":{"line":500,"column":11}},"195":{"start":{"line":503,"column":2},"end":{"line":503,"column":62}},"196":{"start":{"line":504,"column":2},"end":{"line":510,"column":5}},"197":{"start":{"line":511,"column":2},"end":{"line":511,"column":18}},"198":{"start":{"line":512,"column":2},"end":{"line":512,"column":22}},"199":{"start":{"line":515,"column":0},"end":{"line":522,"column":2}},"200":{"start":{"line":516,"column":2},"end":{"line":516,"column":77}},"201":{"start":{"line":517,"column":2},"end":{"line":517,"column":18}},"202":{"start":{"line":518,"column":2},"end":{"line":518,"column":22}},"203":{"start":{"line":519,"column":2},"end":{"line":521,"column":3}},"204":{"start":{"line":520,"column":4},"end":{"line":520,"column":40}},"205":{"start":{"line":527,"column":0},"end":{"line":541,"column":2}},"206":{"start":{"line":529,"column":2},"end":{"line":529,"column":61}},"207":{"start":{"line":530,"column":2},"end":{"line":535,"column":5}},"208":{"start":{"line":531,"column":4},"end":{"line":531,"column":68}},"209":{"start":{"line":532,"column":4},"end":{"line":534,"column":5}},"210":{"start":{"line":533,"column":6},"end":{"line":533,"column":49}},"211":{"start":{"line":536,"column":2},"end":{"line":536,"column":86}},"212":{"start":{"line":537,"column":2},"end":{"line":537,"column":80}},"213":{"start":{"line":538,"column":2},"end":{"line":538,"column":79}},"214":{"start":{"line":539,"column":2},"end":{"line":539,"column":68}},"215":{"start":{"line":540,"column":2},"end":{"line":540,"column":76}},"216":{"start":{"line":544,"column":0},"end":{"line":544,"column":39}},"217":{"start":{"line":550,"column":0},"end":{"line":561,"column":2}},"218":{"start":{"line":551,"column":2},"end":{"line":560,"column":3}},"219":{"start":{"line":552,"column":4},"end":{"line":552,"column":112}},"220":{"start":{"line":553,"column":4},"end":{"line":553,"column":45}},"221":{"start":{"line":555,"column":4},"end":{"line":555,"column":76}},"222":{"start":{"line":556,"column":4},"end":{"line":556,"column":41}},"223":{"start":{"line":557,"column":4},"end":{"line":559,"column":7}},"224":{"start":{"line":558,"column":6},"end":{"line":558,"column":45}},"225":{"start":{"line":565,"column":0},"end":{"line":573,"column":2}},"226":{"start":{"line":566,"column":2},"end":{"line":572,"column":3}},"227":{"start":{"line":567,"column":4},"end":{"line":567,"column":35}},"228":{"start":{"line":568,"column":4},"end":{"line":568,"column":47}},"229":{"start":{"line":569,"column":9},"end":{"line":572,"column":3}},"230":{"start":{"line":570,"column":4},"end":{"line":570,"column":81}},"231":{"start":{"line":571,"column":4},"end":{"line":571,"column":45}},"232":{"start":{"line":575,"column":0},"end":{"line":585,"column":2}},"233":{"start":{"line":576,"column":2},"end":{"line":584,"column":3}},"234":{"start":{"line":577,"column":4},"end":{"line":577,"column":36}},"235":{"start":{"line":578,"column":4},"end":{"line":580,"column":7}},"236":{"start":{"line":579,"column":6},"end":{"line":579,"column":49}},"237":{"start":{"line":581,"column":9},"end":{"line":584,"column":3}},"238":{"start":{"line":582,"column":4},"end":{"line":582,"column":81}},"239":{"start":{"line":583,"column":4},"end":{"line":583,"column":81}}},"branchMap":{"1":{"line":124,"type":"if","locations":[{"start":{"line":124,"column":2},"end":{"line":124,"column":2}},{"start":{"line":124,"column":2},"end":{"line":124,"column":2}}]},"2":{"line":124,"type":"binary-expr","locations":[{"start":{"line":124,"column":7},"end":{"line":124,"column":32}},{"start":{"line":124,"column":38},"end":{"line":124,"column":59}},{"start":{"line":125,"column":7},"end":{"line":125,"column":30}},{"start":{"line":125,"column":36},"end":{"line":125,"column":66}}]},"3":{"line":136,"type":"binary-expr","locations":[{"start":{"line":136,"column":16},"end":{"line":136,"column":43}},{"start":{"line":136,"column":49},"end":{"line":136,"column":83}}]},"4":{"line":139,"type":"if","locations":[{"start":{"line":139,"column":2},"end":{"line":139,"column":2}},{"start":{"line":139,"column":2},"end":{"line":139,"column":2}}]},"5":{"line":145,"type":"if","locations":[{"start":{"line":145,"column":2},"end":{"line":145,"column":2}},{"start":{"line":145,"column":2},"end":{"line":145,"column":2}}]},"6":{"line":148,"type":"binary-expr","locations":[{"start":{"line":148,"column":18},"end":{"line":148,"column":45}},{"start":{"line":148,"column":51},"end":{"line":148,"column":61}}]},"7":{"line":150,"type":"if","locations":[{"start":{"line":150,"column":4},"end":{"line":150,"column":4}},{"start":{"line":150,"column":4},"end":{"line":150,"column":4}}]},"8":{"line":166,"type":"if","locations":[{"start":{"line":166,"column":2},"end":{"line":166,"column":2}},{"start":{"line":166,"column":2},"end":{"line":166,"column":2}}]},"9":{"line":172,"type":"if","locations":[{"start":{"line":172,"column":7},"end":{"line":172,"column":7}},{"start":{"line":172,"column":7},"end":{"line":172,"column":7}}]},"10":{"line":172,"type":"binary-expr","locations":[{"start":{"line":172,"column":12},"end":{"line":172,"column":41}},{"start":{"line":172,"column":47},"end":{"line":172,"column":82}}]},"11":{"line":208,"type":"if","locations":[{"start":{"line":208,"column":2},"end":{"line":208,"column":2}},{"start":{"line":208,"column":2},"end":{"line":208,"column":2}}]},"12":{"line":220,"type":"if","locations":[{"start":{"line":220,"column":2},"end":{"line":220,"column":2}},{"start":{"line":220,"column":2},"end":{"line":220,"column":2}}]},"13":{"line":264,"type":"if","locations":[{"start":{"line":264,"column":2},"end":{"line":264,"column":2}},{"start":{"line":264,"column":2},"end":{"line":264,"column":2}}]},"14":{"line":269,"type":"if","locations":[{"start":{"line":269,"column":2},"end":{"line":269,"column":2}},{"start":{"line":269,"column":2},"end":{"line":269,"column":2}}]},"15":{"line":272,"type":"if","locations":[{"start":{"line":272,"column":4},"end":{"line":272,"column":4}},{"start":{"line":272,"column":4},"end":{"line":272,"column":4}}]},"16":{"line":301,"type":"cond-expr","locations":[{"start":{"line":301,"column":62},"end":{"line":301,"column":74}},{"start":{"line":301,"column":77},"end":{"line":301,"column":79}}]},"17":{"line":303,"type":"if","locations":[{"start":{"line":303,"column":8},"end":{"line":303,"column":8}},{"start":{"line":303,"column":8},"end":{"line":303,"column":8}}]},"18":{"line":305,"type":"if","locations":[{"start":{"line":305,"column":15},"end":{"line":305,"column":15}},{"start":{"line":305,"column":15},"end":{"line":305,"column":15}}]},"19":{"line":312,"type":"if","locations":[{"start":{"line":312,"column":8},"end":{"line":312,"column":8}},{"start":{"line":312,"column":8},"end":{"line":312,"column":8}}]},"20":{"line":313,"type":"binary-expr","locations":[{"start":{"line":313,"column":25},"end":{"line":313,"column":34}},{"start":{"line":313,"column":38},"end":{"line":313,"column":62}}]},"21":{"line":316,"type":"if","locations":[{"start":{"line":316,"column":8},"end":{"line":316,"column":8}},{"start":{"line":316,"column":8},"end":{"line":316,"column":8}}]},"22":{"line":326,"type":"if","locations":[{"start":{"line":326,"column":8},"end":{"line":326,"column":8}},{"start":{"line":326,"column":8},"end":{"line":326,"column":8}}]},"23":{"line":337,"type":"if","locations":[{"start":{"line":337,"column":2},"end":{"line":337,"column":2}},{"start":{"line":337,"column":2},"end":{"line":337,"column":2}}]},"24":{"line":350,"type":"if","locations":[{"start":{"line":350,"column":2},"end":{"line":350,"column":2}},{"start":{"line":350,"column":2},"end":{"line":350,"column":2}}]},"25":{"line":359,"type":"if","locations":[{"start":{"line":359,"column":2},"end":{"line":359,"column":2}},{"start":{"line":359,"column":2},"end":{"line":359,"column":2}}]},"26":{"line":364,"type":"if","locations":[{"start":{"line":364,"column":2},"end":{"line":364,"column":2}},{"start":{"line":364,"column":2},"end":{"line":364,"column":2}}]},"27":{"line":387,"type":"binary-expr","locations":[{"start":{"line":387,"column":11},"end":{"line":387,"column":19}},{"start":{"line":387,"column":23},"end":{"line":387,"column":38}}]},"28":{"line":395,"type":"if","locations":[{"start":{"line":395,"column":2},"end":{"line":395,"column":2}},{"start":{"line":395,"column":2},"end":{"line":395,"column":2}}]},"29":{"line":395,"type":"binary-expr","locations":[{"start":{"line":395,"column":7},"end":{"line":395,"column":25}},{"start":{"line":395,"column":31},"end":{"line":395,"column":56}}]},"30":{"line":470,"type":"if","locations":[{"start":{"line":470,"column":2},"end":{"line":470,"column":2}},{"start":{"line":470,"column":2},"end":{"line":470,"column":2}}]},"31":{"line":472,"type":"if","locations":[{"start":{"line":472,"column":4},"end":{"line":472,"column":4}},{"start":{"line":472,"column":4},"end":{"line":472,"column":4}}]},"32":{"line":475,"type":"if","locations":[{"start":{"line":475,"column":6},"end":{"line":475,"column":6}},{"start":{"line":475,"column":6},"end":{"line":475,"column":6}}]},"33":{"line":498,"type":"if","locations":[{"start":{"line":498,"column":2},"end":{"line":498,"column":2}},{"start":{"line":498,"column":2},"end":{"line":498,"column":2}}]},"34":{"line":509,"type":"binary-expr","locations":[{"start":{"line":509,"column":11},"end":{"line":509,"column":16}},{"start":{"line":509,"column":20},"end":{"line":509,"column":30}}]},"35":{"line":519,"type":"if","locations":[{"start":{"line":519,"column":2},"end":{"line":519,"column":2}},{"start":{"line":519,"column":2},"end":{"line":519,"column":2}}]},"36":{"line":532,"type":"if","locations":[{"start":{"line":532,"column":4},"end":{"line":532,"column":4}},{"start":{"line":532,"column":4},"end":{"line":532,"column":4}}]},"37":{"line":551,"type":"if","locations":[{"start":{"line":551,"column":2},"end":{"line":551,"column":2}},{"start":{"line":551,"column":2},"end":{"line":551,"column":2}}]},"38":{"line":551,"type":"binary-expr","locations":[{"start":{"line":551,"column":7},"end":{"line":551,"column":49}},{"start":{"line":551,"column":55},"end":{"line":551,"column":72}}]},"39":{"line":566,"type":"if","locations":[{"start":{"line":566,"column":2},"end":{"line":566,"column":2}},{"start":{"line":566,"column":2},"end":{"line":566,"column":2}}]},"40":{"line":569,"type":"if","locations":[{"start":{"line":569,"column":9},"end":{"line":569,"column":9}},{"start":{"line":569,"column":9},"end":{"line":569,"column":9}}]},"41":{"line":576,"type":"if","locations":[{"start":{"line":576,"column":2},"end":{"line":576,"column":2}},{"start":{"line":576,"column":2},"end":{"line":576,"column":2}}]},"42":{"line":581,"type":"if","locations":[{"start":{"line":581,"column":9},"end":{"line":581,"column":9}},{"start":{"line":581,"column":9},"end":{"line":581,"column":9}}]}}},"/data/upstream/node-http2/lib/flow.js":{"path":"/data/upstream/node-http2/lib/flow.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":164,"7":164,"8":164,"9":164,"10":164,"11":164,"12":164,"13":1,"14":1,"15":1,"16":1,"17":266,"18":63,"19":266,"20":97,"21":97,"22":97,"23":12,"24":97,"25":169,"26":266,"27":5,"28":1,"29":12,"30":12,"31":6,"32":6,"33":1,"34":45,"35":45,"36":1,"37":1,"38":1,"39":231,"40":216,"41":15,"42":7,"43":7,"44":8,"45":8,"46":7,"47":7,"48":7,"49":8,"50":1,"51":1,"52":610,"53":130,"54":480,"55":0,"56":480,"57":480,"58":480,"59":480,"60":480,"61":401,"62":191,"63":401,"64":79,"65":0,"66":0,"67":0,"68":79,"69":79,"70":79,"71":79,"72":0,"73":79,"74":1,"75":209,"76":209,"77":28,"78":28,"79":28,"80":209,"81":1,"82":210,"83":210,"84":203,"85":7,"86":1,"87":6,"88":6,"89":6,"90":6,"91":1,"92":203,"93":6,"94":197,"95":203,"96":203,"97":202,"98":203,"99":7,"100":203,"101":1,"102":36,"103":36,"104":1,"105":1,"106":87,"107":1,"108":1,"109":86,"110":86,"111":86,"112":1,"113":1,"114":85,"115":1,"116":5,"117":1,"118":52,"119":52,"120":1,"121":1},"b":{"1":[63,203],"2":[266,203],"3":[97,169],"4":[266,129,126],"5":[12,85],"6":[5,261],"7":[266,5,5],"8":[6,6],"9":[12,6,6],"10":[216,15],"11":[7,8],"12":[8,7],"13":[7,1],"14":[7,7,1,1],"15":[130,480],"16":[0,480],"17":[480,0],"18":[480,146],"19":[480,210],"20":[401,79],"21":[480,273,130],"22":[191,210],"23":[0,79],"24":[0,0],"25":[0,79],"26":[28,181],"27":[209,203,51],"28":[210,204,52],"29":[203,7],"30":[210,52],"31":[1,6],"32":[6,197],"33":[202,1],"34":[7,196],"35":[36,36],"36":[1,86],"37":[87,2],"38":[1,85],"39":[86,37],"40":[0,5]},"f":{"1":164,"2":1,"3":266,"4":97,"5":12,"6":45,"7":1,"8":231,"9":610,"10":209,"11":210,"12":203,"13":36,"14":87,"15":5,"16":52,"17":1},"fnMap":{"1":{"name":"Flow","line":63,"loc":{"start":{"line":63,"column":0},"end":{"line":63,"column":29}}},"2":{"name":"_receive","line":79,"loc":{"start":{"line":79,"column":26},"end":{"line":79,"column":61}}},"3":{"name":"_write","line":87,"loc":{"start":{"line":87,"column":24},"end":{"line":87,"column":67}}},"4":{"name":"(anonymous_4)","line":93,"loc":{"start":{"line":93,"column":25},"end":{"line":93,"column":36}}},"5":{"name":"_restoreWindow","line":114,"loc":{"start":{"line":114,"column":32},"end":{"line":114,"column":58}}},"6":{"name":"disableRemoteFlowControl","line":128,"loc":{"start":{"line":128,"column":42},"end":{"line":128,"column":78}}},"7":{"name":"_send","line":152,"loc":{"start":{"line":152,"column":23},"end":{"line":152,"column":40}}},"8":{"name":"_read","line":159,"loc":{"start":{"line":159,"column":23},"end":{"line":159,"column":40}}},"9":{"name":"read","line":193,"loc":{"start":{"line":193,"column":22},"end":{"line":193,"column":43}}},"10":{"name":"_parentPush","line":240,"loc":{"start":{"line":240,"column":29},"end":{"line":240,"column":57}}},"11":{"name":"_push","line":257,"loc":{"start":{"line":257,"column":23},"end":{"line":257,"column":45}}},"12":{"name":"push","line":283,"loc":{"start":{"line":283,"column":22},"end":{"line":283,"column":43}}},"13":{"name":"getLastQueuedFrame","line":304,"loc":{"start":{"line":304,"column":36},"end":{"line":304,"column":66}}},"14":{"name":"_increaseWindow","line":322,"loc":{"start":{"line":322,"column":33},"end":{"line":322,"column":64}}},"15":{"name":"_updateWindow","line":346,"loc":{"start":{"line":346,"column":31},"end":{"line":346,"column":61}}},"16":{"name":"setInitialWindow","line":354,"loc":{"start":{"line":354,"column":34},"end":{"line":354,"column":75}}},"17":{"name":"disableLocalFlowControl","line":360,"loc":{"start":{"line":360,"column":41},"end":{"line":360,"column":76}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":31}},"2":{"start":{"line":10,"column":0},"end":{"line":10,"column":39}},"3":{"start":{"line":12,"column":0},"end":{"line":12,"column":20}},"4":{"start":{"line":60,"column":0},"end":{"line":60,"column":32}},"5":{"start":{"line":63,"column":0},"end":{"line":72,"column":1}},"6":{"start":{"line":64,"column":2},"end":{"line":64,"column":42}},"7":{"start":{"line":66,"column":2},"end":{"line":66,"column":59}},"8":{"start":{"line":67,"column":2},"end":{"line":67,"column":38}},"9":{"start":{"line":68,"column":2},"end":{"line":68,"column":19}},"10":{"start":{"line":69,"column":2},"end":{"line":69,"column":22}},"11":{"start":{"line":70,"column":2},"end":{"line":70,"column":21}},"12":{"start":{"line":71,"column":2},"end":{"line":71,"column":42}},"13":{"start":{"line":73,"column":0},"end":{"line":73,"column":83}},"14":{"start":{"line":79,"column":0},"end":{"line":81,"column":2}},"15":{"start":{"line":80,"column":2},"end":{"line":80,"column":99}},"16":{"start":{"line":87,"column":0},"end":{"line":110,"column":2}},"17":{"start":{"line":88,"column":2},"end":{"line":90,"column":3}},"18":{"start":{"line":89,"column":4},"end":{"line":89,"column":23}},"19":{"start":{"line":92,"column":2},"end":{"line":104,"column":3}},"20":{"start":{"line":93,"column":4},"end":{"line":99,"column":18}},"21":{"start":{"line":94,"column":6},"end":{"line":94,"column":42}},"22":{"start":{"line":95,"column":6},"end":{"line":97,"column":7}},"23":{"start":{"line":96,"column":8},"end":{"line":96,"column":80}},"24":{"start":{"line":98,"column":6},"end":{"line":98,"column":17}},"25":{"start":{"line":103,"column":4},"end":{"line":103,"column":35}},"26":{"start":{"line":106,"column":2},"end":{"line":109,"column":3}},"27":{"start":{"line":108,"column":4},"end":{"line":108,"column":30}},"28":{"start":{"line":114,"column":0},"end":{"line":125,"column":2}},"29":{"start":{"line":115,"column":2},"end":{"line":115,"column":34}},"30":{"start":{"line":116,"column":2},"end":{"line":124,"column":3}},"31":{"start":{"line":117,"column":4},"end":{"line":122,"column":7}},"32":{"start":{"line":123,"column":4},"end":{"line":123,"column":23}},"33":{"start":{"line":128,"column":0},"end":{"line":131,"column":2}},"34":{"start":{"line":129,"column":2},"end":{"line":129,"column":53}},"35":{"start":{"line":130,"column":2},"end":{"line":130,"column":41}},"36":{"start":{"line":152,"column":0},"end":{"line":154,"column":2}},"37":{"start":{"line":153,"column":2},"end":{"line":153,"column":81}},"38":{"start":{"line":159,"column":0},"end":{"line":186,"column":2}},"39":{"start":{"line":161,"column":2},"end":{"line":185,"column":3}},"40":{"start":{"line":162,"column":4},"end":{"line":162,"column":17}},"41":{"start":{"line":167,"column":7},"end":{"line":185,"column":3}},"42":{"start":{"line":168,"column":4},"end":{"line":168,"column":36}},"43":{"start":{"line":169,"column":4},"end":{"line":174,"column":53}},"44":{"start":{"line":170,"column":6},"end":{"line":170,"column":50}},"45":{"start":{"line":171,"column":6},"end":{"line":173,"column":7}},"46":{"start":{"line":172,"column":8},"end":{"line":172,"column":28}},"47":{"start":{"line":175,"column":4},"end":{"line":175,"column":37}},"48":{"start":{"line":177,"column":4},"end":{"line":179,"column":64}},"49":{"start":{"line":184,"column":4},"end":{"line":184,"column":43}},"50":{"start":{"line":188,"column":0},"end":{"line":188,"column":28}},"51":{"start":{"line":193,"column":0},"end":{"line":237,"column":2}},"52":{"start":{"line":194,"column":2},"end":{"line":200,"column":3}},"53":{"start":{"line":195,"column":4},"end":{"line":195,"column":47}},"54":{"start":{"line":196,"column":9},"end":{"line":200,"column":3}},"55":{"start":{"line":197,"column":4},"end":{"line":197,"column":14}},"56":{"start":{"line":198,"column":9},"end":{"line":200,"column":3}},"57":{"start":{"line":199,"column":4},"end":{"line":199,"column":29}},"58":{"start":{"line":204,"column":2},"end":{"line":204,"column":51}},"59":{"start":{"line":205,"column":2},"end":{"line":205,"column":63}},"60":{"start":{"line":207,"column":2},"end":{"line":236,"column":3}},"61":{"start":{"line":208,"column":4},"end":{"line":210,"column":5}},"62":{"start":{"line":209,"column":6},"end":{"line":209,"column":39}},"63":{"start":{"line":211,"column":4},"end":{"line":211,"column":17}},"64":{"start":{"line":214,"column":7},"end":{"line":236,"column":3}},"65":{"start":{"line":215,"column":4},"end":{"line":217,"column":5}},"66":{"start":{"line":216,"column":6},"end":{"line":216,"column":26}},"67":{"start":{"line":218,"column":4},"end":{"line":218,"column":16}},"68":{"start":{"line":222,"column":4},"end":{"line":223,"column":71}},"69":{"start":{"line":224,"column":4},"end":{"line":229,"column":6}},"70":{"start":{"line":230,"column":4},"end":{"line":230,"column":41}},"71":{"start":{"line":232,"column":4},"end":{"line":234,"column":5}},"72":{"start":{"line":233,"column":6},"end":{"line":233,"column":26}},"73":{"start":{"line":235,"column":4},"end":{"line":235,"column":23}},"74":{"start":{"line":240,"column":0},"end":{"line":251,"column":2}},"75":{"start":{"line":241,"column":2},"end":{"line":241,"column":75}},"76":{"start":{"line":243,"column":2},"end":{"line":248,"column":3}},"77":{"start":{"line":244,"column":4},"end":{"line":245,"column":60}},"78":{"start":{"line":246,"column":4},"end":{"line":246,"column":38}},"79":{"start":{"line":247,"column":4},"end":{"line":247,"column":30}},"80":{"start":{"line":250,"column":2},"end":{"line":250,"column":49}},"81":{"start":{"line":257,"column":0},"end":{"line":280,"column":2}},"82":{"start":{"line":258,"column":2},"end":{"line":258,"column":60}},"83":{"start":{"line":260,"column":2},"end":{"line":279,"column":3}},"84":{"start":{"line":261,"column":4},"end":{"line":261,"column":35}},"85":{"start":{"line":264,"column":7},"end":{"line":279,"column":3}},"86":{"start":{"line":265,"column":4},"end":{"line":265,"column":16}},"87":{"start":{"line":269,"column":4},"end":{"line":270,"column":71}},"88":{"start":{"line":271,"column":4},"end":{"line":271,"column":42}},"89":{"start":{"line":272,"column":4},"end":{"line":277,"column":7}},"90":{"start":{"line":278,"column":4},"end":{"line":278,"column":16}},"91":{"start":{"line":283,"column":0},"end":{"line":300,"column":2}},"92":{"start":{"line":284,"column":2},"end":{"line":288,"column":3}},"93":{"start":{"line":285,"column":4},"end":{"line":285,"column":57}},"94":{"start":{"line":287,"column":4},"end":{"line":287,"column":67}},"95":{"start":{"line":290,"column":2},"end":{"line":290,"column":24}},"96":{"start":{"line":291,"column":2},"end":{"line":293,"column":3}},"97":{"start":{"line":292,"column":4},"end":{"line":292,"column":35}},"98":{"start":{"line":295,"column":2},"end":{"line":297,"column":3}},"99":{"start":{"line":296,"column":4},"end":{"line":296,"column":28}},"100":{"start":{"line":299,"column":2},"end":{"line":299,"column":20}},"101":{"start":{"line":304,"column":0},"end":{"line":307,"column":2}},"102":{"start":{"line":305,"column":2},"end":{"line":305,"column":49}},"103":{"start":{"line":306,"column":2},"end":{"line":306,"column":88}},"104":{"start":{"line":320,"column":0},"end":{"line":320,"column":44}},"105":{"start":{"line":322,"column":0},"end":{"line":336,"column":2}},"106":{"start":{"line":323,"column":2},"end":{"line":335,"column":3}},"107":{"start":{"line":324,"column":4},"end":{"line":324,"column":97}},"108":{"start":{"line":325,"column":4},"end":{"line":325,"column":45}},"109":{"start":{"line":327,"column":4},"end":{"line":327,"column":96}},"110":{"start":{"line":328,"column":4},"end":{"line":328,"column":25}},"111":{"start":{"line":329,"column":4},"end":{"line":334,"column":5}},"112":{"start":{"line":330,"column":6},"end":{"line":330,"column":61}},"113":{"start":{"line":331,"column":6},"end":{"line":331,"column":47}},"114":{"start":{"line":333,"column":6},"end":{"line":333,"column":33}},"115":{"start":{"line":346,"column":0},"end":{"line":348,"column":2}},"116":{"start":{"line":347,"column":2},"end":{"line":347,"column":84}},"117":{"start":{"line":354,"column":0},"end":{"line":357,"column":2}},"118":{"start":{"line":355,"column":2},"end":{"line":355,"column":60}},"119":{"start":{"line":356,"column":2},"end":{"line":356,"column":38}},"120":{"start":{"line":360,"column":0},"end":{"line":362,"column":2}},"121":{"start":{"line":361,"column":2},"end":{"line":361,"column":33}}},"branchMap":{"1":{"line":88,"type":"if","locations":[{"start":{"line":88,"column":2},"end":{"line":88,"column":2}},{"start":{"line":88,"column":2},"end":{"line":88,"column":2}}]},"2":{"line":88,"type":"binary-expr","locations":[{"start":{"line":88,"column":6},"end":{"line":88,"column":28}},{"start":{"line":88,"column":33},"end":{"line":88,"column":60}}]},"3":{"line":92,"type":"if","locations":[{"start":{"line":92,"column":2},"end":{"line":92,"column":2}},{"start":{"line":92,"column":2},"end":{"line":92,"column":2}}]},"4":{"line":92,"type":"binary-expr","locations":[{"start":{"line":92,"column":7},"end":{"line":92,"column":28}},{"start":{"line":92,"column":34},"end":{"line":92,"column":55}},{"start":{"line":92,"column":60},"end":{"line":92,"column":92}}]},"5":{"line":95,"type":"if","locations":[{"start":{"line":95,"column":6},"end":{"line":95,"column":6}},{"start":{"line":95,"column":6},"end":{"line":95,"column":6}}]},"6":{"line":106,"type":"if","locations":[{"start":{"line":106,"column":2},"end":{"line":106,"column":2}},{"start":{"line":106,"column":2},"end":{"line":106,"column":2}}]},"7":{"line":106,"type":"binary-expr","locations":[{"start":{"line":106,"column":7},"end":{"line":106,"column":37}},{"start":{"line":107,"column":8},"end":{"line":107,"column":41}},{"start":{"line":107,"column":47},"end":{"line":107,"column":83}}]},"8":{"line":116,"type":"if","locations":[{"start":{"line":116,"column":2},"end":{"line":116,"column":2}},{"start":{"line":116,"column":2},"end":{"line":116,"column":2}}]},"9":{"line":116,"type":"binary-expr","locations":[{"start":{"line":116,"column":6},"end":{"line":116,"column":18}},{"start":{"line":116,"column":22},"end":{"line":116,"column":54}},{"start":{"line":116,"column":59},"end":{"line":116,"column":77}}]},"10":{"line":161,"type":"if","locations":[{"start":{"line":161,"column":2},"end":{"line":161,"column":2}},{"start":{"line":161,"column":2},"end":{"line":161,"column":2}}]},"11":{"line":167,"type":"if","locations":[{"start":{"line":167,"column":7},"end":{"line":167,"column":7}},{"start":{"line":167,"column":7},"end":{"line":167,"column":7}}]},"12":{"line":174,"type":"binary-expr","locations":[{"start":{"line":174,"column":13},"end":{"line":174,"column":23}},{"start":{"line":174,"column":28},"end":{"line":174,"column":50}}]},"13":{"line":171,"type":"if","locations":[{"start":{"line":171,"column":6},"end":{"line":171,"column":6}},{"start":{"line":171,"column":6},"end":{"line":171,"column":6}}]},"14":{"line":177,"type":"binary-expr","locations":[{"start":{"line":177,"column":12},"end":{"line":177,"column":31}},{"start":{"line":178,"column":12},"end":{"line":178,"column":36}},{"start":{"line":179,"column":12},"end":{"line":179,"column":25}},{"start":{"line":179,"column":30},"end":{"line":179,"column":60}}]},"15":{"line":194,"type":"if","locations":[{"start":{"line":194,"column":2},"end":{"line":194,"column":2}},{"start":{"line":194,"column":2},"end":{"line":194,"column":2}}]},"16":{"line":196,"type":"if","locations":[{"start":{"line":196,"column":9},"end":{"line":196,"column":9}},{"start":{"line":196,"column":9},"end":{"line":196,"column":9}}]},"17":{"line":198,"type":"if","locations":[{"start":{"line":198,"column":9},"end":{"line":198,"column":9}},{"start":{"line":198,"column":9},"end":{"line":198,"column":9}}]},"18":{"line":198,"type":"binary-expr","locations":[{"start":{"line":198,"column":14},"end":{"line":198,"column":33}},{"start":{"line":198,"column":39},"end":{"line":198,"column":63}}]},"19":{"line":205,"type":"binary-expr","locations":[{"start":{"line":205,"column":14},"end":{"line":205,"column":26}},{"start":{"line":205,"column":30},"end":{"line":205,"column":62}}]},"20":{"line":207,"type":"if","locations":[{"start":{"line":207,"column":2},"end":{"line":207,"column":2}},{"start":{"line":207,"column":2},"end":{"line":207,"column":2}}]},"21":{"line":207,"type":"binary-expr","locations":[{"start":{"line":207,"column":7},"end":{"line":207,"column":21}},{"start":{"line":207,"column":27},"end":{"line":207,"column":48}},{"start":{"line":207,"column":54},"end":{"line":207,"column":80}}]},"22":{"line":208,"type":"if","locations":[{"start":{"line":208,"column":4},"end":{"line":208,"column":4}},{"start":{"line":208,"column":4},"end":{"line":208,"column":4}}]},"23":{"line":214,"type":"if","locations":[{"start":{"line":214,"column":7},"end":{"line":214,"column":7}},{"start":{"line":214,"column":7},"end":{"line":214,"column":7}}]},"24":{"line":215,"type":"if","locations":[{"start":{"line":215,"column":4},"end":{"line":215,"column":4}},{"start":{"line":215,"column":4},"end":{"line":215,"column":4}}]},"25":{"line":232,"type":"if","locations":[{"start":{"line":232,"column":4},"end":{"line":232,"column":4}},{"start":{"line":232,"column":4},"end":{"line":232,"column":4}}]},"26":{"line":243,"type":"if","locations":[{"start":{"line":243,"column":2},"end":{"line":243,"column":2}},{"start":{"line":243,"column":2},"end":{"line":243,"column":2}}]},"27":{"line":243,"type":"binary-expr","locations":[{"start":{"line":243,"column":6},"end":{"line":243,"column":11}},{"start":{"line":243,"column":16},"end":{"line":243,"column":37}},{"start":{"line":243,"column":43},"end":{"line":243,"column":68}}]},"28":{"line":258,"type":"binary-expr","locations":[{"start":{"line":258,"column":13},"end":{"line":258,"column":18}},{"start":{"line":258,"column":23},"end":{"line":258,"column":44}},{"start":{"line":258,"column":49},"end":{"line":258,"column":59}}]},"29":{"line":260,"type":"if","locations":[{"start":{"line":260,"column":2},"end":{"line":260,"column":2}},{"start":{"line":260,"column":2},"end":{"line":260,"column":2}}]},"30":{"line":260,"type":"binary-expr","locations":[{"start":{"line":260,"column":6},"end":{"line":260,"column":11}},{"start":{"line":260,"column":16},"end":{"line":260,"column":43}}]},"31":{"line":264,"type":"if","locations":[{"start":{"line":264,"column":7},"end":{"line":264,"column":7}},{"start":{"line":264,"column":7},"end":{"line":264,"column":7}}]},"32":{"line":284,"type":"if","locations":[{"start":{"line":284,"column":2},"end":{"line":284,"column":2}},{"start":{"line":284,"column":2},"end":{"line":284,"column":2}}]},"33":{"line":291,"type":"if","locations":[{"start":{"line":291,"column":2},"end":{"line":291,"column":2}},{"start":{"line":291,"column":2},"end":{"line":291,"column":2}}]},"34":{"line":295,"type":"if","locations":[{"start":{"line":295,"column":2},"end":{"line":295,"column":2}},{"start":{"line":295,"column":2},"end":{"line":295,"column":2}}]},"35":{"line":306,"type":"binary-expr","locations":[{"start":{"line":306,"column":9},"end":{"line":306,"column":44}},{"start":{"line":306,"column":48},"end":{"line":306,"column":87}}]},"36":{"line":323,"type":"if","locations":[{"start":{"line":323,"column":2},"end":{"line":323,"column":2}},{"start":{"line":323,"column":2},"end":{"line":323,"column":2}}]},"37":{"line":323,"type":"binary-expr","locations":[{"start":{"line":323,"column":7},"end":{"line":323,"column":32}},{"start":{"line":323,"column":38},"end":{"line":323,"column":55}}]},"38":{"line":329,"type":"if","locations":[{"start":{"line":329,"column":4},"end":{"line":329,"column":4}},{"start":{"line":329,"column":4},"end":{"line":329,"column":4}}]},"39":{"line":329,"type":"binary-expr","locations":[{"start":{"line":329,"column":9},"end":{"line":329,"column":34}},{"start":{"line":329,"column":40},"end":{"line":329,"column":72}}]},"40":{"line":347,"type":"cond-expr","locations":[{"start":{"line":347,"column":54},"end":{"line":347,"column":62}},{"start":{"line":347,"column":65},"end":{"line":347,"column":82}}]}}},"/data/upstream/node-http2/lib/stream.js":{"path":"/data/upstream/node-http2/lib/stream.js","s":{"1":1,"2":1,"3":1,"4":1,"5":105,"6":105,"7":105,"8":105,"9":105,"10":1,"11":1,"12":1,"13":1,"14":105,"15":105,"16":105,"17":1,"18":6,"19":6,"20":6,"21":6,"22":1,"23":6,"24":1,"25":44,"26":1,"27":43,"28":0,"29":43,"30":1,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":1,"42":0,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":105,"50":105,"51":105,"52":105,"53":105,"54":105,"55":105,"56":105,"57":105,"58":1,"59":71,"60":71,"61":1,"62":70,"63":70,"64":70,"65":70,"66":43,"67":27,"68":6,"69":21,"70":0,"71":21,"72":0,"73":0,"74":70,"75":1,"76":70,"77":21,"78":21,"79":0,"80":70,"81":35,"82":35,"83":70,"84":70,"85":1,"86":38,"87":0,"88":0,"89":0,"90":1,"91":19,"92":19,"93":0,"94":19,"95":1,"96":91,"97":19,"98":19,"99":19,"100":1,"101":1,"102":36,"103":36,"104":36,"105":35,"106":35,"107":35,"108":1,"109":1,"110":105,"111":105,"112":105,"113":105,"114":1,"115":145,"116":145,"117":145,"118":145,"119":1,"120":206,"121":1,"122":240,"123":240,"124":240,"125":240,"126":240,"127":88,"128":88,"129":95,"130":95,"131":8,"132":8,"133":15,"134":15,"135":24,"136":24,"137":10,"138":10,"139":240,"140":240,"141":52,"142":42,"143":42,"144":11,"145":42,"146":10,"147":1,"148":9,"149":52,"150":14,"151":4,"152":10,"153":2,"154":8,"155":8,"156":14,"157":14,"158":2,"159":12,"160":4,"161":8,"162":8,"163":14,"164":37,"165":21,"166":16,"167":2,"168":37,"169":42,"170":21,"171":21,"172":3,"173":42,"174":58,"175":22,"176":36,"177":3,"178":58,"179":23,"180":14,"181":23,"182":240,"183":50,"184":50,"185":240,"186":13,"187":13,"188":13,"189":240,"190":103,"191":103,"192":59,"193":44,"194":137,"195":72,"196":240,"197":45,"198":45,"199":20,"200":20,"201":25,"202":25,"203":1,"204":1,"205":1,"206":6,"207":2,"208":2,"209":6},"b":{"1":[0,43],"2":[0,0],"3":[0,0,0],"4":[0,0],"5":[0,0],"6":[0,0,0],"7":[1,0],"8":[43,27],"9":[6,21],"10":[0,21],"11":[0,21],"12":[21,0,0],"13":[21,49],"14":[70,70],"15":[0,21],"16":[35,35],"17":[70,70,35],"18":[70,0],"19":[0,38],"20":[0,19],"21":[19,72],"22":[35,1],"23":[36,35,17],"24":[206,139,121],"25":[88,95,8,15,24,10],"26":[52,14,14,37,42,58,23],"27":[42,10],"28":[11,31],"29":[0,11],"30":[1,9],"31":[10,5],"32":[4,10],"33":[14,9],"34":[2,8],"35":[0,8],"36":[8,4],"37":[2,12],"38":[4,8],"39":[12,8],"40":[0,8],"41":[8,4],"42":[21,16],"43":[16,5],"44":[2,14],"45":[21,21],"46":[42,40,37],"47":[18,3],"48":[21,3,3,3],"49":[22,36],"50":[58,56,53],"51":[33,3],"52":[36,3,3,3],"53":[9,14],"54":[23,5,23,18,12,6,5,4],"55":[50,190],"56":[240,73],"57":[13,227],"58":[240,24],"59":[6,7],"60":[103,137],"61":[59,44],"62":[72,65],"63":[45,195],"64":[20,25],"65":[2,4]},"f":{"1":105,"2":105,"3":6,"4":6,"5":44,"6":43,"7":0,"8":0,"9":1,"10":105,"11":71,"12":70,"13":70,"14":38,"15":19,"16":91,"17":36,"18":105,"19":145,"20":206,"21":240,"22":6},"fnMap":{"1":{"name":"Stream","line":49,"loc":{"start":{"line":49,"column":0},"end":{"line":49,"column":21}}},"2":{"name":"_initializeManagement","line":75,"loc":{"start":{"line":75,"column":41},"end":{"line":75,"column":74}}},"3":{"name":"promise","line":81,"loc":{"start":{"line":81,"column":27},"end":{"line":81,"column":53}}},"4":{"name":"_onPromise","line":94,"loc":{"start":{"line":94,"column":30},"end":{"line":94,"column":57}}},"5":{"name":"headers","line":98,"loc":{"start":{"line":98,"column":27},"end":{"line":98,"column":53}}},"6":{"name":"_onHeaders","line":107,"loc":{"start":{"line":107,"column":30},"end":{"line":107,"column":57}}},"7":{"name":"priority","line":114,"loc":{"start":{"line":114,"column":28},"end":{"line":114,"column":62}}},"8":{"name":"_onPriority","line":138,"loc":{"start":{"line":138,"column":31},"end":{"line":138,"column":59}}},"9":{"name":"reset","line":144,"loc":{"start":{"line":144,"column":25},"end":{"line":144,"column":47}}},"10":{"name":"_initializeDataFlow","line":191,"loc":{"start":{"line":191,"column":39},"end":{"line":191,"column":70}}},"11":{"name":"_pushUpstream","line":206,"loc":{"start":{"line":206,"column":33},"end":{"line":206,"column":63}}},"12":{"name":"_writeUpstream","line":213,"loc":{"start":{"line":213,"column":34},"end":{"line":213,"column":65}}},"13":{"name":"_receive","line":242,"loc":{"start":{"line":242,"column":28},"end":{"line":242,"column":60}}},"14":{"name":"_read","line":266,"loc":{"start":{"line":266,"column":25},"end":{"line":266,"column":42}}},"15":{"name":"_write","line":275,"loc":{"start":{"line":275,"column":26},"end":{"line":275,"column":67}}},"16":{"name":"_send","line":295,"loc":{"start":{"line":295,"column":25},"end":{"line":295,"column":42}}},"17":{"name":"_finishing","line":308,"loc":{"start":{"line":308,"column":30},"end":{"line":308,"column":52}}},"18":{"name":"_initializeState","line":355,"loc":{"start":{"line":355,"column":36},"end":{"line":355,"column":64}}},"19":{"name":"transition","line":364,"loc":{"start":{"line":364,"column":29},"end":{"line":364,"column":56}}},"20":{"name":"activeState","line":373,"loc":{"start":{"line":373,"column":0},"end":{"line":373,"column":28}}},"21":{"name":"transition","line":380,"loc":{"start":{"line":380,"column":31},"end":{"line":380,"column":67}}},"22":{"name":"(anonymous_22)","line":609,"loc":{"start":{"line":609,"column":24},"end":{"line":609,"column":41}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":31}},"2":{"start":{"line":12,"column":0},"end":{"line":12,"column":38}},"3":{"start":{"line":14,"column":0},"end":{"line":14,"column":24}},"4":{"start":{"line":49,"column":0},"end":{"line":63,"column":1}},"5":{"start":{"line":50,"column":2},"end":{"line":50,"column":20}},"6":{"start":{"line":53,"column":2},"end":{"line":53,"column":58}},"7":{"start":{"line":56,"column":2},"end":{"line":56,"column":31}},"8":{"start":{"line":59,"column":2},"end":{"line":59,"column":29}},"9":{"start":{"line":62,"column":2},"end":{"line":62,"column":26}},"10":{"start":{"line":65,"column":0},"end":{"line":65,"column":87}},"11":{"start":{"line":71,"column":0},"end":{"line":71,"column":39}},"12":{"start":{"line":72,"column":0},"end":{"line":72,"column":39}},"13":{"start":{"line":75,"column":0},"end":{"line":79,"column":2}},"14":{"start":{"line":76,"column":2},"end":{"line":76,"column":26}},"15":{"start":{"line":77,"column":2},"end":{"line":77,"column":36}},"16":{"start":{"line":78,"column":2},"end":{"line":78,"column":33}},"17":{"start":{"line":81,"column":0},"end":{"line":92,"column":2}},"18":{"start":{"line":82,"column":2},"end":{"line":82,"column":37}},"19":{"start":{"line":83,"column":2},"end":{"line":83,"column":64}},"20":{"start":{"line":84,"column":2},"end":{"line":90,"column":5}},"21":{"start":{"line":91,"column":2},"end":{"line":91,"column":16}},"22":{"start":{"line":94,"column":0},"end":{"line":96,"column":2}},"23":{"start":{"line":95,"column":2},"end":{"line":95,"column":61}},"24":{"start":{"line":98,"column":0},"end":{"line":105,"column":2}},"25":{"start":{"line":99,"column":2},"end":{"line":104,"column":5}},"26":{"start":{"line":107,"column":0},"end":{"line":112,"column":2}},"27":{"start":{"line":108,"column":2},"end":{"line":110,"column":3}},"28":{"start":{"line":109,"column":4},"end":{"line":109,"column":40}},"29":{"start":{"line":111,"column":2},"end":{"line":111,"column":38}},"30":{"start":{"line":114,"column":0},"end":{"line":136,"column":2}},"31":{"start":{"line":115,"column":2},"end":{"line":135,"column":3}},"32":{"start":{"line":116,"column":4},"end":{"line":130,"column":5}},"33":{"start":{"line":117,"column":6},"end":{"line":117,"column":38}},"34":{"start":{"line":119,"column":6},"end":{"line":119,"column":57}},"35":{"start":{"line":120,"column":6},"end":{"line":129,"column":7}},"36":{"start":{"line":121,"column":8},"end":{"line":121,"column":38}},"37":{"start":{"line":123,"column":8},"end":{"line":128,"column":11}},"38":{"start":{"line":132,"column":4},"end":{"line":132,"column":65}},"39":{"start":{"line":133,"column":4},"end":{"line":133,"column":36}},"40":{"start":{"line":134,"column":4},"end":{"line":134,"column":30}},"41":{"start":{"line":138,"column":0},"end":{"line":140,"column":2}},"42":{"start":{"line":139,"column":2},"end":{"line":139,"column":38}},"43":{"start":{"line":144,"column":0},"end":{"line":154,"column":2}},"44":{"start":{"line":145,"column":2},"end":{"line":153,"column":3}},"45":{"start":{"line":146,"column":4},"end":{"line":146,"column":27}},"46":{"start":{"line":147,"column":4},"end":{"line":152,"column":7}},"47":{"start":{"line":189,"column":0},"end":{"line":189,"column":34}},"48":{"start":{"line":191,"column":0},"end":{"line":204,"column":2}},"49":{"start":{"line":192,"column":2},"end":{"line":192,"column":22}},"50":{"start":{"line":194,"column":2},"end":{"line":194,"column":22}},"51":{"start":{"line":196,"column":2},"end":{"line":196,"column":29}},"52":{"start":{"line":197,"column":2},"end":{"line":197,"column":33}},"53":{"start":{"line":198,"column":2},"end":{"line":198,"column":46}},"54":{"start":{"line":199,"column":2},"end":{"line":199,"column":52}},"55":{"start":{"line":200,"column":2},"end":{"line":200,"column":55}},"56":{"start":{"line":201,"column":2},"end":{"line":201,"column":59}},"57":{"start":{"line":203,"column":2},"end":{"line":203,"column":37}},"58":{"start":{"line":206,"column":0},"end":{"line":209,"column":2}},"59":{"start":{"line":207,"column":2},"end":{"line":207,"column":28}},"60":{"start":{"line":208,"column":2},"end":{"line":208,"column":32}},"61":{"start":{"line":213,"column":0},"end":{"line":239,"column":2}},"62":{"start":{"line":214,"column":2},"end":{"line":214,"column":55}},"63":{"start":{"line":216,"column":2},"end":{"line":216,"column":67}},"64":{"start":{"line":219,"column":2},"end":{"line":219,"column":33}},"65":{"start":{"line":222,"column":2},"end":{"line":236,"column":3}},"66":{"start":{"line":223,"column":4},"end":{"line":223,"column":27}},"67":{"start":{"line":224,"column":9},"end":{"line":236,"column":3}},"68":{"start":{"line":225,"column":4},"end":{"line":225,"column":27}},"69":{"start":{"line":226,"column":9},"end":{"line":236,"column":3}},"70":{"start":{"line":227,"column":4},"end":{"line":227,"column":28}},"71":{"start":{"line":231,"column":7},"end":{"line":236,"column":3}},"72":{"start":{"line":234,"column":4},"end":{"line":234,"column":68}},"73":{"start":{"line":235,"column":4},"end":{"line":235,"column":41}},"74":{"start":{"line":238,"column":2},"end":{"line":238,"column":20}},"75":{"start":{"line":242,"column":0},"end":{"line":262,"column":2}},"76":{"start":{"line":245,"column":2},"end":{"line":250,"column":3}},"77":{"start":{"line":246,"column":4},"end":{"line":246,"column":43}},"78":{"start":{"line":247,"column":4},"end":{"line":249,"column":5}},"79":{"start":{"line":248,"column":6},"end":{"line":248,"column":32}},"80":{"start":{"line":253,"column":2},"end":{"line":256,"column":3}},"81":{"start":{"line":254,"column":4},"end":{"line":254,"column":20}},"82":{"start":{"line":255,"column":4},"end":{"line":255,"column":23}},"83":{"start":{"line":259,"column":2},"end":{"line":261,"column":3}},"84":{"start":{"line":260,"column":4},"end":{"line":260,"column":12}},"85":{"start":{"line":266,"column":0},"end":{"line":272,"column":2}},"86":{"start":{"line":267,"column":2},"end":{"line":271,"column":3}},"87":{"start":{"line":268,"column":4},"end":{"line":268,"column":40}},"88":{"start":{"line":269,"column":4},"end":{"line":269,"column":29}},"89":{"start":{"line":270,"column":4},"end":{"line":270,"column":18}},"90":{"start":{"line":275,"column":0},"end":{"line":290,"column":2}},"91":{"start":{"line":277,"column":2},"end":{"line":282,"column":5}},"92":{"start":{"line":285,"column":2},"end":{"line":289,"column":3}},"93":{"start":{"line":286,"column":4},"end":{"line":286,"column":12}},"94":{"start":{"line":288,"column":4},"end":{"line":288,"column":27}},"95":{"start":{"line":295,"column":0},"end":{"line":301,"column":2}},"96":{"start":{"line":296,"column":2},"end":{"line":300,"column":3}},"97":{"start":{"line":297,"column":4},"end":{"line":297,"column":34}},"98":{"start":{"line":298,"column":4},"end":{"line":298,"column":26}},"99":{"start":{"line":299,"column":4},"end":{"line":299,"column":15}},"100":{"start":{"line":307,"column":0},"end":{"line":307,"column":32}},"101":{"start":{"line":308,"column":0},"end":{"line":323,"column":2}},"102":{"start":{"line":309,"column":2},"end":{"line":314,"column":4}},"103":{"start":{"line":315,"column":2},"end":{"line":315,"column":53}},"104":{"start":{"line":316,"column":2},"end":{"line":322,"column":3}},"105":{"start":{"line":317,"column":4},"end":{"line":317,"column":86}},"106":{"start":{"line":318,"column":4},"end":{"line":318,"column":38}},"107":{"start":{"line":319,"column":4},"end":{"line":319,"column":37}},"108":{"start":{"line":321,"column":4},"end":{"line":321,"column":33}},"109":{"start":{"line":355,"column":0},"end":{"line":360,"column":2}},"110":{"start":{"line":356,"column":2},"end":{"line":356,"column":22}},"111":{"start":{"line":357,"column":2},"end":{"line":357,"column":30}},"112":{"start":{"line":358,"column":2},"end":{"line":358,"column":31}},"113":{"start":{"line":359,"column":2},"end":{"line":359,"column":34}},"114":{"start":{"line":364,"column":0},"end":{"line":369,"column":2}},"115":{"start":{"line":365,"column":2},"end":{"line":365,"column":31}},"116":{"start":{"line":366,"column":2},"end":{"line":366,"column":71}},"117":{"start":{"line":367,"column":2},"end":{"line":367,"column":21}},"118":{"start":{"line":368,"column":2},"end":{"line":368,"column":28}},"119":{"start":{"line":373,"column":0},"end":{"line":375,"column":1}},"120":{"start":{"line":374,"column":2},"end":{"line":374,"column":101}},"121":{"start":{"line":380,"column":0},"end":{"line":601,"column":2}},"122":{"start":{"line":381,"column":2},"end":{"line":381,"column":27}},"123":{"start":{"line":382,"column":2},"end":{"line":382,"column":24}},"124":{"start":{"line":384,"column":2},"end":{"line":384,"column":54}},"125":{"start":{"line":385,"column":2},"end":{"line":385,"column":70}},"126":{"start":{"line":386,"column":2},"end":{"line":393,"column":3}},"127":{"start":{"line":387,"column":26},"end":{"line":387,"column":47}},"128":{"start":{"line":387,"column":48},"end":{"line":387,"column":54}},"129":{"start":{"line":388,"column":26},"end":{"line":388,"column":47}},"130":{"start":{"line":388,"column":48},"end":{"line":388,"column":54}},"131":{"start":{"line":389,"column":26},"end":{"line":389,"column":47}},"132":{"start":{"line":389,"column":48},"end":{"line":389,"column":54}},"133":{"start":{"line":390,"column":26},"end":{"line":390,"column":47}},"134":{"start":{"line":390,"column":48},"end":{"line":390,"column":54}},"135":{"start":{"line":391,"column":26},"end":{"line":391,"column":47}},"136":{"start":{"line":391,"column":48},"end":{"line":391,"column":54}},"137":{"start":{"line":392,"column":26},"end":{"line":392,"column":47}},"138":{"start":{"line":392,"column":48},"end":{"line":392,"column":54}},"139":{"start":{"line":395,"column":2},"end":{"line":395,"column":33}},"140":{"start":{"line":397,"column":2},"end":{"line":541,"column":3}},"141":{"start":{"line":404,"column":6},"end":{"line":414,"column":7}},"142":{"start":{"line":405,"column":8},"end":{"line":405,"column":31}},"143":{"start":{"line":406,"column":8},"end":{"line":408,"column":9}},"144":{"start":{"line":407,"column":10},"end":{"line":407,"column":79}},"145":{"start":{"line":409,"column":8},"end":{"line":409,"column":34}},"146":{"start":{"line":410,"column":13},"end":{"line":414,"column":7}},"147":{"start":{"line":411,"column":8},"end":{"line":411,"column":33}},"148":{"start":{"line":413,"column":8},"end":{"line":413,"column":33}},"149":{"start":{"line":415,"column":6},"end":{"line":415,"column":12}},"150":{"start":{"line":427,"column":6},"end":{"line":435,"column":7}},"151":{"start":{"line":428,"column":8},"end":{"line":428,"column":45}},"152":{"start":{"line":429,"column":13},"end":{"line":435,"column":7}},"153":{"start":{"line":430,"column":8},"end":{"line":430,"column":33}},"154":{"start":{"line":431,"column":13},"end":{"line":435,"column":7}},"155":{"start":{"line":434,"column":8},"end":{"line":434,"column":33}},"156":{"start":{"line":436,"column":6},"end":{"line":436,"column":12}},"157":{"start":{"line":446,"column":6},"end":{"line":454,"column":7}},"158":{"start":{"line":447,"column":8},"end":{"line":447,"column":33}},"159":{"start":{"line":448,"column":13},"end":{"line":454,"column":7}},"160":{"start":{"line":449,"column":8},"end":{"line":449,"column":44}},"161":{"start":{"line":450,"column":13},"end":{"line":454,"column":7}},"162":{"start":{"line":453,"column":8},"end":{"line":453,"column":33}},"163":{"start":{"line":455,"column":6},"end":{"line":455,"column":12}},"164":{"start":{"line":467,"column":6},"end":{"line":473,"column":7}},"165":{"start":{"line":468,"column":8},"end":{"line":468,"column":77}},"166":{"start":{"line":469,"column":13},"end":{"line":473,"column":7}},"167":{"start":{"line":470,"column":8},"end":{"line":470,"column":33}},"168":{"start":{"line":474,"column":6},"end":{"line":474,"column":12}},"169":{"start":{"line":483,"column":6},"end":{"line":489,"column":7}},"170":{"start":{"line":484,"column":8},"end":{"line":484,"column":33}},"171":{"start":{"line":485,"column":13},"end":{"line":489,"column":7}},"172":{"start":{"line":488,"column":8},"end":{"line":488,"column":33}},"173":{"start":{"line":490,"column":6},"end":{"line":490,"column":12}},"174":{"start":{"line":503,"column":6},"end":{"line":509,"column":7}},"175":{"start":{"line":504,"column":8},"end":{"line":504,"column":33}},"176":{"start":{"line":505,"column":13},"end":{"line":509,"column":7}},"177":{"start":{"line":508,"column":8},"end":{"line":508,"column":33}},"178":{"start":{"line":510,"column":6},"end":{"line":510,"column":12}},"179":{"start":{"line":533,"column":6},"end":{"line":539,"column":7}},"180":{"start":{"line":538,"column":8},"end":{"line":538,"column":32}},"181":{"start":{"line":540,"column":6},"end":{"line":540,"column":12}},"182":{"start":{"line":546,"column":2},"end":{"line":549,"column":3}},"183":{"start":{"line":547,"column":4},"end":{"line":547,"column":31}},"184":{"start":{"line":548,"column":4},"end":{"line":548,"column":37}},"185":{"start":{"line":557,"column":2},"end":{"line":564,"column":3}},"186":{"start":{"line":561,"column":4},"end":{"line":561,"column":80}},"187":{"start":{"line":562,"column":4},"end":{"line":562,"column":84}},"188":{"start":{"line":563,"column":4},"end":{"line":563,"column":47}},"189":{"start":{"line":567,"column":2},"end":{"line":576,"column":3}},"190":{"start":{"line":568,"column":4},"end":{"line":568,"column":72}},"191":{"start":{"line":569,"column":4},"end":{"line":573,"column":5}},"192":{"start":{"line":570,"column":6},"end":{"line":570,"column":34}},"193":{"start":{"line":572,"column":6},"end":{"line":572,"column":33}},"194":{"start":{"line":574,"column":9},"end":{"line":576,"column":3}},"195":{"start":{"line":575,"column":4},"end":{"line":575,"column":27}},"196":{"start":{"line":579,"column":2},"end":{"line":600,"column":3}},"197":{"start":{"line":580,"column":4},"end":{"line":586,"column":6}},"198":{"start":{"line":589,"column":4},"end":{"line":599,"column":5}},"199":{"start":{"line":590,"column":6},"end":{"line":590,"column":54}},"200":{"start":{"line":591,"column":6},"end":{"line":591,"column":97}},"201":{"start":{"line":597,"column":6},"end":{"line":597,"column":55}},"202":{"start":{"line":598,"column":6},"end":{"line":598,"column":32}},"203":{"start":{"line":606,"column":0},"end":{"line":606,"column":25}},"204":{"start":{"line":608,"column":0},"end":{"line":608,"column":15}},"205":{"start":{"line":609,"column":0},"end":{"line":615,"column":2}},"206":{"start":{"line":610,"column":2},"end":{"line":613,"column":3}},"207":{"start":{"line":611,"column":4},"end":{"line":611,"column":24}},"208":{"start":{"line":612,"column":4},"end":{"line":612,"column":16}},"209":{"start":{"line":614,"column":2},"end":{"line":614,"column":20}}},"branchMap":{"1":{"line":108,"type":"if","locations":[{"start":{"line":108,"column":2},"end":{"line":108,"column":2}},{"start":{"line":108,"column":2},"end":{"line":108,"column":2}}]},"2":{"line":115,"type":"if","locations":[{"start":{"line":115,"column":2},"end":{"line":115,"column":2}},{"start":{"line":115,"column":2},"end":{"line":115,"column":2}}]},"3":{"line":115,"type":"binary-expr","locations":[{"start":{"line":115,"column":7},"end":{"line":115,"column":11}},{"start":{"line":115,"column":15},"end":{"line":115,"column":38}},{"start":{"line":115,"column":43},"end":{"line":115,"column":48}}]},"4":{"line":116,"type":"if","locations":[{"start":{"line":116,"column":4},"end":{"line":116,"column":4}},{"start":{"line":116,"column":4},"end":{"line":116,"column":4}}]},"5":{"line":120,"type":"if","locations":[{"start":{"line":120,"column":6},"end":{"line":120,"column":6}},{"start":{"line":120,"column":6},"end":{"line":120,"column":6}}]},"6":{"line":120,"type":"binary-expr","locations":[{"start":{"line":120,"column":10},"end":{"line":120,"column":19}},{"start":{"line":120,"column":25},"end":{"line":120,"column":53}},{"start":{"line":120,"column":59},"end":{"line":120,"column":88}}]},"7":{"line":145,"type":"if","locations":[{"start":{"line":145,"column":2},"end":{"line":145,"column":2}},{"start":{"line":145,"column":2},"end":{"line":145,"column":2}}]},"8":{"line":222,"type":"if","locations":[{"start":{"line":222,"column":2},"end":{"line":222,"column":2}},{"start":{"line":222,"column":2},"end":{"line":222,"column":2}}]},"9":{"line":224,"type":"if","locations":[{"start":{"line":224,"column":9},"end":{"line":224,"column":9}},{"start":{"line":224,"column":9},"end":{"line":224,"column":9}}]},"10":{"line":226,"type":"if","locations":[{"start":{"line":226,"column":9},"end":{"line":226,"column":9}},{"start":{"line":226,"column":9},"end":{"line":226,"column":9}}]},"11":{"line":231,"type":"if","locations":[{"start":{"line":231,"column":7},"end":{"line":231,"column":7}},{"start":{"line":231,"column":7},"end":{"line":231,"column":7}}]},"12":{"line":231,"type":"binary-expr","locations":[{"start":{"line":231,"column":12},"end":{"line":231,"column":33}},{"start":{"line":232,"column":12},"end":{"line":232,"column":42}},{"start":{"line":233,"column":12},"end":{"line":233,"column":39}}]},"13":{"line":245,"type":"if","locations":[{"start":{"line":245,"column":2},"end":{"line":245,"column":2}},{"start":{"line":245,"column":2},"end":{"line":245,"column":2}}]},"14":{"line":245,"type":"binary-expr","locations":[{"start":{"line":245,"column":6},"end":{"line":245,"column":18}},{"start":{"line":245,"column":23},"end":{"line":245,"column":44}}]},"15":{"line":247,"type":"if","locations":[{"start":{"line":247,"column":4},"end":{"line":247,"column":4}},{"start":{"line":247,"column":4},"end":{"line":247,"column":4}}]},"16":{"line":253,"type":"if","locations":[{"start":{"line":253,"column":2},"end":{"line":253,"column":2}},{"start":{"line":253,"column":2},"end":{"line":253,"column":2}}]},"17":{"line":253,"type":"binary-expr","locations":[{"start":{"line":253,"column":6},"end":{"line":253,"column":18}},{"start":{"line":253,"column":23},"end":{"line":253,"column":45}},{"start":{"line":253,"column":50},"end":{"line":253,"column":77}}]},"18":{"line":259,"type":"if","locations":[{"start":{"line":259,"column":2},"end":{"line":259,"column":2}},{"start":{"line":259,"column":2},"end":{"line":259,"column":2}}]},"19":{"line":267,"type":"if","locations":[{"start":{"line":267,"column":2},"end":{"line":267,"column":2}},{"start":{"line":267,"column":2},"end":{"line":267,"column":2}}]},"20":{"line":285,"type":"if","locations":[{"start":{"line":285,"column":2},"end":{"line":285,"column":2}},{"start":{"line":285,"column":2},"end":{"line":285,"column":2}}]},"21":{"line":296,"type":"if","locations":[{"start":{"line":296,"column":2},"end":{"line":296,"column":2}},{"start":{"line":296,"column":2},"end":{"line":296,"column":2}}]},"22":{"line":316,"type":"if","locations":[{"start":{"line":316,"column":2},"end":{"line":316,"column":2}},{"start":{"line":316,"column":2},"end":{"line":316,"column":2}}]},"23":{"line":316,"type":"binary-expr","locations":[{"start":{"line":316,"column":6},"end":{"line":316,"column":15}},{"start":{"line":316,"column":21},"end":{"line":316,"column":46}},{"start":{"line":316,"column":52},"end":{"line":316,"column":80}}]},"24":{"line":374,"type":"binary-expr","locations":[{"start":{"line":374,"column":11},"end":{"line":374,"column":40}},{"start":{"line":374,"column":46},"end":{"line":374,"column":76}},{"start":{"line":374,"column":82},"end":{"line":374,"column":98}}]},"25":{"line":386,"type":"switch","locations":[{"start":{"line":387,"column":4},"end":{"line":387,"column":54}},{"start":{"line":388,"column":4},"end":{"line":388,"column":54}},{"start":{"line":389,"column":4},"end":{"line":389,"column":54}},{"start":{"line":390,"column":4},"end":{"line":390,"column":54}},{"start":{"line":391,"column":4},"end":{"line":391,"column":54}},{"start":{"line":392,"column":4},"end":{"line":392,"column":54}}]},"26":{"line":397,"type":"switch","locations":[{"start":{"line":403,"column":4},"end":{"line":415,"column":12}},{"start":{"line":426,"column":4},"end":{"line":436,"column":12}},{"start":{"line":445,"column":4},"end":{"line":455,"column":12}},{"start":{"line":466,"column":4},"end":{"line":474,"column":12}},{"start":{"line":482,"column":4},"end":{"line":490,"column":12}},{"start":{"line":502,"column":4},"end":{"line":510,"column":12}},{"start":{"line":532,"column":4},"end":{"line":540,"column":12}}]},"27":{"line":404,"type":"if","locations":[{"start":{"line":404,"column":6},"end":{"line":404,"column":6}},{"start":{"line":404,"column":6},"end":{"line":404,"column":6}}]},"28":{"line":406,"type":"if","locations":[{"start":{"line":406,"column":8},"end":{"line":406,"column":8}},{"start":{"line":406,"column":8},"end":{"line":406,"column":8}}]},"29":{"line":407,"type":"cond-expr","locations":[{"start":{"line":407,"column":35},"end":{"line":407,"column":54}},{"start":{"line":407,"column":57},"end":{"line":407,"column":77}}]},"30":{"line":410,"type":"if","locations":[{"start":{"line":410,"column":13},"end":{"line":410,"column":13}},{"start":{"line":410,"column":13},"end":{"line":410,"column":13}}]},"31":{"line":410,"type":"binary-expr","locations":[{"start":{"line":410,"column":17},"end":{"line":410,"column":24}},{"start":{"line":410,"column":28},"end":{"line":410,"column":38}}]},"32":{"line":427,"type":"if","locations":[{"start":{"line":427,"column":6},"end":{"line":427,"column":6}},{"start":{"line":427,"column":6},"end":{"line":427,"column":6}}]},"33":{"line":427,"type":"binary-expr","locations":[{"start":{"line":427,"column":10},"end":{"line":427,"column":17}},{"start":{"line":427,"column":21},"end":{"line":427,"column":28}}]},"34":{"line":429,"type":"if","locations":[{"start":{"line":429,"column":13},"end":{"line":429,"column":13}},{"start":{"line":429,"column":13},"end":{"line":429,"column":13}}]},"35":{"line":431,"type":"if","locations":[{"start":{"line":431,"column":13},"end":{"line":431,"column":13}},{"start":{"line":431,"column":13},"end":{"line":431,"column":13}}]},"36":{"line":431,"type":"binary-expr","locations":[{"start":{"line":431,"column":17},"end":{"line":431,"column":26}},{"start":{"line":431,"column":30},"end":{"line":431,"column":38}}]},"37":{"line":446,"type":"if","locations":[{"start":{"line":446,"column":6},"end":{"line":446,"column":6}},{"start":{"line":446,"column":6},"end":{"line":446,"column":6}}]},"38":{"line":448,"type":"if","locations":[{"start":{"line":448,"column":13},"end":{"line":448,"column":13}},{"start":{"line":448,"column":13},"end":{"line":448,"column":13}}]},"39":{"line":448,"type":"binary-expr","locations":[{"start":{"line":448,"column":17},"end":{"line":448,"column":26}},{"start":{"line":448,"column":30},"end":{"line":448,"column":37}}]},"40":{"line":450,"type":"if","locations":[{"start":{"line":450,"column":13},"end":{"line":450,"column":13}},{"start":{"line":450,"column":13},"end":{"line":450,"column":13}}]},"41":{"line":450,"type":"binary-expr","locations":[{"start":{"line":450,"column":17},"end":{"line":450,"column":24}},{"start":{"line":450,"column":28},"end":{"line":450,"column":36}}]},"42":{"line":467,"type":"if","locations":[{"start":{"line":467,"column":6},"end":{"line":467,"column":6}},{"start":{"line":467,"column":6},"end":{"line":467,"column":6}}]},"43":{"line":468,"type":"cond-expr","locations":[{"start":{"line":468,"column":33},"end":{"line":468,"column":52}},{"start":{"line":468,"column":55},"end":{"line":468,"column":75}}]},"44":{"line":469,"type":"if","locations":[{"start":{"line":469,"column":13},"end":{"line":469,"column":13}},{"start":{"line":469,"column":13},"end":{"line":469,"column":13}}]},"45":{"line":483,"type":"if","locations":[{"start":{"line":483,"column":6},"end":{"line":483,"column":6}},{"start":{"line":483,"column":6},"end":{"line":483,"column":6}}]},"46":{"line":483,"type":"binary-expr","locations":[{"start":{"line":483,"column":10},"end":{"line":483,"column":20}},{"start":{"line":483,"column":25},"end":{"line":483,"column":34}},{"start":{"line":483,"column":38},"end":{"line":483,"column":60}}]},"47":{"line":485,"type":"if","locations":[{"start":{"line":485,"column":13},"end":{"line":485,"column":13}},{"start":{"line":485,"column":13},"end":{"line":485,"column":13}}]},"48":{"line":485,"type":"binary-expr","locations":[{"start":{"line":485,"column":17},"end":{"line":485,"column":26}},{"start":{"line":485,"column":31},"end":{"line":485,"column":38}},{"start":{"line":485,"column":43},"end":{"line":485,"column":51}},{"start":{"line":485,"column":55},"end":{"line":485,"column":68}}]},"49":{"line":503,"type":"if","locations":[{"start":{"line":503,"column":6},"end":{"line":503,"column":6}},{"start":{"line":503,"column":6},"end":{"line":503,"column":6}}]},"50":{"line":503,"type":"binary-expr","locations":[{"start":{"line":503,"column":10},"end":{"line":503,"column":20}},{"start":{"line":503,"column":25},"end":{"line":503,"column":32}},{"start":{"line":503,"column":36},"end":{"line":503,"column":58}}]},"51":{"line":505,"type":"if","locations":[{"start":{"line":505,"column":13},"end":{"line":505,"column":13}},{"start":{"line":505,"column":13},"end":{"line":505,"column":13}}]},"52":{"line":505,"type":"binary-expr","locations":[{"start":{"line":505,"column":17},"end":{"line":505,"column":24}},{"start":{"line":505,"column":29},"end":{"line":505,"column":38}},{"start":{"line":505,"column":43},"end":{"line":505,"column":56}},{"start":{"line":505,"column":60},"end":{"line":505,"column":68}}]},"53":{"line":533,"type":"if","locations":[{"start":{"line":533,"column":6},"end":{"line":533,"column":6}},{"start":{"line":533,"column":6},"end":{"line":533,"column":6}}]},"54":{"line":533,"type":"binary-expr","locations":[{"start":{"line":533,"column":11},"end":{"line":533,"column":18}},{"start":{"line":533,"column":22},"end":{"line":533,"column":32}},{"start":{"line":534,"column":11},"end":{"line":534,"column":20}},{"start":{"line":534,"column":24},"end":{"line":534,"column":40}},{"start":{"line":535,"column":12},"end":{"line":535,"column":31}},{"start":{"line":535,"column":35},"end":{"line":535,"column":48}},{"start":{"line":535,"column":52},"end":{"line":535,"column":60}},{"start":{"line":535,"column":64},"end":{"line":535,"column":74}}]},"55":{"line":546,"type":"if","locations":[{"start":{"line":546,"column":2},"end":{"line":546,"column":2}},{"start":{"line":546,"column":2},"end":{"line":546,"column":2}}]},"56":{"line":546,"type":"binary-expr","locations":[{"start":{"line":546,"column":7},"end":{"line":546,"column":30}},{"start":{"line":546,"column":36},"end":{"line":546,"column":62}}]},"57":{"line":557,"type":"if","locations":[{"start":{"line":557,"column":2},"end":{"line":557,"column":2}},{"start":{"line":557,"column":2},"end":{"line":557,"column":2}}]},"58":{"line":557,"type":"binary-expr","locations":[{"start":{"line":557,"column":6},"end":{"line":557,"column":18}},{"start":{"line":557,"column":22},"end":{"line":557,"column":28}}]},"59":{"line":562,"type":"cond-expr","locations":[{"start":{"line":562,"column":46},"end":{"line":562,"column":62}},{"start":{"line":562,"column":65},"end":{"line":562,"column":82}}]},"60":{"line":567,"type":"if","locations":[{"start":{"line":567,"column":2},"end":{"line":567,"column":2}},{"start":{"line":567,"column":2},"end":{"line":567,"column":2}}]},"61":{"line":569,"type":"if","locations":[{"start":{"line":569,"column":4},"end":{"line":569,"column":4}},{"start":{"line":569,"column":4},"end":{"line":569,"column":4}}]},"62":{"line":574,"type":"if","locations":[{"start":{"line":574,"column":9},"end":{"line":574,"column":9}},{"start":{"line":574,"column":9},"end":{"line":574,"column":9}}]},"63":{"line":579,"type":"if","locations":[{"start":{"line":579,"column":2},"end":{"line":579,"column":2}},{"start":{"line":579,"column":2},"end":{"line":579,"column":2}}]},"64":{"line":589,"type":"if","locations":[{"start":{"line":589,"column":4},"end":{"line":589,"column":4}},{"start":{"line":589,"column":4},"end":{"line":589,"column":4}}]},"65":{"line":610,"type":"if","locations":[{"start":{"line":610,"column":2},"end":{"line":610,"column":2}},{"start":{"line":610,"column":2},"end":{"line":610,"column":2}}]}}},"/data/upstream/node-http2/lib/endpoint.js":{"path":"/data/upstream/node-http2/lib/endpoint.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":24,"12":24,"13":24,"14":24,"15":12,"16":12,"17":24,"18":24,"19":24,"20":1,"21":1,"22":1,"23":12,"24":12,"25":1,"26":12,"27":12,"28":11,"29":11,"30":241,"31":1,"32":1,"33":1,"34":240,"35":10,"36":10,"37":10,"38":10,"39":10,"40":1,"41":0,"42":0,"43":0,"44":0,"45":0,"46":1,"47":96,"48":0,"49":96,"50":1,"51":1,"52":24,"53":24,"54":12,"55":12,"56":12,"57":12,"58":12,"59":12,"60":24,"61":24,"62":24,"63":24,"64":24,"65":24,"66":24,"67":24,"68":24,"69":1,"70":1,"71":155,"72":155,"73":155,"74":130,"75":155,"76":67,"77":155,"78":1,"79":50,"80":1,"81":24,"82":1,"83":11,"84":1,"85":24,"86":24,"87":24,"88":24,"89":24,"90":24,"91":1,"92":1,"93":1,"94":1,"95":1,"96":2,"97":1,"98":1,"99":1,"100":6,"101":2,"102":2,"103":6},"b":{"1":[24,12],"2":[12,12],"3":[24,24],"4":[251,241],"5":[1,240],"6":[10,0],"7":[0,96],"8":[12,12],"9":[285,285],"10":[67,88],"11":[2,4]},"f":{"1":24,"2":12,"3":12,"4":11,"5":0,"6":0,"7":96,"8":24,"9":155,"10":50,"11":24,"12":11,"13":24,"14":1,"15":2,"16":6},"fnMap":{"1":{"name":"Endpoint","line":50,"loc":{"start":{"line":50,"column":0},"end":{"line":50,"column":48}}},"2":{"name":"_writePrelude","line":84,"loc":{"start":{"line":84,"column":35},"end":{"line":84,"column":60}}},"3":{"name":"_readPrelude","line":90,"loc":{"start":{"line":90,"column":34},"end":{"line":90,"column":58}}},"4":{"name":"_temporalWrite","line":95,"loc":{"start":{"line":95,"column":16},"end":{"line":95,"column":63}}},"5":{"name":"createTransformStream","line":153,"loc":{"start":{"line":153,"column":0},"end":{"line":153,"column":39}}},"6":{"name":"(anonymous_6)","line":156,"loc":{"start":{"line":156,"column":25},"end":{"line":156,"column":57}}},"7":{"name":"pipeAndFilter","line":162,"loc":{"start":{"line":162,"column":0},"end":{"line":162,"column":49}}},"8":{"name":"_initializeDataFlow","line":172,"loc":{"start":{"line":172,"column":41},"end":{"line":172,"column":95}}},"9":{"name":"_read","line":197,"loc":{"start":{"line":197,"column":27},"end":{"line":197,"column":44}}},"10":{"name":"_write","line":209,"loc":{"start":{"line":209,"column":28},"end":{"line":209,"column":67}}},"11":{"name":"_initializeManagement","line":216,"loc":{"start":{"line":216,"column":43},"end":{"line":216,"column":76}}},"12":{"name":"createStream","line":220,"loc":{"start":{"line":220,"column":34},"end":{"line":220,"column":58}}},"13":{"name":"_initializeErrorHandling","line":227,"loc":{"start":{"line":227,"column":46},"end":{"line":227,"column":82}}},"14":{"name":"_error","line":237,"loc":{"start":{"line":237,"column":28},"end":{"line":237,"column":62}}},"15":{"name":"close","line":243,"loc":{"start":{"line":243,"column":27},"end":{"line":243,"column":49}}},"16":{"name":"(anonymous_16)","line":253,"loc":{"start":{"line":253,"column":24},"end":{"line":253,"column":43}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":31}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":50}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":52}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":54}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":56}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":54}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":44}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":47}},"9":{"start":{"line":11,"column":0},"end":{"line":11,"column":28}},"10":{"start":{"line":50,"column":0},"end":{"line":75,"column":1}},"11":{"start":{"line":51,"column":2},"end":{"line":51,"column":20}},"12":{"start":{"line":54,"column":2},"end":{"line":54,"column":60}},"13":{"start":{"line":58,"column":2},"end":{"line":58,"column":51}},"14":{"start":{"line":59,"column":2},"end":{"line":63,"column":3}},"15":{"start":{"line":60,"column":4},"end":{"line":60,"column":25}},"16":{"start":{"line":62,"column":4},"end":{"line":62,"column":24}},"17":{"start":{"line":68,"column":2},"end":{"line":68,"column":58}},"18":{"start":{"line":71,"column":2},"end":{"line":71,"column":31}},"19":{"start":{"line":74,"column":2},"end":{"line":74,"column":34}},"20":{"start":{"line":76,"column":0},"end":{"line":76,"column":91}},"21":{"start":{"line":81,"column":0},"end":{"line":81,"column":68}},"22":{"start":{"line":84,"column":0},"end":{"line":87,"column":2}},"23":{"start":{"line":85,"column":2},"end":{"line":85,"column":67}},"24":{"start":{"line":86,"column":2},"end":{"line":86,"column":28}},"25":{"start":{"line":90,"column":0},"end":{"line":118,"column":2}},"26":{"start":{"line":92,"column":2},"end":{"line":92,"column":17}},"27":{"start":{"line":95,"column":2},"end":{"line":117,"column":4}},"28":{"start":{"line":98,"column":4},"end":{"line":98,"column":24}},"29":{"start":{"line":99,"column":4},"end":{"line":107,"column":5}},"30":{"start":{"line":100,"column":6},"end":{"line":105,"column":7}},"31":{"start":{"line":101,"column":8},"end":{"line":102,"column":76}},"32":{"start":{"line":103,"column":8},"end":{"line":103,"column":51}},"33":{"start":{"line":104,"column":8},"end":{"line":104,"column":15}},"34":{"start":{"line":106,"column":6},"end":{"line":106,"column":18}},"35":{"start":{"line":111,"column":4},"end":{"line":116,"column":5}},"36":{"start":{"line":112,"column":6},"end":{"line":112,"column":85}},"37":{"start":{"line":113,"column":6},"end":{"line":113,"column":25}},"38":{"start":{"line":114,"column":6},"end":{"line":114,"column":43}},"39":{"start":{"line":115,"column":6},"end":{"line":115,"column":41}},"40":{"start":{"line":153,"column":0},"end":{"line":160,"column":1}},"41":{"start":{"line":154,"column":2},"end":{"line":154,"column":54}},"42":{"start":{"line":155,"column":2},"end":{"line":155,"column":44}},"43":{"start":{"line":156,"column":2},"end":{"line":158,"column":4}},"44":{"start":{"line":157,"column":4},"end":{"line":157,"column":30}},"45":{"start":{"line":159,"column":2},"end":{"line":159,"column":19}},"46":{"start":{"line":162,"column":0},"end":{"line":168,"column":1}},"47":{"start":{"line":163,"column":2},"end":{"line":167,"column":3}},"48":{"start":{"line":164,"column":4},"end":{"line":164,"column":62}},"49":{"start":{"line":166,"column":4},"end":{"line":166,"column":26}},"50":{"start":{"line":170,"column":0},"end":{"line":170,"column":34}},"51":{"start":{"line":172,"column":0},"end":{"line":194,"column":2}},"52":{"start":{"line":173,"column":2},"end":{"line":173,"column":54}},"53":{"start":{"line":174,"column":2},"end":{"line":182,"column":3}},"54":{"start":{"line":175,"column":4},"end":{"line":175,"column":22}},"55":{"start":{"line":176,"column":4},"end":{"line":176,"column":31}},"56":{"start":{"line":177,"column":4},"end":{"line":177,"column":34}},"57":{"start":{"line":179,"column":4},"end":{"line":179,"column":22}},"58":{"start":{"line":180,"column":4},"end":{"line":180,"column":32}},"59":{"start":{"line":181,"column":4},"end":{"line":181,"column":33}},"60":{"start":{"line":184,"column":2},"end":{"line":184,"column":72}},"61":{"start":{"line":185,"column":2},"end":{"line":185,"column":74}},"62":{"start":{"line":186,"column":2},"end":{"line":186,"column":65}},"63":{"start":{"line":187,"column":2},"end":{"line":187,"column":69}},"64":{"start":{"line":188,"column":2},"end":{"line":188,"column":74}},"65":{"start":{"line":190,"column":2},"end":{"line":190,"column":79}},"66":{"start":{"line":191,"column":2},"end":{"line":191,"column":81}},"67":{"start":{"line":192,"column":2},"end":{"line":192,"column":86}},"68":{"start":{"line":193,"column":2},"end":{"line":193,"column":82}},"69":{"start":{"line":196,"column":0},"end":{"line":196,"column":16}},"70":{"start":{"line":197,"column":0},"end":{"line":207,"column":2}},"71":{"start":{"line":198,"column":2},"end":{"line":198,"column":34}},"72":{"start":{"line":199,"column":2},"end":{"line":199,"column":33}},"73":{"start":{"line":200,"column":2},"end":{"line":202,"column":3}},"74":{"start":{"line":201,"column":4},"end":{"line":201,"column":34}},"75":{"start":{"line":203,"column":2},"end":{"line":205,"column":3}},"76":{"start":{"line":204,"column":4},"end":{"line":204,"column":61}},"77":{"start":{"line":206,"column":2},"end":{"line":206,"column":35}},"78":{"start":{"line":209,"column":0},"end":{"line":211,"column":2}},"79":{"start":{"line":210,"column":2},"end":{"line":210,"column":50}},"80":{"start":{"line":216,"column":0},"end":{"line":218,"column":2}},"81":{"start":{"line":217,"column":2},"end":{"line":217,"column":64}},"82":{"start":{"line":220,"column":0},"end":{"line":222,"column":2}},"83":{"start":{"line":221,"column":2},"end":{"line":221,"column":41}},"84":{"start":{"line":227,"column":0},"end":{"line":235,"column":2}},"85":{"start":{"line":228,"column":2},"end":{"line":228,"column":69}},"86":{"start":{"line":229,"column":2},"end":{"line":229,"column":73}},"87":{"start":{"line":230,"column":2},"end":{"line":230,"column":69}},"88":{"start":{"line":231,"column":2},"end":{"line":231,"column":73}},"89":{"start":{"line":232,"column":2},"end":{"line":232,"column":69}},"90":{"start":{"line":234,"column":2},"end":{"line":234,"column":70}},"91":{"start":{"line":237,"column":0},"end":{"line":241,"column":2}},"92":{"start":{"line":238,"column":2},"end":{"line":238,"column":92}},"93":{"start":{"line":239,"column":2},"end":{"line":239,"column":20}},"94":{"start":{"line":240,"column":2},"end":{"line":240,"column":53}},"95":{"start":{"line":243,"column":0},"end":{"line":245,"column":2}},"96":{"start":{"line":244,"column":2},"end":{"line":244,"column":32}},"97":{"start":{"line":250,"column":0},"end":{"line":250,"column":25}},"98":{"start":{"line":252,"column":0},"end":{"line":252,"column":15}},"99":{"start":{"line":253,"column":0},"end":{"line":259,"column":2}},"100":{"start":{"line":254,"column":2},"end":{"line":257,"column":3}},"101":{"start":{"line":255,"column":4},"end":{"line":255,"column":25}},"102":{"start":{"line":256,"column":4},"end":{"line":256,"column":16}},"103":{"start":{"line":258,"column":2},"end":{"line":258,"column":21}}},"branchMap":{"1":{"line":58,"type":"binary-expr","locations":[{"start":{"line":58,"column":10},"end":{"line":58,"column":27}},{"start":{"line":58,"column":32},"end":{"line":58,"column":49}}]},"2":{"line":59,"type":"if","locations":[{"start":{"line":59,"column":2},"end":{"line":59,"column":2}},{"start":{"line":59,"column":2},"end":{"line":59,"column":2}}]},"3":{"line":68,"type":"binary-expr","locations":[{"start":{"line":68,"column":43},"end":{"line":68,"column":50}},{"start":{"line":68,"column":54},"end":{"line":68,"column":56}}]},"4":{"line":99,"type":"binary-expr","locations":[{"start":{"line":99,"column":10},"end":{"line":99,"column":40}},{"start":{"line":99,"column":44},"end":{"line":99,"column":76}}]},"5":{"line":100,"type":"if","locations":[{"start":{"line":100,"column":6},"end":{"line":100,"column":6}},{"start":{"line":100,"column":6},"end":{"line":100,"column":6}}]},"6":{"line":111,"type":"if","locations":[{"start":{"line":111,"column":4},"end":{"line":111,"column":4}},{"start":{"line":111,"column":4},"end":{"line":111,"column":4}}]},"7":{"line":163,"type":"if","locations":[{"start":{"line":163,"column":2},"end":{"line":163,"column":2}},{"start":{"line":163,"column":2},"end":{"line":163,"column":2}}]},"8":{"line":174,"type":"if","locations":[{"start":{"line":174,"column":2},"end":{"line":174,"column":2}},{"start":{"line":174,"column":2},"end":{"line":174,"column":2}}]},"9":{"line":200,"type":"binary-expr","locations":[{"start":{"line":200,"column":9},"end":{"line":200,"column":19}},{"start":{"line":200,"column":24},"end":{"line":200,"column":55}}]},"10":{"line":203,"type":"if","locations":[{"start":{"line":203,"column":2},"end":{"line":203,"column":2}},{"start":{"line":203,"column":2},"end":{"line":203,"column":2}}]},"11":{"line":254,"type":"if","locations":[{"start":{"line":254,"column":2},"end":{"line":254,"column":2}},{"start":{"line":254,"column":2},"end":{"line":254,"column":2}}]}}},"/data/upstream/node-http2/lib/framer.js":{"path":"/data/upstream/node-http2/lib/framer.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":25,"8":25,"9":25,"10":1,"11":1,"12":76,"13":76,"14":76,"15":76,"16":76,"17":76,"18":76,"19":156,"20":0,"21":156,"22":76,"23":1,"24":25,"25":25,"26":25,"27":25,"28":1,"29":1,"30":165,"31":165,"32":165,"33":165,"34":95,"35":1,"36":66,"37":66,"38":0,"39":66,"40":147,"41":147,"42":147,"43":147,"44":147,"45":70,"46":70,"47":70,"48":0,"49":0,"50":147,"51":70,"52":70,"53":70,"54":0,"55":0,"56":70,"57":70,"58":0,"59":70,"60":66,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":87,"69":87,"70":87,"71":91,"72":87,"73":87,"74":87,"75":87,"76":87,"77":87,"78":93,"79":93,"80":93,"81":54,"82":87,"83":87,"84":87,"85":87,"86":1,"87":81,"88":81,"89":81,"90":81,"91":81,"92":81,"93":152,"94":81,"95":81,"96":1,"97":1,"98":1,"99":1,"100":14,"101":1,"102":14,"103":1,"104":1,"105":1,"106":1,"107":29,"108":2,"109":2,"110":2,"111":2,"112":29,"113":1,"114":28,"115":2,"116":2,"117":26,"118":1,"119":1,"120":1,"121":1,"122":2,"123":2,"124":2,"125":1,"126":2,"127":1,"128":1,"129":1,"130":1,"131":2,"132":2,"133":2,"134":2,"135":2,"136":1,"137":2,"138":1,"139":1,"140":1,"141":1,"142":26,"143":26,"144":78,"145":34,"146":34,"147":34,"148":26,"149":26,"150":26,"151":34,"152":34,"153":26,"154":1,"155":22,"156":22,"157":0,"158":22,"159":28,"160":28,"161":28,"162":28,"163":28,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"172":4,"173":4,"174":4,"175":4,"176":4,"177":4,"178":1,"179":4,"180":4,"181":1,"182":1,"183":1,"184":1,"185":2,"186":1,"187":2,"188":0,"189":2,"190":1,"191":1,"192":1,"193":1,"194":4,"195":4,"196":4,"197":4,"198":4,"199":4,"200":4,"201":4,"202":1,"203":3,"204":3,"205":1,"206":1,"207":1,"208":1,"209":2,"210":2,"211":2,"212":2,"213":2,"214":1,"215":2,"216":1,"217":1,"218":1,"219":1,"220":2,"221":1,"222":2,"223":1,"224":1,"225":1,"226":1,"227":6,"228":0,"229":6,"230":4,"231":2,"232":2,"233":2,"234":2,"235":8,"236":2,"237":1,"238":0,"239":1,"240":1,"241":1,"242":2,"243":0,"244":2,"245":0,"246":2,"247":1,"248":0},"b":{"1":[25,1],"2":[0,156],"3":[25,1],"4":[95,70],"5":[0,66],"6":[70,77],"7":[147,134],"8":[70,0],"9":[70,77],"10":[147,70],"11":[70,0],"12":[0,70],"13":[54,39],"14":[87,87],"15":[87,26],"16":[2,27],"17":[2,2],"18":[2,26],"19":[2,2],"20":[34,44],"21":[22,12],"22":[0,22],"23":[28,0],"24":[20,8],"25":[4,4],"26":[0,2],"27":[4,4],"28":[4,4],"29":[2,2],"30":[0,6],"31":[4,2],"32":[1,1],"33":[0,1],"34":[1,0],"35":[0,2],"36":[2,2]},"f":{"1":25,"2":76,"3":25,"4":165,"5":66,"6":87,"7":81,"8":14,"9":14,"10":29,"11":28,"12":2,"13":2,"14":2,"15":2,"16":26,"17":78,"18":22,"19":4,"20":4,"21":2,"22":2,"23":4,"24":3,"25":2,"26":2,"27":2,"28":2,"29":6,"30":8,"31":0,"32":0},"fnMap":{"1":{"name":"Serializer","line":25,"loc":{"start":{"line":25,"column":0},"end":{"line":25,"column":36}}},"2":{"name":"_transform","line":35,"loc":{"start":{"line":35,"column":34},"end":{"line":35,"column":77}}},"3":{"name":"Deserializer","line":67,"loc":{"start":{"line":67,"column":0},"end":{"line":67,"column":38}}},"4":{"name":"(anonymous_4)","line":80,"loc":{"start":{"line":80,"column":31},"end":{"line":80,"column":46}}},"5":{"name":"_transform","line":91,"loc":{"start":{"line":91,"column":36},"end":{"line":91,"column":79}}},"6":{"name":"writeCommonHeader","line":202,"loc":{"start":{"line":202,"column":26},"end":{"line":202,"column":69}}},"7":{"name":"readCommonHeader","line":231,"loc":{"start":{"line":231,"column":28},"end":{"line":231,"column":69}}},"8":{"name":"writeData","line":278,"loc":{"start":{"line":278,"column":18},"end":{"line":278,"column":53}}},"9":{"name":"readData","line":282,"loc":{"start":{"line":282,"column":20},"end":{"line":282,"column":53}}},"10":{"name":"writeHeadersPriority","line":321,"loc":{"start":{"line":321,"column":21},"end":{"line":321,"column":67}}},"11":{"name":"readHeadersPriority","line":331,"loc":{"start":{"line":331,"column":23},"end":{"line":331,"column":67}}},"12":{"name":"writePriority","line":361,"loc":{"start":{"line":361,"column":22},"end":{"line":361,"column":61}}},"13":{"name":"readPriority","line":367,"loc":{"start":{"line":367,"column":24},"end":{"line":367,"column":61}}},"14":{"name":"writeRstStream","line":393,"loc":{"start":{"line":393,"column":24},"end":{"line":393,"column":64}}},"15":{"name":"readRstStream","line":401,"loc":{"start":{"line":401,"column":26},"end":{"line":401,"column":64}}},"16":{"name":"writeSettings","line":437,"loc":{"start":{"line":437,"column":22},"end":{"line":437,"column":61}}},"17":{"name":"(anonymous_17)","line":439,"loc":{"start":{"line":439,"column":26},"end":{"line":439,"column":48}}},"18":{"name":"readSettings","line":457,"loc":{"start":{"line":457,"column":24},"end":{"line":457,"column":61}}},"19":{"name":"writePushPromise","line":522,"loc":{"start":{"line":522,"column":26},"end":{"line":522,"column":68}}},"20":{"name":"readPushPromise","line":533,"loc":{"start":{"line":533,"column":28},"end":{"line":533,"column":68}}},"21":{"name":"writePing","line":557,"loc":{"start":{"line":557,"column":18},"end":{"line":557,"column":53}}},"22":{"name":"readPing","line":561,"loc":{"start":{"line":561,"column":20},"end":{"line":561,"column":53}}},"23":{"name":"writeGoaway","line":596,"loc":{"start":{"line":596,"column":20},"end":{"line":596,"column":57}}},"24":{"name":"readGoaway","line":610,"loc":{"start":{"line":610,"column":22},"end":{"line":610,"column":57}}},"25":{"name":"writeWindowUpdate","line":633,"loc":{"start":{"line":633,"column":27},"end":{"line":633,"column":70}}},"26":{"name":"readWindowUpdate","line":643,"loc":{"start":{"line":643,"column":29},"end":{"line":643,"column":70}}},"27":{"name":"writeContinuation","line":669,"loc":{"start":{"line":669,"column":26},"end":{"line":669,"column":69}}},"28":{"name":"readContinuation","line":673,"loc":{"start":{"line":673,"column":28},"end":{"line":673,"column":69}}},"29":{"name":"(anonymous_29)","line":703,"loc":{"start":{"line":703,"column":28},"end":{"line":703,"column":44}}},"30":{"name":"(anonymous_30)","line":716,"loc":{"start":{"line":716,"column":71},"end":{"line":716,"column":86}}},"31":{"name":"(anonymous_31)","line":736,"loc":{"start":{"line":736,"column":57},"end":{"line":736,"column":72}}},"32":{"name":"(anonymous_32)","line":744,"loc":{"start":{"line":744,"column":27},"end":{"line":744,"column":42}}}},"statementMap":{"1":{"start":{"line":5,"column":0},"end":{"line":5,"column":31}},"2":{"start":{"line":7,"column":0},"end":{"line":7,"column":44}},"3":{"start":{"line":9,"column":0},"end":{"line":9,"column":32}},"4":{"start":{"line":10,"column":0},"end":{"line":10,"column":36}},"5":{"start":{"line":12,"column":0},"end":{"line":12,"column":50}},"6":{"start":{"line":25,"column":0},"end":{"line":29,"column":1}},"7":{"start":{"line":26,"column":2},"end":{"line":26,"column":53}},"8":{"start":{"line":27,"column":2},"end":{"line":27,"column":50}},"9":{"start":{"line":28,"column":2},"end":{"line":28,"column":45}},"10":{"start":{"line":30,"column":0},"end":{"line":30,"column":98}},"11":{"start":{"line":35,"column":0},"end":{"line":54,"column":2}},"12":{"start":{"line":36,"column":2},"end":{"line":36,"column":54}},"13":{"start":{"line":38,"column":2},"end":{"line":38,"column":72}},"14":{"start":{"line":40,"column":2},"end":{"line":40,"column":19}},"15":{"start":{"line":41,"column":2},"end":{"line":41,"column":41}},"16":{"start":{"line":42,"column":2},"end":{"line":42,"column":42}},"17":{"start":{"line":44,"column":2},"end":{"line":44,"column":76}},"18":{"start":{"line":46,"column":2},"end":{"line":51,"column":3}},"19":{"start":{"line":47,"column":4},"end":{"line":49,"column":5}},"20":{"start":{"line":48,"column":6},"end":{"line":48,"column":61}},"21":{"start":{"line":50,"column":4},"end":{"line":50,"column":26}},"22":{"start":{"line":53,"column":2},"end":{"line":53,"column":9}},"23":{"start":{"line":67,"column":0},"end":{"line":72,"column":1}},"24":{"start":{"line":68,"column":2},"end":{"line":68,"column":55}},"25":{"start":{"line":69,"column":2},"end":{"line":69,"column":50}},"26":{"start":{"line":70,"column":2},"end":{"line":70,"column":45}},"27":{"start":{"line":71,"column":2},"end":{"line":71,"column":33}},"28":{"start":{"line":73,"column":0},"end":{"line":73,"column":102}},"29":{"start":{"line":80,"column":0},"end":{"line":87,"column":2}},"30":{"start":{"line":81,"column":2},"end":{"line":81,"column":19}},"31":{"start":{"line":82,"column":2},"end":{"line":82,"column":34}},"32":{"start":{"line":83,"column":2},"end":{"line":83,"column":51}},"33":{"start":{"line":84,"column":2},"end":{"line":86,"column":3}},"34":{"start":{"line":85,"column":4},"end":{"line":85,"column":21}},"35":{"start":{"line":91,"column":0},"end":{"line":144,"column":2}},"36":{"start":{"line":92,"column":2},"end":{"line":92,"column":17}},"37":{"start":{"line":94,"column":2},"end":{"line":96,"column":3}},"38":{"start":{"line":95,"column":4},"end":{"line":95,"column":54}},"39":{"start":{"line":98,"column":2},"end":{"line":141,"column":3}},"40":{"start":{"line":101,"column":4},"end":{"line":101,"column":85}},"41":{"start":{"line":102,"column":4},"end":{"line":102,"column":68}},"42":{"start":{"line":103,"column":4},"end":{"line":103,"column":27}},"43":{"start":{"line":104,"column":4},"end":{"line":104,"column":21}},"44":{"start":{"line":111,"column":4},"end":{"line":119,"column":5}},"45":{"start":{"line":112,"column":6},"end":{"line":112,"column":77}},"46":{"start":{"line":113,"column":6},"end":{"line":118,"column":7}},"47":{"start":{"line":114,"column":8},"end":{"line":114,"column":32}},"48":{"start":{"line":116,"column":8},"end":{"line":116,"column":46}},"49":{"start":{"line":117,"column":8},"end":{"line":117,"column":15}},"50":{"start":{"line":126,"column":4},"end":{"line":140,"column":5}},"51":{"start":{"line":127,"column":6},"end":{"line":138,"column":7}},"52":{"start":{"line":128,"column":8},"end":{"line":128,"column":78}},"53":{"start":{"line":129,"column":8},"end":{"line":135,"column":9}},"54":{"start":{"line":130,"column":10},"end":{"line":130,"column":68}},"55":{"start":{"line":131,"column":10},"end":{"line":131,"column":47}},"56":{"start":{"line":133,"column":10},"end":{"line":133,"column":68}},"57":{"start":{"line":134,"column":10},"end":{"line":134,"column":33}},"58":{"start":{"line":137,"column":8},"end":{"line":137,"column":78}},"59":{"start":{"line":139,"column":6},"end":{"line":139,"column":37}},"60":{"start":{"line":143,"column":2},"end":{"line":143,"column":9}},"61":{"start":{"line":191,"column":0},"end":{"line":191,"column":27}},"62":{"start":{"line":192,"column":0},"end":{"line":192,"column":29}},"63":{"start":{"line":194,"column":0},"end":{"line":194,"column":20}},"64":{"start":{"line":196,"column":0},"end":{"line":196,"column":20}},"65":{"start":{"line":198,"column":0},"end":{"line":198,"column":52}},"66":{"start":{"line":200,"column":0},"end":{"line":200,"column":32}},"67":{"start":{"line":202,"column":0},"end":{"line":229,"column":2}},"68":{"start":{"line":203,"column":2},"end":{"line":203,"column":52}},"69":{"start":{"line":205,"column":2},"end":{"line":205,"column":15}},"70":{"start":{"line":206,"column":2},"end":{"line":208,"column":3}},"71":{"start":{"line":207,"column":4},"end":{"line":207,"column":30}},"72":{"start":{"line":209,"column":2},"end":{"line":209,"column":41}},"73":{"start":{"line":210,"column":2},"end":{"line":210,"column":38}},"74":{"start":{"line":212,"column":2},"end":{"line":212,"column":46}},"75":{"start":{"line":213,"column":2},"end":{"line":213,"column":37}},"76":{"start":{"line":215,"column":2},"end":{"line":215,"column":19}},"77":{"start":{"line":216,"column":2},"end":{"line":222,"column":3}},"78":{"start":{"line":217,"column":4},"end":{"line":217,"column":56}},"79":{"start":{"line":218,"column":4},"end":{"line":218,"column":87}},"80":{"start":{"line":219,"column":4},"end":{"line":221,"column":5}},"81":{"start":{"line":220,"column":6},"end":{"line":220,"column":34}},"82":{"start":{"line":223,"column":2},"end":{"line":223,"column":39}},"83":{"start":{"line":225,"column":2},"end":{"line":225,"column":75}},"84":{"start":{"line":226,"column":2},"end":{"line":226,"column":51}},"85":{"start":{"line":228,"column":2},"end":{"line":228,"column":32}},"86":{"start":{"line":231,"column":0},"end":{"line":246,"column":2}},"87":{"start":{"line":232,"column":2},"end":{"line":232,"column":38}},"88":{"start":{"line":234,"column":2},"end":{"line":234,"column":47}},"89":{"start":{"line":236,"column":2},"end":{"line":236,"column":19}},"90":{"start":{"line":237,"column":2},"end":{"line":237,"column":37}},"91":{"start":{"line":238,"column":2},"end":{"line":238,"column":44}},"92":{"start":{"line":239,"column":2},"end":{"line":241,"column":3}},"93":{"start":{"line":240,"column":4},"end":{"line":240,"column":64}},"94":{"start":{"line":243,"column":2},"end":{"line":243,"column":53}},"95":{"start":{"line":245,"column":2},"end":{"line":245,"column":16}},"96":{"start":{"line":272,"column":0},"end":{"line":272,"column":25}},"97":{"start":{"line":274,"column":0},"end":{"line":274,"column":45}},"98":{"start":{"line":276,"column":0},"end":{"line":276,"column":39}},"99":{"start":{"line":278,"column":0},"end":{"line":280,"column":2}},"100":{"start":{"line":279,"column":2},"end":{"line":279,"column":27}},"101":{"start":{"line":282,"column":0},"end":{"line":284,"column":2}},"102":{"start":{"line":283,"column":2},"end":{"line":283,"column":22}},"103":{"start":{"line":305,"column":0},"end":{"line":305,"column":28}},"104":{"start":{"line":307,"column":0},"end":{"line":307,"column":75}},"105":{"start":{"line":309,"column":0},"end":{"line":309,"column":65}},"106":{"start":{"line":321,"column":0},"end":{"line":329,"column":2}},"107":{"start":{"line":322,"column":2},"end":{"line":327,"column":3}},"108":{"start":{"line":323,"column":4},"end":{"line":323,"column":31}},"109":{"start":{"line":324,"column":4},"end":{"line":324,"column":84}},"110":{"start":{"line":325,"column":4},"end":{"line":325,"column":44}},"111":{"start":{"line":326,"column":4},"end":{"line":326,"column":25}},"112":{"start":{"line":328,"column":2},"end":{"line":328,"column":27}},"113":{"start":{"line":331,"column":0},"end":{"line":338,"column":2}},"114":{"start":{"line":332,"column":2},"end":{"line":337,"column":3}},"115":{"start":{"line":333,"column":4},"end":{"line":333,"column":57}},"116":{"start":{"line":334,"column":4},"end":{"line":334,"column":33}},"117":{"start":{"line":336,"column":4},"end":{"line":336,"column":24}},"118":{"start":{"line":347,"column":0},"end":{"line":347,"column":29}},"119":{"start":{"line":349,"column":0},"end":{"line":349,"column":25}},"120":{"start":{"line":351,"column":0},"end":{"line":351,"column":47}},"121":{"start":{"line":361,"column":0},"end":{"line":365,"column":2}},"122":{"start":{"line":362,"column":2},"end":{"line":362,"column":29}},"123":{"start":{"line":363,"column":2},"end":{"line":363,"column":42}},"124":{"start":{"line":364,"column":2},"end":{"line":364,"column":23}},"125":{"start":{"line":367,"column":0},"end":{"line":369,"column":2}},"126":{"start":{"line":368,"column":2},"end":{"line":368,"column":42}},"127":{"start":{"line":378,"column":0},"end":{"line":378,"column":31}},"128":{"start":{"line":380,"column":0},"end":{"line":380,"column":27}},"129":{"start":{"line":382,"column":0},"end":{"line":382,"column":46}},"130":{"start":{"line":393,"column":0},"end":{"line":399,"column":2}},"131":{"start":{"line":394,"column":2},"end":{"line":394,"column":29}},"132":{"start":{"line":395,"column":2},"end":{"line":395,"column":45}},"133":{"start":{"line":396,"column":2},"end":{"line":396,"column":52}},"134":{"start":{"line":397,"column":2},"end":{"line":397,"column":32}},"135":{"start":{"line":398,"column":2},"end":{"line":398,"column":23}},"136":{"start":{"line":401,"column":0},"end":{"line":403,"column":2}},"137":{"start":{"line":402,"column":2},"end":{"line":402,"column":51}},"138":{"start":{"line":413,"column":0},"end":{"line":413,"column":29}},"139":{"start":{"line":415,"column":0},"end":{"line":415,"column":25}},"140":{"start":{"line":417,"column":0},"end":{"line":417,"column":47}},"141":{"start":{"line":437,"column":0},"end":{"line":455,"column":2}},"142":{"start":{"line":438,"column":2},"end":{"line":438,"column":64}},"143":{"start":{"line":439,"column":2},"end":{"line":445,"column":5}},"144":{"start":{"line":440,"column":4},"end":{"line":444,"column":5}},"145":{"start":{"line":441,"column":6},"end":{"line":441,"column":65}},"146":{"start":{"line":442,"column":6},"end":{"line":442,"column":47}},"147":{"start":{"line":443,"column":6},"end":{"line":443,"column":78}},"148":{"start":{"line":446,"column":2},"end":{"line":446,"column":84}},"149":{"start":{"line":448,"column":2},"end":{"line":448,"column":47}},"150":{"start":{"line":449,"column":2},"end":{"line":452,"column":3}},"151":{"start":{"line":450,"column":4},"end":{"line":450,"column":57}},"152":{"start":{"line":451,"column":4},"end":{"line":451,"column":53}},"153":{"start":{"line":454,"column":2},"end":{"line":454,"column":23}},"154":{"start":{"line":457,"column":0},"end":{"line":473,"column":2}},"155":{"start":{"line":458,"column":2},"end":{"line":458,"column":22}},"156":{"start":{"line":460,"column":2},"end":{"line":462,"column":3}},"157":{"start":{"line":461,"column":4},"end":{"line":461,"column":36}},"158":{"start":{"line":463,"column":2},"end":{"line":472,"column":3}},"159":{"start":{"line":464,"column":4},"end":{"line":464,"column":49}},"160":{"start":{"line":465,"column":4},"end":{"line":465,"column":38}},"161":{"start":{"line":466,"column":4},"end":{"line":471,"column":5}},"162":{"start":{"line":467,"column":6},"end":{"line":467,"column":47}},"163":{"start":{"line":468,"column":6},"end":{"line":468,"column":81}},"164":{"start":{"line":476,"column":0},"end":{"line":476,"column":25}},"165":{"start":{"line":480,"column":0},"end":{"line":480,"column":78}},"166":{"start":{"line":484,"column":0},"end":{"line":484,"column":75}},"167":{"start":{"line":490,"column":0},"end":{"line":490,"column":76}},"168":{"start":{"line":504,"column":0},"end":{"line":504,"column":33}},"169":{"start":{"line":506,"column":0},"end":{"line":506,"column":47}},"170":{"start":{"line":508,"column":0},"end":{"line":508,"column":77}},"171":{"start":{"line":522,"column":0},"end":{"line":531,"column":2}},"172":{"start":{"line":523,"column":2},"end":{"line":523,"column":29}},"173":{"start":{"line":525,"column":2},"end":{"line":525,"column":46}},"174":{"start":{"line":526,"column":2},"end":{"line":526,"column":85}},"175":{"start":{"line":527,"column":2},"end":{"line":527,"column":43}},"176":{"start":{"line":529,"column":2},"end":{"line":529,"column":23}},"177":{"start":{"line":530,"column":2},"end":{"line":530,"column":27}},"178":{"start":{"line":533,"column":0},"end":{"line":536,"column":2}},"179":{"start":{"line":534,"column":2},"end":{"line":534,"column":62}},"180":{"start":{"line":535,"column":2},"end":{"line":535,"column":31}},"181":{"start":{"line":549,"column":0},"end":{"line":549,"column":25}},"182":{"start":{"line":551,"column":0},"end":{"line":551,"column":27}},"183":{"start":{"line":553,"column":0},"end":{"line":553,"column":39}},"184":{"start":{"line":557,"column":0},"end":{"line":559,"column":2}},"185":{"start":{"line":558,"column":2},"end":{"line":558,"column":27}},"186":{"start":{"line":561,"column":0},"end":{"line":566,"column":2}},"187":{"start":{"line":562,"column":2},"end":{"line":564,"column":3}},"188":{"start":{"line":563,"column":4},"end":{"line":563,"column":37}},"189":{"start":{"line":565,"column":2},"end":{"line":565,"column":22}},"190":{"start":{"line":575,"column":0},"end":{"line":575,"column":27}},"191":{"start":{"line":577,"column":0},"end":{"line":577,"column":23}},"192":{"start":{"line":579,"column":0},"end":{"line":579,"column":57}},"193":{"start":{"line":596,"column":0},"end":{"line":608,"column":2}},"194":{"start":{"line":597,"column":2},"end":{"line":597,"column":29}},"195":{"start":{"line":599,"column":2},"end":{"line":599,"column":38}},"196":{"start":{"line":600,"column":2},"end":{"line":600,"column":73}},"197":{"start":{"line":601,"column":2},"end":{"line":601,"column":39}},"198":{"start":{"line":603,"column":2},"end":{"line":603,"column":45}},"199":{"start":{"line":604,"column":2},"end":{"line":604,"column":52}},"200":{"start":{"line":605,"column":2},"end":{"line":605,"column":32}},"201":{"start":{"line":607,"column":2},"end":{"line":607,"column":23}},"202":{"start":{"line":610,"column":0},"end":{"line":613,"column":2}},"203":{"start":{"line":611,"column":2},"end":{"line":611,"column":58}},"204":{"start":{"line":612,"column":2},"end":{"line":612,"column":51}},"205":{"start":{"line":622,"column":0},"end":{"line":622,"column":34}},"206":{"start":{"line":624,"column":0},"end":{"line":624,"column":30}},"207":{"start":{"line":626,"column":0},"end":{"line":626,"column":55}},"208":{"start":{"line":633,"column":0},"end":{"line":641,"column":2}},"209":{"start":{"line":634,"column":2},"end":{"line":634,"column":29}},"210":{"start":{"line":636,"column":2},"end":{"line":636,"column":38}},"211":{"start":{"line":637,"column":2},"end":{"line":637,"column":73}},"212":{"start":{"line":638,"column":2},"end":{"line":638,"column":39}},"213":{"start":{"line":640,"column":2},"end":{"line":640,"column":23}},"214":{"start":{"line":643,"column":0},"end":{"line":645,"column":2}},"215":{"start":{"line":644,"column":2},"end":{"line":644,"column":58}},"216":{"start":{"line":663,"column":0},"end":{"line":663,"column":33}},"217":{"start":{"line":665,"column":0},"end":{"line":665,"column":68}},"218":{"start":{"line":667,"column":0},"end":{"line":667,"column":58}},"219":{"start":{"line":669,"column":0},"end":{"line":671,"column":2}},"220":{"start":{"line":670,"column":2},"end":{"line":670,"column":27}},"221":{"start":{"line":673,"column":0},"end":{"line":675,"column":2}},"222":{"start":{"line":674,"column":2},"end":{"line":674,"column":22}},"223":{"start":{"line":680,"column":0},"end":{"line":691,"column":2}},"224":{"start":{"line":698,"column":0},"end":{"line":698,"column":25}},"225":{"start":{"line":702,"column":0},"end":{"line":702,"column":21}},"226":{"start":{"line":703,"column":0},"end":{"line":741,"column":2}},"227":{"start":{"line":704,"column":2},"end":{"line":706,"column":3}},"228":{"start":{"line":705,"column":4},"end":{"line":705,"column":16}},"229":{"start":{"line":708,"column":2},"end":{"line":710,"column":3}},"230":{"start":{"line":709,"column":4},"end":{"line":709,"column":20}},"231":{"start":{"line":712,"column":2},"end":{"line":712,"column":26}},"232":{"start":{"line":713,"column":2},"end":{"line":713,"column":20}},"233":{"start":{"line":715,"column":2},"end":{"line":715,"column":34}},"234":{"start":{"line":716,"column":2},"end":{"line":718,"column":5}},"235":{"start":{"line":717,"column":4},"end":{"line":717,"column":33}},"236":{"start":{"line":720,"column":2},"end":{"line":730,"column":3}},"237":{"start":{"line":721,"column":4},"end":{"line":725,"column":5}},"238":{"start":{"line":722,"column":6},"end":{"line":722,"column":70}},"239":{"start":{"line":724,"column":6},"end":{"line":724,"column":49}},"240":{"start":{"line":727,"column":4},"end":{"line":729,"column":5}},"241":{"start":{"line":728,"column":6},"end":{"line":728,"column":42}},"242":{"start":{"line":732,"column":2},"end":{"line":734,"column":3}},"243":{"start":{"line":733,"column":4},"end":{"line":733,"column":68}},"244":{"start":{"line":736,"column":2},"end":{"line":738,"column":5}},"245":{"start":{"line":737,"column":4},"end":{"line":737,"column":38}},"246":{"start":{"line":740,"column":2},"end":{"line":740,"column":18}},"247":{"start":{"line":744,"column":0},"end":{"line":746,"column":2}},"248":{"start":{"line":745,"column":2},"end":{"line":745,"column":30}}},"branchMap":{"1":{"line":27,"type":"binary-expr","locations":[{"start":{"line":27,"column":20},"end":{"line":27,"column":29}},{"start":{"line":27,"column":33},"end":{"line":27,"column":49}}]},"2":{"line":47,"type":"if","locations":[{"start":{"line":47,"column":4},"end":{"line":47,"column":4}},{"start":{"line":47,"column":4},"end":{"line":47,"column":4}}]},"3":{"line":69,"type":"binary-expr","locations":[{"start":{"line":69,"column":20},"end":{"line":69,"column":29}},{"start":{"line":69,"column":33},"end":{"line":69,"column":49}}]},"4":{"line":84,"type":"if","locations":[{"start":{"line":84,"column":2},"end":{"line":84,"column":2}},{"start":{"line":84,"column":2},"end":{"line":84,"column":2}}]},"5":{"line":94,"type":"if","locations":[{"start":{"line":94,"column":2},"end":{"line":94,"column":2}},{"start":{"line":94,"column":2},"end":{"line":94,"column":2}}]},"6":{"line":111,"type":"if","locations":[{"start":{"line":111,"column":4},"end":{"line":111,"column":4}},{"start":{"line":111,"column":4},"end":{"line":111,"column":4}}]},"7":{"line":111,"type":"binary-expr","locations":[{"start":{"line":111,"column":9},"end":{"line":111,"column":45}},{"start":{"line":111,"column":50},"end":{"line":111,"column":72}}]},"8":{"line":113,"type":"if","locations":[{"start":{"line":113,"column":6},"end":{"line":113,"column":6}},{"start":{"line":113,"column":6},"end":{"line":113,"column":6}}]},"9":{"line":126,"type":"if","locations":[{"start":{"line":126,"column":4},"end":{"line":126,"column":4}},{"start":{"line":126,"column":4},"end":{"line":126,"column":4}}]},"10":{"line":126,"type":"binary-expr","locations":[{"start":{"line":126,"column":9},"end":{"line":126,"column":45}},{"start":{"line":126,"column":50},"end":{"line":126,"column":73}}]},"11":{"line":127,"type":"if","locations":[{"start":{"line":127,"column":6},"end":{"line":127,"column":6}},{"start":{"line":127,"column":6},"end":{"line":127,"column":6}}]},"12":{"line":129,"type":"if","locations":[{"start":{"line":129,"column":8},"end":{"line":129,"column":8}},{"start":{"line":129,"column":8},"end":{"line":129,"column":8}}]},"13":{"line":219,"type":"if","locations":[{"start":{"line":219,"column":4},"end":{"line":219,"column":4}},{"start":{"line":219,"column":4},"end":{"line":219,"column":4}}]},"14":{"line":225,"type":"binary-expr","locations":[{"start":{"line":225,"column":10},"end":{"line":225,"column":27}},{"start":{"line":225,"column":33},"end":{"line":225,"column":58}}]},"15":{"line":226,"type":"binary-expr","locations":[{"start":{"line":226,"column":29},"end":{"line":226,"column":41}},{"start":{"line":226,"column":45},"end":{"line":226,"column":46}}]},"16":{"line":322,"type":"if","locations":[{"start":{"line":322,"column":2},"end":{"line":322,"column":2}},{"start":{"line":322,"column":2},"end":{"line":322,"column":2}}]},"17":{"line":324,"type":"binary-expr","locations":[{"start":{"line":324,"column":12},"end":{"line":324,"column":31}},{"start":{"line":324,"column":37},"end":{"line":324,"column":65}}]},"18":{"line":332,"type":"if","locations":[{"start":{"line":332,"column":2},"end":{"line":332,"column":2}},{"start":{"line":332,"column":2},"end":{"line":332,"column":2}}]},"19":{"line":396,"type":"binary-expr","locations":[{"start":{"line":396,"column":10},"end":{"line":396,"column":19}},{"start":{"line":396,"column":25},"end":{"line":396,"column":43}}]},"20":{"line":440,"type":"if","locations":[{"start":{"line":440,"column":4},"end":{"line":440,"column":4}},{"start":{"line":440,"column":4},"end":{"line":440,"column":4}}]},"21":{"line":443,"type":"cond-expr","locations":[{"start":{"line":443,"column":52},"end":{"line":443,"column":66}},{"start":{"line":443,"column":69},"end":{"line":443,"column":74}}]},"22":{"line":460,"type":"if","locations":[{"start":{"line":460,"column":2},"end":{"line":460,"column":2}},{"start":{"line":460,"column":2},"end":{"line":460,"column":2}}]},"23":{"line":466,"type":"if","locations":[{"start":{"line":466,"column":4},"end":{"line":466,"column":4}},{"start":{"line":466,"column":4},"end":{"line":466,"column":4}}]},"24":{"line":468,"type":"cond-expr","locations":[{"start":{"line":468,"column":52},"end":{"line":468,"column":72}},{"start":{"line":468,"column":75},"end":{"line":468,"column":80}}]},"25":{"line":526,"type":"binary-expr","locations":[{"start":{"line":526,"column":10},"end":{"line":526,"column":30}},{"start":{"line":526,"column":36},"end":{"line":526,"column":65}}]},"26":{"line":562,"type":"if","locations":[{"start":{"line":562,"column":2},"end":{"line":562,"column":2}},{"start":{"line":562,"column":2},"end":{"line":562,"column":2}}]},"27":{"line":600,"type":"binary-expr","locations":[{"start":{"line":600,"column":10},"end":{"line":600,"column":26}},{"start":{"line":600,"column":32},"end":{"line":600,"column":57}}]},"28":{"line":604,"type":"binary-expr","locations":[{"start":{"line":604,"column":10},"end":{"line":604,"column":19}},{"start":{"line":604,"column":25},"end":{"line":604,"column":43}}]},"29":{"line":637,"type":"binary-expr","locations":[{"start":{"line":637,"column":10},"end":{"line":637,"column":26}},{"start":{"line":637,"column":32},"end":{"line":637,"column":57}}]},"30":{"line":704,"type":"if","locations":[{"start":{"line":704,"column":2},"end":{"line":704,"column":2}},{"start":{"line":704,"column":2},"end":{"line":704,"column":2}}]},"31":{"line":708,"type":"if","locations":[{"start":{"line":708,"column":2},"end":{"line":708,"column":2}},{"start":{"line":708,"column":2},"end":{"line":708,"column":2}}]},"32":{"line":720,"type":"if","locations":[{"start":{"line":720,"column":2},"end":{"line":720,"column":2}},{"start":{"line":720,"column":2},"end":{"line":720,"column":2}}]},"33":{"line":721,"type":"if","locations":[{"start":{"line":721,"column":4},"end":{"line":721,"column":4}},{"start":{"line":721,"column":4},"end":{"line":721,"column":4}}]},"34":{"line":727,"type":"if","locations":[{"start":{"line":727,"column":4},"end":{"line":727,"column":4}},{"start":{"line":727,"column":4},"end":{"line":727,"column":4}}]},"35":{"line":732,"type":"if","locations":[{"start":{"line":732,"column":2},"end":{"line":732,"column":2}},{"start":{"line":732,"column":2},"end":{"line":732,"column":2}}]},"36":{"line":736,"type":"binary-expr","locations":[{"start":{"line":736,"column":31},"end":{"line":736,"column":42}},{"start":{"line":736,"column":46},"end":{"line":736,"column":48}}]}}},"/data/upstream/node-http2/lib/http.js":{"path":"/data/upstream/node-http2/lib/http.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":3,"24":1,"25":1,"26":1,"27":6,"28":1,"29":25,"30":25,"31":25,"32":25,"33":25,"34":25,"35":25,"36":25,"37":25,"38":25,"39":25,"40":25,"41":1,"42":1,"43":24,"44":168,"45":168,"46":0,"47":0,"48":0,"49":24,"50":73,"51":13,"52":24,"53":24,"54":2,"55":1,"56":24,"57":1,"58":1,"59":60,"60":0,"61":0,"62":60,"63":1,"64":27,"65":27,"66":27,"67":27,"68":27,"69":1,"70":1,"71":13,"72":12,"73":1,"74":1,"75":31,"76":23,"77":2,"78":0,"79":2,"80":23,"81":8,"82":1,"83":4,"84":0,"85":4,"86":4,"87":0,"88":4,"89":1,"90":1,"91":0,"92":1,"93":1,"94":3,"95":1,"96":2,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":13,"106":13,"107":13,"108":13,"109":13,"110":13,"111":10,"112":10,"113":10,"114":10,"115":10,"116":10,"117":10,"118":9,"119":9,"120":0,"121":10,"122":3,"123":1,"124":1,"125":1,"126":2,"127":2,"128":11,"129":1,"130":1,"131":10,"132":10,"133":10,"134":10,"135":10,"136":10,"137":10,"138":10,"139":10,"140":10,"141":1,"142":0,"143":0,"144":0,"145":0,"146":1,"147":9,"148":9,"149":1,"150":4,"151":4,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":0,"159":1,"160":1,"161":1,"162":9,"163":0,"164":9,"165":1,"166":0,"167":0,"168":1,"169":10,"170":1,"171":1,"172":10,"173":9,"174":9,"175":9,"176":1,"177":12,"178":1,"179":1,"180":12,"181":12,"182":12,"183":12,"184":12,"185":12,"186":12,"187":12,"188":1,"189":12,"190":12,"191":12,"192":12,"193":12,"194":12,"195":1,"196":1,"197":12,"198":1,"199":11,"200":12,"201":1,"202":12,"203":12,"204":11,"205":12,"206":12,"207":12,"208":12,"209":1,"210":23,"211":11,"212":1,"213":11,"214":11,"215":1,"216":12,"217":12,"218":1,"219":10,"220":1,"221":2,"222":1,"223":2,"224":0,"225":2,"226":2,"227":2,"228":2,"229":1,"230":12,"231":0,"232":12,"233":1,"234":1,"235":1,"236":1,"237":1,"238":1,"239":4,"240":1,"241":7,"242":1,"243":4,"244":4,"245":4,"246":4,"247":4,"248":4,"249":4,"250":4,"251":4,"252":4,"253":1,"254":1,"255":12,"256":8,"257":12,"258":12,"259":12,"260":12,"261":12,"262":12,"263":1,"264":1,"265":11,"266":11,"267":7,"268":11,"269":11,"270":1,"271":1,"272":10,"273":1,"274":1,"275":1,"276":1,"277":9,"278":9,"279":9,"280":9,"281":9,"282":9,"283":9,"284":0,"285":9,"286":9,"287":1,"288":9,"289":9,"290":9,"291":9,"292":9,"293":9,"294":9,"295":9,"296":1,"297":1,"298":0,"299":8,"300":8,"301":8,"302":8,"303":0,"304":9,"305":9,"306":9,"307":9,"308":0,"309":11,"310":1,"311":7,"312":7,"313":7,"314":1,"315":9,"316":9,"317":9,"318":9,"319":9,"320":9,"321":9,"322":9,"323":1,"324":1,"325":1,"326":1,"327":1,"328":15,"329":15,"330":15,"331":1,"332":1,"333":11,"334":11,"335":11,"336":1,"337":11,"338":11,"339":11,"340":0,"341":11,"342":11,"343":11,"344":11,"345":11,"346":11,"347":11,"348":11,"349":11,"350":11,"351":11,"352":1,"353":4,"354":4,"355":4,"356":1,"357":0,"358":0,"359":0,"360":1,"361":40,"362":0,"363":40,"364":1,"365":3,"366":1,"367":2,"368":1,"369":1,"370":3,"371":1,"372":2,"373":1,"374":1,"375":3,"376":1,"377":2,"378":1,"379":1,"380":3,"381":1,"382":2,"383":1,"384":1,"385":1,"386":2,"387":2,"388":2,"389":2,"390":0,"391":1,"392":13,"393":1,"394":1,"395":12,"396":12,"397":12,"398":12,"399":1,"400":2,"401":2,"402":2,"403":2,"404":2,"405":2,"406":2,"407":2,"408":2,"409":2,"410":1,"411":1,"412":0,"413":1,"414":0,"415":1},"b":{"1":[0,1],"2":[0,1],"3":[0,1],"4":[0,168],"5":[13,60],"6":[0,60],"7":[60,60],"8":[12,1],"9":[23,8],"10":[2,21],"11":[0,2],"12":[0,4],"13":[0,4],"14":[0,1],"15":[13,2],"16":[13,2],"17":[10,3],"18":[13,10,3],"19":[9,0],"20":[9,9],"21":[1,2],"22":[0,9],"23":[1,0],"24":[1,0],"25":[1,0],"26":[0,9],"27":[9,9],"28":[0,0],"29":[0,0],"30":[1,9],"31":[9,0],"32":[1,11],"33":[11,1],"34":[12,11],"35":[11,12],"36":[1,1],"37":[0,2],"38":[2,2],"39":[2,1,1],"40":[2,2,2],"41":[0,12],"42":[12,0],"43":[0,0],"44":[4,4],"45":[7,7],"46":[4,1],"47":[4,1],"48":[8,4],"49":[12,12],"50":[12,3],"51":[12,4,1],"52":[12,1],"53":[12,1],"54":[1,11],"55":[12,11],"56":[7,4],"57":[1,10],"58":[1,9],"59":[0,9],"60":[9,0],"61":[1,8],"62":[1,0],"63":[8,0],"64":[9,0],"65":[0,11],"66":[11,10],"67":[0,0],"68":[0,40],"69":[40,0],"70":[0,0],"71":[1,2],"72":[1,1],"73":[1,2],"74":[1,1],"75":[1,2],"76":[1,1],"77":[1,2],"78":[1,1],"79":[2,0]},"f":{"1":2,"2":3,"3":6,"4":25,"5":24,"6":2,"7":24,"8":60,"9":27,"10":13,"11":31,"12":4,"13":1,"14":3,"15":2,"16":13,"17":9,"18":10,"19":10,"20":0,"21":9,"22":4,"23":1,"24":1,"25":1,"26":9,"27":0,"28":10,"29":12,"30":12,"31":12,"32":12,"33":23,"34":11,"35":12,"36":10,"37":2,"38":12,"39":4,"40":7,"41":4,"42":12,"43":9,"44":9,"45":9,"46":7,"47":9,"48":1,"49":1,"50":15,"51":11,"52":4,"53":0,"54":40,"55":3,"56":3,"57":3,"58":3,"59":2,"60":13,"61":12,"62":2,"63":0,"64":0},"fnMap":{"1":{"name":"noop","line":173,"loc":{"start":{"line":173,"column":0},"end":{"line":173,"column":16}}},"2":{"name":"(anonymous_2)","line":182,"loc":{"start":{"line":182,"column":9},"end":{"line":182,"column":20}}},"3":{"name":"(anonymous_3)","line":188,"loc":{"start":{"line":188,"column":16},"end":{"line":188,"column":33}}},"4":{"name":"IncomingMessage","line":195,"loc":{"start":{"line":195,"column":0},"end":{"line":195,"column":33}}},"5":{"name":"_onHeaders","line":224,"loc":{"start":{"line":224,"column":39},"end":{"line":224,"column":68}}},"6":{"name":"(anonymous_6)","line":247,"loc":{"start":{"line":247,"column":28},"end":{"line":247,"column":46}}},"7":{"name":"_onEnd","line":252,"loc":{"start":{"line":252,"column":35},"end":{"line":252,"column":53}}},"8":{"name":"_checkSpecialHeader","line":258,"loc":{"start":{"line":258,"column":48},"end":{"line":258,"column":89}}},"9":{"name":"OutgoingMessage","line":271,"loc":{"start":{"line":271,"column":0},"end":{"line":271,"column":27}}},"10":{"name":"_write","line":283,"loc":{"start":{"line":283,"column":35},"end":{"line":283,"column":78}}},"11":{"name":"_finish","line":291,"loc":{"start":{"line":291,"column":36},"end":{"line":291,"column":55}}},"12":{"name":"setHeader","line":306,"loc":{"start":{"line":306,"column":38},"end":{"line":306,"column":70}}},"13":{"name":"removeHeader","line":318,"loc":{"start":{"line":318,"column":41},"end":{"line":318,"column":69}}},"14":{"name":"getHeader","line":326,"loc":{"start":{"line":326,"column":38},"end":{"line":326,"column":63}}},"15":{"name":"addTrailers","line":330,"loc":{"start":{"line":330,"column":40},"end":{"line":330,"column":71}}},"16":{"name":"Server","line":350,"loc":{"start":{"line":350,"column":0},"end":{"line":350,"column":25}}},"17":{"name":"(anonymous_17)","line":367,"loc":{"start":{"line":367,"column":40},"end":{"line":367,"column":57}}},"18":{"name":"_start","line":395,"loc":{"start":{"line":395,"column":26},"end":{"line":395,"column":50}}},"19":{"name":"_onStream","line":406,"loc":{"start":{"line":406,"column":24},"end":{"line":406,"column":51}}},"20":{"name":"_fallback","line":418,"loc":{"start":{"line":418,"column":29},"end":{"line":418,"column":56}}},"21":{"name":"listen","line":434,"loc":{"start":{"line":434,"column":26},"end":{"line":434,"column":58}}},"22":{"name":"close","line":440,"loc":{"start":{"line":440,"column":25},"end":{"line":440,"column":50}}},"23":{"name":"setTimeout","line":445,"loc":{"start":{"line":445,"column":30},"end":{"line":445,"column":69}}},"24":{"name":"getTimeout","line":452,"loc":{"start":{"line":452,"column":7},"end":{"line":452,"column":29}}},"25":{"name":"setTimeout","line":459,"loc":{"start":{"line":459,"column":7},"end":{"line":459,"column":36}}},"26":{"name":"on","line":470,"loc":{"start":{"line":470,"column":22},"end":{"line":470,"column":51}}},"27":{"name":"addContext","line":479,"loc":{"start":{"line":479,"column":30},"end":{"line":479,"column":73}}},"28":{"name":"createServer","line":485,"loc":{"start":{"line":485,"column":0},"end":{"line":485,"column":48}}},"29":{"name":"IncomingRequest","line":503,"loc":{"start":{"line":503,"column":0},"end":{"line":503,"column":33}}},"30":{"name":"_onHeaders","line":512,"loc":{"start":{"line":512,"column":39},"end":{"line":512,"column":68}}},"31":{"name":"OutgoingResponse","line":543,"loc":{"start":{"line":543,"column":0},"end":{"line":543,"column":34}}},"32":{"name":"writeHead","line":556,"loc":{"start":{"line":556,"column":39},"end":{"line":556,"column":93}}},"33":{"name":"_implicitHeaders","line":580,"loc":{"start":{"line":580,"column":46},"end":{"line":580,"column":74}}},"34":{"name":"write","line":586,"loc":{"start":{"line":586,"column":35},"end":{"line":586,"column":52}}},"35":{"name":"end","line":591,"loc":{"start":{"line":591,"column":33},"end":{"line":591,"column":48}}},"36":{"name":"_onRequestHeaders","line":596,"loc":{"start":{"line":596,"column":47},"end":{"line":596,"column":83}}},"37":{"name":"push","line":600,"loc":{"start":{"line":600,"column":34},"end":{"line":600,"column":57}}},"38":{"name":"on","line":626,"loc":{"start":{"line":626,"column":32},"end":{"line":626,"column":61}}},"39":{"name":"request","line":642,"loc":{"start":{"line":642,"column":18},"end":{"line":642,"column":54}}},"40":{"name":"get","line":645,"loc":{"start":{"line":645,"column":14},"end":{"line":645,"column":46}}},"41":{"name":"Agent","line":652,"loc":{"start":{"line":652,"column":0},"end":{"line":652,"column":24}}},"42":{"name":"request","line":674,"loc":{"start":{"line":674,"column":26},"end":{"line":674,"column":62}}},"43":{"name":"(anonymous_43)","line":728,"loc":{"start":{"line":728,"column":30},"end":{"line":728,"column":47}}},"44":{"name":"negotiated","line":737,"loc":{"start":{"line":737,"column":4},"end":{"line":737,"column":26}}},"45":{"name":"(anonymous_45)","line":764,"loc":{"start":{"line":764,"column":19},"end":{"line":764,"column":38}}},"46":{"name":"get","line":777,"loc":{"start":{"line":777,"column":22},"end":{"line":777,"column":54}}},"47":{"name":"unbundleSocket","line":783,"loc":{"start":{"line":783,"column":0},"end":{"line":783,"column":32}}},"48":{"name":"getMaxSockets","line":795,"loc":{"start":{"line":795,"column":7},"end":{"line":795,"column":32}}},"49":{"name":"setMaxSockets","line":798,"loc":{"start":{"line":798,"column":7},"end":{"line":798,"column":37}}},"50":{"name":"OutgoingRequest","line":808,"loc":{"start":{"line":808,"column":0},"end":{"line":808,"column":27}}},"51":{"name":"_start","line":817,"loc":{"start":{"line":817,"column":35},"end":{"line":817,"column":68}}},"52":{"name":"_fallback","line":850,"loc":{"start":{"line":850,"column":38},"end":{"line":850,"column":66}}},"53":{"name":"setPriority","line":856,"loc":{"start":{"line":856,"column":40},"end":{"line":856,"column":71}}},"54":{"name":"on","line":866,"loc":{"start":{"line":866,"column":31},"end":{"line":866,"column":60}}},"55":{"name":"setNoDelay","line":875,"loc":{"start":{"line":875,"column":39},"end":{"line":875,"column":68}}},"56":{"name":"setSocketKeepAlive","line":883,"loc":{"start":{"line":883,"column":47},"end":{"line":883,"column":97}}},"57":{"name":"setTimeout","line":891,"loc":{"start":{"line":891,"column":39},"end":{"line":891,"column":78}}},"58":{"name":"abort","line":900,"loc":{"start":{"line":900,"column":34},"end":{"line":900,"column":51}}},"59":{"name":"_onPromise","line":911,"loc":{"start":{"line":911,"column":39},"end":{"line":911,"column":76}}},"60":{"name":"IncomingResponse","line":926,"loc":{"start":{"line":926,"column":0},"end":{"line":926,"column":34}}},"61":{"name":"_onHeaders","line":935,"loc":{"start":{"line":935,"column":40},"end":{"line":935,"column":69}}},"62":{"name":"IncomingPromise","line":956,"loc":{"start":{"line":956,"column":0},"end":{"line":956,"column":57}}},"63":{"name":"cancel","line":975,"loc":{"start":{"line":975,"column":35},"end":{"line":975,"column":53}}},"64":{"name":"setPriority","line":979,"loc":{"start":{"line":979,"column":40},"end":{"line":979,"column":71}}}},"statementMap":{"1":{"start":{"line":131,"column":0},"end":{"line":131,"column":25}},"2":{"start":{"line":132,"column":0},"end":{"line":132,"column":25}},"3":{"start":{"line":133,"column":0},"end":{"line":133,"column":27}},"4":{"start":{"line":134,"column":0},"end":{"line":134,"column":50}},"5":{"start":{"line":135,"column":0},"end":{"line":135,"column":48}},"6":{"start":{"line":136,"column":0},"end":{"line":136,"column":42}},"7":{"start":{"line":137,"column":0},"end":{"line":137,"column":42}},"8":{"start":{"line":138,"column":0},"end":{"line":138,"column":46}},"9":{"start":{"line":139,"column":0},"end":{"line":139,"column":27}},"10":{"start":{"line":140,"column":0},"end":{"line":140,"column":29}},"11":{"start":{"line":142,"column":0},"end":{"line":142,"column":41}},"12":{"start":{"line":143,"column":0},"end":{"line":143,"column":42}},"13":{"start":{"line":144,"column":0},"end":{"line":144,"column":42}},"14":{"start":{"line":145,"column":0},"end":{"line":145,"column":28}},"15":{"start":{"line":147,"column":0},"end":{"line":155,"column":2}},"16":{"start":{"line":159,"column":0},"end":{"line":159,"column":45}},"17":{"start":{"line":162,"column":0},"end":{"line":162,"column":70}},"18":{"start":{"line":165,"column":0},"end":{"line":165,"column":67}},"19":{"start":{"line":166,"column":0},"end":{"line":166,"column":80}},"20":{"start":{"line":167,"column":0},"end":{"line":167,"column":84}},"21":{"start":{"line":173,"column":0},"end":{"line":173,"column":18}},"22":{"start":{"line":174,"column":0},"end":{"line":183,"column":2}},"23":{"start":{"line":182,"column":22},"end":{"line":182,"column":34}},"24":{"start":{"line":186,"column":0},"end":{"line":186,"column":25}},"25":{"start":{"line":187,"column":0},"end":{"line":187,"column":95}},"26":{"start":{"line":188,"column":0},"end":{"line":190,"column":3}},"27":{"start":{"line":189,"column":2},"end":{"line":189,"column":65}},"28":{"start":{"line":195,"column":0},"end":{"line":217,"column":1}},"29":{"start":{"line":197,"column":2},"end":{"line":197,"column":25}},"30":{"start":{"line":198,"column":2},"end":{"line":198,"column":20}},"31":{"start":{"line":199,"column":2},"end":{"line":199,"column":37}},"32":{"start":{"line":201,"column":2},"end":{"line":201,"column":55}},"33":{"start":{"line":205,"column":2},"end":{"line":205,"column":27}},"34":{"start":{"line":206,"column":2},"end":{"line":206,"column":28}},"35":{"start":{"line":207,"column":2},"end":{"line":207,"column":28}},"36":{"start":{"line":210,"column":2},"end":{"line":210,"column":20}},"37":{"start":{"line":211,"column":2},"end":{"line":211,"column":28}},"38":{"start":{"line":212,"column":2},"end":{"line":212,"column":36}},"39":{"start":{"line":215,"column":2},"end":{"line":215,"column":53}},"40":{"start":{"line":216,"column":2},"end":{"line":216,"column":45}},"41":{"start":{"line":218,"column":0},"end":{"line":218,"column":110}},"42":{"start":{"line":224,"column":0},"end":{"line":250,"column":2}},"43":{"start":{"line":229,"column":2},"end":{"line":236,"column":3}},"44":{"start":{"line":230,"column":4},"end":{"line":230,"column":35}},"45":{"start":{"line":231,"column":4},"end":{"line":235,"column":5}},"46":{"start":{"line":232,"column":6},"end":{"line":232,"column":84}},"47":{"start":{"line":233,"column":6},"end":{"line":233,"column":50}},"48":{"start":{"line":234,"column":6},"end":{"line":234,"column":13}},"49":{"start":{"line":239,"column":2},"end":{"line":243,"column":3}},"50":{"start":{"line":240,"column":4},"end":{"line":242,"column":5}},"51":{"start":{"line":241,"column":6},"end":{"line":241,"column":41}},"52":{"start":{"line":246,"column":2},"end":{"line":246,"column":18}},"53":{"start":{"line":247,"column":2},"end":{"line":249,"column":5}},"54":{"start":{"line":248,"column":4},"end":{"line":248,"column":36}},"55":{"start":{"line":252,"column":0},"end":{"line":254,"column":2}},"56":{"start":{"line":253,"column":2},"end":{"line":253,"column":40}},"57":{"start":{"line":256,"column":0},"end":{"line":256,"column":44}},"58":{"start":{"line":258,"column":0},"end":{"line":266,"column":0}},"59":{"start":{"line":259,"column":2},"end":{"line":262,"column":3}},"60":{"start":{"line":260,"column":4},"end":{"line":260,"column":91}},"61":{"start":{"line":261,"column":4},"end":{"line":261,"column":48}},"62":{"start":{"line":264,"column":2},"end":{"line":264,"column":15}},"63":{"start":{"line":271,"column":0},"end":{"line":280,"column":1}},"64":{"start":{"line":273,"column":2},"end":{"line":273,"column":22}},"65":{"start":{"line":275,"column":2},"end":{"line":275,"column":21}},"66":{"start":{"line":276,"column":2},"end":{"line":276,"column":29}},"67":{"start":{"line":277,"column":2},"end":{"line":277,"column":27}},"68":{"start":{"line":279,"column":2},"end":{"line":279,"column":34}},"69":{"start":{"line":281,"column":0},"end":{"line":281,"column":107}},"70":{"start":{"line":283,"column":0},"end":{"line":289,"column":2}},"71":{"start":{"line":284,"column":2},"end":{"line":288,"column":3}},"72":{"start":{"line":285,"column":4},"end":{"line":285,"column":49}},"73":{"start":{"line":287,"column":4},"end":{"line":287,"column":75}},"74":{"start":{"line":291,"column":0},"end":{"line":304,"column":2}},"75":{"start":{"line":292,"column":2},"end":{"line":303,"column":3}},"76":{"start":{"line":293,"column":4},"end":{"line":299,"column":5}},"77":{"start":{"line":294,"column":6},"end":{"line":298,"column":7}},"78":{"start":{"line":295,"column":8},"end":{"line":295,"column":49}},"79":{"start":{"line":297,"column":8},"end":{"line":297,"column":44}},"80":{"start":{"line":300,"column":4},"end":{"line":300,"column":22}},"81":{"start":{"line":302,"column":4},"end":{"line":302,"column":49}},"82":{"start":{"line":306,"column":0},"end":{"line":316,"column":2}},"83":{"start":{"line":307,"column":2},"end":{"line":315,"column":3}},"84":{"start":{"line":308,"column":4},"end":{"line":308,"column":63}},"85":{"start":{"line":310,"column":4},"end":{"line":310,"column":30}},"86":{"start":{"line":311,"column":4},"end":{"line":313,"column":5}},"87":{"start":{"line":312,"column":6},"end":{"line":312,"column":63}},"88":{"start":{"line":314,"column":4},"end":{"line":314,"column":32}},"89":{"start":{"line":318,"column":0},"end":{"line":324,"column":2}},"90":{"start":{"line":319,"column":2},"end":{"line":323,"column":3}},"91":{"start":{"line":320,"column":4},"end":{"line":320,"column":66}},"92":{"start":{"line":322,"column":4},"end":{"line":322,"column":45}},"93":{"start":{"line":326,"column":0},"end":{"line":328,"column":2}},"94":{"start":{"line":327,"column":2},"end":{"line":327,"column":43}},"95":{"start":{"line":330,"column":0},"end":{"line":332,"column":2}},"96":{"start":{"line":331,"column":2},"end":{"line":331,"column":28}},"97":{"start":{"line":334,"column":0},"end":{"line":334,"column":44}},"98":{"start":{"line":336,"column":0},"end":{"line":336,"column":94}},"99":{"start":{"line":341,"column":0},"end":{"line":341,"column":36}},"100":{"start":{"line":342,"column":0},"end":{"line":342,"column":24}},"101":{"start":{"line":343,"column":0},"end":{"line":343,"column":42}},"102":{"start":{"line":344,"column":0},"end":{"line":344,"column":44}},"103":{"start":{"line":345,"column":0},"end":{"line":345,"column":42}},"104":{"start":{"line":350,"column":0},"end":{"line":391,"column":1}},"105":{"start":{"line":351,"column":2},"end":{"line":351,"column":26}},"106":{"start":{"line":353,"column":2},"end":{"line":353,"column":74}},"107":{"start":{"line":354,"column":2},"end":{"line":354,"column":36}},"108":{"start":{"line":356,"column":2},"end":{"line":356,"column":37}},"109":{"start":{"line":357,"column":2},"end":{"line":357,"column":43}},"110":{"start":{"line":360,"column":2},"end":{"line":388,"column":3}},"111":{"start":{"line":361,"column":4},"end":{"line":361,"column":75}},"112":{"start":{"line":362,"column":4},"end":{"line":362,"column":23}},"113":{"start":{"line":363,"column":4},"end":{"line":363,"column":47}},"114":{"start":{"line":364,"column":4},"end":{"line":364,"column":47}},"115":{"start":{"line":365,"column":4},"end":{"line":365,"column":79}},"116":{"start":{"line":366,"column":4},"end":{"line":366,"column":56}},"117":{"start":{"line":367,"column":4},"end":{"line":373,"column":7}},"118":{"start":{"line":368,"column":6},"end":{"line":372,"column":7}},"119":{"start":{"line":369,"column":8},"end":{"line":369,"column":22}},"120":{"start":{"line":371,"column":8},"end":{"line":371,"column":25}},"121":{"start":{"line":374,"column":4},"end":{"line":374,"column":64}},"122":{"start":{"line":378,"column":7},"end":{"line":388,"column":3}},"123":{"start":{"line":379,"column":4},"end":{"line":379,"column":60}},"124":{"start":{"line":380,"column":4},"end":{"line":380,"column":25}},"125":{"start":{"line":381,"column":4},"end":{"line":381,"column":43}},"126":{"start":{"line":386,"column":4},"end":{"line":386,"column":81}},"127":{"start":{"line":387,"column":4},"end":{"line":387,"column":95}},"128":{"start":{"line":390,"column":2},"end":{"line":390,"column":58}},"129":{"start":{"line":392,"column":0},"end":{"line":392,"column":93}},"130":{"start":{"line":395,"column":0},"end":{"line":416,"column":2}},"131":{"start":{"line":396,"column":2},"end":{"line":396,"column":67}},"132":{"start":{"line":398,"column":2},"end":{"line":401,"column":54}},"133":{"start":{"line":403,"column":2},"end":{"line":403,"column":39}},"134":{"start":{"line":405,"column":2},"end":{"line":405,"column":18}},"135":{"start":{"line":406,"column":2},"end":{"line":411,"column":5}},"136":{"start":{"line":407,"column":4},"end":{"line":407,"column":48}},"137":{"start":{"line":408,"column":4},"end":{"line":408,"column":46}},"138":{"start":{"line":410,"column":4},"end":{"line":410,"column":78}},"139":{"start":{"line":413,"column":2},"end":{"line":413,"column":60}},"140":{"start":{"line":415,"column":2},"end":{"line":415,"column":44}},"141":{"start":{"line":418,"column":0},"end":{"line":429,"column":2}},"142":{"start":{"line":419,"column":2},"end":{"line":422,"column":52}},"143":{"start":{"line":424,"column":2},"end":{"line":426,"column":3}},"144":{"start":{"line":425,"column":4},"end":{"line":425,"column":64}},"145":{"start":{"line":428,"column":2},"end":{"line":428,"column":34}},"146":{"start":{"line":434,"column":0},"end":{"line":438,"column":2}},"147":{"start":{"line":435,"column":2},"end":{"line":436,"column":55}},"148":{"start":{"line":437,"column":2},"end":{"line":437,"column":53}},"149":{"start":{"line":440,"column":0},"end":{"line":443,"column":2}},"150":{"start":{"line":441,"column":2},"end":{"line":441,"column":35}},"151":{"start":{"line":442,"column":2},"end":{"line":442,"column":31}},"152":{"start":{"line":445,"column":0},"end":{"line":449,"column":2}},"153":{"start":{"line":446,"column":2},"end":{"line":448,"column":3}},"154":{"start":{"line":447,"column":4},"end":{"line":447,"column":47}},"155":{"start":{"line":451,"column":0},"end":{"line":464,"column":3}},"156":{"start":{"line":453,"column":4},"end":{"line":457,"column":5}},"157":{"start":{"line":454,"column":6},"end":{"line":454,"column":34}},"158":{"start":{"line":456,"column":6},"end":{"line":456,"column":23}},"159":{"start":{"line":460,"column":4},"end":{"line":462,"column":5}},"160":{"start":{"line":461,"column":6},"end":{"line":461,"column":37}},"161":{"start":{"line":470,"column":0},"end":{"line":476,"column":2}},"162":{"start":{"line":471,"column":2},"end":{"line":475,"column":3}},"163":{"start":{"line":472,"column":4},"end":{"line":472,"column":60}},"164":{"start":{"line":474,"column":4},"end":{"line":474,"column":58}},"165":{"start":{"line":479,"column":0},"end":{"line":483,"column":2}},"166":{"start":{"line":480,"column":2},"end":{"line":482,"column":3}},"167":{"start":{"line":481,"column":4},"end":{"line":481,"column":51}},"168":{"start":{"line":485,"column":0},"end":{"line":498,"column":1}},"169":{"start":{"line":486,"column":2},"end":{"line":489,"column":3}},"170":{"start":{"line":487,"column":4},"end":{"line":487,"column":30}},"171":{"start":{"line":488,"column":4},"end":{"line":488,"column":24}},"172":{"start":{"line":491,"column":2},"end":{"line":491,"column":35}},"173":{"start":{"line":493,"column":2},"end":{"line":495,"column":3}},"174":{"start":{"line":494,"column":4},"end":{"line":494,"column":42}},"175":{"start":{"line":497,"column":2},"end":{"line":497,"column":16}},"176":{"start":{"line":503,"column":0},"end":{"line":505,"column":1}},"177":{"start":{"line":504,"column":2},"end":{"line":504,"column":37}},"178":{"start":{"line":506,"column":0},"end":{"line":506,"column":114}},"179":{"start":{"line":512,"column":0},"end":{"line":538,"column":2}},"180":{"start":{"line":523,"column":2},"end":{"line":523,"column":72}},"181":{"start":{"line":524,"column":2},"end":{"line":524,"column":72}},"182":{"start":{"line":525,"column":2},"end":{"line":525,"column":72}},"183":{"start":{"line":526,"column":2},"end":{"line":526,"column":72}},"184":{"start":{"line":529,"column":2},"end":{"line":529,"column":32}},"185":{"start":{"line":532,"column":2},"end":{"line":532,"column":59}},"186":{"start":{"line":535,"column":2},"end":{"line":536,"column":80}},"187":{"start":{"line":537,"column":2},"end":{"line":537,"column":21}},"188":{"start":{"line":543,"column":0},"end":{"line":553,"column":1}},"189":{"start":{"line":544,"column":2},"end":{"line":544,"column":29}},"190":{"start":{"line":546,"column":2},"end":{"line":546,"column":55}},"191":{"start":{"line":548,"column":2},"end":{"line":548,"column":23}},"192":{"start":{"line":549,"column":2},"end":{"line":549,"column":24}},"193":{"start":{"line":550,"column":2},"end":{"line":550,"column":23}},"194":{"start":{"line":552,"column":2},"end":{"line":552,"column":65}},"195":{"start":{"line":554,"column":0},"end":{"line":554,"column":116}},"196":{"start":{"line":556,"column":0},"end":{"line":578,"column":2}},"197":{"start":{"line":557,"column":2},"end":{"line":561,"column":3}},"198":{"start":{"line":558,"column":4},"end":{"line":558,"column":93}},"199":{"start":{"line":560,"column":4},"end":{"line":560,"column":27}},"200":{"start":{"line":563,"column":2},"end":{"line":565,"column":3}},"201":{"start":{"line":564,"column":4},"end":{"line":564,"column":40}},"202":{"start":{"line":566,"column":2},"end":{"line":566,"column":26}},"203":{"start":{"line":568,"column":2},"end":{"line":570,"column":3}},"204":{"start":{"line":569,"column":4},"end":{"line":569,"column":46}},"205":{"start":{"line":572,"column":2},"end":{"line":572,"column":92}},"206":{"start":{"line":574,"column":2},"end":{"line":574,"column":52}},"207":{"start":{"line":576,"column":2},"end":{"line":576,"column":31}},"208":{"start":{"line":577,"column":2},"end":{"line":577,"column":26}},"209":{"start":{"line":580,"column":0},"end":{"line":584,"column":2}},"210":{"start":{"line":581,"column":2},"end":{"line":583,"column":3}},"211":{"start":{"line":582,"column":4},"end":{"line":582,"column":36}},"212":{"start":{"line":586,"column":0},"end":{"line":589,"column":2}},"213":{"start":{"line":587,"column":2},"end":{"line":587,"column":26}},"214":{"start":{"line":588,"column":2},"end":{"line":588,"column":64}},"215":{"start":{"line":591,"column":0},"end":{"line":594,"column":2}},"216":{"start":{"line":592,"column":2},"end":{"line":592,"column":26}},"217":{"start":{"line":593,"column":2},"end":{"line":593,"column":62}},"218":{"start":{"line":596,"column":0},"end":{"line":598,"column":2}},"219":{"start":{"line":597,"column":2},"end":{"line":597,"column":33}},"220":{"start":{"line":600,"column":0},"end":{"line":622,"column":2}},"221":{"start":{"line":601,"column":2},"end":{"line":603,"column":3}},"222":{"start":{"line":602,"column":4},"end":{"line":602,"column":33}},"223":{"start":{"line":605,"column":2},"end":{"line":607,"column":3}},"224":{"start":{"line":606,"column":4},"end":{"line":606,"column":51}},"225":{"start":{"line":609,"column":2},"end":{"line":614,"column":22}},"226":{"start":{"line":616,"column":2},"end":{"line":617,"column":96}},"227":{"start":{"line":619,"column":2},"end":{"line":619,"column":48}},"228":{"start":{"line":621,"column":2},"end":{"line":621,"column":42}},"229":{"start":{"line":626,"column":0},"end":{"line":632,"column":2}},"230":{"start":{"line":627,"column":2},"end":{"line":631,"column":3}},"231":{"start":{"line":628,"column":4},"end":{"line":628,"column":60}},"232":{"start":{"line":630,"column":4},"end":{"line":630,"column":61}},"233":{"start":{"line":637,"column":0},"end":{"line":637,"column":40}},"234":{"start":{"line":638,"column":0},"end":{"line":638,"column":42}},"235":{"start":{"line":639,"column":0},"end":{"line":639,"column":44}},"236":{"start":{"line":640,"column":0},"end":{"line":640,"column":22}},"237":{"start":{"line":641,"column":0},"end":{"line":641,"column":32}},"238":{"start":{"line":642,"column":0},"end":{"line":644,"column":2}},"239":{"start":{"line":643,"column":2},"end":{"line":643,"column":75}},"240":{"start":{"line":645,"column":0},"end":{"line":647,"column":2}},"241":{"start":{"line":646,"column":2},"end":{"line":646,"column":71}},"242":{"start":{"line":652,"column":0},"end":{"line":671,"column":1}},"243":{"start":{"line":653,"column":2},"end":{"line":653,"column":26}},"244":{"start":{"line":655,"column":2},"end":{"line":655,"column":26}},"245":{"start":{"line":657,"column":2},"end":{"line":657,"column":36}},"246":{"start":{"line":658,"column":2},"end":{"line":658,"column":74}},"247":{"start":{"line":659,"column":2},"end":{"line":659,"column":22}},"248":{"start":{"line":665,"column":2},"end":{"line":665,"column":24}},"249":{"start":{"line":666,"column":2},"end":{"line":666,"column":50}},"250":{"start":{"line":667,"column":2},"end":{"line":667,"column":51}},"251":{"start":{"line":669,"column":2},"end":{"line":669,"column":42}},"252":{"start":{"line":670,"column":2},"end":{"line":670,"column":44}},"253":{"start":{"line":672,"column":0},"end":{"line":672,"column":91}},"254":{"start":{"line":674,"column":0},"end":{"line":775,"column":2}},"255":{"start":{"line":675,"column":2},"end":{"line":677,"column":3}},"256":{"start":{"line":676,"column":4},"end":{"line":676,"column":33}},"257":{"start":{"line":679,"column":2},"end":{"line":679,"column":59}},"258":{"start":{"line":680,"column":2},"end":{"line":680,"column":50}},"259":{"start":{"line":681,"column":2},"end":{"line":681,"column":65}},"260":{"start":{"line":682,"column":2},"end":{"line":682,"column":37}},"261":{"start":{"line":683,"column":2},"end":{"line":683,"column":37}},"262":{"start":{"line":685,"column":2},"end":{"line":688,"column":3}},"263":{"start":{"line":686,"column":4},"end":{"line":686,"column":85}},"264":{"start":{"line":687,"column":4},"end":{"line":687,"column":70}},"265":{"start":{"line":690,"column":2},"end":{"line":690,"column":47}},"266":{"start":{"line":692,"column":2},"end":{"line":694,"column":3}},"267":{"start":{"line":693,"column":4},"end":{"line":693,"column":37}},"268":{"start":{"line":696,"column":2},"end":{"line":700,"column":14}},"269":{"start":{"line":703,"column":2},"end":{"line":772,"column":3}},"270":{"start":{"line":704,"column":4},"end":{"line":704,"column":39}},"271":{"start":{"line":705,"column":4},"end":{"line":705,"column":53}},"272":{"start":{"line":709,"column":7},"end":{"line":772,"column":3}},"273":{"start":{"line":710,"column":4},"end":{"line":710,"column":65}},"274":{"start":{"line":711,"column":4},"end":{"line":715,"column":7}},"275":{"start":{"line":716,"column":4},"end":{"line":716,"column":50}},"276":{"start":{"line":717,"column":4},"end":{"line":717,"column":53}},"277":{"start":{"line":722,"column":4},"end":{"line":722,"column":24}},"278":{"start":{"line":723,"column":4},"end":{"line":723,"column":47}},"279":{"start":{"line":724,"column":4},"end":{"line":724,"column":38}},"280":{"start":{"line":725,"column":4},"end":{"line":725,"column":37}},"281":{"start":{"line":726,"column":4},"end":{"line":726,"column":46}},"282":{"start":{"line":728,"column":4},"end":{"line":734,"column":7}},"283":{"start":{"line":729,"column":6},"end":{"line":733,"column":7}},"284":{"start":{"line":730,"column":8},"end":{"line":730,"column":21}},"285":{"start":{"line":732,"column":8},"end":{"line":732,"column":47}},"286":{"start":{"line":736,"column":4},"end":{"line":736,"column":20}},"287":{"start":{"line":737,"column":4},"end":{"line":762,"column":5}},"288":{"start":{"line":738,"column":6},"end":{"line":738,"column":19}},"289":{"start":{"line":739,"column":6},"end":{"line":745,"column":7}},"290":{"start":{"line":740,"column":8},"end":{"line":740,"column":48}},"291":{"start":{"line":741,"column":8},"end":{"line":741,"column":44}},"292":{"start":{"line":742,"column":8},"end":{"line":742,"column":69}},"293":{"start":{"line":743,"column":8},"end":{"line":743,"column":46}},"294":{"start":{"line":744,"column":8},"end":{"line":744,"column":54}},"295":{"start":{"line":746,"column":6},"end":{"line":761,"column":7}},"296":{"start":{"line":747,"column":8},"end":{"line":751,"column":9}},"297":{"start":{"line":748,"column":10},"end":{"line":748,"column":27}},"298":{"start":{"line":750,"column":10},"end":{"line":750,"column":31}},"299":{"start":{"line":753,"column":8},"end":{"line":760,"column":9}},"300":{"start":{"line":754,"column":10},"end":{"line":755,"column":59}},"301":{"start":{"line":756,"column":10},"end":{"line":756,"column":41}},"302":{"start":{"line":757,"column":10},"end":{"line":757,"column":35}},"303":{"start":{"line":759,"column":10},"end":{"line":759,"column":36}},"304":{"start":{"line":764,"column":4},"end":{"line":771,"column":7}},"305":{"start":{"line":765,"column":6},"end":{"line":765,"column":21}},"306":{"start":{"line":766,"column":6},"end":{"line":770,"column":7}},"307":{"start":{"line":767,"column":8},"end":{"line":767,"column":57}},"308":{"start":{"line":769,"column":8},"end":{"line":769,"column":40}},"309":{"start":{"line":774,"column":2},"end":{"line":774,"column":17}},"310":{"start":{"line":777,"column":0},"end":{"line":781,"column":2}},"311":{"start":{"line":778,"column":2},"end":{"line":778,"column":48}},"312":{"start":{"line":779,"column":2},"end":{"line":779,"column":16}},"313":{"start":{"line":780,"column":2},"end":{"line":780,"column":17}},"314":{"start":{"line":783,"column":0},"end":{"line":792,"column":1}},"315":{"start":{"line":784,"column":2},"end":{"line":784,"column":36}},"316":{"start":{"line":785,"column":2},"end":{"line":785,"column":35}},"317":{"start":{"line":786,"column":2},"end":{"line":786,"column":40}},"318":{"start":{"line":787,"column":2},"end":{"line":787,"column":37}},"319":{"start":{"line":788,"column":2},"end":{"line":788,"column":37}},"320":{"start":{"line":789,"column":2},"end":{"line":789,"column":18}},"321":{"start":{"line":790,"column":2},"end":{"line":790,"column":23}},"322":{"start":{"line":791,"column":2},"end":{"line":791,"column":22}},"323":{"start":{"line":794,"column":0},"end":{"line":801,"column":3}},"324":{"start":{"line":796,"column":4},"end":{"line":796,"column":39}},"325":{"start":{"line":799,"column":4},"end":{"line":799,"column":40}},"326":{"start":{"line":803,"column":0},"end":{"line":803,"column":34}},"327":{"start":{"line":808,"column":0},"end":{"line":814,"column":1}},"328":{"start":{"line":809,"column":2},"end":{"line":809,"column":29}},"329":{"start":{"line":811,"column":2},"end":{"line":811,"column":24}},"330":{"start":{"line":813,"column":2},"end":{"line":813,"column":26}},"331":{"start":{"line":815,"column":0},"end":{"line":815,"column":114}},"332":{"start":{"line":817,"column":0},"end":{"line":848,"column":2}},"333":{"start":{"line":818,"column":2},"end":{"line":818,"column":23}},"334":{"start":{"line":820,"column":2},"end":{"line":820,"column":55}},"335":{"start":{"line":822,"column":2},"end":{"line":824,"column":3}},"336":{"start":{"line":823,"column":4},"end":{"line":823,"column":46}},"337":{"start":{"line":825,"column":2},"end":{"line":825,"column":30}},"338":{"start":{"line":826,"column":2},"end":{"line":826,"column":22}},"339":{"start":{"line":828,"column":2},"end":{"line":830,"column":3}},"340":{"start":{"line":829,"column":4},"end":{"line":829,"column":83}},"341":{"start":{"line":832,"column":2},"end":{"line":832,"column":53}},"342":{"start":{"line":833,"column":2},"end":{"line":833,"column":38}},"343":{"start":{"line":834,"column":2},"end":{"line":834,"column":34}},"344":{"start":{"line":835,"column":2},"end":{"line":835,"column":34}},"345":{"start":{"line":837,"column":2},"end":{"line":838,"column":98}},"346":{"start":{"line":839,"column":2},"end":{"line":839,"column":31}},"347":{"start":{"line":840,"column":2},"end":{"line":840,"column":26}},"348":{"start":{"line":842,"column":2},"end":{"line":842,"column":35}},"349":{"start":{"line":844,"column":2},"end":{"line":844,"column":51}},"350":{"start":{"line":845,"column":2},"end":{"line":845,"column":69}},"351":{"start":{"line":847,"column":2},"end":{"line":847,"column":56}},"352":{"start":{"line":850,"column":0},"end":{"line":854,"column":2}},"353":{"start":{"line":851,"column":2},"end":{"line":851,"column":59}},"354":{"start":{"line":852,"column":2},"end":{"line":852,"column":39}},"355":{"start":{"line":853,"column":2},"end":{"line":853,"column":35}},"356":{"start":{"line":856,"column":0},"end":{"line":862,"column":2}},"357":{"start":{"line":857,"column":2},"end":{"line":861,"column":3}},"358":{"start":{"line":858,"column":4},"end":{"line":858,"column":35}},"359":{"start":{"line":860,"column":4},"end":{"line":860,"column":63}},"360":{"start":{"line":866,"column":0},"end":{"line":872,"column":2}},"361":{"start":{"line":867,"column":2},"end":{"line":871,"column":3}},"362":{"start":{"line":868,"column":4},"end":{"line":868,"column":60}},"363":{"start":{"line":870,"column":4},"end":{"line":870,"column":61}},"364":{"start":{"line":875,"column":0},"end":{"line":881,"column":2}},"365":{"start":{"line":876,"column":2},"end":{"line":880,"column":3}},"366":{"start":{"line":877,"column":4},"end":{"line":877,"column":37}},"367":{"start":{"line":878,"column":9},"end":{"line":880,"column":3}},"368":{"start":{"line":879,"column":4},"end":{"line":879,"column":59}},"369":{"start":{"line":883,"column":0},"end":{"line":889,"column":2}},"370":{"start":{"line":884,"column":2},"end":{"line":888,"column":3}},"371":{"start":{"line":885,"column":4},"end":{"line":885,"column":58}},"372":{"start":{"line":886,"column":9},"end":{"line":888,"column":3}},"373":{"start":{"line":887,"column":4},"end":{"line":887,"column":80}},"374":{"start":{"line":891,"column":0},"end":{"line":897,"column":2}},"375":{"start":{"line":892,"column":2},"end":{"line":896,"column":3}},"376":{"start":{"line":893,"column":4},"end":{"line":893,"column":47}},"377":{"start":{"line":894,"column":9},"end":{"line":896,"column":3}},"378":{"start":{"line":895,"column":4},"end":{"line":895,"column":69}},"379":{"start":{"line":900,"column":0},"end":{"line":908,"column":2}},"380":{"start":{"line":901,"column":2},"end":{"line":907,"column":3}},"381":{"start":{"line":902,"column":4},"end":{"line":902,"column":25}},"382":{"start":{"line":903,"column":9},"end":{"line":907,"column":3}},"383":{"start":{"line":904,"column":4},"end":{"line":904,"column":32}},"384":{"start":{"line":906,"column":4},"end":{"line":906,"column":45}},"385":{"start":{"line":911,"column":0},"end":{"line":921,"column":2}},"386":{"start":{"line":912,"column":2},"end":{"line":912,"column":71}},"387":{"start":{"line":914,"column":2},"end":{"line":914,"column":53}},"388":{"start":{"line":916,"column":2},"end":{"line":920,"column":3}},"389":{"start":{"line":917,"column":4},"end":{"line":917,"column":31}},"390":{"start":{"line":919,"column":4},"end":{"line":919,"column":21}},"391":{"start":{"line":926,"column":0},"end":{"line":928,"column":1}},"392":{"start":{"line":927,"column":2},"end":{"line":927,"column":37}},"393":{"start":{"line":929,"column":0},"end":{"line":929,"column":116}},"394":{"start":{"line":935,"column":0},"end":{"line":951,"column":2}},"395":{"start":{"line":943,"column":2},"end":{"line":943,"column":86}},"396":{"start":{"line":946,"column":2},"end":{"line":946,"column":59}},"397":{"start":{"line":949,"column":2},"end":{"line":949,"column":89}},"398":{"start":{"line":950,"column":2},"end":{"line":950,"column":21}},"399":{"start":{"line":956,"column":0},"end":{"line":972,"column":1}},"400":{"start":{"line":957,"column":2},"end":{"line":957,"column":30}},"401":{"start":{"line":958,"column":2},"end":{"line":958,"column":22}},"402":{"start":{"line":959,"column":2},"end":{"line":959,"column":20}},"403":{"start":{"line":960,"column":2},"end":{"line":960,"column":36}},"404":{"start":{"line":962,"column":2},"end":{"line":962,"column":37}},"405":{"start":{"line":964,"column":2},"end":{"line":964,"column":34}},"406":{"start":{"line":966,"column":2},"end":{"line":966,"column":40}},"407":{"start":{"line":968,"column":2},"end":{"line":968,"column":60}},"408":{"start":{"line":969,"column":2},"end":{"line":969,"column":69}},"409":{"start":{"line":971,"column":2},"end":{"line":971,"column":56}},"410":{"start":{"line":973,"column":0},"end":{"line":973,"column":114}},"411":{"start":{"line":975,"column":0},"end":{"line":977,"column":2}},"412":{"start":{"line":976,"column":2},"end":{"line":976,"column":39}},"413":{"start":{"line":979,"column":0},"end":{"line":981,"column":2}},"414":{"start":{"line":980,"column":2},"end":{"line":980,"column":42}},"415":{"start":{"line":983,"column":0},"end":{"line":983,"column":76}}},"branchMap":{"1":{"line":165,"type":"cond-expr","locations":[{"start":{"line":165,"column":52},"end":{"line":165,"column":58}},{"start":{"line":165,"column":61},"end":{"line":165,"column":66}}]},"2":{"line":166,"type":"cond-expr","locations":[{"start":{"line":166,"column":47},"end":{"line":166,"column":62}},{"start":{"line":166,"column":65},"end":{"line":166,"column":79}}]},"3":{"line":167,"type":"cond-expr","locations":[{"start":{"line":167,"column":53},"end":{"line":167,"column":67}},{"start":{"line":167,"column":70},"end":{"line":167,"column":83}}]},"4":{"line":231,"type":"if","locations":[{"start":{"line":231,"column":4},"end":{"line":231,"column":4}},{"start":{"line":231,"column":4},"end":{"line":231,"column":4}}]},"5":{"line":240,"type":"if","locations":[{"start":{"line":240,"column":4},"end":{"line":240,"column":4}},{"start":{"line":240,"column":4},"end":{"line":240,"column":4}}]},"6":{"line":259,"type":"if","locations":[{"start":{"line":259,"column":2},"end":{"line":259,"column":2}},{"start":{"line":259,"column":2},"end":{"line":259,"column":2}}]},"7":{"line":259,"type":"binary-expr","locations":[{"start":{"line":259,"column":7},"end":{"line":259,"column":32}},{"start":{"line":259,"column":38},"end":{"line":259,"column":56}}]},"8":{"line":284,"type":"if","locations":[{"start":{"line":284,"column":2},"end":{"line":284,"column":2}},{"start":{"line":284,"column":2},"end":{"line":284,"column":2}}]},"9":{"line":292,"type":"if","locations":[{"start":{"line":292,"column":2},"end":{"line":292,"column":2}},{"start":{"line":292,"column":2},"end":{"line":292,"column":2}}]},"10":{"line":293,"type":"if","locations":[{"start":{"line":293,"column":4},"end":{"line":293,"column":4}},{"start":{"line":293,"column":4},"end":{"line":293,"column":4}}]},"11":{"line":294,"type":"if","locations":[{"start":{"line":294,"column":6},"end":{"line":294,"column":6}},{"start":{"line":294,"column":6},"end":{"line":294,"column":6}}]},"12":{"line":307,"type":"if","locations":[{"start":{"line":307,"column":2},"end":{"line":307,"column":2}},{"start":{"line":307,"column":2},"end":{"line":307,"column":2}}]},"13":{"line":311,"type":"if","locations":[{"start":{"line":311,"column":4},"end":{"line":311,"column":4}},{"start":{"line":311,"column":4},"end":{"line":311,"column":4}}]},"14":{"line":319,"type":"if","locations":[{"start":{"line":319,"column":2},"end":{"line":319,"column":2}},{"start":{"line":319,"column":2},"end":{"line":319,"column":2}}]},"15":{"line":351,"type":"binary-expr","locations":[{"start":{"line":351,"column":12},"end":{"line":351,"column":19}},{"start":{"line":351,"column":23},"end":{"line":351,"column":25}}]},"16":{"line":353,"type":"binary-expr","locations":[{"start":{"line":353,"column":15},"end":{"line":353,"column":26}},{"start":{"line":353,"column":30},"end":{"line":353,"column":43}}]},"17":{"line":360,"type":"if","locations":[{"start":{"line":360,"column":2},"end":{"line":360,"column":2}},{"start":{"line":360,"column":2},"end":{"line":360,"column":2}}]},"18":{"line":360,"type":"binary-expr","locations":[{"start":{"line":360,"column":7},"end":{"line":360,"column":18}},{"start":{"line":360,"column":22},"end":{"line":360,"column":34}},{"start":{"line":360,"column":39},"end":{"line":360,"column":50}}]},"19":{"line":368,"type":"if","locations":[{"start":{"line":368,"column":6},"end":{"line":368,"column":6}},{"start":{"line":368,"column":6},"end":{"line":368,"column":6}}]},"20":{"line":368,"type":"binary-expr","locations":[{"start":{"line":368,"column":10},"end":{"line":368,"column":59}},{"start":{"line":368,"column":63},"end":{"line":368,"column":80}}]},"21":{"line":378,"type":"if","locations":[{"start":{"line":378,"column":7},"end":{"line":378,"column":7}},{"start":{"line":378,"column":7},"end":{"line":378,"column":7}}]},"22":{"line":435,"type":"cond-expr","locations":[{"start":{"line":435,"column":58},"end":{"line":435,"column":79}},{"start":{"line":435,"column":83},"end":{"line":435,"column":87}}]},"23":{"line":446,"type":"if","locations":[{"start":{"line":446,"column":2},"end":{"line":446,"column":2}},{"start":{"line":446,"column":2},"end":{"line":446,"column":2}}]},"24":{"line":453,"type":"if","locations":[{"start":{"line":453,"column":4},"end":{"line":453,"column":4}},{"start":{"line":453,"column":4},"end":{"line":453,"column":4}}]},"25":{"line":460,"type":"if","locations":[{"start":{"line":460,"column":4},"end":{"line":460,"column":4}},{"start":{"line":460,"column":4},"end":{"line":460,"column":4}}]},"26":{"line":471,"type":"if","locations":[{"start":{"line":471,"column":2},"end":{"line":471,"column":2}},{"start":{"line":471,"column":2},"end":{"line":471,"column":2}}]},"27":{"line":471,"type":"binary-expr","locations":[{"start":{"line":471,"column":7},"end":{"line":471,"column":26}},{"start":{"line":471,"column":32},"end":{"line":471,"column":51}}]},"28":{"line":472,"type":"binary-expr","locations":[{"start":{"line":472,"column":27},"end":{"line":472,"column":35}},{"start":{"line":472,"column":39},"end":{"line":472,"column":58}}]},"29":{"line":480,"type":"if","locations":[{"start":{"line":480,"column":2},"end":{"line":480,"column":2}},{"start":{"line":480,"column":2},"end":{"line":480,"column":2}}]},"30":{"line":486,"type":"if","locations":[{"start":{"line":486,"column":2},"end":{"line":486,"column":2}},{"start":{"line":486,"column":2},"end":{"line":486,"column":2}}]},"31":{"line":493,"type":"if","locations":[{"start":{"line":493,"column":2},"end":{"line":493,"column":2}},{"start":{"line":493,"column":2},"end":{"line":493,"column":2}}]},"32":{"line":557,"type":"if","locations":[{"start":{"line":557,"column":2},"end":{"line":557,"column":2}},{"start":{"line":557,"column":2},"end":{"line":557,"column":2}}]},"33":{"line":568,"type":"if","locations":[{"start":{"line":568,"column":2},"end":{"line":568,"column":2}},{"start":{"line":568,"column":2},"end":{"line":568,"column":2}}]},"34":{"line":568,"type":"binary-expr","locations":[{"start":{"line":568,"column":6},"end":{"line":568,"column":19}},{"start":{"line":568,"column":23},"end":{"line":568,"column":49}}]},"35":{"line":581,"type":"if","locations":[{"start":{"line":581,"column":2},"end":{"line":581,"column":2}},{"start":{"line":581,"column":2},"end":{"line":581,"column":2}}]},"36":{"line":601,"type":"if","locations":[{"start":{"line":601,"column":2},"end":{"line":601,"column":2}},{"start":{"line":601,"column":2},"end":{"line":601,"column":2}}]},"37":{"line":605,"type":"if","locations":[{"start":{"line":605,"column":2},"end":{"line":605,"column":2}},{"start":{"line":605,"column":2},"end":{"line":605,"column":2}}]},"38":{"line":610,"type":"binary-expr","locations":[{"start":{"line":610,"column":16},"end":{"line":610,"column":30}},{"start":{"line":610,"column":34},"end":{"line":610,"column":39}}]},"39":{"line":611,"type":"binary-expr","locations":[{"start":{"line":611,"column":16},"end":{"line":611,"column":32}},{"start":{"line":611,"column":36},"end":{"line":611,"column":65}},{"start":{"line":611,"column":70},"end":{"line":611,"column":101}}]},"40":{"line":612,"type":"binary-expr","locations":[{"start":{"line":612,"column":13},"end":{"line":612,"column":29}},{"start":{"line":612,"column":33},"end":{"line":612,"column":45}},{"start":{"line":612,"column":49},"end":{"line":612,"column":78}}]},"41":{"line":627,"type":"if","locations":[{"start":{"line":627,"column":2},"end":{"line":627,"column":2}},{"start":{"line":627,"column":2},"end":{"line":627,"column":2}}]},"42":{"line":627,"type":"binary-expr","locations":[{"start":{"line":627,"column":6},"end":{"line":627,"column":18}},{"start":{"line":627,"column":23},"end":{"line":627,"column":42}}]},"43":{"line":628,"type":"binary-expr","locations":[{"start":{"line":628,"column":27},"end":{"line":628,"column":35}},{"start":{"line":628,"column":39},"end":{"line":628,"column":58}}]},"44":{"line":643,"type":"binary-expr","locations":[{"start":{"line":643,"column":10},"end":{"line":643,"column":23}},{"start":{"line":643,"column":27},"end":{"line":643,"column":46}}]},"45":{"line":646,"type":"binary-expr","locations":[{"start":{"line":646,"column":10},"end":{"line":646,"column":23}},{"start":{"line":646,"column":27},"end":{"line":646,"column":46}}]},"46":{"line":655,"type":"binary-expr","locations":[{"start":{"line":655,"column":12},"end":{"line":655,"column":19}},{"start":{"line":655,"column":23},"end":{"line":655,"column":25}}]},"47":{"line":658,"type":"binary-expr","locations":[{"start":{"line":658,"column":15},"end":{"line":658,"column":26}},{"start":{"line":658,"column":30},"end":{"line":658,"column":43}}]},"48":{"line":675,"type":"if","locations":[{"start":{"line":675,"column":2},"end":{"line":675,"column":2}},{"start":{"line":675,"column":2},"end":{"line":675,"column":2}}]},"49":{"line":679,"type":"binary-expr","locations":[{"start":{"line":679,"column":20},"end":{"line":679,"column":34}},{"start":{"line":679,"column":38},"end":{"line":679,"column":43}}]},"50":{"line":680,"type":"binary-expr","locations":[{"start":{"line":680,"column":21},"end":{"line":680,"column":37}},{"start":{"line":680,"column":41},"end":{"line":680,"column":49}}]},"51":{"line":681,"type":"binary-expr","locations":[{"start":{"line":681,"column":17},"end":{"line":681,"column":33}},{"start":{"line":681,"column":37},"end":{"line":681,"column":49}},{"start":{"line":681,"column":53},"end":{"line":681,"column":64}}]},"52":{"line":682,"type":"binary-expr","locations":[{"start":{"line":682,"column":17},"end":{"line":682,"column":29}},{"start":{"line":682,"column":33},"end":{"line":682,"column":36}}]},"53":{"line":683,"type":"binary-expr","locations":[{"start":{"line":683,"column":17},"end":{"line":683,"column":29}},{"start":{"line":683,"column":33},"end":{"line":683,"column":36}}]},"54":{"line":685,"type":"if","locations":[{"start":{"line":685,"column":2},"end":{"line":685,"column":2}},{"start":{"line":685,"column":2},"end":{"line":685,"column":2}}]},"55":{"line":685,"type":"binary-expr","locations":[{"start":{"line":685,"column":6},"end":{"line":685,"column":20}},{"start":{"line":685,"column":24},"end":{"line":685,"column":52}}]},"56":{"line":692,"type":"if","locations":[{"start":{"line":692,"column":2},"end":{"line":692,"column":2}},{"start":{"line":692,"column":2},"end":{"line":692,"column":2}}]},"57":{"line":703,"type":"if","locations":[{"start":{"line":703,"column":2},"end":{"line":703,"column":2}},{"start":{"line":703,"column":2},"end":{"line":703,"column":2}}]},"58":{"line":709,"type":"if","locations":[{"start":{"line":709,"column":7},"end":{"line":709,"column":7}},{"start":{"line":709,"column":7},"end":{"line":709,"column":7}}]},"59":{"line":729,"type":"if","locations":[{"start":{"line":729,"column":6},"end":{"line":729,"column":6}},{"start":{"line":729,"column":6},"end":{"line":729,"column":6}}]},"60":{"line":739,"type":"if","locations":[{"start":{"line":739,"column":6},"end":{"line":739,"column":6}},{"start":{"line":739,"column":6},"end":{"line":739,"column":6}}]},"61":{"line":746,"type":"if","locations":[{"start":{"line":746,"column":6},"end":{"line":746,"column":6}},{"start":{"line":746,"column":6},"end":{"line":746,"column":6}}]},"62":{"line":747,"type":"if","locations":[{"start":{"line":747,"column":8},"end":{"line":747,"column":8}},{"start":{"line":747,"column":8},"end":{"line":747,"column":8}}]},"63":{"line":753,"type":"if","locations":[{"start":{"line":753,"column":8},"end":{"line":753,"column":8}},{"start":{"line":753,"column":8},"end":{"line":753,"column":8}}]},"64":{"line":766,"type":"if","locations":[{"start":{"line":766,"column":6},"end":{"line":766,"column":6}},{"start":{"line":766,"column":6},"end":{"line":766,"column":6}}]},"65":{"line":828,"type":"if","locations":[{"start":{"line":828,"column":2},"end":{"line":828,"column":2}},{"start":{"line":828,"column":2},"end":{"line":828,"column":2}}]},"66":{"line":838,"type":"binary-expr","locations":[{"start":{"line":838,"column":53},"end":{"line":838,"column":68}},{"start":{"line":838,"column":72},"end":{"line":838,"column":74}}]},"67":{"line":857,"type":"if","locations":[{"start":{"line":857,"column":2},"end":{"line":857,"column":2}},{"start":{"line":857,"column":2},"end":{"line":857,"column":2}}]},"68":{"line":867,"type":"if","locations":[{"start":{"line":867,"column":2},"end":{"line":867,"column":2}},{"start":{"line":867,"column":2},"end":{"line":867,"column":2}}]},"69":{"line":867,"type":"binary-expr","locations":[{"start":{"line":867,"column":6},"end":{"line":867,"column":18}},{"start":{"line":867,"column":23},"end":{"line":867,"column":42}}]},"70":{"line":868,"type":"binary-expr","locations":[{"start":{"line":868,"column":27},"end":{"line":868,"column":35}},{"start":{"line":868,"column":39},"end":{"line":868,"column":58}}]},"71":{"line":876,"type":"if","locations":[{"start":{"line":876,"column":2},"end":{"line":876,"column":2}},{"start":{"line":876,"column":2},"end":{"line":876,"column":2}}]},"72":{"line":878,"type":"if","locations":[{"start":{"line":878,"column":9},"end":{"line":878,"column":9}},{"start":{"line":878,"column":9},"end":{"line":878,"column":9}}]},"73":{"line":884,"type":"if","locations":[{"start":{"line":884,"column":2},"end":{"line":884,"column":2}},{"start":{"line":884,"column":2},"end":{"line":884,"column":2}}]},"74":{"line":886,"type":"if","locations":[{"start":{"line":886,"column":9},"end":{"line":886,"column":9}},{"start":{"line":886,"column":9},"end":{"line":886,"column":9}}]},"75":{"line":892,"type":"if","locations":[{"start":{"line":892,"column":2},"end":{"line":892,"column":2}},{"start":{"line":892,"column":2},"end":{"line":892,"column":2}}]},"76":{"line":894,"type":"if","locations":[{"start":{"line":894,"column":9},"end":{"line":894,"column":9}},{"start":{"line":894,"column":9},"end":{"line":894,"column":9}}]},"77":{"line":901,"type":"if","locations":[{"start":{"line":901,"column":2},"end":{"line":901,"column":2}},{"start":{"line":901,"column":2},"end":{"line":901,"column":2}}]},"78":{"line":903,"type":"if","locations":[{"start":{"line":903,"column":9},"end":{"line":903,"column":9}},{"start":{"line":903,"column":9},"end":{"line":903,"column":9}}]},"79":{"line":916,"type":"if","locations":[{"start":{"line":916,"column":2},"end":{"line":916,"column":2}},{"start":{"line":916,"column":2},"end":{"line":916,"column":2}}]}}}} \ No newline at end of file +{"/data/upstream/node-http2/lib/http.js":{"path":"/data/upstream/node-http2/lib/http.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":3,"20":1,"21":1,"22":24,"23":24,"24":24,"25":24,"26":24,"27":24,"28":24,"29":24,"30":24,"31":24,"32":24,"33":24,"34":1,"35":1,"36":24,"37":168,"38":168,"39":0,"40":0,"41":0,"42":24,"43":73,"44":13,"45":24,"46":24,"47":2,"48":1,"49":24,"50":1,"51":1,"52":60,"53":0,"54":0,"55":60,"56":1,"57":27,"58":27,"59":27,"60":27,"61":27,"62":1,"63":1,"64":13,"65":12,"66":1,"67":1,"68":31,"69":23,"70":2,"71":0,"72":2,"73":23,"74":8,"75":1,"76":4,"77":0,"78":4,"79":4,"80":0,"81":4,"82":1,"83":1,"84":0,"85":1,"86":1,"87":3,"88":1,"89":2,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":13,"99":13,"100":13,"101":13,"102":13,"103":13,"104":10,"105":10,"106":10,"107":10,"108":10,"109":10,"110":10,"111":10,"112":9,"113":9,"114":8,"115":1,"116":10,"117":3,"118":1,"119":1,"120":1,"121":2,"122":2,"123":11,"124":1,"125":1,"126":9,"127":9,"128":9,"129":9,"130":9,"131":10,"132":10,"133":10,"134":9,"135":9,"136":9,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":9,"145":9,"146":1,"147":4,"148":4,"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"155":0,"156":1,"157":1,"158":1,"159":9,"160":0,"161":9,"162":1,"163":0,"164":0,"165":1,"166":10,"167":1,"168":1,"169":10,"170":9,"171":9,"172":9,"173":1,"174":12,"175":1,"176":1,"177":12,"178":12,"179":12,"180":12,"181":12,"182":12,"183":12,"184":12,"185":1,"186":12,"187":12,"188":12,"189":12,"190":12,"191":12,"192":1,"193":1,"194":12,"195":1,"196":11,"197":12,"198":1,"199":12,"200":12,"201":11,"202":12,"203":12,"204":12,"205":12,"206":1,"207":23,"208":11,"209":1,"210":11,"211":11,"212":1,"213":12,"214":12,"215":1,"216":10,"217":1,"218":2,"219":1,"220":2,"221":0,"222":2,"223":2,"224":2,"225":2,"226":1,"227":12,"228":0,"229":12,"230":1,"231":1,"232":1,"233":1,"234":1,"235":1,"236":4,"237":1,"238":7,"239":1,"240":4,"241":4,"242":4,"243":4,"244":4,"245":4,"246":4,"247":4,"248":4,"249":4,"250":4,"251":1,"252":1,"253":12,"254":8,"255":4,"256":12,"257":12,"258":12,"259":12,"260":12,"261":12,"262":1,"263":1,"264":11,"265":11,"266":7,"267":11,"268":11,"269":1,"270":1,"271":10,"272":1,"273":1,"274":1,"275":1,"276":9,"277":9,"278":9,"279":9,"280":9,"281":9,"282":9,"283":9,"284":9,"285":0,"286":9,"287":9,"288":1,"289":9,"290":9,"291":9,"292":8,"293":8,"294":8,"295":8,"296":8,"297":9,"298":1,"299":1,"300":0,"301":8,"302":7,"303":7,"304":7,"305":1,"306":9,"307":9,"308":9,"309":8,"310":1,"311":11,"312":1,"313":7,"314":7,"315":7,"316":1,"317":8,"318":8,"319":8,"320":8,"321":8,"322":8,"323":8,"324":8,"325":1,"326":1,"327":1,"328":1,"329":1,"330":15,"331":15,"332":15,"333":1,"334":1,"335":10,"336":10,"337":10,"338":1,"339":10,"340":10,"341":10,"342":0,"343":10,"344":10,"345":10,"346":10,"347":10,"348":10,"349":10,"350":10,"351":10,"352":10,"353":10,"354":1,"355":5,"356":5,"357":5,"358":1,"359":0,"360":0,"361":0,"362":1,"363":40,"364":0,"365":40,"366":1,"367":3,"368":1,"369":2,"370":1,"371":1,"372":3,"373":1,"374":2,"375":1,"376":1,"377":3,"378":1,"379":2,"380":1,"381":1,"382":3,"383":1,"384":2,"385":1,"386":1,"387":1,"388":2,"389":2,"390":2,"391":2,"392":0,"393":1,"394":12,"395":1,"396":1,"397":12,"398":12,"399":12,"400":12,"401":1,"402":2,"403":2,"404":2,"405":2,"406":2,"407":2,"408":2,"409":2,"410":2,"411":2,"412":1,"413":1,"414":0,"415":1,"416":0,"417":1},"b":{"1":[0,168],"2":[13,60],"3":[0,60],"4":[60,60],"5":[12,1],"6":[23,8],"7":[2,21],"8":[0,2],"9":[0,4],"10":[0,4],"11":[0,1],"12":[13,2],"13":[10,3],"14":[13,10,3],"15":[9,9],"16":[8,1],"17":[9,8],"18":[1,2],"19":[1,1],"20":[0,9],"21":[1,0],"22":[1,0],"23":[1,0],"24":[0,9],"25":[9,9],"26":[0,0],"27":[0,0],"28":[1,9],"29":[9,0],"30":[1,11],"31":[11,1],"32":[12,11],"33":[11,12],"34":[1,1],"35":[0,2],"36":[2,2],"37":[2,1,1],"38":[2,2,2],"39":[0,12],"40":[12,0],"41":[0,0],"42":[4,4],"43":[7,7],"44":[4,1],"45":[8,4],"46":[12,12],"47":[12,3],"48":[12,4,1],"49":[12,1],"50":[12,1],"51":[1,11],"52":[12,11],"53":[7,4],"54":[1,10],"55":[1,9],"56":[9,9],"57":[0,9],"58":[9,9],"59":[8,1],"60":[1,8],"61":[1,0],"62":[7,1],"63":[8,1],"64":[0,10],"65":[10,9],"66":[0,0],"67":[0,40],"68":[40,0],"69":[0,0],"70":[1,2],"71":[1,1],"72":[1,2],"73":[1,1],"74":[1,2],"75":[1,1],"76":[1,2],"77":[1,1],"78":[2,0]},"f":{"1":2,"2":3,"3":24,"4":24,"5":2,"6":24,"7":60,"8":27,"9":13,"10":31,"11":4,"12":1,"13":3,"14":2,"15":13,"16":9,"17":9,"18":10,"19":1,"20":9,"21":4,"22":1,"23":1,"24":1,"25":9,"26":0,"27":10,"28":12,"29":12,"30":12,"31":12,"32":23,"33":11,"34":12,"35":10,"36":2,"37":12,"38":4,"39":7,"40":4,"41":12,"42":9,"43":9,"44":9,"45":7,"46":8,"47":1,"48":1,"49":15,"50":10,"51":5,"52":0,"53":40,"54":3,"55":3,"56":3,"57":3,"58":2,"59":12,"60":12,"61":2,"62":0,"63":0},"fnMap":{"1":{"name":"noop","line":164,"loc":{"start":{"line":164,"column":0},"end":{"line":164,"column":16}}},"2":{"name":"(anonymous_2)","line":173,"loc":{"start":{"line":173,"column":9},"end":{"line":173,"column":20}}},"3":{"name":"IncomingMessage","line":182,"loc":{"start":{"line":182,"column":0},"end":{"line":182,"column":33}}},"4":{"name":"_onHeaders","line":211,"loc":{"start":{"line":211,"column":39},"end":{"line":211,"column":68}}},"5":{"name":"(anonymous_5)","line":234,"loc":{"start":{"line":234,"column":28},"end":{"line":234,"column":46}}},"6":{"name":"_onEnd","line":239,"loc":{"start":{"line":239,"column":35},"end":{"line":239,"column":53}}},"7":{"name":"_checkSpecialHeader","line":245,"loc":{"start":{"line":245,"column":48},"end":{"line":245,"column":89}}},"8":{"name":"OutgoingMessage","line":258,"loc":{"start":{"line":258,"column":0},"end":{"line":258,"column":27}}},"9":{"name":"_write","line":270,"loc":{"start":{"line":270,"column":35},"end":{"line":270,"column":78}}},"10":{"name":"_finish","line":278,"loc":{"start":{"line":278,"column":36},"end":{"line":278,"column":55}}},"11":{"name":"setHeader","line":293,"loc":{"start":{"line":293,"column":38},"end":{"line":293,"column":70}}},"12":{"name":"removeHeader","line":305,"loc":{"start":{"line":305,"column":41},"end":{"line":305,"column":69}}},"13":{"name":"getHeader","line":313,"loc":{"start":{"line":313,"column":38},"end":{"line":313,"column":63}}},"14":{"name":"addTrailers","line":317,"loc":{"start":{"line":317,"column":40},"end":{"line":317,"column":71}}},"15":{"name":"Server","line":337,"loc":{"start":{"line":337,"column":0},"end":{"line":337,"column":25}}},"16":{"name":"(anonymous_16)","line":355,"loc":{"start":{"line":355,"column":40},"end":{"line":355,"column":57}}},"17":{"name":"_start","line":384,"loc":{"start":{"line":384,"column":26},"end":{"line":384,"column":50}}},"18":{"name":"_onStream","line":395,"loc":{"start":{"line":395,"column":24},"end":{"line":395,"column":51}}},"19":{"name":"_fallback","line":408,"loc":{"start":{"line":408,"column":29},"end":{"line":408,"column":56}}},"20":{"name":"listen","line":426,"loc":{"start":{"line":426,"column":26},"end":{"line":426,"column":58}}},"21":{"name":"close","line":432,"loc":{"start":{"line":432,"column":25},"end":{"line":432,"column":50}}},"22":{"name":"setTimeout","line":437,"loc":{"start":{"line":437,"column":30},"end":{"line":437,"column":69}}},"23":{"name":"getTimeout","line":444,"loc":{"start":{"line":444,"column":7},"end":{"line":444,"column":29}}},"24":{"name":"setTimeout","line":451,"loc":{"start":{"line":451,"column":7},"end":{"line":451,"column":36}}},"25":{"name":"on","line":462,"loc":{"start":{"line":462,"column":22},"end":{"line":462,"column":51}}},"26":{"name":"addContext","line":471,"loc":{"start":{"line":471,"column":30},"end":{"line":471,"column":73}}},"27":{"name":"createServer","line":477,"loc":{"start":{"line":477,"column":0},"end":{"line":477,"column":48}}},"28":{"name":"IncomingRequest","line":495,"loc":{"start":{"line":495,"column":0},"end":{"line":495,"column":33}}},"29":{"name":"_onHeaders","line":504,"loc":{"start":{"line":504,"column":39},"end":{"line":504,"column":68}}},"30":{"name":"OutgoingResponse","line":535,"loc":{"start":{"line":535,"column":0},"end":{"line":535,"column":34}}},"31":{"name":"writeHead","line":548,"loc":{"start":{"line":548,"column":39},"end":{"line":548,"column":93}}},"32":{"name":"_implicitHeaders","line":572,"loc":{"start":{"line":572,"column":46},"end":{"line":572,"column":74}}},"33":{"name":"write","line":578,"loc":{"start":{"line":578,"column":35},"end":{"line":578,"column":52}}},"34":{"name":"end","line":583,"loc":{"start":{"line":583,"column":33},"end":{"line":583,"column":48}}},"35":{"name":"_onRequestHeaders","line":588,"loc":{"start":{"line":588,"column":47},"end":{"line":588,"column":83}}},"36":{"name":"push","line":592,"loc":{"start":{"line":592,"column":34},"end":{"line":592,"column":57}}},"37":{"name":"on","line":619,"loc":{"start":{"line":619,"column":32},"end":{"line":619,"column":61}}},"38":{"name":"request","line":635,"loc":{"start":{"line":635,"column":18},"end":{"line":635,"column":54}}},"39":{"name":"get","line":638,"loc":{"start":{"line":638,"column":14},"end":{"line":638,"column":46}}},"40":{"name":"Agent","line":645,"loc":{"start":{"line":645,"column":0},"end":{"line":645,"column":24}}},"41":{"name":"request","line":668,"loc":{"start":{"line":668,"column":26},"end":{"line":668,"column":62}}},"42":{"name":"(anonymous_42)","line":725,"loc":{"start":{"line":725,"column":30},"end":{"line":725,"column":47}}},"43":{"name":"negotiated","line":735,"loc":{"start":{"line":735,"column":4},"end":{"line":735,"column":26}}},"44":{"name":"(anonymous_44)","line":763,"loc":{"start":{"line":763,"column":19},"end":{"line":763,"column":38}}},"45":{"name":"get","line":776,"loc":{"start":{"line":776,"column":22},"end":{"line":776,"column":54}}},"46":{"name":"unbundleSocket","line":782,"loc":{"start":{"line":782,"column":0},"end":{"line":782,"column":32}}},"47":{"name":"getMaxSockets","line":794,"loc":{"start":{"line":794,"column":7},"end":{"line":794,"column":32}}},"48":{"name":"setMaxSockets","line":797,"loc":{"start":{"line":797,"column":7},"end":{"line":797,"column":37}}},"49":{"name":"OutgoingRequest","line":807,"loc":{"start":{"line":807,"column":0},"end":{"line":807,"column":27}}},"50":{"name":"_start","line":816,"loc":{"start":{"line":816,"column":35},"end":{"line":816,"column":68}}},"51":{"name":"_fallback","line":850,"loc":{"start":{"line":850,"column":38},"end":{"line":850,"column":66}}},"52":{"name":"setPriority","line":856,"loc":{"start":{"line":856,"column":40},"end":{"line":856,"column":71}}},"53":{"name":"on","line":866,"loc":{"start":{"line":866,"column":31},"end":{"line":866,"column":60}}},"54":{"name":"setNoDelay","line":875,"loc":{"start":{"line":875,"column":39},"end":{"line":875,"column":68}}},"55":{"name":"setSocketKeepAlive","line":883,"loc":{"start":{"line":883,"column":47},"end":{"line":883,"column":97}}},"56":{"name":"setTimeout","line":891,"loc":{"start":{"line":891,"column":39},"end":{"line":891,"column":78}}},"57":{"name":"abort","line":900,"loc":{"start":{"line":900,"column":34},"end":{"line":900,"column":51}}},"58":{"name":"_onPromise","line":911,"loc":{"start":{"line":911,"column":39},"end":{"line":911,"column":76}}},"59":{"name":"IncomingResponse","line":926,"loc":{"start":{"line":926,"column":0},"end":{"line":926,"column":34}}},"60":{"name":"_onHeaders","line":935,"loc":{"start":{"line":935,"column":40},"end":{"line":935,"column":69}}},"61":{"name":"IncomingPromise","line":956,"loc":{"start":{"line":956,"column":0},"end":{"line":956,"column":57}}},"62":{"name":"cancel","line":975,"loc":{"start":{"line":975,"column":35},"end":{"line":975,"column":53}}},"63":{"name":"setPriority","line":979,"loc":{"start":{"line":979,"column":40},"end":{"line":979,"column":71}}}},"statementMap":{"1":{"start":{"line":131,"column":0},"end":{"line":131,"column":25}},"2":{"start":{"line":132,"column":0},"end":{"line":132,"column":25}},"3":{"start":{"line":133,"column":0},"end":{"line":133,"column":27}},"4":{"start":{"line":134,"column":0},"end":{"line":134,"column":50}},"5":{"start":{"line":135,"column":0},"end":{"line":135,"column":48}},"6":{"start":{"line":136,"column":0},"end":{"line":136,"column":42}},"7":{"start":{"line":137,"column":0},"end":{"line":137,"column":42}},"8":{"start":{"line":138,"column":0},"end":{"line":138,"column":50}},"9":{"start":{"line":139,"column":0},"end":{"line":139,"column":70}},"10":{"start":{"line":140,"column":0},"end":{"line":140,"column":27}},"11":{"start":{"line":141,"column":0},"end":{"line":141,"column":29}},"12":{"start":{"line":143,"column":0},"end":{"line":143,"column":41}},"13":{"start":{"line":144,"column":0},"end":{"line":144,"column":42}},"14":{"start":{"line":145,"column":0},"end":{"line":145,"column":42}},"15":{"start":{"line":147,"column":0},"end":{"line":155,"column":2}},"16":{"start":{"line":158,"column":0},"end":{"line":158,"column":70}},"17":{"start":{"line":164,"column":0},"end":{"line":164,"column":18}},"18":{"start":{"line":165,"column":0},"end":{"line":174,"column":2}},"19":{"start":{"line":173,"column":22},"end":{"line":173,"column":34}},"20":{"start":{"line":177,"column":0},"end":{"line":177,"column":60}},"21":{"start":{"line":182,"column":0},"end":{"line":204,"column":1}},"22":{"start":{"line":184,"column":2},"end":{"line":184,"column":25}},"23":{"start":{"line":185,"column":2},"end":{"line":185,"column":20}},"24":{"start":{"line":186,"column":2},"end":{"line":186,"column":37}},"25":{"start":{"line":188,"column":2},"end":{"line":188,"column":55}},"26":{"start":{"line":192,"column":2},"end":{"line":192,"column":27}},"27":{"start":{"line":193,"column":2},"end":{"line":193,"column":28}},"28":{"start":{"line":194,"column":2},"end":{"line":194,"column":28}},"29":{"start":{"line":197,"column":2},"end":{"line":197,"column":20}},"30":{"start":{"line":198,"column":2},"end":{"line":198,"column":28}},"31":{"start":{"line":199,"column":2},"end":{"line":199,"column":36}},"32":{"start":{"line":202,"column":2},"end":{"line":202,"column":53}},"33":{"start":{"line":203,"column":2},"end":{"line":203,"column":45}},"34":{"start":{"line":205,"column":0},"end":{"line":205,"column":110}},"35":{"start":{"line":211,"column":0},"end":{"line":237,"column":2}},"36":{"start":{"line":216,"column":2},"end":{"line":223,"column":3}},"37":{"start":{"line":217,"column":4},"end":{"line":217,"column":35}},"38":{"start":{"line":218,"column":4},"end":{"line":222,"column":5}},"39":{"start":{"line":219,"column":6},"end":{"line":219,"column":84}},"40":{"start":{"line":220,"column":6},"end":{"line":220,"column":50}},"41":{"start":{"line":221,"column":6},"end":{"line":221,"column":13}},"42":{"start":{"line":226,"column":2},"end":{"line":230,"column":3}},"43":{"start":{"line":227,"column":4},"end":{"line":229,"column":5}},"44":{"start":{"line":228,"column":6},"end":{"line":228,"column":41}},"45":{"start":{"line":233,"column":2},"end":{"line":233,"column":18}},"46":{"start":{"line":234,"column":2},"end":{"line":236,"column":5}},"47":{"start":{"line":235,"column":4},"end":{"line":235,"column":36}},"48":{"start":{"line":239,"column":0},"end":{"line":241,"column":2}},"49":{"start":{"line":240,"column":2},"end":{"line":240,"column":40}},"50":{"start":{"line":243,"column":0},"end":{"line":243,"column":44}},"51":{"start":{"line":245,"column":0},"end":{"line":253,"column":0}},"52":{"start":{"line":246,"column":2},"end":{"line":249,"column":3}},"53":{"start":{"line":247,"column":4},"end":{"line":247,"column":91}},"54":{"start":{"line":248,"column":4},"end":{"line":248,"column":48}},"55":{"start":{"line":251,"column":2},"end":{"line":251,"column":15}},"56":{"start":{"line":258,"column":0},"end":{"line":267,"column":1}},"57":{"start":{"line":260,"column":2},"end":{"line":260,"column":22}},"58":{"start":{"line":262,"column":2},"end":{"line":262,"column":21}},"59":{"start":{"line":263,"column":2},"end":{"line":263,"column":29}},"60":{"start":{"line":264,"column":2},"end":{"line":264,"column":27}},"61":{"start":{"line":266,"column":2},"end":{"line":266,"column":34}},"62":{"start":{"line":268,"column":0},"end":{"line":268,"column":107}},"63":{"start":{"line":270,"column":0},"end":{"line":276,"column":2}},"64":{"start":{"line":271,"column":2},"end":{"line":275,"column":3}},"65":{"start":{"line":272,"column":4},"end":{"line":272,"column":49}},"66":{"start":{"line":274,"column":4},"end":{"line":274,"column":75}},"67":{"start":{"line":278,"column":0},"end":{"line":291,"column":2}},"68":{"start":{"line":279,"column":2},"end":{"line":290,"column":3}},"69":{"start":{"line":280,"column":4},"end":{"line":286,"column":5}},"70":{"start":{"line":281,"column":6},"end":{"line":285,"column":7}},"71":{"start":{"line":282,"column":8},"end":{"line":282,"column":49}},"72":{"start":{"line":284,"column":8},"end":{"line":284,"column":44}},"73":{"start":{"line":287,"column":4},"end":{"line":287,"column":22}},"74":{"start":{"line":289,"column":4},"end":{"line":289,"column":49}},"75":{"start":{"line":293,"column":0},"end":{"line":303,"column":2}},"76":{"start":{"line":294,"column":2},"end":{"line":302,"column":3}},"77":{"start":{"line":295,"column":4},"end":{"line":295,"column":63}},"78":{"start":{"line":297,"column":4},"end":{"line":297,"column":30}},"79":{"start":{"line":298,"column":4},"end":{"line":300,"column":5}},"80":{"start":{"line":299,"column":6},"end":{"line":299,"column":63}},"81":{"start":{"line":301,"column":4},"end":{"line":301,"column":32}},"82":{"start":{"line":305,"column":0},"end":{"line":311,"column":2}},"83":{"start":{"line":306,"column":2},"end":{"line":310,"column":3}},"84":{"start":{"line":307,"column":4},"end":{"line":307,"column":66}},"85":{"start":{"line":309,"column":4},"end":{"line":309,"column":45}},"86":{"start":{"line":313,"column":0},"end":{"line":315,"column":2}},"87":{"start":{"line":314,"column":2},"end":{"line":314,"column":43}},"88":{"start":{"line":317,"column":0},"end":{"line":319,"column":2}},"89":{"start":{"line":318,"column":2},"end":{"line":318,"column":28}},"90":{"start":{"line":321,"column":0},"end":{"line":321,"column":44}},"91":{"start":{"line":323,"column":0},"end":{"line":323,"column":94}},"92":{"start":{"line":328,"column":0},"end":{"line":328,"column":36}},"93":{"start":{"line":329,"column":0},"end":{"line":329,"column":24}},"94":{"start":{"line":330,"column":0},"end":{"line":330,"column":42}},"95":{"start":{"line":331,"column":0},"end":{"line":331,"column":44}},"96":{"start":{"line":332,"column":0},"end":{"line":332,"column":42}},"97":{"start":{"line":337,"column":0},"end":{"line":380,"column":1}},"98":{"start":{"line":338,"column":2},"end":{"line":338,"column":38}},"99":{"start":{"line":340,"column":2},"end":{"line":340,"column":74}},"100":{"start":{"line":341,"column":2},"end":{"line":341,"column":36}},"101":{"start":{"line":343,"column":2},"end":{"line":343,"column":37}},"102":{"start":{"line":344,"column":2},"end":{"line":344,"column":43}},"103":{"start":{"line":347,"column":2},"end":{"line":377,"column":3}},"104":{"start":{"line":348,"column":4},"end":{"line":348,"column":54}},"105":{"start":{"line":349,"column":4},"end":{"line":349,"column":23}},"106":{"start":{"line":350,"column":4},"end":{"line":350,"column":47}},"107":{"start":{"line":351,"column":4},"end":{"line":351,"column":46}},"108":{"start":{"line":352,"column":4},"end":{"line":352,"column":47}},"109":{"start":{"line":353,"column":4},"end":{"line":353,"column":79}},"110":{"start":{"line":354,"column":4},"end":{"line":354,"column":56}},"111":{"start":{"line":355,"column":4},"end":{"line":362,"column":7}},"112":{"start":{"line":356,"column":6},"end":{"line":356,"column":73}},"113":{"start":{"line":357,"column":6},"end":{"line":361,"column":7}},"114":{"start":{"line":358,"column":8},"end":{"line":358,"column":22}},"115":{"start":{"line":360,"column":8},"end":{"line":360,"column":25}},"116":{"start":{"line":363,"column":4},"end":{"line":363,"column":64}},"117":{"start":{"line":367,"column":7},"end":{"line":377,"column":3}},"118":{"start":{"line":368,"column":4},"end":{"line":368,"column":60}},"119":{"start":{"line":369,"column":4},"end":{"line":369,"column":25}},"120":{"start":{"line":370,"column":4},"end":{"line":370,"column":43}},"121":{"start":{"line":375,"column":4},"end":{"line":375,"column":81}},"122":{"start":{"line":376,"column":4},"end":{"line":376,"column":95}},"123":{"start":{"line":379,"column":2},"end":{"line":379,"column":58}},"124":{"start":{"line":381,"column":0},"end":{"line":381,"column":93}},"125":{"start":{"line":384,"column":0},"end":{"line":406,"column":2}},"126":{"start":{"line":385,"column":2},"end":{"line":385,"column":67}},"127":{"start":{"line":387,"column":2},"end":{"line":390,"column":54}},"128":{"start":{"line":392,"column":2},"end":{"line":392,"column":39}},"129":{"start":{"line":394,"column":2},"end":{"line":394,"column":18}},"130":{"start":{"line":395,"column":2},"end":{"line":400,"column":5}},"131":{"start":{"line":396,"column":4},"end":{"line":396,"column":48}},"132":{"start":{"line":397,"column":4},"end":{"line":397,"column":46}},"133":{"start":{"line":399,"column":4},"end":{"line":399,"column":78}},"134":{"start":{"line":402,"column":2},"end":{"line":402,"column":60}},"135":{"start":{"line":403,"column":2},"end":{"line":403,"column":58}},"136":{"start":{"line":405,"column":2},"end":{"line":405,"column":44}},"137":{"start":{"line":408,"column":0},"end":{"line":421,"column":2}},"138":{"start":{"line":409,"column":2},"end":{"line":409,"column":69}},"139":{"start":{"line":411,"column":2},"end":{"line":414,"column":52}},"140":{"start":{"line":416,"column":2},"end":{"line":418,"column":3}},"141":{"start":{"line":417,"column":4},"end":{"line":417,"column":64}},"142":{"start":{"line":420,"column":2},"end":{"line":420,"column":34}},"143":{"start":{"line":426,"column":0},"end":{"line":430,"column":2}},"144":{"start":{"line":427,"column":2},"end":{"line":428,"column":55}},"145":{"start":{"line":429,"column":2},"end":{"line":429,"column":53}},"146":{"start":{"line":432,"column":0},"end":{"line":435,"column":2}},"147":{"start":{"line":433,"column":2},"end":{"line":433,"column":35}},"148":{"start":{"line":434,"column":2},"end":{"line":434,"column":31}},"149":{"start":{"line":437,"column":0},"end":{"line":441,"column":2}},"150":{"start":{"line":438,"column":2},"end":{"line":440,"column":3}},"151":{"start":{"line":439,"column":4},"end":{"line":439,"column":47}},"152":{"start":{"line":443,"column":0},"end":{"line":456,"column":3}},"153":{"start":{"line":445,"column":4},"end":{"line":449,"column":5}},"154":{"start":{"line":446,"column":6},"end":{"line":446,"column":34}},"155":{"start":{"line":448,"column":6},"end":{"line":448,"column":23}},"156":{"start":{"line":452,"column":4},"end":{"line":454,"column":5}},"157":{"start":{"line":453,"column":6},"end":{"line":453,"column":37}},"158":{"start":{"line":462,"column":0},"end":{"line":468,"column":2}},"159":{"start":{"line":463,"column":2},"end":{"line":467,"column":3}},"160":{"start":{"line":464,"column":4},"end":{"line":464,"column":60}},"161":{"start":{"line":466,"column":4},"end":{"line":466,"column":58}},"162":{"start":{"line":471,"column":0},"end":{"line":475,"column":2}},"163":{"start":{"line":472,"column":2},"end":{"line":474,"column":3}},"164":{"start":{"line":473,"column":4},"end":{"line":473,"column":51}},"165":{"start":{"line":477,"column":0},"end":{"line":490,"column":1}},"166":{"start":{"line":478,"column":2},"end":{"line":481,"column":3}},"167":{"start":{"line":479,"column":4},"end":{"line":479,"column":30}},"168":{"start":{"line":480,"column":4},"end":{"line":480,"column":24}},"169":{"start":{"line":483,"column":2},"end":{"line":483,"column":35}},"170":{"start":{"line":485,"column":2},"end":{"line":487,"column":3}},"171":{"start":{"line":486,"column":4},"end":{"line":486,"column":42}},"172":{"start":{"line":489,"column":2},"end":{"line":489,"column":16}},"173":{"start":{"line":495,"column":0},"end":{"line":497,"column":1}},"174":{"start":{"line":496,"column":2},"end":{"line":496,"column":37}},"175":{"start":{"line":498,"column":0},"end":{"line":498,"column":114}},"176":{"start":{"line":504,"column":0},"end":{"line":530,"column":2}},"177":{"start":{"line":515,"column":2},"end":{"line":515,"column":75}},"178":{"start":{"line":516,"column":2},"end":{"line":516,"column":75}},"179":{"start":{"line":517,"column":2},"end":{"line":517,"column":80}},"180":{"start":{"line":518,"column":2},"end":{"line":518,"column":75}},"181":{"start":{"line":521,"column":2},"end":{"line":521,"column":32}},"182":{"start":{"line":524,"column":2},"end":{"line":524,"column":59}},"183":{"start":{"line":527,"column":2},"end":{"line":528,"column":80}},"184":{"start":{"line":529,"column":2},"end":{"line":529,"column":21}},"185":{"start":{"line":535,"column":0},"end":{"line":545,"column":1}},"186":{"start":{"line":536,"column":2},"end":{"line":536,"column":29}},"187":{"start":{"line":538,"column":2},"end":{"line":538,"column":55}},"188":{"start":{"line":540,"column":2},"end":{"line":540,"column":23}},"189":{"start":{"line":541,"column":2},"end":{"line":541,"column":24}},"190":{"start":{"line":542,"column":2},"end":{"line":542,"column":23}},"191":{"start":{"line":544,"column":2},"end":{"line":544,"column":65}},"192":{"start":{"line":546,"column":0},"end":{"line":546,"column":116}},"193":{"start":{"line":548,"column":0},"end":{"line":570,"column":2}},"194":{"start":{"line":549,"column":2},"end":{"line":553,"column":3}},"195":{"start":{"line":550,"column":4},"end":{"line":550,"column":93}},"196":{"start":{"line":552,"column":4},"end":{"line":552,"column":27}},"197":{"start":{"line":555,"column":2},"end":{"line":557,"column":3}},"198":{"start":{"line":556,"column":4},"end":{"line":556,"column":40}},"199":{"start":{"line":558,"column":2},"end":{"line":558,"column":26}},"200":{"start":{"line":560,"column":2},"end":{"line":562,"column":3}},"201":{"start":{"line":561,"column":4},"end":{"line":561,"column":46}},"202":{"start":{"line":564,"column":2},"end":{"line":564,"column":92}},"203":{"start":{"line":566,"column":2},"end":{"line":566,"column":52}},"204":{"start":{"line":568,"column":2},"end":{"line":568,"column":31}},"205":{"start":{"line":569,"column":2},"end":{"line":569,"column":26}},"206":{"start":{"line":572,"column":0},"end":{"line":576,"column":2}},"207":{"start":{"line":573,"column":2},"end":{"line":575,"column":3}},"208":{"start":{"line":574,"column":4},"end":{"line":574,"column":36}},"209":{"start":{"line":578,"column":0},"end":{"line":581,"column":2}},"210":{"start":{"line":579,"column":2},"end":{"line":579,"column":26}},"211":{"start":{"line":580,"column":2},"end":{"line":580,"column":64}},"212":{"start":{"line":583,"column":0},"end":{"line":586,"column":2}},"213":{"start":{"line":584,"column":2},"end":{"line":584,"column":26}},"214":{"start":{"line":585,"column":2},"end":{"line":585,"column":62}},"215":{"start":{"line":588,"column":0},"end":{"line":590,"column":2}},"216":{"start":{"line":589,"column":2},"end":{"line":589,"column":33}},"217":{"start":{"line":592,"column":0},"end":{"line":615,"column":2}},"218":{"start":{"line":593,"column":2},"end":{"line":595,"column":3}},"219":{"start":{"line":594,"column":4},"end":{"line":594,"column":33}},"220":{"start":{"line":597,"column":2},"end":{"line":599,"column":3}},"221":{"start":{"line":598,"column":4},"end":{"line":598,"column":51}},"222":{"start":{"line":601,"column":2},"end":{"line":606,"column":22}},"223":{"start":{"line":608,"column":2},"end":{"line":610,"column":72}},"224":{"start":{"line":612,"column":2},"end":{"line":612,"column":48}},"225":{"start":{"line":614,"column":2},"end":{"line":614,"column":42}},"226":{"start":{"line":619,"column":0},"end":{"line":625,"column":2}},"227":{"start":{"line":620,"column":2},"end":{"line":624,"column":3}},"228":{"start":{"line":621,"column":4},"end":{"line":621,"column":60}},"229":{"start":{"line":623,"column":4},"end":{"line":623,"column":61}},"230":{"start":{"line":630,"column":0},"end":{"line":630,"column":40}},"231":{"start":{"line":631,"column":0},"end":{"line":631,"column":42}},"232":{"start":{"line":632,"column":0},"end":{"line":632,"column":44}},"233":{"start":{"line":633,"column":0},"end":{"line":633,"column":22}},"234":{"start":{"line":634,"column":0},"end":{"line":634,"column":32}},"235":{"start":{"line":635,"column":0},"end":{"line":637,"column":2}},"236":{"start":{"line":636,"column":2},"end":{"line":636,"column":75}},"237":{"start":{"line":638,"column":0},"end":{"line":640,"column":2}},"238":{"start":{"line":639,"column":2},"end":{"line":639,"column":71}},"239":{"start":{"line":645,"column":0},"end":{"line":665,"column":1}},"240":{"start":{"line":646,"column":2},"end":{"line":646,"column":26}},"241":{"start":{"line":648,"column":2},"end":{"line":648,"column":38}},"242":{"start":{"line":650,"column":2},"end":{"line":650,"column":36}},"243":{"start":{"line":651,"column":2},"end":{"line":651,"column":74}},"244":{"start":{"line":652,"column":2},"end":{"line":652,"column":22}},"245":{"start":{"line":658,"column":2},"end":{"line":658,"column":24}},"246":{"start":{"line":659,"column":2},"end":{"line":659,"column":50}},"247":{"start":{"line":660,"column":2},"end":{"line":660,"column":49}},"248":{"start":{"line":661,"column":2},"end":{"line":661,"column":51}},"249":{"start":{"line":663,"column":2},"end":{"line":663,"column":42}},"250":{"start":{"line":664,"column":2},"end":{"line":664,"column":44}},"251":{"start":{"line":666,"column":0},"end":{"line":666,"column":91}},"252":{"start":{"line":668,"column":0},"end":{"line":774,"column":2}},"253":{"start":{"line":669,"column":2},"end":{"line":673,"column":3}},"254":{"start":{"line":670,"column":4},"end":{"line":670,"column":33}},"255":{"start":{"line":672,"column":4},"end":{"line":672,"column":40}},"256":{"start":{"line":675,"column":2},"end":{"line":675,"column":59}},"257":{"start":{"line":676,"column":2},"end":{"line":676,"column":50}},"258":{"start":{"line":677,"column":2},"end":{"line":677,"column":65}},"259":{"start":{"line":678,"column":2},"end":{"line":678,"column":37}},"260":{"start":{"line":679,"column":2},"end":{"line":679,"column":37}},"261":{"start":{"line":681,"column":2},"end":{"line":684,"column":3}},"262":{"start":{"line":682,"column":4},"end":{"line":682,"column":85}},"263":{"start":{"line":683,"column":4},"end":{"line":683,"column":70}},"264":{"start":{"line":686,"column":2},"end":{"line":686,"column":47}},"265":{"start":{"line":688,"column":2},"end":{"line":690,"column":3}},"266":{"start":{"line":689,"column":4},"end":{"line":689,"column":37}},"267":{"start":{"line":692,"column":2},"end":{"line":696,"column":14}},"268":{"start":{"line":699,"column":2},"end":{"line":771,"column":3}},"269":{"start":{"line":700,"column":4},"end":{"line":700,"column":39}},"270":{"start":{"line":701,"column":4},"end":{"line":701,"column":53}},"271":{"start":{"line":705,"column":7},"end":{"line":771,"column":3}},"272":{"start":{"line":706,"column":4},"end":{"line":706,"column":65}},"273":{"start":{"line":707,"column":4},"end":{"line":711,"column":7}},"274":{"start":{"line":712,"column":4},"end":{"line":712,"column":50}},"275":{"start":{"line":713,"column":4},"end":{"line":713,"column":53}},"276":{"start":{"line":718,"column":4},"end":{"line":718,"column":24}},"277":{"start":{"line":719,"column":4},"end":{"line":719,"column":47}},"278":{"start":{"line":720,"column":4},"end":{"line":720,"column":46}},"279":{"start":{"line":721,"column":4},"end":{"line":721,"column":38}},"280":{"start":{"line":722,"column":4},"end":{"line":722,"column":37}},"281":{"start":{"line":723,"column":4},"end":{"line":723,"column":46}},"282":{"start":{"line":725,"column":4},"end":{"line":732,"column":7}},"283":{"start":{"line":726,"column":6},"end":{"line":726,"column":73}},"284":{"start":{"line":727,"column":6},"end":{"line":731,"column":7}},"285":{"start":{"line":728,"column":8},"end":{"line":728,"column":21}},"286":{"start":{"line":730,"column":8},"end":{"line":730,"column":47}},"287":{"start":{"line":734,"column":4},"end":{"line":734,"column":20}},"288":{"start":{"line":735,"column":4},"end":{"line":761,"column":5}},"289":{"start":{"line":736,"column":6},"end":{"line":736,"column":19}},"290":{"start":{"line":737,"column":6},"end":{"line":737,"column":99}},"291":{"start":{"line":738,"column":6},"end":{"line":744,"column":7}},"292":{"start":{"line":739,"column":8},"end":{"line":739,"column":48}},"293":{"start":{"line":740,"column":8},"end":{"line":740,"column":44}},"294":{"start":{"line":741,"column":8},"end":{"line":741,"column":69}},"295":{"start":{"line":742,"column":8},"end":{"line":742,"column":46}},"296":{"start":{"line":743,"column":8},"end":{"line":743,"column":54}},"297":{"start":{"line":745,"column":6},"end":{"line":760,"column":7}},"298":{"start":{"line":746,"column":8},"end":{"line":750,"column":9}},"299":{"start":{"line":747,"column":10},"end":{"line":747,"column":27}},"300":{"start":{"line":749,"column":10},"end":{"line":749,"column":31}},"301":{"start":{"line":752,"column":8},"end":{"line":759,"column":9}},"302":{"start":{"line":753,"column":10},"end":{"line":754,"column":59}},"303":{"start":{"line":755,"column":10},"end":{"line":755,"column":41}},"304":{"start":{"line":756,"column":10},"end":{"line":756,"column":35}},"305":{"start":{"line":758,"column":10},"end":{"line":758,"column":36}},"306":{"start":{"line":763,"column":4},"end":{"line":770,"column":7}},"307":{"start":{"line":764,"column":6},"end":{"line":764,"column":21}},"308":{"start":{"line":765,"column":6},"end":{"line":769,"column":7}},"309":{"start":{"line":766,"column":8},"end":{"line":766,"column":57}},"310":{"start":{"line":768,"column":8},"end":{"line":768,"column":40}},"311":{"start":{"line":773,"column":2},"end":{"line":773,"column":17}},"312":{"start":{"line":776,"column":0},"end":{"line":780,"column":2}},"313":{"start":{"line":777,"column":2},"end":{"line":777,"column":48}},"314":{"start":{"line":778,"column":2},"end":{"line":778,"column":16}},"315":{"start":{"line":779,"column":2},"end":{"line":779,"column":17}},"316":{"start":{"line":782,"column":0},"end":{"line":791,"column":1}},"317":{"start":{"line":783,"column":2},"end":{"line":783,"column":36}},"318":{"start":{"line":784,"column":2},"end":{"line":784,"column":35}},"319":{"start":{"line":785,"column":2},"end":{"line":785,"column":40}},"320":{"start":{"line":786,"column":2},"end":{"line":786,"column":37}},"321":{"start":{"line":787,"column":2},"end":{"line":787,"column":37}},"322":{"start":{"line":788,"column":2},"end":{"line":788,"column":18}},"323":{"start":{"line":789,"column":2},"end":{"line":789,"column":23}},"324":{"start":{"line":790,"column":2},"end":{"line":790,"column":22}},"325":{"start":{"line":793,"column":0},"end":{"line":800,"column":3}},"326":{"start":{"line":795,"column":4},"end":{"line":795,"column":39}},"327":{"start":{"line":798,"column":4},"end":{"line":798,"column":40}},"328":{"start":{"line":802,"column":0},"end":{"line":802,"column":34}},"329":{"start":{"line":807,"column":0},"end":{"line":813,"column":1}},"330":{"start":{"line":808,"column":2},"end":{"line":808,"column":29}},"331":{"start":{"line":810,"column":2},"end":{"line":810,"column":24}},"332":{"start":{"line":812,"column":2},"end":{"line":812,"column":26}},"333":{"start":{"line":814,"column":0},"end":{"line":814,"column":114}},"334":{"start":{"line":816,"column":0},"end":{"line":848,"column":2}},"335":{"start":{"line":817,"column":2},"end":{"line":817,"column":23}},"336":{"start":{"line":819,"column":2},"end":{"line":819,"column":55}},"337":{"start":{"line":821,"column":2},"end":{"line":823,"column":3}},"338":{"start":{"line":822,"column":4},"end":{"line":822,"column":46}},"339":{"start":{"line":824,"column":2},"end":{"line":824,"column":30}},"340":{"start":{"line":825,"column":2},"end":{"line":825,"column":22}},"341":{"start":{"line":827,"column":2},"end":{"line":829,"column":3}},"342":{"start":{"line":828,"column":4},"end":{"line":828,"column":83}},"343":{"start":{"line":831,"column":2},"end":{"line":831,"column":53}},"344":{"start":{"line":832,"column":2},"end":{"line":832,"column":38}},"345":{"start":{"line":833,"column":2},"end":{"line":833,"column":39}},"346":{"start":{"line":834,"column":2},"end":{"line":834,"column":34}},"347":{"start":{"line":836,"column":2},"end":{"line":838,"column":74}},"348":{"start":{"line":839,"column":2},"end":{"line":839,"column":31}},"349":{"start":{"line":840,"column":2},"end":{"line":840,"column":26}},"350":{"start":{"line":842,"column":2},"end":{"line":842,"column":35}},"351":{"start":{"line":844,"column":2},"end":{"line":844,"column":51}},"352":{"start":{"line":845,"column":2},"end":{"line":845,"column":69}},"353":{"start":{"line":847,"column":2},"end":{"line":847,"column":56}},"354":{"start":{"line":850,"column":0},"end":{"line":854,"column":2}},"355":{"start":{"line":851,"column":2},"end":{"line":851,"column":59}},"356":{"start":{"line":852,"column":2},"end":{"line":852,"column":39}},"357":{"start":{"line":853,"column":2},"end":{"line":853,"column":35}},"358":{"start":{"line":856,"column":0},"end":{"line":862,"column":2}},"359":{"start":{"line":857,"column":2},"end":{"line":861,"column":3}},"360":{"start":{"line":858,"column":4},"end":{"line":858,"column":35}},"361":{"start":{"line":860,"column":4},"end":{"line":860,"column":63}},"362":{"start":{"line":866,"column":0},"end":{"line":872,"column":2}},"363":{"start":{"line":867,"column":2},"end":{"line":871,"column":3}},"364":{"start":{"line":868,"column":4},"end":{"line":868,"column":60}},"365":{"start":{"line":870,"column":4},"end":{"line":870,"column":61}},"366":{"start":{"line":875,"column":0},"end":{"line":881,"column":2}},"367":{"start":{"line":876,"column":2},"end":{"line":880,"column":3}},"368":{"start":{"line":877,"column":4},"end":{"line":877,"column":37}},"369":{"start":{"line":878,"column":9},"end":{"line":880,"column":3}},"370":{"start":{"line":879,"column":4},"end":{"line":879,"column":59}},"371":{"start":{"line":883,"column":0},"end":{"line":889,"column":2}},"372":{"start":{"line":884,"column":2},"end":{"line":888,"column":3}},"373":{"start":{"line":885,"column":4},"end":{"line":885,"column":58}},"374":{"start":{"line":886,"column":9},"end":{"line":888,"column":3}},"375":{"start":{"line":887,"column":4},"end":{"line":887,"column":80}},"376":{"start":{"line":891,"column":0},"end":{"line":897,"column":2}},"377":{"start":{"line":892,"column":2},"end":{"line":896,"column":3}},"378":{"start":{"line":893,"column":4},"end":{"line":893,"column":47}},"379":{"start":{"line":894,"column":9},"end":{"line":896,"column":3}},"380":{"start":{"line":895,"column":4},"end":{"line":895,"column":69}},"381":{"start":{"line":900,"column":0},"end":{"line":908,"column":2}},"382":{"start":{"line":901,"column":2},"end":{"line":907,"column":3}},"383":{"start":{"line":902,"column":4},"end":{"line":902,"column":25}},"384":{"start":{"line":903,"column":9},"end":{"line":907,"column":3}},"385":{"start":{"line":904,"column":4},"end":{"line":904,"column":32}},"386":{"start":{"line":906,"column":4},"end":{"line":906,"column":45}},"387":{"start":{"line":911,"column":0},"end":{"line":921,"column":2}},"388":{"start":{"line":912,"column":2},"end":{"line":912,"column":71}},"389":{"start":{"line":914,"column":2},"end":{"line":914,"column":53}},"390":{"start":{"line":916,"column":2},"end":{"line":920,"column":3}},"391":{"start":{"line":917,"column":4},"end":{"line":917,"column":31}},"392":{"start":{"line":919,"column":4},"end":{"line":919,"column":21}},"393":{"start":{"line":926,"column":0},"end":{"line":928,"column":1}},"394":{"start":{"line":927,"column":2},"end":{"line":927,"column":37}},"395":{"start":{"line":929,"column":0},"end":{"line":929,"column":116}},"396":{"start":{"line":935,"column":0},"end":{"line":951,"column":2}},"397":{"start":{"line":943,"column":2},"end":{"line":943,"column":86}},"398":{"start":{"line":946,"column":2},"end":{"line":946,"column":59}},"399":{"start":{"line":949,"column":2},"end":{"line":949,"column":89}},"400":{"start":{"line":950,"column":2},"end":{"line":950,"column":21}},"401":{"start":{"line":956,"column":0},"end":{"line":972,"column":1}},"402":{"start":{"line":957,"column":2},"end":{"line":957,"column":30}},"403":{"start":{"line":958,"column":2},"end":{"line":958,"column":22}},"404":{"start":{"line":959,"column":2},"end":{"line":959,"column":20}},"405":{"start":{"line":960,"column":2},"end":{"line":960,"column":36}},"406":{"start":{"line":962,"column":2},"end":{"line":962,"column":37}},"407":{"start":{"line":964,"column":2},"end":{"line":964,"column":34}},"408":{"start":{"line":966,"column":2},"end":{"line":966,"column":40}},"409":{"start":{"line":968,"column":2},"end":{"line":968,"column":60}},"410":{"start":{"line":969,"column":2},"end":{"line":969,"column":69}},"411":{"start":{"line":971,"column":2},"end":{"line":971,"column":56}},"412":{"start":{"line":973,"column":0},"end":{"line":973,"column":114}},"413":{"start":{"line":975,"column":0},"end":{"line":977,"column":2}},"414":{"start":{"line":976,"column":2},"end":{"line":976,"column":39}},"415":{"start":{"line":979,"column":0},"end":{"line":981,"column":2}},"416":{"start":{"line":980,"column":2},"end":{"line":980,"column":42}},"417":{"start":{"line":983,"column":0},"end":{"line":983,"column":76}}},"branchMap":{"1":{"line":218,"type":"if","locations":[{"start":{"line":218,"column":4},"end":{"line":218,"column":4}},{"start":{"line":218,"column":4},"end":{"line":218,"column":4}}]},"2":{"line":227,"type":"if","locations":[{"start":{"line":227,"column":4},"end":{"line":227,"column":4}},{"start":{"line":227,"column":4},"end":{"line":227,"column":4}}]},"3":{"line":246,"type":"if","locations":[{"start":{"line":246,"column":2},"end":{"line":246,"column":2}},{"start":{"line":246,"column":2},"end":{"line":246,"column":2}}]},"4":{"line":246,"type":"binary-expr","locations":[{"start":{"line":246,"column":7},"end":{"line":246,"column":32}},{"start":{"line":246,"column":38},"end":{"line":246,"column":56}}]},"5":{"line":271,"type":"if","locations":[{"start":{"line":271,"column":2},"end":{"line":271,"column":2}},{"start":{"line":271,"column":2},"end":{"line":271,"column":2}}]},"6":{"line":279,"type":"if","locations":[{"start":{"line":279,"column":2},"end":{"line":279,"column":2}},{"start":{"line":279,"column":2},"end":{"line":279,"column":2}}]},"7":{"line":280,"type":"if","locations":[{"start":{"line":280,"column":4},"end":{"line":280,"column":4}},{"start":{"line":280,"column":4},"end":{"line":280,"column":4}}]},"8":{"line":281,"type":"if","locations":[{"start":{"line":281,"column":6},"end":{"line":281,"column":6}},{"start":{"line":281,"column":6},"end":{"line":281,"column":6}}]},"9":{"line":294,"type":"if","locations":[{"start":{"line":294,"column":2},"end":{"line":294,"column":2}},{"start":{"line":294,"column":2},"end":{"line":294,"column":2}}]},"10":{"line":298,"type":"if","locations":[{"start":{"line":298,"column":4},"end":{"line":298,"column":4}},{"start":{"line":298,"column":4},"end":{"line":298,"column":4}}]},"11":{"line":306,"type":"if","locations":[{"start":{"line":306,"column":2},"end":{"line":306,"column":2}},{"start":{"line":306,"column":2},"end":{"line":306,"column":2}}]},"12":{"line":340,"type":"binary-expr","locations":[{"start":{"line":340,"column":15},"end":{"line":340,"column":26}},{"start":{"line":340,"column":30},"end":{"line":340,"column":43}}]},"13":{"line":347,"type":"if","locations":[{"start":{"line":347,"column":2},"end":{"line":347,"column":2}},{"start":{"line":347,"column":2},"end":{"line":347,"column":2}}]},"14":{"line":347,"type":"binary-expr","locations":[{"start":{"line":347,"column":7},"end":{"line":347,"column":18}},{"start":{"line":347,"column":22},"end":{"line":347,"column":34}},{"start":{"line":347,"column":39},"end":{"line":347,"column":50}}]},"15":{"line":356,"type":"binary-expr","locations":[{"start":{"line":356,"column":31},"end":{"line":356,"column":50}},{"start":{"line":356,"column":54},"end":{"line":356,"column":72}}]},"16":{"line":357,"type":"if","locations":[{"start":{"line":357,"column":6},"end":{"line":357,"column":6}},{"start":{"line":357,"column":6},"end":{"line":357,"column":6}}]},"17":{"line":357,"type":"binary-expr","locations":[{"start":{"line":357,"column":11},"end":{"line":357,"column":52}},{"start":{"line":357,"column":57},"end":{"line":357,"column":74}}]},"18":{"line":367,"type":"if","locations":[{"start":{"line":367,"column":7},"end":{"line":367,"column":7}},{"start":{"line":367,"column":7},"end":{"line":367,"column":7}}]},"19":{"line":409,"type":"binary-expr","locations":[{"start":{"line":409,"column":27},"end":{"line":409,"column":46}},{"start":{"line":409,"column":50},"end":{"line":409,"column":68}}]},"20":{"line":427,"type":"cond-expr","locations":[{"start":{"line":427,"column":58},"end":{"line":427,"column":79}},{"start":{"line":427,"column":83},"end":{"line":427,"column":87}}]},"21":{"line":438,"type":"if","locations":[{"start":{"line":438,"column":2},"end":{"line":438,"column":2}},{"start":{"line":438,"column":2},"end":{"line":438,"column":2}}]},"22":{"line":445,"type":"if","locations":[{"start":{"line":445,"column":4},"end":{"line":445,"column":4}},{"start":{"line":445,"column":4},"end":{"line":445,"column":4}}]},"23":{"line":452,"type":"if","locations":[{"start":{"line":452,"column":4},"end":{"line":452,"column":4}},{"start":{"line":452,"column":4},"end":{"line":452,"column":4}}]},"24":{"line":463,"type":"if","locations":[{"start":{"line":463,"column":2},"end":{"line":463,"column":2}},{"start":{"line":463,"column":2},"end":{"line":463,"column":2}}]},"25":{"line":463,"type":"binary-expr","locations":[{"start":{"line":463,"column":7},"end":{"line":463,"column":26}},{"start":{"line":463,"column":32},"end":{"line":463,"column":51}}]},"26":{"line":464,"type":"binary-expr","locations":[{"start":{"line":464,"column":27},"end":{"line":464,"column":35}},{"start":{"line":464,"column":39},"end":{"line":464,"column":58}}]},"27":{"line":472,"type":"if","locations":[{"start":{"line":472,"column":2},"end":{"line":472,"column":2}},{"start":{"line":472,"column":2},"end":{"line":472,"column":2}}]},"28":{"line":478,"type":"if","locations":[{"start":{"line":478,"column":2},"end":{"line":478,"column":2}},{"start":{"line":478,"column":2},"end":{"line":478,"column":2}}]},"29":{"line":485,"type":"if","locations":[{"start":{"line":485,"column":2},"end":{"line":485,"column":2}},{"start":{"line":485,"column":2},"end":{"line":485,"column":2}}]},"30":{"line":549,"type":"if","locations":[{"start":{"line":549,"column":2},"end":{"line":549,"column":2}},{"start":{"line":549,"column":2},"end":{"line":549,"column":2}}]},"31":{"line":560,"type":"if","locations":[{"start":{"line":560,"column":2},"end":{"line":560,"column":2}},{"start":{"line":560,"column":2},"end":{"line":560,"column":2}}]},"32":{"line":560,"type":"binary-expr","locations":[{"start":{"line":560,"column":6},"end":{"line":560,"column":19}},{"start":{"line":560,"column":23},"end":{"line":560,"column":49}}]},"33":{"line":573,"type":"if","locations":[{"start":{"line":573,"column":2},"end":{"line":573,"column":2}},{"start":{"line":573,"column":2},"end":{"line":573,"column":2}}]},"34":{"line":593,"type":"if","locations":[{"start":{"line":593,"column":2},"end":{"line":593,"column":2}},{"start":{"line":593,"column":2},"end":{"line":593,"column":2}}]},"35":{"line":597,"type":"if","locations":[{"start":{"line":597,"column":2},"end":{"line":597,"column":2}},{"start":{"line":597,"column":2},"end":{"line":597,"column":2}}]},"36":{"line":602,"type":"binary-expr","locations":[{"start":{"line":602,"column":16},"end":{"line":602,"column":30}},{"start":{"line":602,"column":34},"end":{"line":602,"column":39}}]},"37":{"line":603,"type":"binary-expr","locations":[{"start":{"line":603,"column":16},"end":{"line":603,"column":32}},{"start":{"line":603,"column":36},"end":{"line":603,"column":65}},{"start":{"line":603,"column":70},"end":{"line":603,"column":101}}]},"38":{"line":604,"type":"binary-expr","locations":[{"start":{"line":604,"column":18},"end":{"line":604,"column":34}},{"start":{"line":604,"column":38},"end":{"line":604,"column":50}},{"start":{"line":604,"column":54},"end":{"line":604,"column":88}}]},"39":{"line":620,"type":"if","locations":[{"start":{"line":620,"column":2},"end":{"line":620,"column":2}},{"start":{"line":620,"column":2},"end":{"line":620,"column":2}}]},"40":{"line":620,"type":"binary-expr","locations":[{"start":{"line":620,"column":6},"end":{"line":620,"column":18}},{"start":{"line":620,"column":23},"end":{"line":620,"column":42}}]},"41":{"line":621,"type":"binary-expr","locations":[{"start":{"line":621,"column":27},"end":{"line":621,"column":35}},{"start":{"line":621,"column":39},"end":{"line":621,"column":58}}]},"42":{"line":636,"type":"binary-expr","locations":[{"start":{"line":636,"column":10},"end":{"line":636,"column":23}},{"start":{"line":636,"column":27},"end":{"line":636,"column":46}}]},"43":{"line":639,"type":"binary-expr","locations":[{"start":{"line":639,"column":10},"end":{"line":639,"column":23}},{"start":{"line":639,"column":27},"end":{"line":639,"column":46}}]},"44":{"line":651,"type":"binary-expr","locations":[{"start":{"line":651,"column":15},"end":{"line":651,"column":26}},{"start":{"line":651,"column":30},"end":{"line":651,"column":43}}]},"45":{"line":669,"type":"if","locations":[{"start":{"line":669,"column":2},"end":{"line":669,"column":2}},{"start":{"line":669,"column":2},"end":{"line":669,"column":2}}]},"46":{"line":675,"type":"binary-expr","locations":[{"start":{"line":675,"column":20},"end":{"line":675,"column":34}},{"start":{"line":675,"column":38},"end":{"line":675,"column":43}}]},"47":{"line":676,"type":"binary-expr","locations":[{"start":{"line":676,"column":21},"end":{"line":676,"column":37}},{"start":{"line":676,"column":41},"end":{"line":676,"column":49}}]},"48":{"line":677,"type":"binary-expr","locations":[{"start":{"line":677,"column":17},"end":{"line":677,"column":33}},{"start":{"line":677,"column":37},"end":{"line":677,"column":49}},{"start":{"line":677,"column":53},"end":{"line":677,"column":64}}]},"49":{"line":678,"type":"binary-expr","locations":[{"start":{"line":678,"column":17},"end":{"line":678,"column":29}},{"start":{"line":678,"column":33},"end":{"line":678,"column":36}}]},"50":{"line":679,"type":"binary-expr","locations":[{"start":{"line":679,"column":17},"end":{"line":679,"column":29}},{"start":{"line":679,"column":33},"end":{"line":679,"column":36}}]},"51":{"line":681,"type":"if","locations":[{"start":{"line":681,"column":2},"end":{"line":681,"column":2}},{"start":{"line":681,"column":2},"end":{"line":681,"column":2}}]},"52":{"line":681,"type":"binary-expr","locations":[{"start":{"line":681,"column":6},"end":{"line":681,"column":20}},{"start":{"line":681,"column":24},"end":{"line":681,"column":52}}]},"53":{"line":688,"type":"if","locations":[{"start":{"line":688,"column":2},"end":{"line":688,"column":2}},{"start":{"line":688,"column":2},"end":{"line":688,"column":2}}]},"54":{"line":699,"type":"if","locations":[{"start":{"line":699,"column":2},"end":{"line":699,"column":2}},{"start":{"line":699,"column":2},"end":{"line":699,"column":2}}]},"55":{"line":705,"type":"if","locations":[{"start":{"line":705,"column":7},"end":{"line":705,"column":7}},{"start":{"line":705,"column":7},"end":{"line":705,"column":7}}]},"56":{"line":726,"type":"binary-expr","locations":[{"start":{"line":726,"column":31},"end":{"line":726,"column":50}},{"start":{"line":726,"column":54},"end":{"line":726,"column":72}}]},"57":{"line":727,"type":"if","locations":[{"start":{"line":727,"column":6},"end":{"line":727,"column":6}},{"start":{"line":727,"column":6},"end":{"line":727,"column":6}}]},"58":{"line":737,"type":"binary-expr","locations":[{"start":{"line":737,"column":31},"end":{"line":737,"column":63}},{"start":{"line":737,"column":67},"end":{"line":737,"column":98}}]},"59":{"line":738,"type":"if","locations":[{"start":{"line":738,"column":6},"end":{"line":738,"column":6}},{"start":{"line":738,"column":6},"end":{"line":738,"column":6}}]},"60":{"line":745,"type":"if","locations":[{"start":{"line":745,"column":6},"end":{"line":745,"column":6}},{"start":{"line":745,"column":6},"end":{"line":745,"column":6}}]},"61":{"line":746,"type":"if","locations":[{"start":{"line":746,"column":8},"end":{"line":746,"column":8}},{"start":{"line":746,"column":8},"end":{"line":746,"column":8}}]},"62":{"line":752,"type":"if","locations":[{"start":{"line":752,"column":8},"end":{"line":752,"column":8}},{"start":{"line":752,"column":8},"end":{"line":752,"column":8}}]},"63":{"line":765,"type":"if","locations":[{"start":{"line":765,"column":6},"end":{"line":765,"column":6}},{"start":{"line":765,"column":6},"end":{"line":765,"column":6}}]},"64":{"line":827,"type":"if","locations":[{"start":{"line":827,"column":2},"end":{"line":827,"column":2}},{"start":{"line":827,"column":2},"end":{"line":827,"column":2}}]},"65":{"line":838,"type":"binary-expr","locations":[{"start":{"line":838,"column":29},"end":{"line":838,"column":44}},{"start":{"line":838,"column":48},"end":{"line":838,"column":50}}]},"66":{"line":857,"type":"if","locations":[{"start":{"line":857,"column":2},"end":{"line":857,"column":2}},{"start":{"line":857,"column":2},"end":{"line":857,"column":2}}]},"67":{"line":867,"type":"if","locations":[{"start":{"line":867,"column":2},"end":{"line":867,"column":2}},{"start":{"line":867,"column":2},"end":{"line":867,"column":2}}]},"68":{"line":867,"type":"binary-expr","locations":[{"start":{"line":867,"column":6},"end":{"line":867,"column":18}},{"start":{"line":867,"column":23},"end":{"line":867,"column":42}}]},"69":{"line":868,"type":"binary-expr","locations":[{"start":{"line":868,"column":27},"end":{"line":868,"column":35}},{"start":{"line":868,"column":39},"end":{"line":868,"column":58}}]},"70":{"line":876,"type":"if","locations":[{"start":{"line":876,"column":2},"end":{"line":876,"column":2}},{"start":{"line":876,"column":2},"end":{"line":876,"column":2}}]},"71":{"line":878,"type":"if","locations":[{"start":{"line":878,"column":9},"end":{"line":878,"column":9}},{"start":{"line":878,"column":9},"end":{"line":878,"column":9}}]},"72":{"line":884,"type":"if","locations":[{"start":{"line":884,"column":2},"end":{"line":884,"column":2}},{"start":{"line":884,"column":2},"end":{"line":884,"column":2}}]},"73":{"line":886,"type":"if","locations":[{"start":{"line":886,"column":9},"end":{"line":886,"column":9}},{"start":{"line":886,"column":9},"end":{"line":886,"column":9}}]},"74":{"line":892,"type":"if","locations":[{"start":{"line":892,"column":2},"end":{"line":892,"column":2}},{"start":{"line":892,"column":2},"end":{"line":892,"column":2}}]},"75":{"line":894,"type":"if","locations":[{"start":{"line":894,"column":9},"end":{"line":894,"column":9}},{"start":{"line":894,"column":9},"end":{"line":894,"column":9}}]},"76":{"line":901,"type":"if","locations":[{"start":{"line":901,"column":2},"end":{"line":901,"column":2}},{"start":{"line":901,"column":2},"end":{"line":901,"column":2}}]},"77":{"line":903,"type":"if","locations":[{"start":{"line":903,"column":9},"end":{"line":903,"column":9}},{"start":{"line":903,"column":9},"end":{"line":903,"column":9}}]},"78":{"line":916,"type":"if","locations":[{"start":{"line":916,"column":2},"end":{"line":916,"column":2}},{"start":{"line":916,"column":2},"end":{"line":916,"column":2}}]}}}} \ No newline at end of file diff --git a/coverage/lcov-report/index.html b/coverage/lcov-report/index.html index 34a98d26..f0bcaca9 100644 --- a/coverage/lcov-report/index.html +++ b/coverage/lcov-report/index.html @@ -183,16 +183,16 @@

Code coverage report for All files

- Statements: 93.26% (1563 / 1676)      + Statements: 94% (392 / 417)      - Branches: 84.85% (605 / 713)      + Branches: 80.63% (129 / 160)      - Functions: 94.81% (201 / 212)      + Functions: 93.65% (59 / 63)      - Lines: 93.23% (1557 / 1670)      + Lines: 94% (392 / 417)     

@@ -216,15 +216,15 @@

lib/ - - 93.26% - (1563 / 1676) - 84.85% - (605 / 713) - 94.81% - (201 / 212) - 93.23% - (1557 / 1670) + + 94% + (392 / 417) + 80.63% + (129 / 160) + 93.65% + (59 / 63) + 94% + (392 / 417) @@ -232,7 +232,7 @@

diff --git a/coverage/lcov-report/lib/compressor.js.html b/coverage/lcov-report/lib/compressor.js.html deleted file mode 100644 index 7334b186..00000000 --- a/coverage/lcov-report/lib/compressor.js.html +++ /dev/null @@ -1,3137 +0,0 @@ - - - - Code coverage report for lib/compressor.js - - - - - - - -
-

Code coverage report for lib/compressor.js

-

- - Statements: 94.72% (323 / 341)      - - - Branches: 94.44% (119 / 126)      - - - Functions: 100% (28 / 28)      - - - Lines: 94.72% (323 / 341)      - -

-
All files » lib/ » compressor.js
-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210 -211 -212 -213 -214 -215 -216 -217 -218 -219 -220 -221 -222 -223 -224 -225 -226 -227 -228 -229 -230 -231 -232 -233 -234 -235 -236 -237 -238 -239 -240 -241 -242 -243 -244 -245 -246 -247 -248 -249 -250 -251 -252 -253 -254 -255 -256 -257 -258 -259 -260 -261 -262 -263 -264 -265 -266 -267 -268 -269 -270 -271 -272 -273 -274 -275 -276 -277 -278 -279 -280 -281 -282 -283 -284 -285 -286 -287 -288 -289 -290 -291 -292 -293 -294 -295 -296 -297 -298 -299 -300 -301 -302 -303 -304 -305 -306 -307 -308 -309 -310 -311 -312 -313 -314 -315 -316 -317 -318 -319 -320 -321 -322 -323 -324 -325 -326 -327 -328 -329 -330 -331 -332 -333 -334 -335 -336 -337 -338 -339 -340 -341 -342 -343 -344 -345 -346 -347 -348 -349 -350 -351 -352 -353 -354 -355 -356 -357 -358 -359 -360 -361 -362 -363 -364 -365 -366 -367 -368 -369 -370 -371 -372 -373 -374 -375 -376 -377 -378 -379 -380 -381 -382 -383 -384 -385 -386 -387 -388 -389 -390 -391 -392 -393 -394 -395 -396 -397 -398 -399 -400 -401 -402 -403 -404 -405 -406 -407 -408 -409 -410 -411 -412 -413 -414 -415 -416 -417 -418 -419 -420 -421 -422 -423 -424 -425 -426 -427 -428 -429 -430 -431 -432 -433 -434 -435 -436 -437 -438 -439 -440 -441 -442 -443 -444 -445 -446 -447 -448 -449 -450 -451 -452 -453 -454 -455 -456 -457 -458 -459 -460 -461 -462 -463 -464 -465 -466 -467 -468 -469 -470 -471 -472 -473 -474 -475 -476 -477 -478 -479 -480 -481 -482 -483 -484 -485 -486 -487 -488 -489 -490 -491 -492 -493 -494 -495 -496 -497 -498 -499 -500 -501 -502 -503 -504 -505 -506 -507 -508 -509 -510 -511 -512 -513 -514 -515 -516 -517 -518 -519 -520 -521 -522 -523 -524 -525 -526 -527 -528 -529 -530 -531 -532 -533 -534 -535 -536 -537 -538 -539 -540 -541 -542 -543 -544 -545 -546 -547 -548 -549 -550 -551 -552 -553 -554 -555 -556 -557 -558 -559 -560 -561 -562 -563 -564 -565 -566 -567 -568 -569 -570 -571 -572 -573 -574 -575 -576 -577 -578 -579 -580 -581 -582 -583 -584 -585 -586 -587 -588 -589 -590 -591 -592 -593 -594 -595 -596 -597 -598 -599 -600 -601 -602 -603 -604 -605 -606 -607 -608 -609 -610 -611 -612 -613 -614 -615 -616 -617 -618 -619 -620 -621 -622 -623 -624 -625 -626 -627 -628 -629 -630 -631 -632 -633 -634 -635 -636 -637 -638 -639 -640 -641 -642 -643 -644 -645 -646 -647 -648 -649 -650 -651 -652 -653 -654 -655 -656 -657 -658 -659 -660 -661 -662 -663 -664 -665 -666 -667 -668 -669 -670 -671 -672 -673 -674 -675 -676 -677 -678 -679 -680 -681 -682 -683 -684 -685 -686 -687 -688 -689 -690 -691 -692 -693 -694 -695 -696 -697 -698 -699 -700 -701 -702 -703 -704 -705 -706 -707 -708 -709 -710 -711 -712 -713 -714 -715 -716 -717 -718 -719 -720 -721 -722 -723 -724 -725 -726 -727 -728 -729 -730 -731 -732 -733 -734 -735 -736 -737 -738 -739 -740 -741 -742 -743 -744 -745 -746 -747 -748 -749 -750 -751 -752 -753 -754 -755 -756 -757 -758 -759 -760 -761 -762 -763 -764 -765 -766 -767 -768 -769 -770 -771 -772 -773 -774 -775 -776 -777 -778 -779 -780 -781 -782 -783 -784 -785 -786 -787 -788 -789 -790 -791 -792 -793 -794 -795 -796 -797 -798 -799 -800 -801 -802 -803 -804 -805 -806 -807 -808 -809 -810 -811 -812 -813 -814 -815 -816 -817 -818 -819 -820 -821 -822 -823 -824 -825 -826 -827 -828 -829 -830 -831 -832 -833 -834 -835 -836 -837 -838 -839 -840 -841 -842 -843 -844 -845 -846 -847 -848 -849 -850 -851 -852 -853 -854 -855 -856 -857 -858 -859 -860 -861 -862 -863 -864 -865 -866 -867 -868 -869 -870 -871 -872 -873 -874 -875 -876 -877 -878 -879 -880 -881 -882 -883 -884 -885 -886 -887 -888 -889 -890 -891 -892 -893 -894 -895 -896 -897 -898 -899 -900 -901 -902 -903 -904 -905 -906 -907 -908 -909 -910 -911 -912 -913 -914 -915 -916 -917 -918 -919 -920 -921 -922 -923 -924 -925 -926 -927 -928 -929 -930 -931 -932 -933 -934 -935 -936 -937 -938 -939 -940 -941 -942 -943 -944 -945  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1 -1 -1 -1 -1 -  -1 -1 -1 -  -  -  -  -  -  -  -  -  -  -1 -54 -54 -54 -54 -54 -54 -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1 -1806 -1806 -1806 -1806 -1806 -1806 -  -  -  -  -  -  -  -  -  -  -1 -  -1 -1806 -  -  -1 -54 -54 -1620 -  -54 -  -  -  -  -  -  -  -  -  -  -1 -182 -182 -  -182 -  -  -  -  -  -182 -182 -182 -  -  -182 -  -182 -  -  -182 -  -  -  -  -  -  -  -1 -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1 -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1 -1 -49 -  -49 -49 -49 -  -  -  -  -  -1 -49 -49 -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1 -151 -  -  -151 -  -  -  -  -  -  -  -  -151 -54 -54 -  -54 -32 -  -22 -22 -22 -22 -  -  -  -  -  -  -  -  -  -  -  -97 -78 -  -19 -  -  -97 -97 -92 -92 -92 -92 -  -  -97 -  -  -  -  -  -  -  -1 -49 -  -  -49 -49 -151 -  -  -  -49 -1559 -1559 -46 -  -1559 -  -  -49 -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1 -1 -47 -  -47 -47 -47 -  -  -1 -147 -  -  -147 -143 -  -147 -  -  -  -  -  -1 -159 -159 -159 -  -  -159 -159 -3760 -3760 -152 -65 -65 -87 -87 -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -159 -65 -  -65 -19 -19 -19 -  -  -46 -  -  -  -  -  -  -  -  -46 -4 -4 -  -  -  -42 -  -  -  -  -  -94 -94 -  -94 -94 -4 -90 -76 -  -14 -  -  -94 -90 -90 -90 -  -  -  -  -  -  -  -  -  -94 -  -  -159 -  -  -  -  -  -1 -  -47 -1488 -1488 -26 -26 -  -1488 -1488 -  -  -47 -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1 -351 -351 -149 -  -  -202 -202 -2 -  -202 -  -202 -202 -210 -210 -  -210 -8 -  -210 -  -210 -  -  -202 -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1 -363 -  -363 -363 -161 -  -  -363 -207 -207 -217 -217 -217 -  -  -  -363 -  -  -  -  -  -  -  -  -  -  -  -1 -123 -123 -123 -  -  -1 -125 -125 -125 -125 -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1 -  -  -  -  -  -  -1 -151 -  -151 -51 -100 -5 -95 -18 -  -77 -  -  -151 -51 -  -  -100 -81 -  -19 -19 -  -  -100 -77 -  -  -100 -  -  -151 -  -151 -  -  -1 -159 -  -159 -159 -56 -103 -28 -6 -  -22 -  -  -75 -  -  -159 -56 -56 -  -  -103 -103 -20 -  -  -103 -75 -28 -22 -  -6 -  -  -103 -  -  -159 -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1 -  -  -  -  -  -1 -1 -26 -  -26 -  -26 -26 -  -26 -  -  -  -  -  -1 -47 -47 -143 -143 -8 -24 -  -  -135 -  -  -47 -  -47 -47 -447 -  -47 -  -  -  -1 -  -  -  -  -  -  -  -75 -37 -  -37 -  -37 -39 -39 -39 -  -39 -37 -37 -37 -  -2 -  -  -  -  -  -39 -32 -  -39 -  -39 -  -  -  -  -  -38 -  -  -75 -  -  -  -  -  -  -  -  -  -  -  -1 -1 -28 -  -28 -  -28 -28 -  -28 -  -28 -28 -  -  -  -  -  -1 -49 -49 -  -49 -49 -49 -165 -165 -165 -17 -8 -  -9 -  -  -148 -  -  -  -49 -  -  -  -1 -  -  -73 -3 -1 -1 -1 -  -2 -  -  -  -  -70 -37 -37 -37 -  -  -  -  -33 -  -  -  -  -  -72 -36 -38 -  -36 -36 -  -  -  -  -  -36 -36 -  -  -72 -  -  -  -  -  -  -1 -132 -132 -534 -  -  -132 -132 -534 -  -  -132 -  -  -  -1 -37 -37 -37 -39 -39 -39 -  -37 -  - 
// The implementation of the [HTTP/2 Header Compression][http2-compression] spec is separated from
-// the 'integration' part which handles HEADERS and PUSH_PROMISE frames. The compression itself is
-// implemented in the first part of the file, and consists of three classes: `HeaderTable`,
-// `HeaderSetDecompressor` and `HeaderSetCompressor`. The two latter classes are
-// [Transform Stream][node-transform] subclasses that operate in [object mode][node-objectmode].
-// These transform chunks of binary data into `[name, value]` pairs and vice versa, and store their
-// state in `HeaderTable` instances.
-//
-// The 'integration' part is also implemented by two [Transform Stream][node-transform] subclasses
-// that operate in [object mode][node-objectmode]: the `Compressor` and the `Decompressor`. These
-// provide a layer between the [framer](framer.html) and the
-// [connection handling component](connection.html).
-//
-// [node-transform]: http://nodejs.org/api/stream.html#stream_class_stream_transform
-// [node-objectmode]: http://nodejs.org/api/stream.html#stream_new_stream_readable_options
-// [http2-compression]: http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-03
- 
-exports.HeaderTable = HeaderTable;
-exports.HeaderSetCompressor = HeaderSetCompressor;
-exports.HeaderSetDecompressor = HeaderSetDecompressor;
-exports.Compressor = Compressor;
-exports.Decompressor = Decompressor;
- 
-var TransformStream = require('stream').Transform;
-var assert = require('assert');
-var util = require('util');
- 
-// Header compression
-// ==================
- 
-// The HeaderTable class
-// ---------------------
- 
-// The [Header Table][headertable] is a component used to associate headers to index values. It is
-// basically an ordered list of `[name, value]` pairs, so it's implemented as a subclass of `Array`.
-// [headertable]: http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-03#section-3.1.2
-function HeaderTable(log, table, limit) {
-  var self = table.map(entryFromPair);
-  self._log = log;
-  self._limit = limit || DEFAULT_HEADER_TABLE_LIMIT;
-  self._size = tableSize(self);
-  self.add = HeaderTable.prototype.add;
-  return self;
-}
- 
-// There are few more sets that are needed for the compression/decompression process that are all
-// subsets of the Header Table, and are implemented as flags on header table entries:
-//
-// * [Reference Set][referenceset]: contains a group of headers used as a reference for the
-//   differential encoding of a new set of headers. (`reference` flag)
-// * Emitted headers: the headers that are already emitted as part of the current decompression
-//   process (not part of the spec, `emitted` flag)
-// * Headers to be kept: headers that should not be removed as the last step of the encoding process
-//   (not part of the spec, `keep` flag)
-//
-// [referenceset]: http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-03#section-3.1.3
-//
-// Relations of the sets:
-//
-//     ,----------------------------------.
-//     |           Header Table           |
-//     |                                  |
-//     |  ,----------------------------.  |
-//     |  |        Reference Set       |  |
-//     |  |                            |  |
-//     |  |  ,---------.  ,---------.  |  |
-//     |  |  |  Keep   |  | Emitted |  |  |
-//     |  |  |         |  |         |  |  |
-//     |  |  `---------'  `---------'  |  |
-//     |  `----------------------------'  |
-//     `----------------------------------'
-function entryFromPair(pair) {
-  var entry = pair.slice();
-  entry.reference = false;
-  entry.emitted = false;
-  entry.keep = false;
-  entry._size = size(entry);
-  return entry;
-}
- 
-// The encoder decides how to update the header table and as such can control how much memory is
-// used by the header table.  To limit the memory requirements on the decoder side, the header table
-// size is bounded.
-//
-// * The default header table size limit is 4096 bytes.
-// * The size of an entry is defined as follows: the size of an entry is the sum of its name's
-//   length in bytes, of its value's length in bytes and of 32 bytes.
-// * The size of a header table is the sum of the size of its entries.
-var DEFAULT_HEADER_TABLE_LIMIT = 4096;
- 
-function size(entry) {
-  return (new Buffer(entry[0] + entry[1], 'utf8')).length + 32;
-}
- 
-function tableSize(table) {
-  var size = 0;
-  for (var i = 0; i < table.length; i++) {
-    size += table[i]._size;
-  }
-  return size;
-}
- 
-// The `add(index, entry)` can be used to [manage the header table][tablemgmt]:
-// [tablemgmt]: http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-03#section-3.2.4
-//
-// * if `index` is `Infinite` it pushes the new `entry` at the end of the table
-// * otherwise, it replaces the entry with the given `index` with the new `entry`
-// * before doing such a modification, it has to be ensured that the header table size will stay
-//   lower than or equal to the header table size limit. To achieve this, repeatedly, the first
-//   entry of the header table is removed, until enough space is available for the modification.
-HeaderTable.prototype.add = function(index, entry) {
-  var limit = this._limit - entry._size;
-  var droppedEntries = [];
- 
-  while ((this._size > limit) && (this.length > 0)) {
-    var dropped = this.shift();
-    this._size -= dropped._size;
-    droppedEntries.push(dropped);
-  }
- 
-  Eif (this._size <= limit) {
-    index -= droppedEntries.length;
-    Iif (index < 0) {
-      this.unshift(entry);
-    } else {
-      this.splice(index, 1, entry); // this is like push() if index is Infinity
-    }
-    this._size += entry._size;
-  }
- 
-  return droppedEntries;
-};
- 
-// Initial header tables
-// ---------------------
- 
-// ### [Initial request table][requesttable] ###
-// [requesttable]: http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-03#appendix-B.1
-HeaderTable.initialRequestTable  = [
-  [ ':scheme'                     , 'http'  ],
-  [ ':scheme'                     , 'https' ],
-  [ ':host'                       , ''      ],
-  [ ':path'                       , '/'     ],
-  [ ':method'                     , 'get'   ],
-  [ 'accept'                      , ''      ],
-  [ 'accept-charset'              , ''      ],
-  [ 'accept-encoding'             , ''      ],
-  [ 'accept-language'             , ''      ],
-  [ 'cookie'                      , ''      ],
-  [ 'if-modified-since'           , ''      ],
-  [ 'user-agent'                  , ''      ],
-  [ 'referer'                     , ''      ],
-  [ 'authorization'               , ''      ],
-  [ 'allow'                       , ''      ],
-  [ 'cache-control'               , ''      ],
-  [ 'connection'                  , ''      ],
-  [ 'content-length'              , ''      ],
-  [ 'content-type'                , ''      ],
-  [ 'date'                        , ''      ],
-  [ 'expect'                      , ''      ],
-  [ 'from'                        , ''      ],
-  [ 'if-match'                    , ''      ],
-  [ 'if-none-match'               , ''      ],
-  [ 'if-range'                    , ''      ],
-  [ 'if-unmodified-since'         , ''      ],
-  [ 'max-forwards'                , ''      ],
-  [ 'proxy-authorization'         , ''      ],
-  [ 'range'                       , ''      ],
-  [ 'via'                         , ''      ]
-];
- 
-// ### [Initial response table][responsetable] ###
-// [responsetable]: http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-03#appendix-B.2
-HeaderTable.initialResponseTable = [
-  [ ':status'                     , '200'   ],
-  [ 'age'                         , ''      ],
-  [ 'cache-control'               , ''      ],
-  [ 'content-length'              , ''      ],
-  [ 'content-type'                , ''      ],
-  [ 'date'                        , ''      ],
-  [ 'etag'                        , ''      ],
-  [ 'expires'                     , ''      ],
-  [ 'last-modified'               , ''      ],
-  [ 'server'                      , ''      ],
-  [ 'set-cookie'                  , ''      ],
-  [ 'vary'                        , ''      ],
-  [ 'via'                         , ''      ],
-  [ 'access-control-allow-origin' , ''      ],
-  [ 'accept-ranges'               , ''      ],
-  [ 'allow'                       , ''      ],
-  [ 'connection'                  , ''      ],
-  [ 'content-disposition'         , ''      ],
-  [ 'content-encoding'            , ''      ],
-  [ 'content-language'            , ''      ],
-  [ 'content-location'            , ''      ],
-  [ 'content-range'               , ''      ],
-  [ 'link'                        , ''      ],
-  [ 'location'                    , ''      ],
-  [ 'proxy-authenticate'          , ''      ],
-  [ 'refresh'                     , ''      ],
-  [ 'retry-after'                 , ''      ],
-  [ 'strict-transport-security'   , ''      ],
-  [ 'transfer-encoding'           , ''      ],
-  [ 'www-authenticate'            , ''      ]
-];
- 
-// The HeaderSetDecompressor class
-// -------------------------------
- 
-// A `HeaderSetDecompressor` instance is a transform stream that can be used to *decompress a
-// single header set*. Its input is a stream of binary data chunks and its output is a stream of
-// `[name, value]` pairs.
-//
-// Currently, it is not a proper streaming decompressor implementation, since it buffer its input
-// until the end os the stream, and then processes the whole header block at once.
- 
-util.inherits(HeaderSetDecompressor, TransformStream);
-function HeaderSetDecompressor(log, table) {
-  TransformStream.call(this, { objectMode: true });
- 
-  this._log = log.child({ component: 'compressor' });
-  this._table = table;
-  this._chunks = [];
-}
- 
-// `_transform` is the implementation of the [corresponding virtual function][_transform] of the
-// TransformStream class. It collects the data chunks for later processing.
-// [_transform]: http://nodejs.org/api/stream.html#stream_transform_transform_chunk_encoding_callback
-HeaderSetDecompressor.prototype._transform = function _transform(chunk, encoding, callback) {
-  this._chunks.push(chunk);
-  callback();
-};
- 
-// `execute(rep)` executes the given [header representation][representation].
-// [representation]: http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-03#section-3.1.5
- 
-// The *JavaScript object representation* of a header representation:
-//
-//     {
-//       name: String || Integer,  // string literal or index
-//       value: String || Integer, // string literal or index
-//       index: Integer            // -1       : no indexing
-//                                 // 0 - ...  : substitution indexing
-//                                 // Infinity : incremental indexing
-//     }
-//
-// Examples:
-//
-//     Indexed:
-//     { name: 2  , value: 2  , index: -1       }
-//     Literal:
-//     { name: 2  , value: 'X', index: -1       } // without indexing
-//     { name: 2  , value: 'Y', index: Infinity } // incremental indexing
-//     { name: 'A', value: 'Z', index: 123      } // substitution indexing
-HeaderSetDecompressor.prototype._execute = function _execute(rep) {
-  this._log.trace({ key: rep.name, value: rep.value, index: rep.index },
-                  'Executing header representation');
- 
-  var index, entry, pair;
- 
-  // * An _indexed representation_ corresponding to an entry _present_ in the reference set
-  //   entails the following actions:
-  //   * The entry is removed from the reference set.
-  // * An _indexed representation_ corresponding to an entry _not present_ in the reference set
-  //   entails the following actions:
-  //   * The header corresponding to the entry is emitted.
-  //   * The entry is added to the reference set.
-  if (typeof rep.value === 'number') {
-    index = rep.value;
-    entry = this._table[index];
- 
-    if (entry.reference) {
-      entry.reference = false;
-    } else {
-      entry.reference = true;
-      entry.emitted = true;
-      pair = entry.slice();
-      this.push(pair);
-    }
-  }
- 
-  // * A _literal representation_ that is _not added_ to the header table entails the following
-  //   action:
-  //   * The header is emitted.
-  // * A _literal representation_ that is _added_ to the header table entails the following further
-  //   actions:
-  //   * The header is added to the header table, at the location defined by the representation.
-  //   * The new entry is added to the reference set.
-  else {
-    if (typeof rep.name === 'number') {
-      pair = [this._table[rep.name][0], rep.value];
-    } else {
-      pair = [rep.name, rep.value];
-    }
- 
-    index = rep.index;
-    if (index !== -1) {
-      entry = entryFromPair(pair);
-      entry.reference = true;
-      entry.emitted = true;
-      this._table.add(index, entry);
-    }
- 
-    this.push(pair);
-  }
-};
- 
-// `_flush` is the implementation of the [corresponding virtual function][_flush] of the
-// TransformStream class. The whole decompressing process is done in `_flush`. It gets called when
-// the input stream is over.
-// [_flush]: http://nodejs.org/api/stream.html#stream_transform_flush_callback
-HeaderSetDecompressor.prototype._flush = function _flush(callback) {
-  var buffer = concat(this._chunks);
- 
-  // * processes the header representations
-  buffer.cursor = 0;
-  while (buffer.cursor < buffer.length) {
-    this._execute(HeaderSetDecompressor.header(buffer));
-  }
- 
-  // * [emits the reference set](http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-03#section-3.2.2)
-  for (var index = 0; index < this._table.length; index++) {
-    var entry = this._table[index];
-    if (entry.reference && !entry.emitted) {
-      this.push(entry.slice());
-    }
-    entry.emitted = false;
-  }
- 
-  callback();
-};
- 
-// The HeaderSetCompressor class
-// -----------------------------
- 
-// A `HeaderSetCompressor` instance is a transform stream that can be used to *compress a single
-// header set*. Its input is a stream of `[name, value]` pairs and its output is a stream of
-// binary data chunks.
-//
-// It is a real streaming compressor, since it does not wait until the header set is complete.
-//
-// The compression algorithm is (intentionally) not specified by the spec. Therefore, the current
-// compression algorithm can probably be improved in the future.
- 
-util.inherits(HeaderSetCompressor, TransformStream);
-function HeaderSetCompressor(log, table) {
-  TransformStream.call(this, { objectMode: true });
- 
-  this._log = log.child({ component: 'compressor' });
-  this._table = table;
-  this.push = TransformStream.prototype.push.bind(this);
-}
- 
-HeaderSetCompressor.prototype.send = function send(rep) {
-  this._log.trace({ key: rep.name, value: rep.value, index: rep.index },
-                  'Emitting header representation');
- 
-  if (!rep.chunks) {
-    rep.chunks = HeaderSetCompressor.header(rep);
-  }
-  rep.chunks.forEach(this.push);
-};
- 
-// `_transform` is the implementation of the [corresponding virtual function][_transform] of the
-// TransformStream class. It processes the input headers one by one:
-// [_transform]: http://nodejs.org/api/stream.html#stream_transform_transform_chunk_encoding_callback
-HeaderSetCompressor.prototype._transform = function _transform(pair, encoding, callback) {
-  var name = pair[0].toLowerCase();
-  var value = pair[1];
-  var entry, rep;
- 
-  // * tries to find full (name, value) or name match in the header table
-  var nameMatch = -1, fullMatch = -1;
-  for (var index = 0; index < this._table.length; index++) {
-    entry = this._table[index];
-    if (entry[0] === name) {
-      if (entry[1] === value) {
-        fullMatch = index;
-        break;
-      } else Eif (nameMatch === -1) {
-        nameMatch = index;
-      }
-    }
-  }
- 
-  // * if there's full match, it will be an indexed representation (or more than one) depending
-  //   on its presence in the reference, the emitted and the keep set:
-  //
-  //   * If the entry is outside the reference set, then a single indexed representation puts the
-  //     entry into it and emits the header.
-  //
-  //   * If it's already in the keep set, then 4 indexed representations are needed:
-  //
-  //     1. removes it from the reference set
-  //     2. puts it back in the reference set and emits the header once
-  //     3. removes it again
-  //     4. puts it back and emits it again for the second time
-  //
-  //     It won't be emitted at the end of the decoding process since it's now in the emitted set.
-  //
-  //   * If it's in the emitted set, then 2 indexed representations are needed:
-  //
-  //     1. removes it from the reference set
-  //     2. puts it back in the reference set and emits the header once
-  //
-  //   * If it's in the reference set, but outside the keep set and the emitted set, then this
-  //     header is common with the previous header set, and is still untouched. We mark it to keep
-  //     in the reference set (that means don't remove at the end of the encoding process).
-  if (fullMatch !== -1) {
-    rep = { name: fullMatch, value: fullMatch, index: -1 };
- 
-    if (!entry.reference) {
-      this.send(rep);
-      entry.reference = true;
-      entry.emitted = true;
-    }
- 
-    else Iif (entry.keep) {
-      this.send(rep);
-      this.send(rep);
-      this.send(rep);
-      this.send(rep);
-      entry.keep = false;
-      entry.emitted = true;
-    }
- 
-    else if (entry.emitted) {
-      this.send(rep);
-      this.send(rep);
-    }
- 
-    else {
-      entry.keep = true;
-    }
-  }
- 
-  // * otherwise, it will be a literal representation (with a name index if there's a name match)
-  else {
-    entry = entryFromPair(pair);
-    entry.emitted = true;
- 
-    var insertIndex;
-    if (entry._size > this._table._limit / 2) {
-      insertIndex = -1;
-    } else if (nameMatch !== -1) {
-      insertIndex = nameMatch;
-    } else {
-      insertIndex = Infinity;
-    }
- 
-    if (insertIndex !== -1) {
-      entry.reference = true;
-      var droppedEntries = this._table.add(insertIndex, entry);
-      for (index = 0; index < droppedEntries.length; index++) {
-        var dropped = droppedEntries[index];
-        if (dropped.keep) {
-          rep = { name: index, value: index, index: -1 };
-          this.send(rep);
-          this.send(rep);
-        }
-      }
-    }
- 
-    this.send({ name: (nameMatch !== -1) ? nameMatch : name, value: value, index: insertIndex });
-  }
- 
-  callback();
-};
- 
-// `_flush` is the implementation of the [corresponding virtual function][_flush] of the
-// TransformStream class. It gets called when there's no more header to compress. The final step:
-// [_flush]: http://nodejs.org/api/stream.html#stream_transform_flush_callback
-HeaderSetCompressor.prototype._flush = function _flush(callback) {
-  // * removing entries from the header set that are not marked to be kept or emitted
-  for (var index = 0; index < this._table.length; index++) {
-    var entry = this._table[index];
-    if (entry.reference && !entry.keep && !entry.emitted) {
-      this.send({ name: index, value: index, index: -1 });
-      entry.reference = false;
-    }
-    entry.keep = false;
-    entry.emitted = false;
-  }
- 
-  callback();
-};
- 
-// [Detailed Format](http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-03#section-4)
-// -----------------
- 
-// ### Integer representation ###
-//
-// The algorithm to represent an integer I is as follows:
-//
-// 1. If I < 2^N - 1, encode I on N bits
-// 2. Else, encode 2^N - 1 on N bits and do the following steps:
-//    1. Set I to (I - (2^N - 1)) and Q to 1
-//    2. While Q > 0
-//       1. Compute Q and R, quotient and remainder of I divided by 2^7
-//       2. If Q is strictly greater than 0, write one 1 bit; otherwise, write one 0 bit
-//       3. Encode R on the next 7 bits
-//       4. I = Q
- 
-HeaderSetCompressor.integer = function writeInteger(I, N) {
-  var limit = Math.pow(2,N) - 1;
-  if (I < limit) {
-    return [new Buffer([I])];
-  }
- 
-  var bytes = [];
-  if (N !== 0) {
-    bytes.push(limit);
-  }
-  I -= limit;
- 
-  var Q = 1, R;
-  while (Q > 0) {
-    Q = Math.floor(I / 128);
-    R = I % 128;
- 
-    if (Q > 0) {
-      R += 128;
-    }
-    bytes.push(R);
- 
-    I = Q;
-  }
- 
-  return [new Buffer(bytes)];
-};
- 
-// The inverse algorithm:
-//
-// 1. Set I to the number coded on the lower N bits of the first byte
-// 2. If I is smaller than 2^N - 1 then return I
-// 2. Else the number is encoded on more than one byte, so do the following steps:
-//    1. Set M to 0
-//    2. While returning with I
-//       1. Let B be the next byte (the first byte if N is 0)
-//       2. Read out the lower 7 bits of B and multiply it with 2^M
-//       3. Increase I with this number
-//       4. Increase M by 7
-//       5. Return I if the most significant bit of B is 0
- 
-HeaderSetDecompressor.integer = function readInteger(buffer, N) {
-  var limit = Math.pow(2,N) - 1;
- 
-  var I = buffer[buffer.cursor] & limit;
-  if (N !== 0) {
-    buffer.cursor += 1;
-  }
- 
-  if (I === limit) {
-    var M = 0;
-    do {
-      I += (buffer[buffer.cursor] & 127) << M;
-      M += 7;
-      buffer.cursor += 1;
-    } while (buffer[buffer.cursor - 1] & 128);
-  }
- 
-  return I;
-};
- 
-// ### String literal representation ###
-//
-// Literal **strings** can represent header names or header values.  They are encoded in two parts:
-//
-// 1. The string length, defined as the number of bytes needed to store its UTF-8 representation,
-//    is represented as an integer with a zero bits prefix.  If the string length is strictly less
-//    than 128, it is represented as one byte.
-// 2. The string value represented as a list of UTF-8 characters.
- 
-HeaderSetCompressor.string = function writeString(str) {
-  var encodedString = new Buffer(str, 'utf8');
-  var encodedLength = HeaderSetCompressor.integer(encodedString.length, 0);
-  return encodedLength.concat(encodedString);
-};
- 
-HeaderSetDecompressor.string = function readString(buffer) {
-  var length = HeaderSetDecompressor.integer(buffer, 0);
-  var str = buffer.toString('utf8', buffer.cursor, buffer.cursor + length);
-  buffer.cursor += length;
-  return str;
-};
- 
-// ### Header represenations ###
- 
-// The JavaScript object representation is described near the
-// `HeaderTable.prototype.execute()` method definition.
-//
-// **All binary header representations** start with a prefix signaling the representation type and
-// an index represented using prefix coded integers:
-//
-//       0   1   2   3   4   5   6   7
-//     +---+---+---+---+---+---+---+---+
-//     | 1 |        Index (7+)         |  Indexed Representation
-//     +---+---------------------------+
-//
-//     +---+---+---+---+---+---+---+---+
-//     | 0 | 1 | 1 |    Index (5+)     |  Literal w/o Indexing
-//     +---+---+---+-------------------+
-//
-//     +---+---+---+---+---+---+---+---+
-//     | 0 | 1 | 0 |    Index (5+)     |  Literal w/ Incremental Indexing
-//     +---+---+---+-------------------+
-//
-//     +---+---+---+---+---+---+---+---+
-//     | 0 | 0 |      Index (6+)       |  Literal w/ Substitution Indexing
-//     +---+---+-----------------------+
-//
-// The **Indexed Representation** consists of the 1-bit prefix and the Index that is represented as
-// a 7-bit prefix coded integer and nothing else.
-//
-// After the first bits, **all literal representations** specify the header name, either as a
-// pointer to the Header Table (Index) or a string literal. When the string literal representation
-// is used, the Index is set to 0 and the string literal starts at the second byte.
-//
-// When using **Substitution Indexing**, a new index comes next represented as a 0-bit prefix
-// integer, specifying the record in the Header Table that needs to be replaced.
-//
-// For **all literal representations**, the specification of the header value comes next. It is
-// always represented as a string.
- 
-var representations = {
-  indexed             : { prefix: 7, pattern: 0x80 },
-  literal             : { prefix: 5, pattern: 0x60 },
-  literalIncremental  : { prefix: 5, pattern: 0x40 },
-  literalSubstitution : { prefix: 6, pattern: 0x00 }
-};
- 
-HeaderSetCompressor.header = function writeHeader(header) {
-  var representation, buffers = [];
- 
-  if (typeof header.value === 'number') {
-    representation = representations.indexed;
-  } else if (header.index === -1) {
-    representation = representations.literal;
-  } else if (header.index === Infinity) {
-    representation = representations.literalIncremental;
-  } else {
-    representation = representations.literalSubstitution;
-  }
- 
-  if (representation === representations.indexed) {
-    buffers.push(HeaderSetCompressor.integer(header.value, representation.prefix));
- 
-  } else {
-    if (typeof header.name === 'number') {
-      buffers.push(HeaderSetCompressor.integer(header.name + 1, representation.prefix));
-    } else {
-      buffers.push(HeaderSetCompressor.integer(0, representation.prefix));
-      buffers.push(HeaderSetCompressor.string(header.name));
-    }
- 
-    if (representation === representations.literalSubstitution) {
-      buffers.push(HeaderSetCompressor.integer(header.index, 0));
-    }
- 
-    buffers.push(HeaderSetCompressor.string(header.value));
-  }
- 
-  buffers[0][0][0] |= representation.pattern;
- 
-  return Array.prototype.concat.apply([], buffers); // array of arrays of buffers -> array of buffers
-};
- 
-HeaderSetDecompressor.header = function readHeader(buffer) {
-  var representation, header = {};
- 
-  var firstByte = buffer[buffer.cursor];
-  if (firstByte & 0x80) {
-    representation = representations.indexed;
-  } else if (firstByte & 0x40) {
-    if (firstByte & 0x20) {
-      representation = representations.literal;
-    } else {
-      representation = representations.literalIncremental;
-    }
-  } else {
-    representation = representations.literalSubstitution;
-  }
- 
-  if (representation === representations.indexed) {
-    header.value = header.name = HeaderSetDecompressor.integer(buffer, representation.prefix);
-    header.index = -1;
- 
-  } else {
-    header.name = HeaderSetDecompressor.integer(buffer, representation.prefix) - 1;
-    if (header.name === -1) {
-      header.name = HeaderSetDecompressor.string(buffer);
-    }
- 
-    if (representation === representations.literalSubstitution) {
-      header.index = HeaderSetDecompressor.integer(buffer, 0);
-    } else if (representation === representations.literalIncremental) {
-      header.index = Infinity;
-    } else {
-      header.index = -1;
-    }
- 
-    header.value = HeaderSetDecompressor.string(buffer);
-  }
- 
-  return header;
-};
- 
-// Integration with HTTP/2
-// =======================
- 
-// This section describes the interaction between the compressor/decompressor and the rest of the
-// HTTP/2 implementation. The `Compressor` and the `Decompressor` makes up a layer between the
-// [framer](framer.html) and the [connection handling component](connection.html). They let most
-// frames pass through, except HEADERS and PUSH_PROMISE frames. They convert the frames between
-// these two representations:
-//
-//     {                                   {
-//      type: 'HEADERS',                    type: 'HEADERS',
-//      flags: {},                          flags: {},
-//      stream: 1,               <===>      stream: 1,
-//      headers: {                          data: Buffer
-//       N1: 'V1',                         }
-//       N2: ['V1', 'V2', ...],
-//       // ...
-//      }
-//     }
-//
-// There are possibly several binary frame that belong to a single non-binary frame.
- 
-var MAX_HTTP_PAYLOAD_SIZE = 16383;
- 
-// The Compressor class
-// --------------------
- 
-// The Compressor transform stream is basically stateless.
-util.inherits(Compressor, TransformStream);
-function Compressor(log, type) {
-  TransformStream.call(this, { objectMode: true });
- 
-  this._log = log.child({ component: 'compressor' });
- 
-  assert((type === 'REQUEST') || (type === 'RESPONSE'));
-  var initialTable = (type === 'REQUEST') ? HeaderTable.initialRequestTable
-                                          : HeaderTable.initialResponseTable;
-  this._table = new HeaderTable(this._log, initialTable);
-}
- 
-// `compress` takes a header set, and compresses it using a new `HeaderSetCompressor` stream
-// instance. This means that from now on, the advantages of streaming header encoding are lost,
-// but the API becomes simpler.
-Compressor.prototype.compress = function compress(headers) {
-  var compressor = new HeaderSetCompressor(this._log, this._table);
-  for (var name in headers) {
-    var value = headers[name];
-    if (value instanceof Array) {
-      for (var i = 0; i< value.length; i++) {
-        compressor.write([String(name), String(value[i])]);
-      }
-    } else {
-      compressor.write([String(name), String(value)]);
-    }
-  }
-  compressor.end();
- 
-  var chunk, chunks = [];
-  while (chunk = compressor.read()) {
-    chunks.push(chunk);
-  }
-  return concat(chunks);
-};
- 
-// When a `frame` arrives
-Compressor.prototype._transform = function _transform(frame, encoding, done) {
-  // * and it is a HEADERS or PUSH_PROMISE frame
-  //   * it generates a header block using the compress method
-  //   * cuts the header block into `chunks` that are not larger than `MAX_HTTP_PAYLOAD_SIZE`
-  //   * for each chunk, it pushes out a chunk frame that is identical to the original, except
-  //     the `data` property which holds the given chunk, the type of the frame which is always
-  //     CONTINUATION except for the first frame, and the END_HEADERS/END_PUSH_STREAM flag that
-  //     marks the last frame and the END_STREAM flag which is always false before the end
-  if (frame.type === 'HEADERS' || frame.type === 'PUSH_PROMISE') {
-    var buffer = this.compress(frame.headers);
- 
-    var chunks = cut(buffer, MAX_HTTP_PAYLOAD_SIZE);
- 
-    for (var i = 0; i < chunks.length; i++) {
-      var chunkFrame;
-      var first = (i === 0);
-      var last = (i === chunks.length - 1);
- 
-      if (first) {
-        chunkFrame = util._extend({}, frame);
-        chunkFrame.flags = util._extend({}, frame.flags);
-        chunkFrame.flags['END_' + frame.type] = last;
-      } else {
-        chunkFrame = {
-          type: 'CONTINUATION',
-          flags: { END_HEADERS: last },
-          stream: frame.stream
-        };
-      }
-      if (chunkFrame.type !== 'PUSH_PROMISE') {
-        chunkFrame.flags.END_STREAM = last && frame.flags.END_STREAM;
-      }
-      chunkFrame.data = chunks[i];
- 
-      this.push(chunkFrame);
-    }
-  }
- 
-  // * otherwise, the frame is forwarded without taking any action
-  else {
-    this.push(frame);
-  }
- 
-  done();
-};
- 
-// The Decompressor class
-// ----------------------
- 
-// The Decompressor is a stateful transform stream, since it has to collect multiple frames first,
-// and the decoding comes after unifying the payload of those frames.
-//
-// If there's a frame in progress, `this._inProgress` is `true`. The frames are collected in
-// `this._frames`, and the type of the frame and the stream identifier is stored in `this._type`
-// and `this._stream` respectively.
-util.inherits(Decompressor, TransformStream);
-function Decompressor(log, type) {
-  TransformStream.call(this, { objectMode: true });
- 
-  this._log = log.child({ component: 'compressor' });
- 
-  assert((type === 'REQUEST') || (type === 'RESPONSE'));
-  var initialTable = (type === 'REQUEST') ? HeaderTable.initialRequestTable
-                                          : HeaderTable.initialResponseTable;
-  this._table = new HeaderTable(this._log, initialTable);
- 
-  this._inProgress = false;
-  this._base = undefined;
-}
- 
-// `decompress` takes a full header block, and decompresses it using a new `HeaderSetDecompressor`
-// stream instance. This means that from now on, the advantages of streaming header decoding are
-// lost, but the API becomes simpler.
-Decompressor.prototype.decompress = function decompress(block) {
-  var decompressor = new HeaderSetDecompressor(this._log, this._table);
-  decompressor.end(block);
- 
-  var headers = {};
-  var pair;
-  while (pair = decompressor.read()) {
-    var name = pair[0];
-    var value = pair[1];
-    if (name in headers) {
-      if (headers[name] instanceof Array) {
-        headers[name].push(value);
-      } else {
-        headers[name] = [headers[name], value];
-      }
-    } else {
-      headers[name] = value;
-    }
-  }
- 
-  return headers;
-};
- 
-// When a `frame` arrives
-Decompressor.prototype._transform = function _transform(frame, encoding, done) {
-  // * and the collection process is already `_inProgress`, the frame is simply stored, except if
-  //   it's an illegal frame
-  if (this._inProgress) {
-    if ((frame.type !== 'CONTINUATION') || (frame.stream !== this._base.stream)) {
-      this._log.error('A series of HEADER frames were not continuous');
-      this.emit('error', 'PROTOCOL_ERROR');
-      return;
-    }
-    this._frames.push(frame);
-  }
- 
-  // * and the collection process is not `_inProgress`, but the new frame's type is HEADERS or
-  //   PUSH_PROMISE, a new collection process begins
-  else if ((frame.type === 'HEADERS') || (frame.type === 'PUSH_PROMISE')) {
-    this._inProgress = true;
-    this._base = frame;
-    this._frames = [frame];
-  }
- 
-  // * otherwise, the frame is forwarded without taking any action
-  else {
-    this.push(frame);
-  }
- 
-  // * When the frame signals that it's the last in the series, the header block chunks are
-  //   concatenated, the headers are decompressed, and a new frame gets pushed out with the
-  //   decompressed headers.
-  if (this._inProgress && (frame.flags.END_HEADERS || frame.flags.END_PUSH_PROMISE)) {
-    var buffer = concat(this._frames.map(function(frame) {
-      return frame.data;
-    }));
-    try {
-      var headers = this.decompress(buffer);
-    } catch(error) {
-      this._log.error({ err: error }, 'Header decompression error');
-      this.emit('error', 'COMPRESSION_ERROR');
-      return;
-    }
-    this.push(util._extend({ headers: headers }, this._base));
-    this._inProgress = false;
-  }
- 
-  done();
-};
- 
-// Helper functions
-// ================
- 
-// Concatenate an array of buffers into a new buffer
-function concat(buffers) {
-  var size = 0;
-  for (var i = 0; i < buffers.length; i++) {
-    size += buffers[i].length;
-  }
- 
-  var concatenated = new Buffer(size);
-  for (var cursor = 0, j = 0; j < buffers.length; cursor += buffers[j].length, j++) {
-    buffers[j].copy(concatenated, cursor);
-  }
- 
-  return concatenated;
-}
- 
-// Cut `buffer` into chunks not larger than `size`
-function cut(buffer, size) {
-  var chunks = [];
-  var cursor = 0;
-  do {
-    var chunkSize = Math.min(size, buffer.length - cursor);
-    chunks.push(buffer.slice(cursor, cursor + chunkSize));
-    cursor += chunkSize;
-  } while(cursor < buffer.length);
-  return chunks;
-}
- 
- -
- - - - - - - - diff --git a/coverage/lcov-report/lib/connection.js.html b/coverage/lcov-report/lib/connection.js.html deleted file mode 100644 index e62ae323..00000000 --- a/coverage/lcov-report/lib/connection.js.html +++ /dev/null @@ -1,2060 +0,0 @@ - - - - Code coverage report for lib/connection.js - - - - - - - -
-

Code coverage report for lib/connection.js

-

- - Statements: 92.47% (221 / 239)      - - - Branches: 80.23% (69 / 86)      - - - Functions: 100% (33 / 33)      - - - Lines: 92.47% (221 / 239)      - -

-
All files » lib/ » connection.js
-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210 -211 -212 -213 -214 -215 -216 -217 -218 -219 -220 -221 -222 -223 -224 -225 -226 -227 -228 -229 -230 -231 -232 -233 -234 -235 -236 -237 -238 -239 -240 -241 -242 -243 -244 -245 -246 -247 -248 -249 -250 -251 -252 -253 -254 -255 -256 -257 -258 -259 -260 -261 -262 -263 -264 -265 -266 -267 -268 -269 -270 -271 -272 -273 -274 -275 -276 -277 -278 -279 -280 -281 -282 -283 -284 -285 -286 -287 -288 -289 -290 -291 -292 -293 -294 -295 -296 -297 -298 -299 -300 -301 -302 -303 -304 -305 -306 -307 -308 -309 -310 -311 -312 -313 -314 -315 -316 -317 -318 -319 -320 -321 -322 -323 -324 -325 -326 -327 -328 -329 -330 -331 -332 -333 -334 -335 -336 -337 -338 -339 -340 -341 -342 -343 -344 -345 -346 -347 -348 -349 -350 -351 -352 -353 -354 -355 -356 -357 -358 -359 -360 -361 -362 -363 -364 -365 -366 -367 -368 -369 -370 -371 -372 -373 -374 -375 -376 -377 -378 -379 -380 -381 -382 -383 -384 -385 -386 -387 -388 -389 -390 -391 -392 -393 -394 -395 -396 -397 -398 -399 -400 -401 -402 -403 -404 -405 -406 -407 -408 -409 -410 -411 -412 -413 -414 -415 -416 -417 -418 -419 -420 -421 -422 -423 -424 -425 -426 -427 -428 -429 -430 -431 -432 -433 -434 -435 -436 -437 -438 -439 -440 -441 -442 -443 -444 -445 -446 -447 -448 -449 -450 -451 -452 -453 -454 -455 -456 -457 -458 -459 -460 -461 -462 -463 -464 -465 -466 -467 -468 -469 -470 -471 -472 -473 -474 -475 -476 -477 -478 -479 -480 -481 -482 -483 -484 -485 -486 -487 -488 -489 -490 -491 -492 -493 -494 -495 -496 -497 -498 -499 -500 -501 -502 -503 -504 -505 -506 -507 -508 -509 -510 -511 -512 -513 -514 -515 -516 -517 -518 -519 -520 -521 -522 -523 -524 -525 -526 -527 -528 -529 -530 -531 -532 -533 -534 -535 -536 -537 -538 -539 -540 -541 -542 -543 -544 -545 -546 -547 -548 -549 -550 -551 -552 -553 -554 -555 -556 -557 -558 -559 -560 -561 -562 -563 -564 -565 -566 -567 -568 -569 -570 -571 -572 -573 -574 -575 -576 -577 -578 -579 -580 -581 -582 -583 -584 -585 -5861 -  -  -  -  -  -  -  -  -1 -  -1 -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1 -  -45 -  -  -45 -  -  -45 -  -  -45 -  -  -45 -  -  -45 -  -  -45 -  -1 -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1 -  -  -1 -  -  -  -45 -45 -  -  -45 -45 -  -  -45 -  -  -  -45 -45 -45 -  -  -  -  -1 -42 -  -42 -42 -  -  -  -  -  -  -  -1 -18 -18 -18 -18 -  -  -  -  -1 -89 -43 -  -43 -43 -43 -  -  -  -  -  -  -  -  -  -  -  -  -  -1 -  -45 -23 -23 -  -  -  -22 -22 -  -  -  -  -  -  -  -  -  -  -45 -  -  -45 -45 -45 -45 -  -  -45 -  -45 -  -  -  -1 -45 -45 -45 -45 -45 -  -  -1 -75 -28 -  -47 -  -  -  -1 -10 -10 -10 -10 -10 -5 -  -  -10 -  -  -  -  -1 -22 -  -22 -22 -22 -22 -  -22 -  -  -  -1 -18 -  -  -18 -18 -  -18 -  -  -  -  -  -1 -45 -45 -45 -  -  -  -  -1 -  -231 -4 -  -  -  -227 -97 -  -130 -101 -101 -  -130 -  -  -97 -  -  -97 -97 -64 -64 -  -  -  -  -  -  -  -  -  -  -  -  -64 -113 -146 -146 -  -146 -89 -57 -  -  -  -  -57 -  -57 -27 -  -  -57 -5 -5 -  -  -57 -57 -57 -  -57 -57 -  -  -  -  -113 -113 -  -  -  -  -97 -69 -  -  -97 -  -  -  -  -1 -98 -  -  -98 -36 -36 -  -  -  -98 -  -  -98 -17 -  -  -  -98 -5 -  -  -98 -  -  -98 -  -98 -  -  -  -  -  -1 -  -  -  -  -1 -  -45 -45 -  -  -45 -  -  -  -1 -36 -36 -  -  -  -  -  -  -  -1 -36 -54 -  -  -  -  -1 -45 -  -  -  -  -  -45 -70 -  -  -  -  -  -  -  -  -  -  -  -  -  -1 -45 -45 -45 -45 -  -  -  -1 -2 -2 -2 -32 -  -  -2 -  -  -  -1 -2 -2 -2 -  -2 -2 -  -  -  -  -  -  -  -  -  -  -1 -5 -3 -3 -2 -2 -2 -2 -  -2 -  -1 -  -  -  -2 -2 -  -  -  -  -  -  -  -  -  -  -  -1 -3 -  -  -  -  -3 -3 -  -  -  -  -  -  -3 -3 -  -  -1 -2 -2 -2 -2 -  -  -  -  -  -  -  -1 -  -45 -45 -45 -45 -25 -  -  -45 -45 -45 -45 -45 -  -  -  -1 -  -  -  -  -  -1 -41 -1 -1 -  -40 -40 -40 -47 -  -  -  -  -  -  -1 -24 -22 -22 -2 -1 -1 -  -  -  -1 -20 -20 -20 -20 -  -  -  -  -  -  - 
var assert = require('assert');
- 
-// The Connection class
-// ====================
- 
-// The Connection class manages HTTP/2 connections. Each instance corresponds to one transport
-// stream (TCP stream). It operates by sending and receiving frames and is implemented as a
-// [Flow](flow.html) subclass.
- 
-var Flow = require('./flow').Flow;
- 
-exports.Connection = Connection;
- 
-// Public API
-// ----------
- 
-// * **new Connection(log, firstStreamId, settings)**: create a new Connection
-//
-// * **Event: 'error' (type)**: signals a connection level error made by the other end
-//
-// * **Event: 'peerError' (type)**: signals the receipt of a GOAWAY frame that contains an error
-//   code other than NO_ERROR
-//
-// * **Event: 'stream' (stream)**: signals that there's an incoming stream
-//
-// * **createStream(): stream**: initiate a new stream
-//
-// * **set(settings)**: change the value of one or more settings according to the key-value pairs
-//   of `settings`
-//
-// * **ping([callback])**: send a ping and call callback when the answer arrives
-//
-// * **close([error])**: close the stream with an error code
- 
-// Constructor
-// -----------
- 
-// The main aspects of managing the connection are:
-function Connection(log, firstStreamId, settings) {
-  // * initializing the base class
-  Flow.call(this, 0);
- 
-  // * logging: every method uses the common logger object
-  this._log = log.child({ component: 'connection' });
- 
-  // * stream management
-  this._initializeStreamManagement(firstStreamId);
- 
-  // * lifecycle management
-  this._initializeLifecycleManagement();
- 
-  // * flow control
-  this._initializeFlowControl();
- 
-  // * settings management
-  this._initializeSettingsManagement(settings);
- 
-  // * multiplexing
-  this._initializeMultiplexing();
-}
-Connection.prototype = Object.create(Flow.prototype, { constructor: { value: Connection } });
- 
-// Overview
-// --------
- 
-//              |    ^             |    ^
-//              v    |             v    |
-//         +--------------+   +--------------+
-//     +---|   stream1    |---|   stream2    |----      ....      ---+
-//     |   | +----------+ |   | +----------+ |                       |
-//     |   | | stream1. | |   | | stream2. | |                       |
-//     |   +-| upstream |-+   +-| upstream |-+                       |
-//     |     +----------+       +----------+                         |
-//     |       |     ^             |     ^                           |
-//     |       v     |             v     |                           |
-//     |       +-----+-------------+-----+--------      ....         |
-//     |       ^     |             |     |                           |
-//     |       |     v             |     |                           |
-//     |   +--------------+        |     |                           |
-//     |   |   stream0    |        |     |                           |
-//     |   |  connection  |        |     |                           |
-//     |   |  management  |     multiplexing                         |
-//     |   +--------------+     flow control                         |
-//     |                           |     ^                           |
-//     |                   _read() |     | _write()                  |
-//     |                           v     |                           |
-//     |                +------------+ +-----------+                 |
-//     |                |output queue| |input queue|                 |
-//     +----------------+------------+-+-----------+-----------------+
-//                                 |     ^
-//                          read() |     | write()
-//                                 v     |
- 
-// Stream management
-// -----------------
- 
-var Stream  = require('./stream').Stream;
- 
-// Initialization:
-Connection.prototype._initializeStreamManagement = function _initializeStreamManagement(firstStreamId) {
-  // * streams are stored in two data structures:
-  //   * `_streamIds` is an id -> stream map of the streams that are allowed to receive frames.
-  //   * `_streamPriorities` is a priority -> [stream] map of stream that allowed to send frames.
-  this._streamIds = [];
-  this._streamPriorities = [];
- 
-  // * The next outbound stream ID and the last inbound stream id
-  this._nextStreamId = firstStreamId;
-  this._lastIncomingStream = 0;
- 
-  // * Calling `_writeControlFrame` when there's an incoming stream with 0 as stream ID
-  this._streamIds[0] = { upstream: { write: this._writeControlFrame.bind(this) } };
- 
-  // * By default, the number of concurrent outbound streams is not limited. The `_streamLimit` can
-  //   be set by the SETTINGS_MAX_CONCURRENT_STREAMS setting.
-  this._streamSlotsFree = Infinity;
-  this._streamLimit = Infinity;
-  this.on('RECEIVING_SETTINGS_MAX_CONCURRENT_STREAMS', this._updateStreamLimit);
-};
- 
-// `_writeControlFrame` is called when there's an incoming frame in the `_control` stream. It
-// broadcasts the message by creating an event on it.
-Connection.prototype._writeControlFrame = function _writeControlFrame(frame) {
-  Eif ((frame.type === 'SETTINGS') || (frame.type === 'PING') ||
-      (frame.type === 'GOAWAY') || (frame.type === 'WINDOW_UPDATE')) {
-    this._log.debug({ frame: frame }, 'Receiving connection level frame');
-    this.emit(frame.type, frame);
-  } else {
-    this._log.error({ frame: frame }, 'Invalid connection level frame');
-    this.emit('error', 'PROTOCOL_ERROR');
-  }
-};
- 
-// Methods to manage the stream slot pool:
-Connection.prototype._updateStreamLimit = function _updateStreamLimit(newStreamLimit) {
-  var wakeup = (this._streamSlotsFree === 0) && (newStreamLimit > this._streamLimit);
-  this._streamSlotsFree += newStreamLimit - this._streamLimit;
-  this._streamLimit = newStreamLimit;
-  Iif (wakeup) {
-    this.emit('wakeup');
-  }
-};
- 
-Connection.prototype._changeStreamCount = function _changeStreamCount(change) {
-  if (change) {
-    this._log.trace({ free: this._streamSlotsFree, change: change },
-                    'Changing active stream count.');
-    var wakeup = (this._streamSlotsFree === 0) && (change < 0);
-    this._streamSlotsFree -= change;
-    Iif (wakeup) {
-      this.emit('wakeup');
-    }
-  }
-};
- 
-// Creating a new *inbound or outbound* stream with the given `id` (which is undefined in case of
-// an outbound stream) consists of three steps:
-//
-// 1. var stream = new Stream(this._log);
-// 2. this._allocateId(stream, id);
-// 2. this._allocatePriority(stream);
- 
-// Allocating an ID to a stream
-Connection.prototype._allocateId = function _allocateId(stream, id) {
-  // * initiated stream without definite ID
-  if (id === undefined) {
-    id = this._nextStreamId;
-    this._nextStreamId += 2;
-  }
- 
-  // * incoming stream with a legitim ID (larger than any previous and different parity than ours)
-  else Eif ((id > this._lastIncomingStream) && ((id - this._nextStreamId) % 2 !== 0)) {
-    this._lastIncomingStream = id;
-  }
- 
-  // * incoming stream with invalid ID
-  else {
-    this._log.error({ stream_id: id, lastIncomingStream: this._lastIncomingStream },
-                    'Invalid incoming stream ID.');
-    this.emit('error', 'PROTOCOL_ERROR');
-    return undefined;
-  }
- 
-  assert(!(id in this._streamIds));
- 
-  // * adding to `this._streamIds`
-  this._log.trace({ s: stream, stream_id: id }, 'Allocating ID for stream.');
-  this._streamIds[id] = stream;
-  stream.id = id;
-  this.emit('new_stream', stream, id);
- 
-  // * handling stream errors as connection errors
-  stream.on('error', this.emit.bind(this, 'error'));
- 
-  return id;
-};
- 
-// Allocating a priority to a stream, and managing priority changes
-Connection.prototype._allocatePriority = function _allocatePriority(stream) {
-  this._log.trace({ s: stream }, 'Allocating priority for stream.');
-  this._insert(stream, stream._priority);
-  stream.on('priority', this._reprioritize.bind(this, stream));
-  stream.upstream.on('readable', this.emit.bind(this, 'wakeup'));
-  this.emit('wakeup');
-};
- 
-Connection.prototype._insert = function _insert(stream, priority) {
-  if (priority in this._streamPriorities) {
-    this._streamPriorities[priority].push(stream);
-  } else {
-    this._streamPriorities[priority] = [stream];
-  }
-};
- 
-Connection.prototype._reprioritize = function _reprioritize(stream, priority) {
-  var bucket = this._streamPriorities[stream._priority];
-  var index = bucket.indexOf(stream);
-  assert(index !== -1);
-  bucket.splice(index, 1);
-  if (bucket.length === 0) {
-    delete this._streamPriorities[stream._priority];
-  }
- 
-  this._insert(stream, priority);
-};
- 
-// Creating an *inbound* stream with the given ID. It is called when there's an incoming frame to
-// a previously nonexistent stream.
-Connection.prototype._createIncomingStream = function _createIncomingStream(id) {
-  this._log.debug({ stream_id: id }, 'New incoming stream.');
- 
-  var stream = new Stream(this._log);
-  this._allocateId(stream, id);
-  this._allocatePriority(stream);
-  this.emit('stream', stream, id);
- 
-  return stream;
-};
- 
-// Creating an *outbound* stream
-Connection.prototype.createStream = function createStream() {
-  this._log.trace('Creating new outbound stream.');
- 
-  // * Receiving is enabled immediately, and an ID gets assigned to the stream
-  var stream = new Stream(this._log);
-  this._allocatePriority(stream);
- 
-  return stream;
-};
- 
-// Multiplexing
-// ------------
- 
-Connection.prototype._initializeMultiplexing = function _initializeMultiplexing() {
-  this.on('window_update', this.emit.bind(this, 'wakeup'));
-  this._sendScheduled = false;
-  this._firstFrameReceived = false;
-};
- 
-// The `_send` method is a virtual method of the [Flow class](flow.html) that has to be implemented
-// by child classes. It reads frames from streams and pushes them to the output buffer.
-Connection.prototype._send = function _send(immediate) {
-  // * Do not do anything if the connectionis already closed
-  if (this._closed) {
-    return;
-  }
- 
-  // * Collapsing multiple calls in a turn into a single deferred call
-  if (immediate) {
-    this._sendScheduled = false;
-  } else {
-    if (!this._sendScheduled) {
-      this._sendScheduled = true;
-      setImmediate(this._send.bind(this, true));
-    }
-    return;
-  }
- 
-  this._log.trace('Starting forwarding frames from streams.');
- 
-  // * Looping through priority `bucket`s in priority order.
-priority_loop:
-  for (var priority in this._streamPriorities) {
-    var bucket = this._streamPriorities[priority];
-    var nextBucket = [];
- 
-    // * Forwarding frames from buckets with round-robin scheduling.
-    //   1. pulling out frame
-    //   2. if there's no frame, skip this stream
-    //   3. if forwarding this frame would make `streamCount` greater than `streamLimit`, skip
-    //      this stream
-    //   4. adding stream to the bucket of the next round
-    //   5. assigning an ID to the frame (allocating an ID to the stream if there isn't already)
-    //   6. if forwarding a PUSH_PROMISE, allocate ID to the promised stream
-    //   7. forwarding the frame, changing `streamCount` as appropriate
-    //   8. stepping to the next stream if there's still more frame needed in the output buffer
-    //   9. switching to the bucket of the next round
-    while (bucket.length > 0) {
-      for (var index = 0; index < bucket.length; index++) {
-        var stream = bucket[index];
-        var frame = stream.upstream.read((this._window > 0) ? this._window : -1);
- 
-        if (!frame) {
-          continue;
-        } else Iif (frame.count_change > this._streamSlotsFree) {
-          stream.upstream.unshift(frame);
-          continue;
-        }
- 
-        nextBucket.push(stream);
- 
-        if (frame.stream === undefined) {
-          frame.stream = stream.id || this._allocateId(stream);
-        }
- 
-        if (frame.type === 'PUSH_PROMISE') {
-          this._allocatePriority(frame.promised_stream);
-          frame.promised_stream = this._allocateId(frame.promised_stream);
-        }
- 
-        this._log.trace({ s: stream, frame: frame }, 'Forwarding outgoing frame');
-        var moreNeeded = this.push(frame);
-        this._changeStreamCount(frame.count_change);
- 
-        assert(moreNeeded !== null); // The frame shouldn't be unforwarded
-        Iif (moreNeeded === false) {
-          break priority_loop;
-        }
-      }
- 
-      bucket = nextBucket;
-      nextBucket = [];
-    }
-  }
- 
-  // * if we couldn't forward any frame, then sleep until window update, or some other wakeup event
-  if (moreNeeded === undefined) {
-    this.once('wakeup', this._send.bind(this));
-  }
- 
-  this._log.trace({ moreNeeded: moreNeeded }, 'Stopping forwarding frames from streams.');
-};
- 
-// The `_receive` method is another virtual method of the [Flow class](flow.html) that has to be
-// implemented by child classes. It forwards the given frame to the appropriate stream:
-Connection.prototype._receive = function _receive(frame, done) {
-  this._log.trace({ frame: frame }, 'Forwarding incoming frame');
- 
-  // * first frame needs to be checked by the `_onFirstFrameReceived` method
-  if (!this._firstFrameReceived) {
-    this._firstFrameReceived = true;
-    this._onFirstFrameReceived(frame);
-  }
- 
-  // * gets the appropriate stream from the stream registry
-  var stream = this._streamIds[frame.stream];
- 
-  // * or creates one if it's not in `this.streams`
-  if (!stream) {
-    stream = this._createIncomingStream(frame.stream);
-  }
- 
-  // * in case of PUSH_PROMISE, replaces the promised stream id with a new incoming stream
-  if (frame.type === 'PUSH_PROMISE') {
-    frame.promised_stream = this._createIncomingStream(frame.promised_stream);
-  }
- 
-  frame.count_change = this._changeStreamCount.bind(this);
- 
-  // * and writes it to the `stream`'s `upstream`
-  stream.upstream.write(frame);
- 
-  done();
-};
- 
-// Settings management
-// -------------------
- 
-var defaultSettings = {
-  SETTINGS_FLOW_CONTROL_OPTIONS: true
-};
- 
-// Settings management initialization:
-Connection.prototype._initializeSettingsManagement = function _initializeSettingsManagement(settings) {
-  // * Sending the initial settings.
-  this._log.debug('Sending the first SETTINGS frame as part of the connection header.');
-  this.set(settings || defaultSettings);
- 
-  // * Forwarding SETTINGS frames to the `_receiveSettings` method
-  this.on('SETTINGS', this._receiveSettings);
-};
- 
-// * Checking that the first frame the other endpoint sends is SETTINGS
-Connection.prototype._onFirstFrameReceived = function _onFirstFrameReceived(frame) {
-  Eif ((frame.stream === 0) && (frame.type === 'SETTINGS')) {
-    this._log.debug('Receiving the first SETTINGS frame as part of the connection header.');
-  } else {
-    this._log.fatal({ frame: frame }, 'Invalid connection header: first frame is not SETTINGS.');
-    this.emit('error');
-  }
-};
- 
-// Handling of incoming SETTINGS frames.
-Connection.prototype._receiveSettings = function _receiveSettings(frame) {
-  for (var name in frame.settings) {
-    this.emit('RECEIVING_' + name, frame.settings[name]);
-  }
-};
- 
-// Changing one or more settings value and sending out a SETTINGS frame
-Connection.prototype.set = function set(settings) {
-  this.push({
-    type: 'SETTINGS',
-    flags: {},
-    stream: 0,
-    settings: settings
-  });
-  for (var name in settings) {
-    this.emit('SENDING_' + name, settings[name]);
-  }
-};
- 
-// Lifecycle management
-// --------------------
- 
-// The main responsibilities of lifecycle management code:
-//
-// * keeping the connection alive by
-//   * sending PINGs when the connection is idle
-//   * answering PINGs
-// * ending the connection
- 
-Connection.prototype._initializeLifecycleManagement = function _initializeLifecycleManagement() {
-  this._pings = {};
-  this.on('PING', this._receivePing);
-  this.on('GOAWAY', this._receiveGoaway);
-  this._closed = false;
-};
- 
-// Generating a string of length 16 with random hexadecimal digits
-Connection.prototype._generatePingId = function _generatePingId() {
-  do {
-    var id = '';
-    for (var i = 0; i < 16; i++) {
-      id += Math.floor(Math.random()*16).toString(16);
-    }
-  } while(id in this._pings);
-  return id;
-};
- 
-// Sending a ping and calling `callback` when the answer arrives
-Connection.prototype.ping = function ping(callback) {
-  var id = this._generatePingId();
-  var data = new Buffer(id, 'hex');
-  this._pings[id] = callback;
- 
-  this._log.debug({ data: data }, 'Sending PING.');
-  this.push({
-    type: 'PING',
-    flags: {
-      PONG: false
-    },
-    stream: 0,
-    data: data
-  });
-};
- 
-// Answering pings
-Connection.prototype._receivePing = function _receivePing(frame) {
-  if (frame.flags.PONG) {
-    var id = frame.data.toString('hex');
-    if (id in this._pings) {
-      this._log.debug({ data: frame.data }, 'Receiving answer for a PING.');
-      var callback = this._pings[id];
-      Eif (callback) {
-        callback();
-      }
-      delete this._pings[id];
-    } else {
-      this._log.warn({ data: frame.data }, 'Unsolicited PING answer.');
-    }
- 
-  } else {
-    this._log.debug({ data: frame.data }, 'Answering PING.');
-    this.push({
-      type: 'PING',
-      flags: {
-        PONG: true
-      },
-      stream: 0,
-      data: frame.data
-    });
-  }
-};
- 
-// Terminating the connection
-Connection.prototype.close = function close(error) {
-  Iif (this._closed) {
-    this._log.warn('Trying to close an already closed connection');
-    return;
-  }
- 
-  this._log.debug({ error: error }, 'Closing the connection');
-  this.push({
-    type: 'GOAWAY',
-    flags: {},
-    stream: 0,
-    last_stream: this._lastIncomingStream,
-    error: error || 'NO_ERROR'
-  });
-  this.push(null);
-  this._closed = true;
-};
- 
-Connection.prototype._receiveGoaway = function _receiveGoaway(frame) {
-  this._log.debug({ error: frame.error }, 'Other end closed the connection');
-  this.push(null);
-  this._closed = true;
-  Iif (frame.error !== 'NO_ERROR') {
-    this.emit('peerError', frame.error);
-  }
-};
- 
-// Flow control
-// ------------
- 
-Connection.prototype._initializeFlowControl = function _initializeFlowControl() {
-  // Handling of initial window size of individual streams.
-  this._initialStreamWindowSize = INITIAL_STREAM_WINDOW_SIZE;
-  this.on('new_stream', function(stream) {
-    stream.upstream.setInitialWindow(this._initialStreamWindowSize);
-    if (this._remoteFlowControlDisabled) {
-      stream.upstream.disableRemoteFlowControl();
-    }
-  });
-  this.on('RECEIVING_SETTINGS_INITIAL_WINDOW_SIZE', this._setInitialStreamWindowSize);
-  this.on('RECEIVING_SETTINGS_FLOW_CONTROL_OPTIONS', this._setLocalFlowControl);
-  this.on('SENDING_SETTINGS_FLOW_CONTROL_OPTIONS', this._setRemoteFlowControl);
-  this._streamIds[0].upstream.setInitialWindow = function noop() {};
-  this._streamIds[0].upstream.disableRemoteFlowControl = function noop() {};
-};
- 
-// The initial connection flow control window is 65535 bytes.
-var INITIAL_STREAM_WINDOW_SIZE = 65535;
- 
-// A SETTINGS frame can alter the initial flow control window size for all current streams. When the
-// value of SETTINGS_INITIAL_WINDOW_SIZE changes, a receiver MUST adjust the window size of all
-// stream by calling the `setInitialStreamWindowSize` method. The window size has to be modified by
-// the difference between the new value and the old value.
-Connection.prototype._setInitialStreamWindowSize = function _setInitialStreamWindowSize(size) {
-  if ((this._initialStreamWindowSize === Infinity) && (size !== Infinity)) {
-    this._log.error('Trying to manipulate initial flow control window size after flow control was turned off.');
-    this.emit('error', 'FLOW_CONTROL_ERROR');
-  } else {
-    this._log.debug({ size: size }, 'Changing stream initial window size.');
-    this._initialStreamWindowSize = size;
-    this._streamIds.forEach(function(stream) {
-      stream.upstream.setInitialWindow(size);
-    });
-  }
-};
- 
-// `_setStreamFlowControl()` may be used to disable/enable flow control. In practice, it is just
-// for turning off flow control since it can not be turned on.
-Connection.prototype._setLocalFlowControl = function _setLocalFlowControl(disable) {
-  if (disable) {
-    this._increaseWindow(Infinity);
-    this._setInitialStreamWindowSize(Infinity);
-  } else if (this._initialStreamWindowSize === Infinity) {
-    this._log.error('Trying to re-enable flow control after it was turned off.');
-    this.emit('error', 'FLOW_CONTROL_ERROR');
-  }
-};
- 
-Connection.prototype._setRemoteFlowControl = function _setRemoteFlowControl(disable) {
-  Eif (disable) {
-    this.disableRemoteFlowControl();
-    this._streamIds.forEach(function(stream) {
-      stream.upstream.disableRemoteFlowControl();
-    });
-  } else if (this._remoteFlowControlDisabled) {
-    this._log.error('Trying to re-enable flow control after it was turned off.');
-    throw new Error('Trying to re-enable flow control after it was turned off.');
-  }
-};
- 
- -
- - - - - - - - diff --git a/coverage/lcov-report/lib/endpoint.js.html b/coverage/lcov-report/lib/endpoint.js.html deleted file mode 100644 index 613b9a42..00000000 --- a/coverage/lcov-report/lib/endpoint.js.html +++ /dev/null @@ -1,1082 +0,0 @@ - - - - Code coverage report for lib/endpoint.js - - - - - - - -
-

Code coverage report for lib/endpoint.js

-

- - Statements: 94.17% (97 / 103)      - - - Branches: 90.91% (20 / 22)      - - - Functions: 87.5% (14 / 16)      - - - Lines: 94.17% (97 / 103)      - -

-
All files » lib/ » endpoint.js
-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210 -211 -212 -213 -214 -215 -216 -217 -218 -219 -220 -221 -222 -223 -224 -225 -226 -227 -228 -229 -230 -231 -232 -233 -234 -235 -236 -237 -238 -239 -240 -241 -242 -243 -244 -245 -246 -247 -248 -249 -250 -251 -252 -253 -254 -255 -256 -257 -258 -259 -2601 -  -1 -1 -1 -1 -1 -1 -1 -  -1 -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1 -24 -  -  -24 -  -  -  -24 -24 -12 -  -12 -  -  -  -  -  -24 -  -  -24 -  -  -24 -  -1 -  -  -  -  -1 -  -  -1 -12 -12 -  -  -  -1 -  -12 -  -  -12 -  -  -11 -11 -241 -1 -  -1 -1 -  -240 -  -  -  -  -10 -10 -10 -10 -10 -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1 -  -  -  -  -  -  -  -  -1 -96 -  -  -96 -  -  -  -1 -  -1 -24 -24 -12 -12 -12 -  -12 -12 -12 -  -  -24 -24 -24 -24 -24 -  -24 -24 -24 -24 -  -  -1 -1 -155 -155 -155 -130 -  -155 -67 -  -155 -  -  -1 -50 -  -  -  -  -  -1 -24 -  -  -1 -11 -  -  -  -  -  -1 -24 -24 -24 -24 -24 -  -24 -  -  -1 -1 -1 -1 -  -  -1 -2 -  -  -  -  -  -1 -  -1 -1 -6 -2 -2 -  -6 -  - 
var assert = require('assert');
- 
-var Serializer   = require('./framer').Serializer;
-var Deserializer = require('./framer').Deserializer;
-var Compressor   = require('./compressor').Compressor;
-var Decompressor = require('./compressor').Decompressor;
-var Connection   = require('./connection').Connection;
-var Duplex       = require('stream').Duplex;
-var Transform    = require('stream').Transform;
- 
-exports.Endpoint = Endpoint;
- 
-// The Endpoint class
-// ==================
- 
-// Public API
-// ----------
- 
-// - **new Endpoint(log, role, settings, filters)**: create a new Endpoint.
-//
-//   - `log`: bunyan logger of the parent
-//   - `role`: 'CLIENT' or 'SERVER'
-//   - `settings`: initial HTTP/2 settings
-//   - `filters`: a map of functions that filter the traffic between components (for debugging or
-//     intentional failure injection).
-//
-//     Filter functions get three arguments:
-//     1. `frame`: the current frame
-//     2. `forward(frame)`: function that can be used to forward a frame to the next component
-//     3. `done()`: callback to signal the end of the filter process
-//
-//     Valid filter names and their position in the stack:
-//     - `beforeSerialization`: after compression, before serialization
-//     - `beforeCompression`: after multiplexing, before compression
-//     - `afterDeserialization`: after deserialization, before decompression
-//     - `afterDecompression`: after decompression, before multiplexing
-//
-// * **Event: 'stream' (Stream)**: 'stream' event forwarded from the underlying Connection
-//
-// * **Event: 'error' (type)**: signals an error
-//
-// * **createStream(): Stream**: initiate a new stream (forwarded to the underlying Connection)
-//
-// * **close([error])**: close the connection with an error code
- 
-// Constructor
-// -----------
- 
-// The process of initialization:
-function Endpoint(log, role, settings, filters) {
-  Duplex.call(this);
- 
-  // * Initializing logging infrastructure
-  this._log = log.child({ component: 'endpoint', e: this });
- 
-  // * First part of the handshake process: sending and receiving the client connection header
-  //   prelude.
-  assert((role === 'CLIENT') || role === 'SERVER');
-  if (role === 'CLIENT') {
-    this._writePrelude();
-  } else {
-    this._readPrelude();
-  }
- 
-  // * Initialization of componenet. This includes the second part of the handshake process:
-  //   sending the first SETTINGS frame. This is done by the connection class right after
-  //   initialization.
-  this._initializeDataFlow(role, settings, filters || {});
- 
-  // * Initialization of management code.
-  this._initializeManagement();
- 
-  // * Initializing error handling.
-  this._initializeErrorHandling();
-}
-Endpoint.prototype = Object.create(Duplex.prototype, { constructor: { value: Endpoint } });
- 
-// Handshake
-// ---------
- 
-var CLIENT_PRELUDE = new Buffer('PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n');
- 
-// Writing the client header is simple and synchronous.
-Endpoint.prototype._writePrelude = function _writePrelude() {
-  this._log.debug('Sending the client connection header prelude.');
-  this.push(CLIENT_PRELUDE);
-};
- 
-// The asynchronous process of reading the client header:
-Endpoint.prototype._readPrelude = function _readPrelude() {
-  // * progress in the header is tracker using a `cursor`
-  var cursor = 0;
- 
-  // * `_write` is temporarily replaced by the comparator function
-  this._write = function _temporalWrite(chunk, encoding, done) {
-    // * which compares the stored header with the current `chunk` byte by byte and emits the
-    //   'error' event if there's a byte that doesn't match
-    var offset = cursor;
-    while(cursor < CLIENT_PRELUDE.length && (cursor - offset) < chunk.length) {
-      if (CLIENT_PRELUDE[cursor] !== chunk[cursor - offset]) {
-        this._log.fatal({ cursor: cursor, offset: offset, chunk: chunk },
-                        'Client connection header prelude does not match.');
-        this._error('handshake', 'PROTOCOL_ERROR');
-        return;
-      }
-      cursor += 1;
-    }
- 
-    // * if the whole header is over, and there were no error then restore the original `_write`
-    //   and call it with the remaining part of the current chunk
-    Eif (cursor === CLIENT_PRELUDE.length) {
-      this._log.debug('Successfully received the client connection header prelude.');
-      delete this._write;
-      chunk = chunk.slice(cursor - offset);
-      this._write(chunk, encoding, done);
-    }
-  };
-};
- 
-// Data flow
-// ---------
- 
-//     +---------------------------------------------+
-//     |                                             |
-//     |   +-------------------------------------+   |
-//     |   | +---------+ +---------+ +---------+ |   |
-//     |   | | stream1 | | stream2 | |   ...   | |   |
-//     |   | +---------+ +---------+ +---------+ |   |
-//     |   |             connection              |   |
-//     |   +-------------------------------------+   |
-//     |             |                 ^             |
-//     |        pipe |                 | pipe        |
-//     |             v                 |             |
-//     |   +------------------+------------------+   |
-//     |   |    compressor    |   decompressor   |   |
-//     |   +------------------+------------------+   |
-//     |             |                 ^             |
-//     |        pipe |                 | pipe        |
-//     |             v                 |             |
-//     |   +------------------+------------------+   |
-//     |   |    serializer    |   deserializer   |   |
-//     |   +------------------+------------------+   |
-//     |             |                 ^             |
-//     |     _read() |                 | _write()    |
-//     |             v                 |             |
-//     |      +------------+     +-----------+       |
-//     |      |output queue|     |input queue|       |
-//     +------+------------+-----+-----------+-------+
-//                   |                 ^
-//            read() |                 | write()
-//                   v                 |
- 
-function createTransformStream(filter) {
-  var transform = new Transform({ objectMode: true });
-  var push = transform.push.bind(transform);
-  transform._transform = function(frame, encoding, done) {
-    filter(frame, push, done);
-  };
-  return transform;
-}
- 
-function pipeAndFilter(stream1, stream2, filter) {
-  Iif (filter) {
-    stream1.pipe(createTransformStream(filter)).pipe(stream2);
-  } else {
-    stream1.pipe(stream2);
-  }
-}
- 
-var MAX_HTTP_PAYLOAD_SIZE = 16383;
- 
-Endpoint.prototype._initializeDataFlow = function _initializeDataFlow(role, settings, filters) {
-  var firstStreamId, compressorRole, decompressorRole;
-  if (role === 'CLIENT') {
-    firstStreamId = 1;
-    compressorRole = 'REQUEST';
-    decompressorRole = 'RESPONSE';
-  } else {
-    firstStreamId = 2;
-    compressorRole = 'RESPONSE';
-    decompressorRole = 'REQUEST';
-  }
- 
-  this._serializer   = new Serializer(this._log, MAX_HTTP_PAYLOAD_SIZE);
-  this._deserializer = new Deserializer(this._log, MAX_HTTP_PAYLOAD_SIZE);
-  this._compressor   = new Compressor(this._log, compressorRole);
-  this._decompressor = new Decompressor(this._log, decompressorRole);
-  this._connection   = new Connection(this._log, firstStreamId, settings);
- 
-  pipeAndFilter(this._connection, this._compressor, filters.beforeCompression);
-  pipeAndFilter(this._compressor, this._serializer, filters.beforeSerialization);
-  pipeAndFilter(this._deserializer, this._decompressor, filters.afterDeserialization);
-  pipeAndFilter(this._decompressor, this._connection, filters.afterDecompression);
-};
- 
-var noread = {};
-Endpoint.prototype._read = function _read() {
-  this._readableState.sync = true;
-  var moreNeeded = noread, chunk;
-  while (moreNeeded && (chunk = this._serializer.read())) {
-    moreNeeded = this.push(chunk);
-  }
-  if (moreNeeded === noread) {
-    this._serializer.once('readable', this._read.bind(this));
-  }
-  this._readableState.sync = false;
-};
- 
-Endpoint.prototype._write = function _write(chunk, encoding, done) {
-  this._deserializer.write(chunk, encoding, done);
-};
- 
-// Management
-// --------------
- 
-Endpoint.prototype._initializeManagement = function _initializeManagement() {
-  this._connection.on('stream', this.emit.bind(this, 'stream'));
-};
- 
-Endpoint.prototype.createStream = function createStream() {
-  return this._connection.createStream();
-};
- 
-// Error handling
-// --------------
- 
-Endpoint.prototype._initializeErrorHandling = function _initializeErrorHandling() {
-  this._serializer.on('error', this._error.bind(this, 'serializer'));
-  this._deserializer.on('error', this._error.bind(this, 'deserializer'));
-  this._compressor.on('error', this._error.bind(this, 'compressor'));
-  this._decompressor.on('error', this._error.bind(this, 'decompressor'));
-  this._connection.on('error', this._error.bind(this, 'connection'));
- 
-  this._connection.on('peerError', this.emit.bind(this, 'peerError'));
-};
- 
-Endpoint.prototype._error = function _error(component, error) {
-  this._log.fatal({ source: component, message: error }, 'Fatal error, closing connection');
-  this.close(error);
-  setImmediate(this.emit.bind(this, 'error', error));
-};
- 
-Endpoint.prototype.close = function close(error) {
-  this._connection.close(error);
-};
- 
-// Bunyan serializers
-// ------------------
- 
-exports.serializers = {};
- 
-var nextId = 0;
-exports.serializers.e = function(endpoint) {
-  if (!('id' in endpoint)) {
-    endpoint.id = nextId;
-    nextId += 1;
-  }
-  return endpoint.id;
-};
- 
- -
- - - - - - - - diff --git a/coverage/lcov-report/lib/flow.js.html b/coverage/lcov-report/lib/flow.js.html deleted file mode 100644 index 0e0693b9..00000000 --- a/coverage/lcov-report/lib/flow.js.html +++ /dev/null @@ -1,1391 +0,0 @@ - - - - Code coverage report for lib/flow.js - - - - - - - -
-

Code coverage report for lib/flow.js

-

- - Statements: 95.87% (116 / 121)      - - - Branches: 92.05% (81 / 88)      - - - Functions: 100% (17 / 17)      - - - Lines: 95.87% (116 / 121)      - -

-
All files » lib/ » flow.js
-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210 -211 -212 -213 -214 -215 -216 -217 -218 -219 -220 -221 -222 -223 -224 -225 -226 -227 -228 -229 -230 -231 -232 -233 -234 -235 -236 -237 -238 -239 -240 -241 -242 -243 -244 -245 -246 -247 -248 -249 -250 -251 -252 -253 -254 -255 -256 -257 -258 -259 -260 -261 -262 -263 -264 -265 -266 -267 -268 -269 -270 -271 -272 -273 -274 -275 -276 -277 -278 -279 -280 -281 -282 -283 -284 -285 -286 -287 -288 -289 -290 -291 -292 -293 -294 -295 -296 -297 -298 -299 -300 -301 -302 -303 -304 -305 -306 -307 -308 -309 -310 -311 -312 -313 -314 -315 -316 -317 -318 -319 -320 -321 -322 -323 -324 -325 -326 -327 -328 -329 -330 -331 -332 -333 -334 -335 -336 -337 -338 -339 -340 -341 -342 -343 -344 -345 -346 -347 -348 -349 -350 -351 -352 -353 -354 -355 -356 -357 -358 -359 -360 -361 -362 -3631 -  -  -  -  -  -  -  -  -1 -  -1 -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1 -  -  -1 -164 -  -164 -164 -164 -164 -164 -164 -  -1 -  -  -  -  -  -1 -1 -  -  -  -  -  -  -1 -266 -63 -  -  -266 -97 -97 -97 -12 -  -97 -  -  -  -  -169 -  -  -266 -  -5 -  -  -  -  -  -1 -12 -12 -6 -  -  -  -  -  -6 -  -  -  -  -1 -45 -45 -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1 -1 -  -  -  -  -  -1 -  -231 -216 -  -  -  -  -15 -7 -7 -8 -8 -7 -  -  -7 -  -7 -  -  -  -  -  -  -8 -  -  -  -1 -  -  -  -  -1 -610 -130 -480 -  -480 -480 -  -  -  -  -480 -480 -  -480 -401 -191 -  -401 -  -  -79 -  -  -  -  -  -  -  -79 -  -79 -  -  -  -  -  -79 -  -79 -  -  -79 -  -  -  -  -1 -209 -  -209 -28 -  -28 -28 -  -  -209 -  -  -  -  -  -  -1 -210 -  -210 -203 -  -  -7 -1 -  -  -  -6 -  -6 -6 -  -  -  -  -  -6 -  -  -  -  -1 -203 -6 -  -197 -  -  -203 -203 -202 -  -  -203 -7 -  -  -203 -  -  -  -  -1 -36 -36 -  -  -  -  -  -  -  -  -  -  -  -  -  -1 -  -1 -87 -1 -1 -  -86 -86 -86 -1 -1 -  -85 -  -  -  -  -  -  -  -  -  -  -  -  -1 -5 -  -  -  -  -  -  -1 -52 -52 -  -  -  -1 -1 -  - 
var assert = require('assert');
- 
-// The Flow class
-// ==============
- 
-// Flow is a [Duplex stream][1] subclass which implements HTTP/2 flow control. It is designed to be
-// subclassed by [Connection](connection.html) and the `upstream` component of [Stream](stream.html).
-// [1]: http://nodejs.org/api/stream.html#stream_class_stream_duplex
- 
-var Duplex  = require('stream').Duplex;
- 
-exports.Flow = Flow;
- 
-// Public API
-// ----------
- 
-// * **Event: 'error' (type)**: signals an error
-//
-// * **setInitialWindow(size)**: the initial flow control window size can be changed *any time*
-//   ([as described in the standard][1]) using this method
-//
-// * **disableRemoteFlowControl()**: sends a WINDOW_UPDATE signaling that we don't want flow control
-//
-// * **disableLocalFlowControl()**: disables flow control for outgoing frames
-//
-// [1]: http://tools.ietf.org/html/draft-ietf-httpbis-http2-04#section-6.9.2
- 
-// API for child classes
-// ---------------------
- 
-// * **new Flow([flowControlId])**: creating a new flow that will listen for WINDOW_UPDATES frames
-//   with the given `flowControlId` (or every update frame if not given)
-//
-// * **_send()**: called when more frames should be pushed. The child class is expected to override
-//   this (instead of the `_read` method of the Duplex class).
-//
-// * **_receive(frame, readyCallback)**: called when there's an incoming frame. The child class is
-//   expected to override this (instead of the `_write` method of the Duplex class).
-//
-// * **push(frame): bool**: schedules `frame` for sending.
-//
-//   Returns `true` if it needs more frames in the output queue, `false` if the output queue is
-//   full, and `null` if did not push the frame into the output queue (instead, it pushed it into
-//   the flow control queue).
-//
-// * **read(limit): frame**: like the regular `read`, but the 'flow control size' (0 for non-DATA
-//   frames, length of the payload for DATA frames) of the returned frame will be under `limit`.
-//   Small exception: pass -1 as `limit` if the max. flow control size is 0. `read(0)` means the
-//   same thing as [in the original API](http://nodejs.org/api/stream.html#stream_stream_read_0).
-//
-// * **getLastQueuedFrame(): frame**: returns the last frame in output buffers
-//
-// * **_log**: the Flow class uses the `_log` object of the parent
- 
-// Constructor
-// -----------
- 
-// When a HTTP/2.0 connection is first established, new streams are created with an initial flow
-// control window size of 65535 bytes.
-var INITIAL_WINDOW_SIZE = 65535;
- 
-// `flowControlId` is needed if only specific WINDOW_UPDATEs should be watched.
-function Flow(flowControlId) {
-  Duplex.call(this, { objectMode: true });
- 
-  this._window = this._initialWindow = INITIAL_WINDOW_SIZE;
-  this._flowControlId = flowControlId;
-  this._queue = [];
-  this._ended = false;
-  this._received = 0;
-  this._remoteFlowControlDisabled = false;
-}
-Flow.prototype = Object.create(Duplex.prototype, { constructor: { value: Flow } });
- 
-// Incoming frames
-// ---------------
- 
-// `_receive` is called when there's an incoming frame.
-Flow.prototype._receive = function _receive(frame, callback) {
-  throw new Error('The _receive(frame, callback) method has to be overridden by the child class!');
-};
- 
-// `_receive` is called by `_write` which in turn is [called by Duplex][1] when someone `write()`s
-// to the flow. It emits the 'receiving' event and notifies the window size tracking code if the
-// incoming frame is a WINDOW_UPDATE.
-// [1]: http://nodejs.org/api/stream.html#stream_writable_write_chunk_encoding_callback_1
-Flow.prototype._write = function _write(frame, encoding, callback) {
-  if (frame.flags.END_STREAM || (frame.type === 'RST_STREAM')) {
-    this._ended = true;
-  }
- 
-  if ((frame.type === 'DATA') && (frame.data.length > 0) && !this._remoteFlowControlDisabled) {
-    this._receive(frame, function() {
-      this._received += frame.data.length;
-      if (!this._restoreWindowTimer) {
-        this._restoreWindowTimer = setImmediate(this._restoreWindow.bind(this));
-      }
-      callback();
-    }.bind(this));
-  }
- 
-  else {
-    this._receive(frame, callback);
-  }
- 
-  if ((frame.type === 'WINDOW_UPDATE') &&
-      ((this._flowControlId === undefined) || (frame.stream === this._flowControlId))) {
-    this._updateWindow(frame);
-  }
-};
- 
-// `_restoreWindow` basically acknowledges the DATA frames received since it's last call. It sends
-// a WINDOW_UPDATE that restores the flow control window of the remote end.
-Flow.prototype._restoreWindow = function _restoreWindow() {
-  delete this._restoreWindowTimer;
-  if (!this._ended && !this._remoteFlowControlDisabled && (this._received > 0)) {
-    this.push({
-      type: 'WINDOW_UPDATE',
-      flags: {},
-      stream: this._flowControlId,
-      window_size: this._received
-    });
-    this._received = 0;
-  }
-};
- 
-// Must be called after sending a SETTINGS frame that turns off flow control on the remote side.
-Flow.prototype.disableRemoteFlowControl = function disableRemoteFlowControl() {
-  this._log.debug('Turning off remote flow control');
-  this._remoteFlowControlDisabled = true;
-};
- 
-// Outgoing frames - sending procedure
-// -----------------------------------
- 
-//                                         flow
-//                +-------------------------------------------------+
-//                |                                                 |
-//                +--------+           +---------+                  |
-//        read()  | output |  _read()  | flow    |  _send()         |
-//     <----------|        |<----------| control |<-------------    |
-//                | buffer |           | buffer  |                  |
-//                +--------+           +---------+                  |
-//                | input  |                                        |
-//     ---------->|        |----------------------------------->    |
-//       write()  | buffer |  _write()              _receive()      |
-//                +--------+                                        |
-//                |                                                 |
-//                +-------------------------------------------------+
- 
-// `_send` is called when more frames should be pushed to the output buffer.
-Flow.prototype._send = function _send() {
-  throw new Error('The _send() method has to be overridden by the child class!');
-};
- 
-// `_send` is called by `_read` which is in turn [called by Duplex][1] when it wants to have more
-// items in the output queue.
-// [1]: http://nodejs.org/api/stream.html#stream_writable_write_chunk_encoding_callback_1
-Flow.prototype._read = function _read() {
-  // * if the flow control queue is empty, then let the user push more frames
-  if (this._queue.length === 0) {
-    this._send();
-  }
- 
-  // * if there are items in the flow control queue, then let's put them into the output queue (to
-  //   the extent it is possible with respect to the window size and output queue feedback)
-  else if (this._window > 0) {
-    this._readableState.sync = true; // to avoid reentrant calls
-    do {
-      var moreNeeded = this._push(this._queue[0]);
-      if (moreNeeded !== null) {
-        this._queue.shift();
-      }
-    } while (moreNeeded && (this._queue.length > 0));
-    this._readableState.sync = false;
- 
-    assert((moreNeeded == false) ||                              // * output queue is full
-           (this._queue.length === 0) ||                         // * flow control queue is empty
-           (!this._window && (this._queue[0].type === 'DATA'))); // * waiting for window update
-  }
- 
-  // * otherwise, come back when the flow control window is positive
-  else {
-    this.once('window_update', this._read);
-  }
-};
- 
-var MAX_PAYLOAD_SIZE = 4096; // Must not be greater than MAX_HTTP_PAYLOAD_SIZE which is 16383
- 
-// `read(limit)` is like the `read` of the Readable class, but it guarantess that the 'flow control
-// size' (0 for non-DATA frames, length of the payload for DATA frames) of the returned frame will
-// be under `limit`.
-Flow.prototype.read = function read(limit) {
-  if (limit === 0) {
-    return Duplex.prototype.read.call(this, 0);
-  } else Iif (limit === -1) {
-    limit = 0;
-  } else Eif ((limit === undefined) || (limit > MAX_PAYLOAD_SIZE)) {
-    limit = MAX_PAYLOAD_SIZE;
-  }
- 
-  // * Looking at the first frame in the queue without pulling it out if possible. This will save
-  //   a costly unshift if the frame proves to be too large to return.
-  var firstInQueue = this._readableState.buffer[0];
-  var frame = firstInQueue || Duplex.prototype.read.call(this);
- 
-  if ((frame === null) || (frame.type !== 'DATA') || (frame.data.length <= limit)) {
-    if (firstInQueue) {
-      Duplex.prototype.read.call(this);
-    }
-    return frame;
-  }
- 
-  else Iif (limit <= 0) {
-    if (!firstInQueue) {
-      this.unshift(frame);
-    }
-    return null;
-  }
- 
-  else {
-    this._log.trace({ frame: frame, size: frame.data.length, forwardable: limit },
-                    'Splitting out forwardable part of a DATA frame.');
-    var forwardable = {
-      type: 'DATA',
-      flags: {},
-      stream: frame.stream,
-      data: frame.data.slice(0, limit)
-    };
-    frame.data = frame.data.slice(limit);
- 
-    Iif (!firstInQueue) {
-      this.unshift(frame);
-    }
-    return forwardable;
-  }
-};
- 
-// `_parentPush` pushes the given `frame` into the output queue
-Flow.prototype._parentPush = function _parentPush(frame) {
-  this._log.trace({ frame: frame }, 'Pushing frame into the output queue');
- 
-  if (frame && (frame.type === 'DATA') && (this._window !== Infinity)) {
-    this._log.trace({ window: this._window, by: frame.data.length },
-                    'Decreasing flow control window size.');
-    this._window -= frame.data.length;
-    assert(this._window >= 0);
-  }
- 
-  return Duplex.prototype.push.call(this, frame);
-};
- 
-// `_push(frame)` pushes `frame` into the output queue and decreases the flow control window size.
-// It is capable of splitting DATA frames into smaller parts, if the window size is not enough to
-// push the whole frame. The return value is similar to `push` except that it returns `null` if it
-// did not push the whole frame to the output queue (but maybe it did push part of the frame).
-Flow.prototype._push = function _push(frame) {
-  var data = frame && (frame.type === 'DATA') && frame.data;
- 
-  if (!data || (data.length <= this._window)) {
-    return this._parentPush(frame);
-  }
- 
-  else if (this._window <= 0) {
-    return null;
-  }
- 
-  else {
-    this._log.trace({ frame: frame, size: frame.data.length, forwardable: this._window },
-                    'Splitting out forwardable part of a DATA frame.');
-    frame.data = data.slice(this._window);
-    this._parentPush({
-      type: 'DATA',
-      flags: {},
-      stream: frame.stream,
-      data: data.slice(0, this._window)
-    });
-    return null;
-  }
-};
- 
-// Push `frame` into the flow control queue, or if it's empty, then directly into the output queue
-Flow.prototype.push = function push(frame) {
-  if (frame === null) {
-    this._log.debug('Enqueueing outgoing End Of Stream');
-  } else {
-    this._log.debug({ frame: frame }, 'Enqueueing outgoing frame');
-  }
- 
-  var moreNeeded = null;
-  if (this._queue.length === 0) {
-    moreNeeded = this._push(frame);
-  }
- 
-  if (moreNeeded === null) {
-    this._queue.push(frame);
-  }
- 
-  return moreNeeded;
-};
- 
-// `getLastQueuedFrame` returns the last frame in output buffers. This is primarily used by the
-// [Stream](stream.html) class to mark the last frame with END_STREAM flag.
-Flow.prototype.getLastQueuedFrame = function getLastQueuedFrame() {
-  var readableQueue = this._readableState.buffer;
-  return this._queue[this._queue.length - 1] || readableQueue[readableQueue.length - 1];
-};
- 
-// Outgoing frames - managing the window size
-// ------------------------------------------
- 
-// Flow control window size is manipulated using the `_increaseWindow` method.
-//
-// * Invoking it with `Infinite` means turning off flow control. Flow control cannot be enabled
-//   again once disabled. Any attempt to re-enable flow control MUST be rejected with a
-//   FLOW_CONTROL_ERROR error code.
-// * A sender MUST NOT allow a flow control window to exceed 2^31 - 1 bytes. The action taken
-//   depends on it being a stream or the connection itself.
- 
-var WINDOW_SIZE_LIMIT = Math.pow(2, 31) - 1;
- 
-Flow.prototype._increaseWindow = function _increaseWindow(size) {
-  if ((this._window === Infinity) && (size !== Infinity)) {
-    this._log.error('Trying to increase flow control window after flow control was turned off.');
-    this.emit('error', 'FLOW_CONTROL_ERROR');
-  } else {
-    this._log.trace({ window: this._window, by: size }, 'Increasing flow control window size.');
-    this._window += size;
-    if ((this._window !== Infinity) && (this._window > WINDOW_SIZE_LIMIT)) {
-      this._log.error('Flow control window grew too large.');
-      this.emit('error', 'FLOW_CONTROL_ERROR');
-    } else {
-      this.emit('window_update');
-    }
-  }
-};
- 
-// The `_updateWindow` method gets called every time there's an incoming WINDOW_UPDATE frame. It
-// modifies the flow control window:
-//
-// * Flow control can be disabled for an individual stream by sending a WINDOW_UPDATE with the
-//   END_FLOW_CONTROL flag set. The payload of a WINDOW_UPDATE frame that has the END_FLOW_CONTROL
-//   flag set is ignored.
-// * A sender that receives a WINDOW_UPDATE frame updates the corresponding window by the amount
-//   specified in the frame.
-Flow.prototype._updateWindow = function _updateWindow(frame) {
-  this._increaseWindow(frame.flags.END_FLOW_CONTROL ? Infinity : frame.window_size);
-};
- 
-// A SETTINGS frame can alter the initial flow control window size for all current streams. When the
-// value of SETTINGS_INITIAL_WINDOW_SIZE changes, a receiver MUST adjust the size of all stream by
-// calling the `setInitialWindow` method. The window size has to be modified by the difference
-// between the new value and the old value.
-Flow.prototype.setInitialWindow = function setInitialWindow(initialWindow) {
-  this._increaseWindow(initialWindow - this._initialWindow);
-  this._initialWindow = initialWindow;
-};
- 
-// Flow control for outgoing frames can be disabled by the peer with various methods.
-Flow.prototype.disableLocalFlowControl = function disableLocalFlowControl() {
-  this._increaseWindow(Infinity);
-};
- 
- -
- - - - - - - - diff --git a/coverage/lcov-report/lib/framer.js.html b/coverage/lcov-report/lib/framer.js.html deleted file mode 100644 index 2454b2ed..00000000 --- a/coverage/lcov-report/lib/framer.js.html +++ /dev/null @@ -1,2543 +0,0 @@ - - - - Code coverage report for lib/framer.js - - - - - - - -
-

Code coverage report for lib/framer.js

-

- - Statements: 94.35% (234 / 248)      - - - Branches: 83.33% (60 / 72)      - - - Functions: 93.75% (30 / 32)      - - - Lines: 94.35% (234 / 248)      - -

-
All files » lib/ » framer.js
-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210 -211 -212 -213 -214 -215 -216 -217 -218 -219 -220 -221 -222 -223 -224 -225 -226 -227 -228 -229 -230 -231 -232 -233 -234 -235 -236 -237 -238 -239 -240 -241 -242 -243 -244 -245 -246 -247 -248 -249 -250 -251 -252 -253 -254 -255 -256 -257 -258 -259 -260 -261 -262 -263 -264 -265 -266 -267 -268 -269 -270 -271 -272 -273 -274 -275 -276 -277 -278 -279 -280 -281 -282 -283 -284 -285 -286 -287 -288 -289 -290 -291 -292 -293 -294 -295 -296 -297 -298 -299 -300 -301 -302 -303 -304 -305 -306 -307 -308 -309 -310 -311 -312 -313 -314 -315 -316 -317 -318 -319 -320 -321 -322 -323 -324 -325 -326 -327 -328 -329 -330 -331 -332 -333 -334 -335 -336 -337 -338 -339 -340 -341 -342 -343 -344 -345 -346 -347 -348 -349 -350 -351 -352 -353 -354 -355 -356 -357 -358 -359 -360 -361 -362 -363 -364 -365 -366 -367 -368 -369 -370 -371 -372 -373 -374 -375 -376 -377 -378 -379 -380 -381 -382 -383 -384 -385 -386 -387 -388 -389 -390 -391 -392 -393 -394 -395 -396 -397 -398 -399 -400 -401 -402 -403 -404 -405 -406 -407 -408 -409 -410 -411 -412 -413 -414 -415 -416 -417 -418 -419 -420 -421 -422 -423 -424 -425 -426 -427 -428 -429 -430 -431 -432 -433 -434 -435 -436 -437 -438 -439 -440 -441 -442 -443 -444 -445 -446 -447 -448 -449 -450 -451 -452 -453 -454 -455 -456 -457 -458 -459 -460 -461 -462 -463 -464 -465 -466 -467 -468 -469 -470 -471 -472 -473 -474 -475 -476 -477 -478 -479 -480 -481 -482 -483 -484 -485 -486 -487 -488 -489 -490 -491 -492 -493 -494 -495 -496 -497 -498 -499 -500 -501 -502 -503 -504 -505 -506 -507 -508 -509 -510 -511 -512 -513 -514 -515 -516 -517 -518 -519 -520 -521 -522 -523 -524 -525 -526 -527 -528 -529 -530 -531 -532 -533 -534 -535 -536 -537 -538 -539 -540 -541 -542 -543 -544 -545 -546 -547 -548 -549 -550 -551 -552 -553 -554 -555 -556 -557 -558 -559 -560 -561 -562 -563 -564 -565 -566 -567 -568 -569 -570 -571 -572 -573 -574 -575 -576 -577 -578 -579 -580 -581 -582 -583 -584 -585 -586 -587 -588 -589 -590 -591 -592 -593 -594 -595 -596 -597 -598 -599 -600 -601 -602 -603 -604 -605 -606 -607 -608 -609 -610 -611 -612 -613 -614 -615 -616 -617 -618 -619 -620 -621 -622 -623 -624 -625 -626 -627 -628 -629 -630 -631 -632 -633 -634 -635 -636 -637 -638 -639 -640 -641 -642 -643 -644 -645 -646 -647 -648 -649 -650 -651 -652 -653 -654 -655 -656 -657 -658 -659 -660 -661 -662 -663 -664 -665 -666 -667 -668 -669 -670 -671 -672 -673 -674 -675 -676 -677 -678 -679 -680 -681 -682 -683 -684 -685 -686 -687 -688 -689 -690 -691 -692 -693 -694 -695 -696 -697 -698 -699 -700 -701 -702 -703 -704 -705 -706 -707 -708 -709 -710 -711 -712 -713 -714 -715 -716 -717 -718 -719 -720 -721 -722 -723 -724 -725 -726 -727 -728 -729 -730 -731 -732 -733 -734 -735 -736 -737 -738 -739 -740 -741 -742 -743 -744 -745 -746 -747  -  -  -  -1 -  -1 -  -1 -1 -  -1 -  -  -  -  -  -  -  -  -  -  -  -  -1 -25 -25 -25 -  -1 -  -  -  -  -1 -76 -  -76 -  -76 -76 -76 -  -76 -  -76 -156 -  -  -156 -  -  -76 -  -  -  -  -  -  -  -  -  -  -  -  -  -1 -25 -25 -25 -25 -  -1 -  -  -  -  -  -  -1 -165 -165 -165 -165 -95 -  -  -  -  -  -1 -66 -  -66 -  -  -  -66 -  -  -147 -147 -147 -147 -  -  -  -  -  -  -147 -70 -70 -70 -  -  -  -  -  -  -  -  -  -  -  -147 -70 -70 -70 -  -  -  -70 -70 -  -  -  -  -70 -  -  -  -66 -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1 -1 -  -1 -  -1 -  -1 -  -1 -  -1 -87 -  -87 -87 -91 -  -87 -87 -  -87 -87 -  -87 -87 -93 -93 -93 -54 -  -  -87 -  -87 -87 -  -87 -  -  -1 -81 -  -81 -  -81 -81 -81 -81 -152 -  -  -81 -  -81 -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1 -  -1 -  -1 -  -1 -14 -  -  -1 -14 -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1 -  -1 -  -1 -  -  -  -  -  -  -  -  -  -  -  -1 -29 -2 -2 -2 -2 -  -29 -  -  -1 -28 -2 -2 -  -26 -  -  -  -  -  -  -  -  -  -  -1 -  -1 -  -1 -  -  -  -  -  -  -  -  -  -1 -2 -2 -2 -  -  -1 -2 -  -  -  -  -  -  -  -  -  -1 -  -1 -  -1 -  -  -  -  -  -  -  -  -  -  -1 -2 -2 -2 -2 -2 -  -  -1 -2 -  -  -  -  -  -  -  -  -  -  -1 -  -1 -  -1 -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1 -26 -26 -78 -34 -34 -34 -  -  -26 -  -26 -26 -34 -34 -  -  -26 -  -  -1 -22 -  -22 -  -  -22 -28 -28 -28 -28 -28 -  -  -  -  -  -  -  -1 -  -  -  -1 -  -  -  -1 -  -  -  -  -  -1 -  -  -  -  -  -  -  -  -  -  -  -  -  -1 -  -1 -  -1 -  -  -  -  -  -  -  -  -  -  -  -  -  -1 -4 -  -4 -4 -4 -  -4 -4 -  -  -1 -4 -4 -  -  -  -  -  -  -  -  -  -  -  -  -  -1 -  -1 -  -1 -  -  -  -1 -2 -  -  -1 -2 -  -  -2 -  -  -  -  -  -  -  -  -  -1 -  -1 -  -1 -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1 -4 -  -4 -4 -4 -  -4 -4 -4 -  -4 -  -  -1 -3 -3 -  -  -  -  -  -  -  -  -  -1 -  -1 -  -1 -  -  -  -  -  -  -1 -2 -  -2 -2 -2 -  -2 -  -  -1 -2 -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1 -  -1 -  -1 -  -1 -2 -  -  -1 -2 -  -  -  -  -  -1 -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1 -  -  -  -1 -1 -6 -  -  -  -6 -4 -  -  -2 -2 -  -2 -2 -8 -  -  -2 -1 -  -  -1 -  -  -1 -1 -  -  -  -2 -  -  -  -2 -  -  -  -2 -  -  -  -1 -  -  - 
// The framer consists of two [Transform Stream][1] subclasses that operate in [object mode][2]:
-// the Serializer and the Deserializer
-// [1]: http://nodejs.org/api/stream.html#stream_class_stream_transform
-// [2]: http://nodejs.org/api/stream.html#stream_new_stream_readable_options
-var assert = require('assert');
- 
-var Transform = require('stream').Transform;
- 
-exports.Serializer = Serializer;
-exports.Deserializer = Deserializer;
- 
-var logData = Boolean(process.env.HTTP2_LOG_DATA);
- 
-// Serializer
-// ----------
-//
-//     Frame Objects
-//     * * * * * * * --+---------------------------
-//                     |                          |
-//                     v                          v           Buffers
-//      [] -----> Payload Ser. --[buffers]--> Header Ser. --> * * * *
-//     empty      adds payload                adds header
-//     array        buffers                     buffer
- 
-function Serializer(log, sizeLimit) {
-  this._log = log.child({ component: 'serializer' });
-  this._sizeLimit = sizeLimit || MAX_PAYLOAD_SIZE;
-  Transform.call(this, { objectMode: true });
-}
-Serializer.prototype = Object.create(Transform.prototype, { constructor: { value: Serializer } });
- 
-// When there's an incoming frame object, it first generates the frame type specific part of the
-// frame (payload), and then then adds the header part which holds fields that are common to all
-// frame types (like the length of the payload).
-Serializer.prototype._transform = function _transform(frame, encoding, done) {
-  this._log.trace({ frame: frame }, 'Outgoing frame');
- 
-  assert(frame.type in Serializer, 'Unknown frame type: ' + frame.type);
- 
-  var buffers = [];
-  Serializer[frame.type](frame, buffers);
-  Serializer.commonHeader(frame, buffers);
- 
-  assert(buffers[0].readUInt16BE(0) <= this._sizeLimit, 'Frame too large!');
- 
-  for (var i = 0; i < buffers.length; i++) {
-    Iif (logData) {
-      this._log.trace({ data: buffers[i] }, 'Outgoing data');
-    }
-    this.push(buffers[i]);
-  }
- 
-  done();
-};
- 
-// Deserializer
-// ------------
-//
-//     Buffers
-//     * * * * --------+-------------------------
-//                     |                        |
-//                     v                        v           Frame Objects
-//      {} -----> Header Des. --{frame}--> Payload Des. --> * * * * * * *
-//     empty      adds parsed              adds parsed
-//     object  header properties        payload properties
- 
-function Deserializer(log, sizeLimit) {
-  this._log = log.child({ component: 'deserializer' });
-  this._sizeLimit = sizeLimit || MAX_PAYLOAD_SIZE;
-  Transform.call(this, { objectMode: true });
-  this._next(COMMON_HEADER_SIZE);
-}
-Deserializer.prototype = Object.create(Transform.prototype, { constructor: { value: Deserializer } });
- 
-// The Deserializer is stateful, and it's two main alternating states are: *waiting for header* and
-// *waiting for payload*. The state is stored in the boolean property `_waitingForHeader`.
-//
-// When entering a new state, a `_buffer` is created that will hold the accumulated data (header or
-// payload). The `_cursor` is used to track the progress.
-Deserializer.prototype._next = function(size) {
-  this._cursor = 0;
-  this._buffer = new Buffer(size);
-  this._waitingForHeader = !this._waitingForHeader;
-  if (this._waitingForHeader) {
-    this._frame = {};
-  }
-};
- 
-// Parsing an incoming buffer is an iterative process because it can hold multiple frames if it's
-// large enough. A `cursor` is used to track the progress in parsing the incoming `chunk`.
-Deserializer.prototype._transform = function _transform(chunk, encoding, done) {
-  var cursor = 0;
- 
-  Iif (logData) {
-    this._log.trace({ data: chunk }, 'Incoming data');
-  }
- 
-  while(cursor < chunk.length) {
-    // The content of an incoming buffer is first copied to `_buffer`. If it can't hold the full
-    // chunk, then only a part of it is copied.
-    var toCopy = Math.min(chunk.length - cursor, this._buffer.length - this._cursor);
-    chunk.copy(this._buffer, this._cursor, cursor, cursor + toCopy);
-    this._cursor += toCopy;
-    cursor += toCopy;
- 
-    // When `_buffer` is full, it's content gets parsed either as header or payload depending on
-    // the actual state.
- 
-    // If it's header then the parsed data is stored in a temporary variable and then the
-    // deserializer waits for the specified length payload.
-    if ((this._cursor === this._buffer.length) && this._waitingForHeader) {
-      var payloadSize = Deserializer.commonHeader(this._buffer, this._frame);
-      Eif (payloadSize <= this._sizeLimit) {
-        this._next(payloadSize);
-      } else {
-        this.emit('error', 'FRAME_TOO_LARGE');
-        return;
-      }
-    }
- 
-    // If it's payload then the the frame object is finalized and then gets pushed out.
-    // Unknown frame types are ignored.
-    //
-    // Note: If we just finished the parsing of a header and the payload length is 0, this branch
-    // will also run.
-    if ((this._cursor === this._buffer.length) && !this._waitingForHeader) {
-      Eif (this._frame.type) {
-        var error = Deserializer[this._frame.type](this._buffer, this._frame);
-        Iif (error) {
-          this._log.error('Incoming frame parsing error: ' + error);
-          this.emit('error', 'PROTOCOL_ERROR');
-        } else {
-          this._log.trace({ frame: this._frame }, 'Incoming frame');
-          this.push(this._frame);
-        }
-      } else {
-        this._log.warn({ frame: this._frame }, 'Unknown type incoming frame');
-      }
-      this._next(COMMON_HEADER_SIZE);
-    }
-  }
- 
-  done();
-};
- 
-// [Frame Header](http://http2.github.io/http2-spec/#FrameHeader)
-// --------------------------------------------------------------
-//
-// HTTP/2.0 frames share a common base format consisting of an 8-byte header followed by 0 to 65535
-// bytes of data.
-//
-// Additional size limits can be set by specific application uses. HTTP limits the frame size to
-// 16,383 octets.
-//
-//      0                   1                   2                   3
-//      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-//     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-//     |         Length (16)           |   Type (8)    |   Flags (8)   |
-//     +-+-------------+---------------+-------------------------------+
-//     |R|                 Stream Identifier (31)                      |
-//     +-+-------------------------------------------------------------+
-//     |                     Frame Data (0...)                       ...
-//     +---------------------------------------------------------------+
-//
-// The fields of the frame header are defined as:
-//
-// * Length:
-//   The length of the frame data expressed as an unsigned 16-bit integer. The 8 bytes of the frame
-//   header are not included in this value.
-//
-// * Type:
-//   The 8-bit type of the frame. The frame type determines how the remainder of the frame header
-//   and data are interpreted. Implementations MUST ignore unsupported and unrecognized frame types.
-//
-// * Flags:
-//   An 8-bit field reserved for frame-type specific boolean flags.
-//
-//   Flags are assigned semantics specific to the indicated frame type. Flags that have no defined
-//   semantics for a particular frame type MUST be ignored, and MUST be left unset (0) when sending.
-//
-// * R:
-//   A reserved 1-bit field. The semantics of this bit are undefined and the bit MUST remain unset
-//   (0) when sending and MUST be ignored when receiving.
-//
-// * Stream Identifier:
-//   A 31-bit stream identifier (see Section 3.4.1). A value 0 is reserved for frames that are
-//   associated with the connection as a whole as opposed to an individual stream.
-//
-// The structure and content of the remaining frame data is dependent entirely on the frame type.
- 
-var COMMON_HEADER_SIZE = 8;
-var MAX_PAYLOAD_SIZE = 65535;
- 
-var frameTypes = [];
- 
-var frameFlags = {};
- 
-var genericAttributes = ['type', 'flags', 'stream'];
- 
-var typeSpecificAttributes = {};
- 
-Serializer.commonHeader = function writeCommonHeader(frame, buffers) {
-  var headerBuffer = new Buffer(COMMON_HEADER_SIZE);
- 
-  var size = 0;
-  for (var i = 0; i < buffers.length; i++) {
-    size += buffers[i].length;
-  }
-  assert(size <= MAX_PAYLOAD_SIZE, size);
-  headerBuffer.writeUInt16BE(size, 0);
- 
-  var typeId = frameTypes.indexOf(frame.type);  // If we are here then the type is valid for sure
-  headerBuffer.writeUInt8(typeId, 2);
- 
-  var flagByte = 0;
-  for (var flag in frame.flags) {
-    var position = frameFlags[frame.type].indexOf(flag);
-    assert(position !== -1, 'Unknown flag for frame type ' + frame.type + ': ' + flag);
-    if (frame.flags[flag]) {
-      flagByte |= (1 << position);
-    }
-  }
-  headerBuffer.writeUInt8(flagByte, 3);
- 
-  assert((0 <= frame.stream) && (frame.stream < 0x7fffffff), frame.stream);
-  headerBuffer.writeUInt32BE(frame.stream || 0, 4);
- 
-  buffers.unshift(headerBuffer);
-};
- 
-Deserializer.commonHeader = function readCommonHeader(buffer, frame) {
-  var length = buffer.readUInt16BE(0);
- 
-  frame.type = frameTypes[buffer.readUInt8(2)];
- 
-  frame.flags = {};
-  var flagByte = buffer.readUInt8(3);
-  var definedFlags = frameFlags[frame.type];
-  for (var i = 0; i < definedFlags.length; i++) {
-    frame.flags[definedFlags[i]] = Boolean(flagByte & (1 << i));
-  }
- 
-  frame.stream = buffer.readUInt32BE(4) & 0x7fffffff;
- 
-  return length;
-};
- 
-// Frame types
-// ===========
- 
-// Every frame type is registered in the following places:
-//
-// * `frameTypes`: a register of frame type codes (used by `commonHeader()`)
-// * `frameFlags`: a register of valid flags for frame types (used by `commonHeader()`)
-// * `typeSpecificAttributes`: a register of frame specific frame object attributes (used by
-//   logging code and also serves as documentation for frame objects)
- 
-// [DATA Frames](http://http2.github.io/http2-spec/#DataFrames)
-// ------------------------------------------------------------
-//
-// DATA frames (type=0x0) convey arbitrary, variable-length sequences of octets associated with a
-// stream.
-//
-// The DATA frame defines the following flags:
-//
-// * END_STREAM (0x1):
-//   Bit 1 being set indicates that this frame is the last that the endpoint will send for the
-//   identified stream.
-// * RESERVED (0x2):
-//   Bit 2 is reserved for future use.
- 
-frameTypes[0x0] = 'DATA';
- 
-frameFlags.DATA = ['END_STREAM', 'RESERVED'];
- 
-typeSpecificAttributes.DATA = ['data'];
- 
-Serializer.DATA = function writeData(frame, buffers) {
-  buffers.push(frame.data);
-};
- 
-Deserializer.DATA = function readData(buffer, frame) {
-  frame.data = buffer;
-};
- 
-// [HEADERS](http://http2.github.io/http2-spec/#HEADERS)
-// --------------------------------------------------------------
-//
-// The HEADERS frame (type=0x1) allows the sender to create a stream.
-//
-// The HEADERS frame defines the following flags:
-//
-// * END_STREAM (0x1):
-//   Bit 1 being set indicates that this frame is the last that the endpoint will send for the
-//   identified stream.
-// * RESERVED (0x2):
-//   Bit 2 is reserved for future use.
-// * END_HEADERS (0x4):
-//   The END_HEADERS bit indicates that this frame contains the entire payload necessary to provide
-//   a complete set of headers.
-// * PRIORITY (0x8):
-//   Bit 4 being set indicates that the first four octets of this frame contain a single reserved
-//   bit and a 31-bit priority.
- 
-frameTypes[0x1] = 'HEADERS';
- 
-frameFlags.HEADERS = ['END_STREAM', 'RESERVED', 'END_HEADERS', 'PRIORITY'];
- 
-typeSpecificAttributes.HEADERS = ['priority', 'headers', 'data'];
- 
-//      0                   1                   2                   3
-//      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-//     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-//     |X|               (Optional) Priority (31)                      |
-//     +-+-------------------------------------------------------------+
-//     |                    Header Block (*)                         ...
-//     +---------------------------------------------------------------+
-//
-// The payload of a HEADERS frame contains a Headers Block
- 
-Serializer.HEADERS = function writeHeadersPriority(frame, buffers) {
-  if (frame.flags.PRIORITY) {
-    var buffer = new Buffer(4);
-    assert((0 <= frame.priority) && (frame.priority <= 0xffffffff), frame.priority);
-    buffer.writeUInt32BE(frame.priority, 0);
-    buffers.push(buffer);
-  }
-  buffers.push(frame.data);
-};
- 
-Deserializer.HEADERS = function readHeadersPriority(buffer, frame) {
-  if (frame.flags.PRIORITY) {
-    frame.priority = buffer.readUInt32BE(0) & 0x7fffffff;
-    frame.data = buffer.slice(4);
-  } else {
-    frame.data = buffer;
-  }
-};
- 
-// [PRIORITY](http://http2.github.io/http2-spec/#PRIORITY)
-// -------------------------------------------------------
-//
-// The PRIORITY frame (type=0x2) specifies the sender-advised priority of a stream.
-//
-// The PRIORITY frame does not define any flags.
- 
-frameTypes[0x2] = 'PRIORITY';
- 
-frameFlags.PRIORITY = [];
- 
-typeSpecificAttributes.PRIORITY = ['priority'];
- 
-//      0                   1                   2                   3
-//      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-//     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-//     |X|                   Priority (31)                             |
-//     +-+-------------------------------------------------------------+
-//
-// The payload of a PRIORITY frame contains a single reserved bit and a 31-bit priority.
- 
-Serializer.PRIORITY = function writePriority(frame, buffers) {
-  var buffer = new Buffer(4);
-  buffer.writeUInt32BE(frame.priority, 0);
-  buffers.push(buffer);
-};
- 
-Deserializer.PRIORITY = function readPriority(buffer, frame) {
-  frame.priority = buffer.readUInt32BE(0);
-};
- 
-// [RST_STREAM](http://http2.github.io/http2-spec/#RST_STREAM)
-// -----------------------------------------------------------
-//
-// The RST_STREAM frame (type=0x3) allows for abnormal termination of a stream.
-//
-// No type-flags are defined.
- 
-frameTypes[0x3] = 'RST_STREAM';
- 
-frameFlags.RST_STREAM = [];
- 
-typeSpecificAttributes.RST_STREAM = ['error'];
- 
-//      0                   1                   2                   3
-//      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-//     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-//     |                         Error Code (32)                       |
-//     +---------------------------------------------------------------+
-//
-// The RST_STREAM frame contains a single unsigned, 32-bit integer identifying the error
-// code (see Error Codes). The error code indicates why the stream is being terminated.
- 
-Serializer.RST_STREAM = function writeRstStream(frame, buffers) {
-  var buffer = new Buffer(4);
-  var code = errorCodes.indexOf(frame.error);
-  assert((0 <= code) && (code <= 0xffffffff), code);
-  buffer.writeUInt32BE(code, 0);
-  buffers.push(buffer);
-};
- 
-Deserializer.RST_STREAM = function readRstStream(buffer, frame) {
-  frame.error = errorCodes[buffer.readUInt32BE(0)];
-};
- 
-// [SETTINGS](http://http2.github.io/http2-spec/#SETTINGS)
-// -------------------------------------------------------
-//
-// The SETTINGS frame (type=0x4) conveys configuration parameters that affect how endpoints
-// communicate.
-//
-// The SETTINGS frame does not define any flags.
- 
-frameTypes[0x4] = 'SETTINGS';
- 
-frameFlags.SETTINGS = [];
- 
-typeSpecificAttributes.SETTINGS = ['settings'];
- 
-// The payload of a SETTINGS frame consists of zero or more settings. Each setting consists of an
-// 8-bit reserved field, an unsigned 24-bit setting identifier, and an unsigned 32-bit value.
-//
-//      0                   1                   2                   3
-//      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-//     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-//     |  Reserved(8)  |             Setting Identifier (24)           |
-//     +---------------+-----------------------------------------------+
-//     |                        Value (32)                             |
-//     +---------------------------------------------------------------+
-//
-// Each setting in a SETTINGS frame replaces the existing value for that setting.  Settings are
-// processed in the order in which they appear, and a receiver of a SETTINGS frame does not need to
-// maintain any state other than the current value of settings.  Therefore, the value of a setting
-// is the last value that is seen by a receiver. This permits the inclusion of the same settings
-// multiple times in the same SETTINGS frame, though doing so does nothing other than waste
-// connection capacity.
- 
-Serializer.SETTINGS = function writeSettings(frame, buffers) {
-  var settings = [], settingsLeft = Object.keys(frame.settings);
-  definedSettings.forEach(function(setting, id) {
-    if (setting.name in frame.settings) {
-      settingsLeft.splice(settingsLeft.indexOf(setting.name), 1);
-      var value = frame.settings[setting.name];
-      settings.push({ id: id, value: setting.flag ? Boolean(value) : value });
-    }
-  });
-  assert(settingsLeft.length === 0, 'Unknown settings: ' + settingsLeft.join(', '));
- 
-  var buffer = new Buffer(settings.length * 8);
-  for (var i = 0; i < settings.length; i++) {
-    buffer.writeUInt32BE(settings[i].id & 0xffffff, i*8);
-    buffer.writeUInt32BE(settings[i].value, i*8 + 4);
-  }
- 
-  buffers.push(buffer);
-};
- 
-Deserializer.SETTINGS = function readSettings(buffer, frame) {
-  frame.settings = {};
- 
-  Iif (buffer.length % 8 !== 0) {
-    return 'Invalid SETTINGS frame';
-  }
-  for (var i = 0; i < buffer.length / 8; i++) {
-    var id = buffer.readUInt32BE(i*8) & 0xffffff;
-    var setting = definedSettings[id];
-    Eif (setting) {
-      var value = buffer.readUInt32BE(i*8 + 4);
-      frame.settings[setting.name] = setting.flag ? Boolean(value & 0x1) : value;
-    } else {
-      /* Unknown setting, ignoring */
-    }
-  }
-};
- 
-// The following settings are defined:
-var definedSettings = [];
- 
-// * SETTINGS_MAX_CONCURRENT_STREAMS (4):
-//   indicates the maximum number of concurrent streams that the sender will allow.
-definedSettings[4] = { name: 'SETTINGS_MAX_CONCURRENT_STREAMS', flag: false };
- 
-// * SETTINGS_INITIAL_WINDOW_SIZE (7):
-//   indicates the sender's initial stream window size (in bytes) for new streams.
-definedSettings[7] = { name: 'SETTINGS_INITIAL_WINDOW_SIZE', flag: false };
- 
-// * SETTINGS_FLOW_CONTROL_OPTIONS (10):
-//   indicates that streams directed to the sender will not be subject to flow control. The least
-//   significant bit (0x1) is set to indicate that new streams are not flow controlled. All other
-//   bits are reserved.
-definedSettings[10] = { name: 'SETTINGS_FLOW_CONTROL_OPTIONS', flag: true };
- 
-// [PUSH_PROMISE](http://http2.github.io/http2-spec/#PUSH_PROMISE)
-// ---------------------------------------------------------------
-//
-// The PUSH_PROMISE frame (type=0x5) is used to notify the peer endpoint in advance of streams the
-// sender intends to initiate.
-//
-// The PUSH_PROMISE frame defines the following flags:
-//
-// * END_PUSH_PROMISE (0x1):
-//   The END_PUSH_PROMISE bit indicates that this frame contains the entire payload necessary to
-//   provide a complete set of headers.
- 
-frameTypes[0x5] = 'PUSH_PROMISE';
- 
-frameFlags.PUSH_PROMISE = ['END_PUSH_PROMISE'];
- 
-typeSpecificAttributes.PUSH_PROMISE = ['promised_stream', 'headers', 'data'];
- 
-//      0                   1                   2                   3
-//      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-//     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-//     |X|                Promised-Stream-ID (31)                      |
-//     +-+-------------------------------------------------------------+
-//     |                    Header Block (*)                         ...
-//     +---------------------------------------------------------------+
-//
-// The PUSH_PROMISE frame includes the unsigned 31-bit identifier of
-// the stream the endpoint plans to create along with a minimal set of headers that provide
-// additional context for the stream.
- 
-Serializer.PUSH_PROMISE = function writePushPromise(frame, buffers) {
-  var buffer = new Buffer(4);
- 
-  var promised_stream = frame.promised_stream;
-  assert((0 <= promised_stream) && (promised_stream <= 0x7fffffff), promised_stream);
-  buffer.writeUInt32BE(promised_stream, 0);
- 
-  buffers.push(buffer);
-  buffers.push(frame.data);
-};
- 
-Deserializer.PUSH_PROMISE = function readPushPromise(buffer, frame) {
-  frame.promised_stream = buffer.readUInt32BE(0) & 0x7fffffff;
-  frame.data = buffer.slice(4);
-};
- 
-// [PING](http://http2.github.io/http2-spec/#PING)
-// -----------------------------------------------
-//
-// The PING frame (type=0x6) is a mechanism for measuring a minimal round-trip time from the
-// sender, as well as determining whether an idle connection is still functional.
-//
-// The PING frame defines one type-specific flag:
-//
-// * PONG (0x2):
-//   Bit 2 being set indicates that this PING frame is a PING response.
- 
-frameTypes[0x6] = 'PING';
- 
-frameFlags.PING = ['PONG'];
- 
-typeSpecificAttributes.PING = ['data'];
- 
-// In addition to the frame header, PING frames MUST contain 8 additional octets of opaque data.
- 
-Serializer.PING = function writePing(frame, buffers) {
-  buffers.push(frame.data);
-};
- 
-Deserializer.PING = function readPing(buffer, frame) {
-  Iif (buffer.length !== 8) {
-    return 'Invalid size PING frame';
-  }
-  frame.data = buffer;
-};
- 
-// [GOAWAY](http://http2.github.io/http2-spec/#GOAWAY)
-// ---------------------------------------------------
-//
-// The GOAWAY frame (type=0x7) informs the remote peer to stop creating streams on this connection.
-//
-// The GOAWAY frame does not define any flags.
- 
-frameTypes[0x7] = 'GOAWAY';
- 
-frameFlags.GOAWAY = [];
- 
-typeSpecificAttributes.GOAWAY = ['last_stream', 'error'];
- 
-//      0                   1                   2                   3
-//      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-//     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-//     |X|                  Last-Stream-ID (31)                        |
-//     +-+-------------------------------------------------------------+
-//     |                      Error Code (32)                          |
-//     +---------------------------------------------------------------+
-//
-// The last stream identifier in the GOAWAY frame contains the highest numbered stream identifier
-// for which the sender of the GOAWAY frame has received frames on and might have taken some action
-// on.
-//
-// The GOAWAY frame also contains a 32-bit error code (see Error Codes) that contains the reason for
-// closing the connection.
- 
-Serializer.GOAWAY = function writeGoaway(frame, buffers) {
-  var buffer = new Buffer(8);
- 
-  var last_stream = frame.last_stream;
-  assert((0 <= last_stream) && (last_stream <= 0x7fffffff), last_stream);
-  buffer.writeUInt32BE(last_stream, 0);
- 
-  var code = errorCodes.indexOf(frame.error);
-  assert((0 <= code) && (code <= 0xffffffff), code);
-  buffer.writeUInt32BE(code, 4);
- 
-  buffers.push(buffer);
-};
- 
-Deserializer.GOAWAY = function readGoaway(buffer, frame) {
-  frame.last_stream = buffer.readUInt32BE(0) & 0x7fffffff;
-  frame.error = errorCodes[buffer.readUInt32BE(4)];
-};
- 
-// [WINDOW_UPDATE](http://http2.github.io/http2-spec/#WINDOW_UPDATE)
-// -----------------------------------------------------------------
-//
-// The WINDOW_UPDATE frame (type=0x9) is used to implement flow control.
-//
-// The WINDOW_UPDATE frame does not define any flags.
- 
-frameTypes[0x9] = 'WINDOW_UPDATE';
- 
-frameFlags.WINDOW_UPDATE = [];
- 
-typeSpecificAttributes.WINDOW_UPDATE = ['window_size'];
- 
-// The payload of a WINDOW_UPDATE frame is a 32-bit value indicating the additional number of bytes
-// that the sender can transmit in addition to the existing flow control window. The legal range
-// for this field is 1 to 2^31 - 1 (0x7fffffff) bytes; the most significant bit of this value is
-// reserved.
- 
-Serializer.WINDOW_UPDATE = function writeWindowUpdate(frame, buffers) {
-  var buffer = new Buffer(4);
- 
-  var window_size = frame.window_size;
-  assert((0 <= window_size) && (window_size <= 0x7fffffff), window_size);
-  buffer.writeUInt32BE(window_size, 0);
- 
-  buffers.push(buffer);
-};
- 
-Deserializer.WINDOW_UPDATE = function readWindowUpdate(buffer, frame) {
-  frame.window_size = buffer.readUInt32BE(0) & 0x7fffffff;
-};
- 
-// [CONTINUATION](http://http2.github.io/http2-spec/#CONTINUATION)
-// ------------------------------------------------------------
-//
-// The CONTINUATION frame (type=0xA) is used to continue a sequence of header block fragments.
-//
-// The CONTINUATION frame defines the following flags:
-//
-// * END_STREAM (0x1):
-//   Bit 1 being set indicates that this frame is the last that the endpoint will send for the
-//   identified stream.
-// * RESERVED (0x2):
-//   Bit 2 is reserved for future use.
-// * END_HEADERS (0x4):
-//   The END_HEADERS bit indicates that this frame ends the sequence of header block fragments
-//   necessary to provide a complete set of headers.
- 
-frameTypes[0xA] = 'CONTINUATION';
- 
-frameFlags.CONTINUATION = ['END_STREAM', 'RESERVED', 'END_HEADERS'];
- 
-typeSpecificAttributes.CONTINUATION = ['headers', 'data'];
- 
-Serializer.CONTINUATION = function writeContinuation(frame, buffers) {
-  buffers.push(frame.data);
-};
- 
-Deserializer.CONTINUATION = function readContinuation(buffer, frame) {
-  frame.data = buffer;
-};
- 
-// [Error Codes](http://http2.github.io/http2-spec/#ErrorCodes)
-// ------------------------------------------------------------
- 
-var errorCodes = [
-  'NO_ERROR',
-  'PROTOCOL_ERROR',
-  'INTERNAL_ERROR',
-  'FLOW_CONTROL_ERROR',
-  ,
-  'STREAM_CLOSED',
-  'FRAME_TOO_LARGE',
-  'REFUSED_STREAM',
-  'CANCEL',
-  'COMPRESSION_ERROR'
-];
- 
-// Logging
-// -------
- 
-// [Bunyan serializers](https://github.com/trentm/node-bunyan#serializers) to improve logging output
-// for debug messages emitted in this component.
-exports.serializers = {};
- 
-// * `frame` serializer: it transforms data attributes from Buffers to hex strings and filters out
-//   flags that are not present.
-var frameCounter = 0;
-exports.serializers.frame = function(frame) {
-  Iif (!frame) {
-    return null;
-  }
- 
-  if ('id' in frame) {
-    return frame.id;
-  }
- 
-  frame.id = frameCounter;
-  frameCounter += 1;
- 
-  var logEntry = { id: frame.id };
-  genericAttributes.concat(typeSpecificAttributes[frame.type]).forEach(function(name) {
-    logEntry[name] = frame[name];
-  });
- 
-  if (frame.data instanceof Buffer) {
-    Iif (logEntry.data.length > 50) {
-      logEntry.data = frame.data.slice(0, 47).toString('hex') + '...';
-    } else {
-      logEntry.data = frame.data.toString('hex');
-    }
- 
-    Eif (!('length' in logEntry)) {
-      logEntry.length = frame.data.length;
-    }
-  }
- 
-  Iif (frame.promised_stream instanceof Object) {
-    logEntry.promised_stream = 'stream-' + frame.promised_stream.id;
-  }
- 
-  logEntry.flags = Object.keys(frame.flags || {}).filter(function(name) {
-    return frame.flags[name] === true;
-  });
- 
-  return logEntry;
-};
- 
-// * `data` serializer: it simply transforms a buffer to a hex string.
-exports.serializers.data = function(data) {
-  return data.toString('hex');
-};
- 
- -
- - - - - - - - diff --git a/coverage/lcov-report/lib/http.js.html b/coverage/lcov-report/lib/http.js.html index dd1e1aed..454c4778 100644 --- a/coverage/lcov-report/lib/http.js.html +++ b/coverage/lcov-report/lib/http.js.html @@ -183,16 +183,16 @@

Code coverage report for lib/http.js

- Statements: 92.29% (383 / 415)      + Statements: 94% (392 / 417)      - Branches: 76.54% (124 / 162)      + Branches: 80.63% (129 / 160)      - Functions: 92.19% (59 / 64)      + Functions: 93.65% (59 / 63)      - Lines: 92.29% (383 / 415)      + Lines: 94% (392 / 417)     

All files » lib/ » http.js
@@ -1322,8 +1322,8 @@

1 1 1 -  1 +  1 1 1 @@ -1339,15 +1339,6 @@

      -  -1 -  -  -1 -  -  -1 -1 1     @@ -1368,36 +1359,32 @@

    1 -1 -1 -6 -          1   -25 -25 -25 +24 +24 +24   -25 +24       -25 -25 -25 +24 +24 +24     -25 -25 -25 +24 +24 +24     -25 -25 +24 +24   1   @@ -1549,10 +1536,12 @@

10 10 10 +10 9 9 +8   -  +1     10 @@ -1577,39 +1566,42 @@

    1 -10 +9   -10 +9         -10 +9   -10 -10 +9 +9 10 10   10     -10 +9 +9   -10 +9     1 -  +1   +1       -  -    +1 +1   -  +  +1       @@ -1800,6 +1792,7 @@

2     +  2   2 @@ -1849,6 +1842,7 @@

4 4 4 +4   4 4 @@ -1859,6 +1853,8 @@

12 8   +4 +    12 12 @@ -1908,9 +1904,11 @@

9 9 9 +9   9 9 +9     9 @@ -1922,10 +1920,11 @@

9 9 9 -9 -9 -9 -9 +8 +8 +8 +8 +8   9 1 @@ -1935,12 +1934,12 @@

    8 -8 +7   -8 -8 +7 +7   -  +1       @@ -1948,9 +1947,9 @@

9 9 9 -9 +8   -  +1       @@ -1965,14 +1964,14 @@

    1 -9 -9 -9 -9 -9 -9 -9 -9 +8 +8 +8 +8 +8 +8 +8 +8     1 @@ -1999,42 +1998,43 @@

1   1 -11 +10   -11 +10   -11 +10 1   -11 -11 +10 +10   -11 +10       -11 -11 -11 -11 +10 +10 +10 +10   -11 +10   -11 -11   -11 +10 +10   -11 -11 +10   -11 +10 +10 +  +10     1 -4 -4 -4 +5 +5 +5     1 @@ -2108,7 +2108,7 @@

    1 -13 +12   1   @@ -2288,7 +2288,7 @@

// // [1]: http://nodejs.org/api/https.html // [2]: http://nodejs.org/api/http.html -// [3]: http://tools.ietf.org/html/draft-ietf-httpbis-http2-04#section-8.1.3 +// [3]: http://tools.ietf.org/html/draft-ietf-httpbis-http2-10#section-8.1.3.2 // [expect-continue]: https://github.com/http2/http2-spec/issues/18 // [connect]: https://github.com/http2/http2-spec/issues/230   @@ -2302,14 +2302,14 @@

var PassThrough = require('stream').PassThrough; var Readable = require('stream').Readable; var Writable = require('stream').Writable; -var Endpoint = require('./endpoint').Endpoint; +var Endpoint = require('http2-protocol').Endpoint; +var implementedVersion = require('http2-protocol').ImplementedVersion; var http = require('http'); var https = require('https');   exports.STATUS_CODES = http.STATUS_CODES; exports.IncomingMessage = IncomingMessage; exports.OutgoingMessage = OutgoingMessage; -exports.Endpoint = Endpoint;   var deprecatedHeaders = [ 'connection', @@ -2321,18 +2321,9 @@

'upgrade' ];   -// The implemented version of the HTTP/2 specification is [draft 04][1]. -// [1]: http://tools.ietf.org/html/draft-ietf-httpbis-http2-04 -var implementedVersion = 'HTTP-draft-06/2.0'; -  // When doing NPN/ALPN negotiation, HTTP/1.1 is used as fallback var supportedProtocols = [implementedVersion, 'http/1.1', 'http/1.0'];   -// Using ALPN or NPN depending on node.js support (preferring ALPN) -var negotiationMethod = process.features.tls_alpn ? 'ALPN' : 'NPN'; -var protocolList = process.features.tls_alpn ? 'ALPNProtocols' : 'NPNProtocols'; -var negotiatedProtocol = process.features.tls_alpn ? 'alpnProtocol' : 'npnProtocol'; -  // Logging // -------   @@ -2350,11 +2341,7 @@

};   // Bunyan serializers exported by submodules that are worth adding when creating a logger. -exports.serializers = {}; -var modules = ['./framer', './compressor', './flow', './connection', './stream', './endpoint']; -modules.forEach(function(module) { - util._extend(exports.serializers, require(module).serializers); -}); +exports.serializers = require('http2-protocol').serializers;   // IncomingMessage class // --------------------- @@ -2384,7 +2371,7 @@

} IncomingMessage.prototype = Object.create(PassThrough.prototype, { constructor: { value: IncomingMessage } });   -// [Request Header Fields](http://tools.ietf.org/html/draft-ietf-httpbis-http2-05#section-8.1.2.1) +// [Request Header Fields](http://tools.ietf.org/html/draft-ietf-httpbis-http2-10#section-8.1.3.1) // * `headers` argument: HTTP/2.0 request and response header fields carry information as a series // of key-value pairs. This includes the target URI for the request, the status code for the // response, as well as HTTP header fields. @@ -2515,7 +2502,7 @@

// ------------   function Server(options) { - options = options || {}; + options = util._extend({}, options);   this._log = (options.log || defaultLogger).child({ component: 'http' }); this._settings = options.settings; @@ -2525,17 +2512,19 @@

  // HTTP2 over TLS (using NPN or ALPN) if ((options.key && options.cert) || options.pfx) { - this._log.info('Creating HTTP/2 server over TLS/' + negotiationMethod); + this._log.info('Creating HTTP/2 server over TLS'); this._mode = 'tls'; - options[protocolList] = supportedProtocols; + options.ALPNProtocols = supportedProtocols; + options.NPNProtocols = supportedProtocols; this._server = https.createServer(options); this._originalSocketListeners = this._server.listeners('secureConnection'); this._server.removeAllListeners('secureConnection'); this._server.on('secureConnection', function(socket) { - Eif (socket[negotiatedProtocol] === implementedVersion && socket.servername) { + var negotiatedProtocol = socket.alpnProtocol || socket.npnProtocol; + if ((negotiatedProtocol === implementedVersion) && socket.servername) { start(socket); } else { - fallback(socket); + fallback(socket); } }); this._server.on('request', this.emit.bind(this, 'request')); @@ -2578,21 +2567,24 @@

});   endpoint.on('error', this.emit.bind(this, 'clientError')); + socket.on('error', this.emit.bind(this, 'clientError'));   this.emit('connection', socket, endpoint); };   -Server.prototype._fallback = function _fallback(socket) { - this._log.info({ client: socket.remoteAddress + ':' + socket.remotePort, - protocol: socket[negotiatedProtocol], +Server.prototype._fallback = function _fallback(socket) { + var negotiatedProtocol = socket.alpnProtocol || socket.npnProtocol; +  + this._log.info({ client: socket.remoteAddress + ':' + socket.remotePort, + protocol: negotiatedProtocol, SNI: socket.servername }, 'Falling back to simple HTTPS');   - for (var i = 0; i < this._originalSocketListeners.length; i++) { - this._originalSocketListeners[i].call(this._server, socket); + for (var i = 0; i < this._originalSocketListeners.length; i++) { + this._originalSocketListeners[i].call(this._server, socket); }   - this.emit('connection', socket); + this.emit('connection', socket); };   // There are [3 possible signatures][1] of the `listen` function. Every arguments is forwarded to @@ -2672,14 +2664,14 @@

} IncomingRequest.prototype = Object.create(IncomingMessage.prototype, { constructor: { value: IncomingRequest } });   -// [Request Header Fields](http://tools.ietf.org/html/draft-ietf-httpbis-http2-05#section-8.1.2.1) +// [Request Header Fields](http://tools.ietf.org/html/draft-ietf-httpbis-http2-10#section-8.1.3.1) // * `headers` argument: HTTP/2.0 request and response header fields carry information as a series // of key-value pairs. This includes the target URI for the request, the status code for the // response, as well as HTTP header fields. IncomingRequest.prototype._onHeaders = function _onHeaders(headers) { // * The ":method" header field includes the HTTP method // * The ":scheme" header field includes the scheme portion of the target URI - // * The ":host" header field includes the authority portion of the target URI + // * The ":authority" header field includes the authority portion of the target URI // * The ":path" header field includes the path and query parts of the target URI. // This field MUST NOT be empty; URIs that do not contain a path component MUST include a value // of '/', unless the request is an OPTIONS request for '*', in which case the ":path" header @@ -2687,10 +2679,10 @@

// * All HTTP/2.0 requests MUST include exactly one valid value for all of these header fields. A // server MUST treat the absence of any of these header fields, presence of multiple values, or // an invalid value as a stream error of type PROTOCOL_ERROR. - this.method = this._checkSpecialHeader(':method', headers[':method']); - this.scheme = this._checkSpecialHeader(':scheme', headers[':scheme']); - this.host = this._checkSpecialHeader(':host' , headers[':host'] ); - this.url = this._checkSpecialHeader(':path' , headers[':path'] ); + this.method = this._checkSpecialHeader(':method' , headers[':method']); + this.scheme = this._checkSpecialHeader(':scheme' , headers[':scheme']); + this.host = this._checkSpecialHeader(':authority', headers[':authority'] ); + this.url = this._checkSpecialHeader(':path' , headers[':path'] );   // * Host header is included in the headers object for backwards compatibility. this.headers.host = this.host; @@ -2776,12 +2768,13 @@

var promise = util._extend({ ':method': (options.method || 'GET').toUpperCase(), ':scheme': (options.protocol && options.protocol.slice(0, -1)) || this._requestHeaders[':scheme'], - ':host': options.hostname || options.host || this._requestHeaders[':host'], + ':authority': options.hostname || options.host || this._requestHeaders[':authority'], ':path': options.path }, options.headers);   - this._log.info({ method: promise[':method'], scheme: promise[':scheme'], host: promise[':host'], - path: promise[':path'], headers: options.headers }, 'Promising push stream'); + this._log.info({ method: promise[':method'], scheme: promise[':scheme'], + authority: promise[':authority'], path: promise[':path'], + headers: options.headers }, 'Promising push stream');   var pushStream = this.stream.promise(promise);   @@ -2819,7 +2812,7 @@

function Agent(options) { EventEmitter.call(this);   - options = options || {}; + options = util._extend({}, options);   this._settings = options.settings; this._log = (options.log || defaultLogger).child({ component: 'http' }); @@ -2830,7 +2823,8 @@

// channels even if we ask for a negotiated one. This agent will contain only negotiated // channels. var agentOptions = {}; - agentOptions[protocolList] = supportedProtocols; + agentOptions.ALPNProtocols = supportedProtocols; + agentOptions.NPNProtocols = supportedProtocols; this._httpsAgent = new https.Agent(agentOptions);   this.sockets = this._httpsAgent.sockets; @@ -2841,6 +2835,8 @@

Agent.prototype.request = function request(options, callback) { if (typeof options === 'string') { options = url.parse(options); + } else { + options = util._extend({}, options); }   options.method = (options.method || 'GET').toUpperCase(); @@ -2887,13 +2883,15 @@

// * HTTP/2 over TLS negotiated using NPN or ALPN else { var started = false; - options[protocolList] = supportedProtocols; + options.ALPNProtocols = supportedProtocols; + options.NPNProtocols = supportedProtocols; options.servername = options.host; // Server Name Indication options.agent = this._httpsAgent; var httpsRequest = https.request(options);   httpsRequest.on('socket', function(socket) { - Iif (socket[negotiatedProtocol] !== undefined) { + var negotiatedProtocol = socket.alpnProtocol || socket.npnProtocol; + Iif (negotiatedProtocol !== undefined) { negotiated(); } else { socket.on('secureConnect', negotiated); @@ -2903,7 +2901,8 @@

var self = this; function negotiated() { var endpoint; - Eif (httpsRequest.socket[negotiatedProtocol] === implementedVersion) { + var negotiatedProtocol = httpsRequest.socket.alpnProtocol || httpsRequest.socket.npnProtocol; + if (negotiatedProtocol === implementedVersion) { httpsRequest.socket.emit('agentRemove'); unbundleSocket(httpsRequest.socket); endpoint = new Endpoint(self._log, 'CLIENT', self._settings); @@ -2917,23 +2916,23 @@

httpsRequest.abort(); } } else { - Eif (endpoint) { + if (endpoint) { self._log.info({ e: endpoint, server: options.host + ':' + options.port }, 'New outgoing HTTP/2 connection'); self.endpoints[key] = endpoint; self.emit(key, endpoint); } else { - self.emit(key, undefined); + self.emit(key, undefined); } } }   this.once(key, function(endpoint) { started = true; - Eif (endpoint) { + if (endpoint) { request._start(endpoint.createStream(), options); } else { - request._fallback(httpsRequest); + request._fallback(httpsRequest); } }); } @@ -2998,11 +2997,12 @@

  headers[':scheme'] = options.protocol.slice(0, -1); headers[':method'] = options.method; - headers[':host'] = options.host; + headers[':authority'] = options.host; headers[':path'] = options.path;   - this._log.info({ scheme: headers[':scheme'], method: headers[':method'], host: headers[':host'], - path: headers[':path'], headers: (options.headers || {}) }, 'Sending request'); + this._log.info({ scheme: headers[':scheme'], method: headers[':method'], + authority: headers[':authority'], path: headers[':path'], + headers: (options.headers || {}) }, 'Sending request'); this.stream.headers(headers); this.headersSent = true;   @@ -3095,7 +3095,7 @@

} IncomingResponse.prototype = Object.create(IncomingMessage.prototype, { constructor: { value: IncomingResponse } });   -// [Response Header Fields](http://tools.ietf.org/html/draft-ietf-httpbis-http2-05#section-8.1.2.2) +// [Response Header Fields](http://tools.ietf.org/html/draft-ietf-httpbis-http2-10#section-8.1.3.2) // * `headers` argument: HTTP/2.0 request and response header fields carry information as a series // of key-value pairs. This includes the target URI for the request, the status code for the // response, as well as HTTP header fields. @@ -3153,7 +3153,7 @@

diff --git a/coverage/lcov-report/lib/index.html b/coverage/lcov-report/lib/index.html index 67edfafa..0b102a1b 100644 --- a/coverage/lcov-report/lib/index.html +++ b/coverage/lcov-report/lib/index.html @@ -183,16 +183,16 @@

Code coverage report for lib/

- Statements: 93.26% (1563 / 1676)      + Statements: 94% (392 / 417)      - Branches: 84.85% (605 / 713)      + Branches: 80.63% (129 / 160)      - Functions: 94.81% (201 / 212)      + Functions: 93.65% (59 / 63)      - Lines: 93.23% (1557 / 1670)      + Lines: 94% (392 / 417)     

All files » lib/
@@ -215,94 +215,16 @@

- compressor.js - - 94.72% - (323 / 341) - 94.44% - (119 / 126) - 100% - (28 / 28) - 94.72% - (323 / 341) - - - - connection.js - - 92.47% - (221 / 239) - 80.23% - (69 / 86) - 100% - (33 / 33) - 92.47% - (221 / 239) - - - - endpoint.js - - 94.17% - (97 / 103) - 90.91% - (20 / 22) - 87.5% - (14 / 16) - 94.17% - (97 / 103) - - - - flow.js - - 95.87% - (116 / 121) - 92.05% - (81 / 88) - 100% - (17 / 17) - 95.87% - (116 / 121) - - - - framer.js - - 94.35% - (234 / 248) - 83.33% - (60 / 72) - 93.75% - (30 / 32) - 94.35% - (234 / 248) - - - http.js - - 92.29% - (383 / 415) - 76.54% - (124 / 162) - 92.19% - (59 / 64) - 92.29% - (383 / 415) - - - - stream.js - - 90.43% - (189 / 209) - 84.08% - (132 / 157) - 90.91% - (20 / 22) - 90.15% - (183 / 203) + + 94% + (392 / 417) + 80.63% + (129 / 160) + 93.65% + (59 / 63) + 94% + (392 / 417) @@ -310,7 +232,7 @@

diff --git a/coverage/lcov-report/lib/stream.js.html b/coverage/lcov-report/lib/stream.js.html deleted file mode 100644 index 2a492ebe..00000000 --- a/coverage/lcov-report/lib/stream.js.html +++ /dev/null @@ -1,2150 +0,0 @@ - - - - Code coverage report for lib/stream.js - - - - - - - -
-

Code coverage report for lib/stream.js

-

- - Statements: 90.43% (189 / 209)      - - - Branches: 84.08% (132 / 157)      - - - Functions: 90.91% (20 / 22)      - - - Lines: 90.15% (183 / 203)      - -

-
All files » lib/ » stream.js
-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210 -211 -212 -213 -214 -215 -216 -217 -218 -219 -220 -221 -222 -223 -224 -225 -226 -227 -228 -229 -230 -231 -232 -233 -234 -235 -236 -237 -238 -239 -240 -241 -242 -243 -244 -245 -246 -247 -248 -249 -250 -251 -252 -253 -254 -255 -256 -257 -258 -259 -260 -261 -262 -263 -264 -265 -266 -267 -268 -269 -270 -271 -272 -273 -274 -275 -276 -277 -278 -279 -280 -281 -282 -283 -284 -285 -286 -287 -288 -289 -290 -291 -292 -293 -294 -295 -296 -297 -298 -299 -300 -301 -302 -303 -304 -305 -306 -307 -308 -309 -310 -311 -312 -313 -314 -315 -316 -317 -318 -319 -320 -321 -322 -323 -324 -325 -326 -327 -328 -329 -330 -331 -332 -333 -334 -335 -336 -337 -338 -339 -340 -341 -342 -343 -344 -345 -346 -347 -348 -349 -350 -351 -352 -353 -354 -355 -356 -357 -358 -359 -360 -361 -362 -363 -364 -365 -366 -367 -368 -369 -370 -371 -372 -373 -374 -375 -376 -377 -378 -379 -380 -381 -382 -383 -384 -385 -386 -387 -388 -389 -390 -391 -392 -393 -394 -395 -396 -397 -398 -399 -400 -401 -402 -403 -404 -405 -406 -407 -408 -409 -410 -411 -412 -413 -414 -415 -416 -417 -418 -419 -420 -421 -422 -423 -424 -425 -426 -427 -428 -429 -430 -431 -432 -433 -434 -435 -436 -437 -438 -439 -440 -441 -442 -443 -444 -445 -446 -447 -448 -449 -450 -451 -452 -453 -454 -455 -456 -457 -458 -459 -460 -461 -462 -463 -464 -465 -466 -467 -468 -469 -470 -471 -472 -473 -474 -475 -476 -477 -478 -479 -480 -481 -482 -483 -484 -485 -486 -487 -488 -489 -490 -491 -492 -493 -494 -495 -496 -497 -498 -499 -500 -501 -502 -503 -504 -505 -506 -507 -508 -509 -510 -511 -512 -513 -514 -515 -516 -517 -518 -519 -520 -521 -522 -523 -524 -525 -526 -527 -528 -529 -530 -531 -532 -533 -534 -535 -536 -537 -538 -539 -540 -541 -542 -543 -544 -545 -546 -547 -548 -549 -550 -551 -552 -553 -554 -555 -556 -557 -558 -559 -560 -561 -562 -563 -564 -565 -566 -567 -568 -569 -570 -571 -572 -573 -574 -575 -576 -577 -578 -579 -580 -581 -582 -583 -584 -585 -586 -587 -588 -589 -590 -591 -592 -593 -594 -595 -596 -597 -598 -599 -600 -601 -602 -603 -604 -605 -606 -607 -608 -609 -610 -611 -612 -613 -614 -615 -6161 -  -  -  -  -  -  -  -  -  -  -1 -  -1 -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1 -105 -  -  -105 -  -  -105 -  -  -105 -  -  -105 -  -  -1 -  -  -  -  -  -1 -1 -  -  -1 -105 -105 -105 -  -  -1 -6 -6 -6 -  -  -  -  -  -  -6 -  -  -1 -6 -  -  -1 -44 -  -  -  -  -  -  -  -1 -43 -  -  -43 -  -  -1 -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1 -  -  -  -  -  -1 -1 -1 -1 -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1 -  -1 -105 -  -105 -  -105 -105 -105 -105 -105 -105 -  -105 -  -  -1 -71 -71 -  -  -  -  -1 -70 -  -70 -  -  -70 -  -  -70 -43 -27 -6 -21 -  -  -  -  -21 -  -  -  -  -  -  -70 -  -  -  -1 -  -  -70 -21 -21 -  -  -  -  -  -70 -35 -35 -  -  -  -70 -70 -  -  -  -  -  -1 -38 -  -  -  -  -  -  -  -1 -  -19 -  -  -  -  -  -  -  -19 -  -  -19 -  -  -  -  -  -  -1 -91 -19 -19 -19 -  -  -  -  -  -  -  -1 -1 -36 -  -  -  -  -  -36 -36 -35 -35 -35 -  -1 -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1 -105 -105 -105 -105 -  -  -  -  -1 -145 -145 -145 -145 -  -  -  -  -1 -206 -  -  -  -  -  -1 -240 -240 -  -240 -240 -240 -88 -95 -8 -15 -24 -10 -  -  -240 -  -240 -  -  -  -  -  -  -52 -42 -42 -11 -  -42 -10 -1 -  -9 -  -52 -  -  -  -  -  -  -  -  -  -  -  -14 -4 -10 -2 -8 -  -  -8 -  -14 -  -  -  -  -  -  -  -  -  -14 -2 -12 -4 -8 -  -  -8 -  -14 -  -  -  -  -  -  -  -  -  -  -  -37 -21 -16 -2 -  -  -  -37 -  -  -  -  -  -  -  -  -42 -21 -21 -  -  -3 -  -42 -  -  -  -  -  -  -  -  -  -  -  -  -58 -22 -36 -  -  -3 -  -58 -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -23 -  -  -  -  -14 -  -23 -  -  -  -  -  -240 -50 -50 -  -  -  -  -  -  -  -  -240 -  -  -  -13 -13 -13 -  -  -  -240 -103 -103 -59 -  -44 -  -137 -72 -  -  -  -240 -45 -  -  -  -  -  -  -  -  -45 -20 -20 -  -  -  -  -  -25 -25 -  -  -  -  -  -  -  -1 -  -1 -1 -6 -2 -2 -  -6 -  - 
var assert = require('assert');
- 
-// The Stream class
-// ================
- 
-// Stream is a [Duplex stream](http://nodejs.org/api/stream.html#stream_class_stream_duplex)
-// subclass that implements the [HTTP/2 Stream](http://http2.github.io/http2-spec/#rfc.section.3.4)
-// concept. It has two 'sides': one that is used by the user to send/receive data (the `stream`
-// object itself) and one that is used by a Connection to read/write frames to/from the other peer
-// (`stream.upstream`).
- 
-var Duplex = require('stream').Duplex;
- 
-exports.Stream = Stream;
- 
-// Public API
-// ----------
- 
-// * **new Stream(log)**: create a new Stream
-//
-// * **Event: 'headers' (headers)**: signals incoming headers
-//
-// * **Event: 'promise' (stream, headers)**: signals an incoming push promise
-//
-// * **Event: 'priority' (priority)**: signals a priority change. `priority` is a number between 0
-//     (highest priority) and 2^31-1 (lowest priority). Default value is 2^30.
-//
-// * **Event: 'error' (type)**: signals an error
-//
-// * **headers(headers)**: send headers
-//
-// * **promise(headers): Stream**: promise a stream
-//
-// * **priority(priority)**: set the priority of the stream. Priority can be changed by the peer
-//   too, but once it is set locally, it can not be changed remotely.
-//
-// * **reset(error)**: reset the stream with an error code
-//
-// * **upstream**: a [Flow](flow.js) that is used by the parent connection to write/read frames
-//   that are to be sent/arrived to/from the peer and are related to this stream.
-//
-// Headers are always in the [regular node.js header format][1].
-// [1]: http://nodejs.org/api/http.html#http_message_headers
- 
-// Constructor
-// -----------
- 
-// The main aspects of managing the stream are:
-function Stream(log) {
-  Duplex.call(this);
- 
-  // * logging
-  this._log = log.child({ component: 'stream', s: this });
- 
-  // * receiving and sending stream management commands
-  this._initializeManagement();
- 
-  // * sending and receiving frames to/from the upstream connection
-  this._initializeDataFlow();
- 
-  // * maintaining the state of the stream (idle, open, closed, etc.) and error detection
-  this._initializeState();
-}
- 
-Stream.prototype = Object.create(Duplex.prototype, { constructor: { value: Stream } });
- 
-// Managing the stream
-// -------------------
- 
-// the default stream priority is 2^30
-var DEFAULT_PRIORITY = Math.pow(2, 30);
-var MAX_PRIORITY = Math.pow(2, 31) - 1;
- 
-// PUSH_PROMISE and HEADERS are forwarded to the user through events.
-Stream.prototype._initializeManagement = function _initializeManagement() {
-  this._resetSent = false;
-  this._priority = DEFAULT_PRIORITY;
-  this._letPeerPrioritize = true;
-};
- 
-Stream.prototype.promise = function promise(headers) {
-  var stream = new Stream(this._log);
-  stream._priority = Math.min(this._priority + 1, MAX_PRIORITY);
-  this._pushUpstream({
-    type: 'PUSH_PROMISE',
-    flags: {},
-    stream: this.id,
-    promised_stream: stream,
-    headers: headers
-  });
-  return stream;
-};
- 
-Stream.prototype._onPromise = function _onPromise(frame) {
-  this.emit('promise', frame.promised_stream, frame.headers);
-};
- 
-Stream.prototype.headers = function headers(headers) {
-  this._pushUpstream({
-    type: 'HEADERS',
-    flags: {},
-    stream: this.id,
-    headers: headers
-  });
-};
- 
-Stream.prototype._onHeaders = function _onHeaders(frame) {
-  Iif (frame.priority !== undefined) {
-    this.priority(frame.priority, true);
-  }
-  this.emit('headers', frame.headers);
-};
- 
-Stream.prototype.priority = function priority(priority, peer) {
-  if ((peer && this._letPeerPrioritize) || !peer) {
-    if (!peer) {
-      this._letPeerPrioritize = false;
- 
-      var lastFrame = this.upstream.getLastQueuedFrame();
-      if (lastFrame && ((lastFrame.type === 'HEADERS') || (lastFrame.type === 'PRIORITY'))) {
-        lastFrame.priority = priority;
-      } else {
-        this._pushUpstream({
-          type: 'PRIORITY',
-          flags: {},
-          stream: this.id,
-          priority: priority
-        });
-      }
-    }
- 
-    this._log.debug({ priority: priority }, 'Changing priority');
-    this.emit('priority', priority);
-    this._priority = priority;
-  }
-};
- 
-Stream.prototype._onPriority = function _onPriority(frame) {
-  this.priority(frame.priority, true);
-};
- 
-// Resetting the stream. Normally, an endpoint SHOULD NOT send more than one RST_STREAM frame for
-// any stream.
-Stream.prototype.reset = function reset(error) {
-  Eif (!this._resetSent) {
-    this._resetSent = true;
-    this._pushUpstream({
-      type: 'RST_STREAM',
-      flags: {},
-      stream: this.id,
-      error: error
-    });
-  }
-};
- 
-// Data flow
-// ---------
- 
-// The incoming and the generated outgoing frames are received/transmitted on the `this.upsteam`
-// [Flow](flow.html). The [Connection](connection.html) object instantiating the stream will read
-// and write frames to/from it. The stream itself is a regular [Duplex stream][1], and is used by
-// the user to write or read the body of the request.
-// [1]: http://nodejs.org/api/stream.html#stream_class_stream_duplex
- 
-//     upstream side                  stream                  user side
-//
-//                    +------------------------------------+
-//                    |                                    |
-//                    +------------------+                 |
-//                    |     upstream     |                 |
-//                    |                  |                 |
-//                    +--+               |              +--|
-//            read()  |  |  _send()      |    _write()  |  |  write(buf)
-//     <--------------|B |<--------------|--------------| B|<------------
-//                    |  |               |              |  |
-//            frames  +--+               |              +--|  buffers
-//                    |  |               |              |  |
-//     -------------->|B |---------------|------------->| B|------------>
-//      write(frame)  |  |  _receive()   |     _read()  |  |  read()
-//                    +--+               |              +--|
-//                    |                  |                 |
-//                    |                  |                 |
-//                    +------------------+                 |
-//                    |                                    |
-//                    +------------------------------------+
-//
-//     B: input or output buffer
- 
-var Flow = require('./flow').Flow;
- 
-Stream.prototype._initializeDataFlow = function _initializeDataFlow() {
-  this.id = undefined;
- 
-  this._ended = false;
- 
-  this.upstream = new Flow();
-  this.upstream._log = this._log;
-  this.upstream._send = this._send.bind(this);
-  this.upstream._receive = this._receive.bind(this);
-  this.upstream.write = this._writeUpstream.bind(this);
-  this.upstream.on('error', this.emit.bind(this, 'error'));
- 
-  this.on('finish', this._finishing);
-};
- 
-Stream.prototype._pushUpstream = function _pushUpstream(frame) {
-  this.upstream.push(frame);
-  this._transition(true, frame);
-};
- 
-// Overriding the upstream's `write` allows us to act immediately instead of waiting for the input
-// queue to empty. This is important in case of control frames.
-Stream.prototype._writeUpstream = function _writeUpstream(frame) {
-  this._log.debug({ frame: frame }, 'Receiving frame');
- 
-  var moreNeeded = Flow.prototype.write.call(this.upstream, frame);
- 
-  // * Transition to a new state if that's the effect of receiving the frame
-  this._transition(false, frame);
- 
-  // * If it's a control frame. Call the appropriate handler method.
-  if (frame.type === 'HEADERS') {
-    this._onHeaders(frame);
-  } else if (frame.type === 'PUSH_PROMISE') {
-    this._onPromise(frame);
-  } else Iif (frame.type === 'PRIORITY') {
-    this._onPriority(frame);
-  }
- 
-  // * If it's an invalid stream level frame, emit error
-  else Iif ((frame.type !== 'DATA') &&
-           (frame.type !== 'WINDOW_UPDATE') &&
-           (frame.type !== 'RST_STREAM')) {
-    this._log.error({ frame: frame }, 'Invalid stream level frame');
-    this.emit('error', 'PROTOCOL_ERROR');
-  }
- 
-  return moreNeeded;
-};
- 
-// The `_receive` method (= `upstream._receive`) gets called when there's an incoming frame.
-Stream.prototype._receive = function _receive(frame, ready) {
-  // * If it's a DATA frame, then push the payload into the output buffer on the other side.
-  //   Call ready when the other side is ready to receive more.
-  if (!this._ended && (frame.type === 'DATA')) {
-    var moreNeeded = this.push(frame.data);
-    Iif (!moreNeeded) {
-      this._receiveMore = ready;
-    }
-  }
- 
-  // * Any frame may signal the end of the stream with the END_STREAM flag
-  if (!this._ended && (frame.flags.END_STREAM || (frame.type === 'RST_STREAM'))) {
-    this.push(null);
-    this._ended = true;
-  }
- 
-  // * Postpone calling `ready` if `push()` returned a falsy value
-  Eif (this._receiveMore !== ready) {
-    ready();
-  }
-};
- 
-// The `_read` method is called when the user side is ready to receive more data. If there's a
-// pending write on the upstream, then call its pending ready callback to receive more frames.
-Stream.prototype._read = function _read() {
-  Iif (this._receiveMore) {
-    var receiveMore = this._receiveMore;
-    delete this._receiveMore;
-    receiveMore();
-  }
-};
- 
-// The `write` method gets called when there's a write request from the user.
-Stream.prototype._write = function _write(buffer, encoding, ready) {
-  // * Chunking is done by the upstream Flow.
-  var moreNeeded = this._pushUpstream({
-    type: 'DATA',
-    flags: {},
-    stream: this.id,
-    data: buffer
-  });
- 
-  // * Call ready when upstream is ready to receive more frames.
-  Iif (moreNeeded) {
-    ready();
-  } else {
-    this._sendMore = ready;
-  }
-};
- 
-// The `_send` (= `upstream._send`) method is called when upstream is ready to receive more frames.
-// If there's a pending write on the user side, then call its pending ready callback to receive more
-// writes.
-Stream.prototype._send = function _send() {
-  if (this._sendMore) {
-    var sendMore = this._sendMore;
-    delete this._sendMore;
-    sendMore();
-  }
-};
- 
-// When the stream is finishing (the user calls `end()` on it), then we have to set the `END_STREAM`
-// flag on the last frame. If there's no frame in the queue, or if it doesn't support this flag,
-// then we create a 0 length DATA frame. We could do this all the time, but putting the flag on an
-// existing frame is a nice optimization.
-var emptyBuffer = new Buffer(0);
-Stream.prototype._finishing = function _finishing() {
-  var endFrame = {
-    type: 'DATA',
-    flags: { END_STREAM: true },
-    stream: this.id,
-    data: emptyBuffer
-  };
-  var lastFrame = this.upstream.getLastQueuedFrame();
-  if (lastFrame && ((lastFrame.type === 'DATA') || (lastFrame.type === 'HEADERS'))) {
-    this._log.debug({ frame: lastFrame }, 'Marking last frame with END_STREAM flag.');
-    lastFrame.flags.END_STREAM = true;
-    this._transition(true, endFrame);
-  } else {
-    this._pushUpstream(endFrame);
-  }
-};
- 
-// [Stream States](http://tools.ietf.org/id/draft-unicorn-httpbis-http2-01.html#StreamStates)
-// ----------------
-//
-//                           +--------+
-//                     PP    |        |    PP
-//                  ,--------|  idle  |--------.
-//                 /         |        |         \
-//                v          +--------+          v
-//         +----------+          |           +----------+
-//         |          |          | H         |          |
-//     ,---| reserved |          |           | reserved |---.
-//     |   | (local)  |          v           | (remote) |   |
-//     |   +----------+      +--------+      +----------+   |
-//     |      |          ES  |        |  ES          |      |
-//     |      | H    ,-------|  open  |-------.      | H    |
-//     |      |     /        |        |        \     |      |
-//     |      v    v         +--------+         v    v      |
-//     |   +----------+          |           +----------+   |
-//     |   |   half   |          |           |   half   |   |
-//     |   |  closed  |          | R         |  closed  |   |
-//     |   | (remote) |          |           | (local)  |   |
-//     |   +----------+          |           +----------+   |
-//     |        |                v                 |        |
-//     |        |  ES / R    +--------+  ES / R    |        |
-//     |        `----------->|        |<-----------'        |
-//     |  R                  | closed |                  R  |
-//     `-------------------->|        |<--------------------'
-//                           +--------+
- 
-// Streams begin in the IDLE state and transitions happen when there's an incoming or outgoing frame
-Stream.prototype._initializeState = function _initializeState() {
-  this.state = 'IDLE';
-  this._initiated = undefined;
-  this._closedByUs = undefined;
-  this._closedWithRst = undefined;
-};
- 
-// Only `_setState` should change `this.state` directly. It also logs the state change and notifies
-// interested parties using the 'state' event.
-Stream.prototype._setState = function transition(state) {
-  assert(this.state !== state);
-  this._log.debug({ from: this.state, to: state }, 'State transition');
-  this.state = state;
-  this.emit('state', state);
-};
- 
-// A state is 'active' if the stream in that state counts towards the concurrency limit. Streams
-// that are in the "open" state, or either of the "half closed" states count toward this limit.
-function activeState(state) {
-  return ((state === 'HALF_CLOSED_LOCAL') || (state === 'HALF_CLOSED_REMOTE') || (state === 'OPEN'));
-}
- 
-// `_transition` is called every time there's an incoming or outgoing frame. It manages state
-// transitions, and detects stream errors. A stream error is always caused by a frame that is not
-// allowed in the current state.
-Stream.prototype._transition = function transition(sending, frame) {
-  var receiving = !sending;
-  var error = undefined;
- 
-  var DATA = false, HEADERS = false, PRIORITY = false;
-  var RST_STREAM = false, PUSH_PROMISE = false, WINDOW_UPDATE = false;
-  switch(frame.type) {
-    case 'DATA'         : DATA          = true; break;
-    case 'HEADERS'      : HEADERS       = true; break;
-    case 'PRIORITY'     : PRIORITY      = true; break;
-    case 'RST_STREAM'   : RST_STREAM    = true; break;
-    case 'PUSH_PROMISE' : PUSH_PROMISE  = true; break;
-    case 'WINDOW_UPDATE': WINDOW_UPDATE = true; break;
-  }
- 
-  var previousState = this.state;
- 
-  switch (this.state) {
-    // All streams start in the **idle** state. In this state, no frames have been exchanged.
-    //
-    // * Sending or receiving a HEADERS frame causes the stream to become "open".
-    //
-    // When the HEADERS frame contains the END_STREAM flags, then two state transitions happen.
-    case 'IDLE':
-      if (HEADERS) {
-        this._setState('OPEN');
-        if (frame.flags.END_STREAM) {
-          this._setState(sending ? 'HALF_CLOSED_LOCAL' : 'HALF_CLOSED_REMOTE');
-        }
-        this._initiated = sending;
-      } else if (sending && RST_STREAM) {
-        this._setState('CLOSED');
-      } else {
-        error = 'PROTOCOL_ERROR';
-      }
-      break;
- 
-    // A stream in the **reserved (local)** state is one that has been promised by sending a
-    // PUSH_PROMISE frame.
-    //
-    // * The endpoint can send a HEADERS frame. This causes the stream to open in a "half closed
-    //   (remote)" state.
-    // * Either endpoint can send a RST_STREAM frame to cause the stream to become "closed". This
-    //   releases the stream reservation.
-    // * An endpoint may receive PRIORITY frame in this state.
-    // * An endpoint MUST NOT send any other type of frame in this state.
-    case 'RESERVED_LOCAL':
-      if (sending && HEADERS) {
-        this._setState('HALF_CLOSED_REMOTE');
-      } else if (RST_STREAM) {
-        this._setState('CLOSED');
-      } else Iif (receiving && PRIORITY) {
-        /* No state change */
-      } else {
-        error = 'PROTOCOL_ERROR';
-      }
-      break;
- 
-    // A stream in the **reserved (remote)** state has been reserved by a remote peer.
-    //
-    // * Either endpoint can send a RST_STREAM frame to cause the stream to become "closed". This
-    //   releases the stream reservation.
-    // * Receiving a HEADERS frame causes the stream to transition to "half closed (local)".
-    // * An endpoint MAY send PRIORITY frames in this state to reprioritize the stream.
-    // * Receiving any other type of frame MUST be treated as a stream error of type PROTOCOL_ERROR.
-    case 'RESERVED_REMOTE':
-      if (RST_STREAM) {
-        this._setState('CLOSED');
-      } else if (receiving && HEADERS) {
-        this._setState('HALF_CLOSED_LOCAL');
-      } else Iif (sending && PRIORITY) {
-        /* No state change */
-      } else {
-        error = 'PROTOCOL_ERROR';
-      }
-      break;
- 
-    // The **open** state is where both peers can send frames. In this state, sending peers observe
-    // advertised stream level flow control limits.
-    //
-    // * From this state either endpoint can send a frame with a END_STREAM flag set, which causes
-    //   the stream to transition into one of the "half closed" states: an endpoint sending a
-    //   END_STREAM flag causes the stream state to become "half closed (local)"; an endpoint
-    //   receiving a END_STREAM flag causes the stream state to become "half closed (remote)".
-    // * Either endpoint can send a RST_STREAM frame from this state, causing it to transition
-    //   immediately to "closed".
-    case 'OPEN':
-      if (frame.flags.END_STREAM) {
-        this._setState(sending ? 'HALF_CLOSED_LOCAL' : 'HALF_CLOSED_REMOTE');
-      } else if (RST_STREAM) {
-        this._setState('CLOSED');
-      } else {
-        /* No state change */
-      }
-      break;
- 
-    // A stream that is **half closed (local)** cannot be used for sending frames.
-    //
-    // * A stream transitions from this state to "closed" when a frame that contains a END_STREAM
-    //   flag is received, or when either peer sends a RST_STREAM frame.
-    // * An endpoint MAY send or receive PRIORITY frames in this state to reprioritize the stream.
-    // * WINDOW_UPDATE can be sent by a peer that has sent a frame bearing the END_STREAM flag.
-    case 'HALF_CLOSED_LOCAL':
-      if (RST_STREAM || (receiving && frame.flags.END_STREAM)) {
-        this._setState('CLOSED');
-      } else if (receiving || (sending && (PRIORITY || WINDOW_UPDATE))) {
-        /* No state change */
-      } else {
-        error = 'PROTOCOL_ERROR';
-      }
-      break;
- 
-    // A stream that is **half closed (remote)** is no longer being used by the peer to send frames.
-    // In this state, an endpoint is no longer obligated to maintain a receiver flow control window
-    // if it performs flow control.
-    //
-    // * If an endpoint receives additional frames for a stream that is in this state it MUST
-    //   respond with a stream error of type STREAM_CLOSED.
-    // * A stream can transition from this state to "closed" by sending a frame that contains a
-    //   END_STREAM flag, or when either peer sends a RST_STREAM frame.
-    // * An endpoint MAY send or receive PRIORITY frames in this state to reprioritize the stream.
-    // * A receiver MAY receive a WINDOW_UPDATE frame on a "half closed (remote)" stream.
-    case 'HALF_CLOSED_REMOTE':
-      if (RST_STREAM || (sending && frame.flags.END_STREAM)) {
-        this._setState('CLOSED');
-      } else if (sending || (receiving && (WINDOW_UPDATE || PRIORITY))) {
-        /* No state change */
-      } else {
-        error = 'PROTOCOL_ERROR';
-      }
-      break;
- 
-    // The **closed** state is the terminal state.
-    //
-    // * An endpoint MUST NOT send frames on a closed stream. An endpoint that receives a frame
-    //   after receiving a RST_STREAM or a frame containing a END_STREAM flag on that stream MUST
-    //   treat that as a stream error of type STREAM_CLOSED.
-    // * WINDOW_UPDATE, PRIORITY or RST_STREAM frames can be received in this state for a short
-    //   period after a frame containing an END_STREAM flag is sent.  Until the remote peer receives
-    //   and processes the frame bearing the END_STREAM flag, it might send either frame type.
-    //   Endpoints MUST ignore WINDOW_UPDATE frames received in this state, though endpoints MAY
-    //   choose to treat WINDOW_UPDATE frames that arrive a significant time after sending
-    //   END_STREAM as a connection error of type PROTOCOL_ERROR.
-    // * If this state is reached as a result of sending a RST_STREAM frame, the peer that receives
-    //   the RST_STREAM might have already sent - or enqueued for sending - frames on the stream
-    //   that cannot be withdrawn. An endpoint that sends a RST_STREAM frame MUST ignore frames that
-    //   it receives on closed streams after it has sent a RST_STREAM frame. An endpoint MAY choose
-    //   to limit the period over which it ignores frames and treat frames that arrive after this
-    //   time as being in error.
-    // * An endpoint might receive a PUSH_PROMISE frame after it sends RST_STREAM. PUSH_PROMISE
-    //   causes a stream to become "reserved". If promised streams are not desired, a RST_STREAM
-    //   can be used to close any of those streams.
-    case 'CLOSED':
-      if ((sending && RST_STREAM) ||
-          (receiving && this._closedByUs &&
-           (this._closedWithRst || WINDOW_UPDATE || PRIORITY || RST_STREAM))) {
-        /* No state change */
-      } else {
-        error = 'STREAM_CLOSED';
-      }
-      break;
-  }
- 
-  // Noting that the connection was closed by the other endpoint. It may be important in edge cases.
-  // For example, when the peer tries to cancel a promised stream, but we already sent every data
-  // on it, then the stream is in CLOSED state, yet we want to ignore the incoming RST_STREAM.
-  if ((this.state === 'CLOSED') && (previousState !== 'CLOSED')) {
-    this._closedByUs = sending;
-    this._closedWithRst = RST_STREAM;
-  }
- 
-  // Sending/receiving a PUSH_PROMISE
-  //
-  // * Sending a PUSH_PROMISE frame marks the associated stream for later use. The stream state
-  //   for the reserved stream transitions to "reserved (local)".
-  // * Receiving a PUSH_PROMISE frame marks the associated stream as reserved by the remote peer.
-  //   The state of the stream becomes "reserved (remote)".
-  if (PUSH_PROMISE && !error) {
-    /* This assertion must hold, because _transition is called immediately when a frame is written
-       to the stream. If it would be called when a frame gets out of the input queue, the state
-       of the reserved could have been changed by then. */
-    assert(frame.promised_stream.state === 'IDLE', frame.promised_stream.state);
-    frame.promised_stream._setState(sending ? 'RESERVED_LOCAL' : 'RESERVED_REMOTE');
-    frame.promised_stream._initiated = sending;
-  }
- 
-  // Signaling how sending/receiving this frame changes the active stream count (-1, 0 or +1)
-  if (this._initiated) {
-    var change = (activeState(this.state) - activeState(previousState));
-    if (sending) {
-      frame.count_change = change;
-    } else {
-      frame.count_change(change);
-    }
-  } else if (sending) {
-    frame.count_change = 0;
-  }
- 
-  // Common error handling.
-  if (error) {
-    var info = {
-      error: error,
-      frame: frame,
-      state: this.state,
-      closedByUs: this._closedByUs,
-      closedWithRst: this._closedWithRst
-    };
- 
-    // * When sending something invalid, throwing an exception, since it is probably a bug.
-    if (sending) {
-      this._log.error(info, 'Sending illegal frame.');
-      throw new Error('Sending illegal frame (' + frame.type + ') in ' + this.state + ' state.');
-    }
- 
-    // * When receiving something invalid, sending an RST_STREAM using the `reset` method.
-    //   This will automatically cause a transition to the CLOSED state.
-    else {
-      this._log.error(info, 'Received illegal frame.');
-      this.emit('error', error);
-    }
-  }
-};
- 
-// Bunyan serializers
-// ------------------
- 
-exports.serializers = {};
- 
-var nextId = 0;
-exports.serializers.s = function(stream) {
-  if (!('_id' in stream)) {
-    stream._id = nextId;
-    nextId += 1;
-  }
-  return stream._id;
-};
- 
- -
- - - - - - - - diff --git a/coverage/lcov.info b/coverage/lcov.info index af8f8d2a..68d20874 100644 --- a/coverage/lcov.info +++ b/coverage/lcov.info @@ -1,2212 +1,55 @@ TN: -SF:/data/upstream/node-http2/lib/compressor.js -FN:37,HeaderTable -FN:72,entryFromPair -FN:91,size -FN:95,tableSize -FN:111,(anonymous_5) -FN:218,HeaderSetDecompressor -FN:229,_transform -FN:255,_execute -FN:312,_flush -FN:346,HeaderSetCompressor -FN:354,send -FN:367,_transform -FN:473,_flush -FN:504,writeInteger -FN:545,readInteger -FN:574,writeString -FN:580,readString -FN:632,writeHeader -FN:668,readHeader -FN:737,Compressor -FN:751,compress -FN:773,_transform -FN:829,Decompressor -FN:846,decompress -FN:870,_transform -FN:899,(anonymous_26) -FN:920,concat -FN:935,cut -FNF:28 -FNH:28 -FNDA:54,HeaderTable -FNDA:1806,entryFromPair -FNDA:1806,size -FNDA:54,tableSize -FNDA:182,(anonymous_5) -FNDA:49,HeaderSetDecompressor -FNDA:49,_transform -FNDA:151,_execute -FNDA:49,_flush -FNDA:47,HeaderSetCompressor -FNDA:147,send -FNDA:159,_transform -FNDA:47,_flush -FNDA:351,writeInteger -FNDA:363,readInteger -FNDA:123,writeString -FNDA:125,readString -FNDA:151,writeHeader -FNDA:159,readHeader -FNDA:26,Compressor -FNDA:47,compress -FNDA:75,_transform -FNDA:28,Decompressor -FNDA:49,decompress -FNDA:73,_transform -FNDA:38,(anonymous_26) -FNDA:132,concat -FNDA:37,cut -DA:18,1 -DA:19,1 -DA:20,1 -DA:21,1 -DA:22,1 -DA:24,1 -DA:25,1 -DA:26,1 -DA:37,1 -DA:38,54 -DA:39,54 -DA:40,54 -DA:41,54 -DA:42,54 -DA:43,54 -DA:72,1 -DA:73,1806 -DA:74,1806 -DA:75,1806 -DA:76,1806 -DA:77,1806 -DA:78,1806 -DA:89,1 -DA:91,1 -DA:92,1806 -DA:95,1 -DA:96,54 -DA:97,54 -DA:98,1620 -DA:100,54 -DA:111,1 -DA:112,182 -DA:113,182 -DA:115,182 -DA:116,0 -DA:117,0 -DA:118,0 -DA:121,182 -DA:122,182 -DA:123,182 -DA:124,0 -DA:126,182 -DA:128,182 -DA:131,182 -DA:139,1 -DA:174,1 -DA:217,1 -DA:218,1 -DA:219,49 -DA:221,49 -DA:222,49 -DA:223,49 -DA:229,1 -DA:230,49 -DA:231,49 -DA:255,1 -DA:256,151 -DA:259,151 -DA:268,151 -DA:269,54 -DA:270,54 -DA:272,54 -DA:273,32 -DA:275,22 -DA:276,22 -DA:277,22 -DA:278,22 -DA:290,97 -DA:291,78 -DA:293,19 -DA:296,97 -DA:297,97 -DA:298,92 -DA:299,92 -DA:300,92 -DA:301,92 -DA:304,97 -DA:312,1 -DA:313,49 -DA:316,49 -DA:317,49 -DA:318,151 -DA:322,49 -DA:323,1559 -DA:324,1559 -DA:325,46 -DA:327,1559 -DA:330,49 -DA:345,1 -DA:346,1 -DA:347,47 -DA:349,47 -DA:350,47 -DA:351,47 -DA:354,1 -DA:355,147 -DA:358,147 -DA:359,143 -DA:361,147 -DA:367,1 -DA:368,159 -DA:369,159 -DA:370,159 -DA:373,159 -DA:374,159 -DA:375,3760 -DA:376,3760 -DA:377,152 -DA:378,65 -DA:379,65 -DA:380,87 -DA:381,87 -DA:409,159 -DA:410,65 -DA:412,65 -DA:413,19 -DA:414,19 -DA:415,19 -DA:418,46 -DA:419,0 -DA:420,0 -DA:421,0 -DA:422,0 -DA:423,0 -DA:424,0 -DA:427,46 -DA:428,4 -DA:429,4 -DA:433,42 -DA:439,94 -DA:440,94 -DA:442,94 -DA:443,94 -DA:444,4 -DA:445,90 -DA:446,76 -DA:448,14 -DA:451,94 -DA:452,90 -DA:453,90 -DA:454,90 -DA:455,0 -DA:456,0 -DA:457,0 -DA:458,0 -DA:459,0 -DA:464,94 -DA:467,159 -DA:473,1 -DA:475,47 -DA:476,1488 -DA:477,1488 -DA:478,26 -DA:479,26 -DA:481,1488 -DA:482,1488 -DA:485,47 -DA:504,1 -DA:505,351 -DA:506,351 -DA:507,149 -DA:510,202 -DA:511,202 -DA:512,2 -DA:514,202 -DA:516,202 -DA:517,202 -DA:518,210 -DA:519,210 -DA:521,210 -DA:522,8 -DA:524,210 -DA:526,210 -DA:529,202 -DA:545,1 -DA:546,363 -DA:548,363 -DA:549,363 -DA:550,161 -DA:553,363 -DA:554,207 -DA:555,207 -DA:556,217 -DA:557,217 -DA:558,217 -DA:562,363 -DA:574,1 -DA:575,123 -DA:576,123 -DA:577,123 -DA:580,1 -DA:581,125 -DA:582,125 -DA:583,125 -DA:584,125 -DA:625,1 -DA:632,1 -DA:633,151 -DA:635,151 -DA:636,51 -DA:637,100 -DA:638,5 -DA:639,95 -DA:640,18 -DA:642,77 -DA:645,151 -DA:646,51 -DA:649,100 -DA:650,81 -DA:652,19 -DA:653,19 -DA:656,100 -DA:657,77 -DA:660,100 -DA:663,151 -DA:665,151 -DA:668,1 -DA:669,159 -DA:671,159 -DA:672,159 -DA:673,56 -DA:674,103 -DA:675,28 -DA:676,6 -DA:678,22 -DA:681,75 -DA:684,159 -DA:685,56 -DA:686,56 -DA:689,103 -DA:690,103 -DA:691,20 -DA:694,103 -DA:695,75 -DA:696,28 -DA:697,22 -DA:699,6 -DA:702,103 -DA:705,159 -DA:730,1 -DA:736,1 -DA:737,1 -DA:738,26 -DA:740,26 -DA:742,26 -DA:743,26 -DA:745,26 -DA:751,1 -DA:752,47 -DA:753,47 -DA:754,143 -DA:755,143 -DA:756,8 -DA:757,24 -DA:760,135 -DA:763,47 -DA:765,47 -DA:766,47 -DA:767,447 -DA:769,47 -DA:773,1 -DA:781,75 -DA:782,37 -DA:784,37 -DA:786,37 -DA:787,39 -DA:788,39 -DA:789,39 -DA:791,39 -DA:792,37 -DA:793,37 -DA:794,37 -DA:796,2 -DA:802,39 -DA:803,32 -DA:805,39 -DA:807,39 -DA:813,38 -DA:816,75 -DA:828,1 -DA:829,1 -DA:830,28 -DA:832,28 -DA:834,28 -DA:835,28 -DA:837,28 -DA:839,28 -DA:840,28 -DA:846,1 -DA:847,49 -DA:848,49 -DA:850,49 -DA:851,49 -DA:852,49 -DA:853,165 -DA:854,165 -DA:855,165 -DA:856,17 -DA:857,8 -DA:859,9 -DA:862,148 -DA:866,49 -DA:870,1 -DA:873,73 -DA:874,3 -DA:875,1 -DA:876,1 -DA:877,1 -DA:879,2 -DA:884,70 -DA:885,37 -DA:886,37 -DA:887,37 -DA:892,33 -DA:898,72 -DA:899,36 -DA:900,38 -DA:902,36 -DA:903,36 -DA:905,0 -DA:906,0 -DA:907,0 -DA:909,36 -DA:910,36 -DA:913,72 -DA:920,1 -DA:921,132 -DA:922,132 -DA:923,534 -DA:926,132 -DA:927,132 -DA:928,534 -DA:931,132 -DA:935,1 -DA:936,37 -DA:937,37 -DA:938,37 -DA:939,39 -DA:940,39 -DA:941,39 -DA:943,37 -LF:341 -LH:323 -BRDA:40,1,0,54 -BRDA:40,1,1,54 -BRDA:115,2,0,182 -BRDA:115,2,1,0 -BRDA:121,3,0,182 -BRDA:121,3,1,0 -BRDA:123,4,0,0 -BRDA:123,4,1,182 -BRDA:268,5,0,54 -BRDA:268,5,1,97 -BRDA:272,6,0,32 -BRDA:272,6,1,22 -BRDA:290,7,0,78 -BRDA:290,7,1,19 -BRDA:297,8,0,92 -BRDA:297,8,1,5 -BRDA:324,9,0,46 -BRDA:324,9,1,1513 -BRDA:324,10,0,1559 -BRDA:324,10,1,144 -BRDA:358,11,0,143 -BRDA:358,11,1,4 -BRDA:376,12,0,152 -BRDA:376,12,1,3608 -BRDA:377,13,0,65 -BRDA:377,13,1,87 -BRDA:380,14,0,87 -BRDA:380,14,1,0 -BRDA:409,15,0,65 -BRDA:409,15,1,94 -BRDA:412,16,0,19 -BRDA:412,16,1,46 -BRDA:418,17,0,0 -BRDA:418,17,1,46 -BRDA:427,18,0,4 -BRDA:427,18,1,42 -BRDA:443,19,0,4 -BRDA:443,19,1,90 -BRDA:445,20,0,76 -BRDA:445,20,1,14 -BRDA:451,21,0,90 -BRDA:451,21,1,4 -BRDA:456,22,0,0 -BRDA:456,22,1,0 -BRDA:464,23,0,76 -BRDA:464,23,1,18 -BRDA:477,24,0,26 -BRDA:477,24,1,1462 -BRDA:477,25,0,1488 -BRDA:477,25,1,165 -BRDA:477,25,2,123 -BRDA:506,26,0,149 -BRDA:506,26,1,202 -BRDA:511,27,0,2 -BRDA:511,27,1,200 -BRDA:521,28,0,8 -BRDA:521,28,1,202 -BRDA:549,29,0,161 -BRDA:549,29,1,202 -BRDA:553,30,0,207 -BRDA:553,30,1,156 -BRDA:635,31,0,51 -BRDA:635,31,1,100 -BRDA:637,32,0,5 -BRDA:637,32,1,95 -BRDA:639,33,0,18 -BRDA:639,33,1,77 -BRDA:645,34,0,51 -BRDA:645,34,1,100 -BRDA:649,35,0,81 -BRDA:649,35,1,19 -BRDA:656,36,0,77 -BRDA:656,36,1,23 -BRDA:672,37,0,56 -BRDA:672,37,1,103 -BRDA:674,38,0,28 -BRDA:674,38,1,75 -BRDA:675,39,0,6 -BRDA:675,39,1,22 -BRDA:684,40,0,56 -BRDA:684,40,1,103 -BRDA:690,41,0,20 -BRDA:690,41,1,83 -BRDA:694,42,0,75 -BRDA:694,42,1,28 -BRDA:696,43,0,22 -BRDA:696,43,1,6 -BRDA:742,44,0,26 -BRDA:742,44,1,13 -BRDA:743,45,0,13 -BRDA:743,45,1,13 -BRDA:755,46,0,8 -BRDA:755,46,1,135 -BRDA:781,47,0,37 -BRDA:781,47,1,38 -BRDA:781,48,0,75 -BRDA:781,48,1,45 -BRDA:791,49,0,37 -BRDA:791,49,1,2 -BRDA:802,50,0,32 -BRDA:802,50,1,7 -BRDA:803,51,0,32 -BRDA:803,51,1,30 -BRDA:834,52,0,28 -BRDA:834,52,1,13 -BRDA:835,53,0,15 -BRDA:835,53,1,13 -BRDA:855,54,0,17 -BRDA:855,54,1,148 -BRDA:856,55,0,8 -BRDA:856,55,1,9 -BRDA:873,56,0,3 -BRDA:873,56,1,70 -BRDA:874,57,0,1 -BRDA:874,57,1,2 -BRDA:874,58,0,3 -BRDA:874,58,1,2 -BRDA:884,59,0,37 -BRDA:884,59,1,33 -BRDA:884,60,0,70 -BRDA:884,60,1,40 -BRDA:898,61,0,36 -BRDA:898,61,1,36 -BRDA:898,62,0,72 -BRDA:898,62,1,39 -BRDA:898,62,2,10 -BRF:126 -BRH:119 -end_of_record -TN: -SF:/data/upstream/node-http2/lib/connection.js -FN:39,Connection -FN:100,_initializeStreamManagement -FN:123,_writeControlFrame -FN:135,_updateStreamLimit -FN:144,_changeStreamCount -FN:164,_allocateId -FN:199,_allocatePriority -FN:207,_insert -FN:215,_reprioritize -FN:229,_createIncomingStream -FN:241,createStream -FN:254,_initializeMultiplexing -FN:262,_send -FN:346,_receive -FN:384,_initializeSettingsManagement -FN:394,_onFirstFrameReceived -FN:404,_receiveSettings -FN:411,set -FN:433,_initializeLifecycleManagement -FN:441,_generatePingId -FN:452,ping -FN:469,_receivePing -FN:497,close -FN:515,_receiveGoaway -FN:527,_initializeFlowControl -FN:530,(anonymous_26) -FN:539,noop -FN:540,noop -FN:550,_setInitialStreamWindowSize -FN:557,(anonymous_30) -FN:565,_setLocalFlowControl -FN:575,_setRemoteFlowControl -FN:578,(anonymous_33) -FNF:33 -FNH:33 -FNDA:45,Connection -FNDA:45,_initializeStreamManagement -FNDA:42,_writeControlFrame -FNDA:18,_updateStreamLimit -FNDA:89,_changeStreamCount -FNDA:45,_allocateId -FNDA:45,_allocatePriority -FNDA:75,_insert -FNDA:10,_reprioritize -FNDA:22,_createIncomingStream -FNDA:18,createStream -FNDA:45,_initializeMultiplexing -FNDA:231,_send -FNDA:98,_receive -FNDA:45,_initializeSettingsManagement -FNDA:36,_onFirstFrameReceived -FNDA:36,_receiveSettings -FNDA:45,set -FNDA:45,_initializeLifecycleManagement -FNDA:2,_generatePingId -FNDA:2,ping -FNDA:5,_receivePing -FNDA:3,close -FNDA:2,_receiveGoaway -FNDA:45,_initializeFlowControl -FNDA:45,(anonymous_26) -FNDA:40,noop -FNDA:20,noop -FNDA:41,_setInitialStreamWindowSize -FNDA:47,(anonymous_30) -FNDA:24,_setLocalFlowControl -FNDA:20,_setRemoteFlowControl -FNDA:20,(anonymous_33) -DA:1,1 -DA:10,1 -DA:12,1 -DA:39,1 -DA:41,45 -DA:44,45 -DA:47,45 -DA:50,45 -DA:53,45 -DA:56,45 -DA:59,45 -DA:61,1 -DA:97,1 -DA:100,1 -DA:104,45 -DA:105,45 -DA:108,45 -DA:109,45 -DA:112,45 -DA:116,45 -DA:117,45 -DA:118,45 -DA:123,1 -DA:124,42 -DA:126,42 -DA:127,42 -DA:129,0 -DA:130,0 -DA:135,1 -DA:136,18 -DA:137,18 -DA:138,18 -DA:139,18 -DA:140,0 -DA:144,1 -DA:145,89 -DA:146,43 -DA:148,43 -DA:149,43 -DA:150,43 -DA:151,0 -DA:164,1 -DA:166,45 -DA:167,23 -DA:168,23 -DA:172,22 -DA:173,22 -DA:178,0 -DA:180,0 -DA:181,0 -DA:184,45 -DA:187,45 -DA:188,45 -DA:189,45 -DA:190,45 -DA:193,45 -DA:195,45 -DA:199,1 -DA:200,45 -DA:201,45 -DA:202,45 -DA:203,45 -DA:204,45 -DA:207,1 -DA:208,75 -DA:209,28 -DA:211,47 -DA:215,1 -DA:216,10 -DA:217,10 -DA:218,10 -DA:219,10 -DA:220,10 -DA:221,5 -DA:224,10 -DA:229,1 -DA:230,22 -DA:232,22 -DA:233,22 -DA:234,22 -DA:235,22 -DA:237,22 -DA:241,1 -DA:242,18 -DA:245,18 -DA:246,18 -DA:248,18 -DA:254,1 -DA:255,45 -DA:256,45 -DA:257,45 -DA:262,1 -DA:264,231 -DA:265,4 -DA:269,227 -DA:270,97 -DA:272,130 -DA:273,101 -DA:274,101 -DA:276,130 -DA:279,97 -DA:282,97 -DA:283,97 -DA:284,64 -DA:285,64 -DA:298,64 -DA:299,113 -DA:300,146 -DA:301,146 -DA:303,146 -DA:304,89 -DA:305,57 -DA:306,0 -DA:307,0 -DA:310,57 -DA:312,57 -DA:313,27 -DA:316,57 -DA:317,5 -DA:318,5 -DA:321,57 -DA:322,57 -DA:323,57 -DA:325,57 -DA:326,57 -DA:327,0 -DA:331,113 -DA:332,113 -DA:337,97 -DA:338,69 -DA:341,97 -DA:346,1 -DA:347,98 -DA:350,98 -DA:351,36 -DA:352,36 -DA:356,98 -DA:359,98 -DA:360,17 -DA:364,98 -DA:365,5 -DA:368,98 -DA:371,98 -DA:373,98 -DA:379,1 -DA:384,1 -DA:386,45 -DA:387,45 -DA:390,45 -DA:394,1 -DA:395,36 -DA:396,36 -DA:398,0 -DA:399,0 -DA:404,1 -DA:405,36 -DA:406,54 -DA:411,1 -DA:412,45 -DA:418,45 -DA:419,70 -DA:433,1 -DA:434,45 -DA:435,45 -DA:436,45 -DA:437,45 -DA:441,1 -DA:442,2 -DA:443,2 -DA:444,2 -DA:445,32 -DA:448,2 -DA:452,1 -DA:453,2 -DA:454,2 -DA:455,2 -DA:457,2 -DA:458,2 -DA:469,1 -DA:470,5 -DA:471,3 -DA:472,3 -DA:473,2 -DA:474,2 -DA:475,2 -DA:476,2 -DA:478,2 -DA:480,1 -DA:484,2 -DA:485,2 -DA:497,1 -DA:498,3 -DA:499,0 -DA:500,0 -DA:503,3 -DA:504,3 -DA:511,3 -DA:512,3 -DA:515,1 -DA:516,2 -DA:517,2 -DA:518,2 -DA:519,2 -DA:520,0 -DA:527,1 -DA:529,45 -DA:530,45 -DA:531,45 -DA:532,45 -DA:533,25 -DA:536,45 -DA:537,45 -DA:538,45 -DA:539,45 -DA:540,45 -DA:544,1 -DA:550,1 -DA:551,41 -DA:552,1 -DA:553,1 -DA:555,40 -DA:556,40 -DA:557,40 -DA:558,47 -DA:565,1 -DA:566,24 -DA:567,22 -DA:568,22 -DA:569,2 -DA:570,1 -DA:571,1 -DA:575,1 -DA:576,20 -DA:577,20 -DA:578,20 -DA:579,20 -DA:581,0 -DA:582,0 -DA:583,0 -LF:239 -LH:221 -BRDA:124,1,0,42 -BRDA:124,1,1,0 -BRDA:124,2,0,42 -BRDA:124,2,1,6 -BRDA:124,2,2,2 -BRDA:124,2,3,0 -BRDA:136,3,0,18 -BRDA:136,3,1,0 -BRDA:139,4,0,0 -BRDA:139,4,1,18 -BRDA:145,5,0,43 -BRDA:145,5,1,46 -BRDA:148,6,0,43 -BRDA:148,6,1,0 -BRDA:150,7,0,0 -BRDA:150,7,1,43 -BRDA:166,8,0,23 -BRDA:166,8,1,22 -BRDA:172,9,0,22 -BRDA:172,9,1,0 -BRDA:172,10,0,22 -BRDA:172,10,1,22 -BRDA:208,11,0,28 -BRDA:208,11,1,47 -BRDA:220,12,0,5 -BRDA:220,12,1,5 -BRDA:264,13,0,4 -BRDA:264,13,1,227 -BRDA:269,14,0,97 -BRDA:269,14,1,130 -BRDA:272,15,0,101 -BRDA:272,15,1,29 -BRDA:301,16,0,146 -BRDA:301,16,1,0 -BRDA:303,17,0,89 -BRDA:303,17,1,57 -BRDA:305,18,0,0 -BRDA:305,18,1,57 -BRDA:312,19,0,27 -BRDA:312,19,1,30 -BRDA:313,20,0,27 -BRDA:313,20,1,18 -BRDA:316,21,0,5 -BRDA:316,21,1,52 -BRDA:326,22,0,0 -BRDA:326,22,1,57 -BRDA:337,23,0,69 -BRDA:337,23,1,28 -BRDA:350,24,0,36 -BRDA:350,24,1,62 -BRDA:359,25,0,17 -BRDA:359,25,1,81 -BRDA:364,26,0,5 -BRDA:364,26,1,93 -BRDA:387,27,0,45 -BRDA:387,27,1,20 -BRDA:395,28,0,36 -BRDA:395,28,1,0 -BRDA:395,29,0,36 -BRDA:395,29,1,36 -BRDA:470,30,0,3 -BRDA:470,30,1,2 -BRDA:472,31,0,2 -BRDA:472,31,1,1 -BRDA:475,32,0,2 -BRDA:475,32,1,0 -BRDA:498,33,0,0 -BRDA:498,33,1,3 -BRDA:509,34,0,3 -BRDA:509,34,1,2 -BRDA:519,35,0,0 -BRDA:519,35,1,2 -BRDA:532,36,0,25 -BRDA:532,36,1,20 -BRDA:551,37,0,1 -BRDA:551,37,1,40 -BRDA:551,38,0,41 -BRDA:551,38,1,2 -BRDA:566,39,0,22 -BRDA:566,39,1,2 -BRDA:569,40,0,1 -BRDA:569,40,1,1 -BRDA:576,41,0,20 -BRDA:576,41,1,0 -BRDA:581,42,0,0 -BRDA:581,42,1,0 -BRF:86 -BRH:69 -end_of_record -TN: -SF:/data/upstream/node-http2/lib/flow.js -FN:63,Flow -FN:79,_receive -FN:87,_write -FN:93,(anonymous_4) -FN:114,_restoreWindow -FN:128,disableRemoteFlowControl -FN:152,_send -FN:159,_read -FN:193,read -FN:240,_parentPush -FN:257,_push -FN:283,push -FN:304,getLastQueuedFrame -FN:322,_increaseWindow -FN:346,_updateWindow -FN:354,setInitialWindow -FN:360,disableLocalFlowControl -FNF:17 -FNH:17 -FNDA:164,Flow -FNDA:1,_receive -FNDA:266,_write -FNDA:97,(anonymous_4) -FNDA:12,_restoreWindow -FNDA:45,disableRemoteFlowControl -FNDA:1,_send -FNDA:231,_read -FNDA:610,read -FNDA:209,_parentPush -FNDA:210,_push -FNDA:203,push -FNDA:36,getLastQueuedFrame -FNDA:87,_increaseWindow -FNDA:5,_updateWindow -FNDA:52,setInitialWindow -FNDA:1,disableLocalFlowControl -DA:1,1 -DA:10,1 -DA:12,1 -DA:60,1 -DA:63,1 -DA:64,164 -DA:66,164 -DA:67,164 -DA:68,164 -DA:69,164 -DA:70,164 -DA:71,164 -DA:73,1 -DA:79,1 -DA:80,1 -DA:87,1 -DA:88,266 -DA:89,63 -DA:92,266 -DA:93,97 -DA:94,97 -DA:95,97 -DA:96,12 -DA:98,97 -DA:103,169 -DA:106,266 -DA:108,5 -DA:114,1 -DA:115,12 -DA:116,12 -DA:117,6 -DA:123,6 -DA:128,1 -DA:129,45 -DA:130,45 -DA:152,1 -DA:153,1 -DA:159,1 -DA:161,231 -DA:162,216 -DA:167,15 -DA:168,7 -DA:169,7 -DA:170,8 -DA:171,8 -DA:172,7 -DA:175,7 -DA:177,7 -DA:184,8 -DA:188,1 -DA:193,1 -DA:194,610 -DA:195,130 -DA:196,480 -DA:197,0 -DA:198,480 -DA:199,480 -DA:204,480 -DA:205,480 -DA:207,480 -DA:208,401 -DA:209,191 -DA:211,401 -DA:214,79 -DA:215,0 -DA:216,0 -DA:218,0 -DA:222,79 -DA:224,79 -DA:230,79 -DA:232,79 -DA:233,0 -DA:235,79 -DA:240,1 -DA:241,209 -DA:243,209 -DA:244,28 -DA:246,28 -DA:247,28 -DA:250,209 -DA:257,1 -DA:258,210 -DA:260,210 -DA:261,203 -DA:264,7 -DA:265,1 -DA:269,6 -DA:271,6 -DA:272,6 -DA:278,6 -DA:283,1 -DA:284,203 -DA:285,6 -DA:287,197 -DA:290,203 -DA:291,203 -DA:292,202 -DA:295,203 -DA:296,7 -DA:299,203 -DA:304,1 -DA:305,36 -DA:306,36 -DA:320,1 -DA:322,1 -DA:323,87 -DA:324,1 -DA:325,1 -DA:327,86 -DA:328,86 -DA:329,86 -DA:330,1 -DA:331,1 -DA:333,85 -DA:346,1 -DA:347,5 -DA:354,1 -DA:355,52 -DA:356,52 -DA:360,1 -DA:361,1 -LF:121 -LH:116 -BRDA:88,1,0,63 -BRDA:88,1,1,203 -BRDA:88,2,0,266 -BRDA:88,2,1,203 -BRDA:92,3,0,97 -BRDA:92,3,1,169 -BRDA:92,4,0,266 -BRDA:92,4,1,129 -BRDA:92,4,2,126 -BRDA:95,5,0,12 -BRDA:95,5,1,85 -BRDA:106,6,0,5 -BRDA:106,6,1,261 -BRDA:106,7,0,266 -BRDA:106,7,1,5 -BRDA:106,7,2,5 -BRDA:116,8,0,6 -BRDA:116,8,1,6 -BRDA:116,9,0,12 -BRDA:116,9,1,6 -BRDA:116,9,2,6 -BRDA:161,10,0,216 -BRDA:161,10,1,15 -BRDA:167,11,0,7 -BRDA:167,11,1,8 -BRDA:174,12,0,8 -BRDA:174,12,1,7 -BRDA:171,13,0,7 -BRDA:171,13,1,1 -BRDA:177,14,0,7 -BRDA:177,14,1,7 -BRDA:177,14,2,1 -BRDA:177,14,3,1 -BRDA:194,15,0,130 -BRDA:194,15,1,480 -BRDA:196,16,0,0 -BRDA:196,16,1,480 -BRDA:198,17,0,480 -BRDA:198,17,1,0 -BRDA:198,18,0,480 -BRDA:198,18,1,146 -BRDA:205,19,0,480 -BRDA:205,19,1,210 -BRDA:207,20,0,401 -BRDA:207,20,1,79 -BRDA:207,21,0,480 -BRDA:207,21,1,273 -BRDA:207,21,2,130 -BRDA:208,22,0,191 -BRDA:208,22,1,210 -BRDA:214,23,0,0 -BRDA:214,23,1,79 -BRDA:215,24,0,0 -BRDA:215,24,1,0 -BRDA:232,25,0,0 -BRDA:232,25,1,79 -BRDA:243,26,0,28 -BRDA:243,26,1,181 -BRDA:243,27,0,209 -BRDA:243,27,1,203 -BRDA:243,27,2,51 -BRDA:258,28,0,210 -BRDA:258,28,1,204 -BRDA:258,28,2,52 -BRDA:260,29,0,203 -BRDA:260,29,1,7 -BRDA:260,30,0,210 -BRDA:260,30,1,52 -BRDA:264,31,0,1 -BRDA:264,31,1,6 -BRDA:284,32,0,6 -BRDA:284,32,1,197 -BRDA:291,33,0,202 -BRDA:291,33,1,1 -BRDA:295,34,0,7 -BRDA:295,34,1,196 -BRDA:306,35,0,36 -BRDA:306,35,1,36 -BRDA:323,36,0,1 -BRDA:323,36,1,86 -BRDA:323,37,0,87 -BRDA:323,37,1,2 -BRDA:329,38,0,1 -BRDA:329,38,1,85 -BRDA:329,39,0,86 -BRDA:329,39,1,37 -BRDA:347,40,0,0 -BRDA:347,40,1,5 -BRF:88 -BRH:81 -end_of_record -TN: -SF:/data/upstream/node-http2/lib/stream.js -FN:49,Stream -FN:75,_initializeManagement -FN:81,promise -FN:94,_onPromise -FN:98,headers -FN:107,_onHeaders -FN:114,priority -FN:138,_onPriority -FN:144,reset -FN:191,_initializeDataFlow -FN:206,_pushUpstream -FN:213,_writeUpstream -FN:242,_receive -FN:266,_read -FN:275,_write -FN:295,_send -FN:308,_finishing -FN:355,_initializeState -FN:364,transition -FN:373,activeState -FN:380,transition -FN:609,(anonymous_22) -FNF:22 -FNH:20 -FNDA:105,Stream -FNDA:105,_initializeManagement -FNDA:6,promise -FNDA:6,_onPromise -FNDA:44,headers -FNDA:43,_onHeaders -FNDA:0,priority -FNDA:0,_onPriority -FNDA:1,reset -FNDA:105,_initializeDataFlow -FNDA:71,_pushUpstream -FNDA:70,_writeUpstream -FNDA:70,_receive -FNDA:38,_read -FNDA:19,_write -FNDA:91,_send -FNDA:36,_finishing -FNDA:105,_initializeState -FNDA:145,transition -FNDA:206,activeState -FNDA:240,transition -FNDA:6,(anonymous_22) -DA:1,1 -DA:12,1 -DA:14,1 -DA:49,1 -DA:50,105 -DA:53,105 -DA:56,105 -DA:59,105 -DA:62,105 -DA:65,1 -DA:71,1 -DA:72,1 -DA:75,1 -DA:76,105 -DA:77,105 -DA:78,105 -DA:81,1 -DA:82,6 -DA:83,6 -DA:84,6 -DA:91,6 -DA:94,1 -DA:95,6 -DA:98,1 -DA:99,44 -DA:107,1 -DA:108,43 -DA:109,0 -DA:111,43 -DA:114,1 -DA:115,0 -DA:116,0 -DA:117,0 -DA:119,0 -DA:120,0 -DA:121,0 -DA:123,0 -DA:132,0 -DA:133,0 -DA:134,0 -DA:138,1 -DA:139,0 -DA:144,1 -DA:145,1 -DA:146,1 -DA:147,1 -DA:189,1 -DA:191,1 -DA:192,105 -DA:194,105 -DA:196,105 -DA:197,105 -DA:198,105 -DA:199,105 -DA:200,105 -DA:201,105 -DA:203,105 -DA:206,1 -DA:207,71 -DA:208,71 -DA:213,1 -DA:214,70 -DA:216,70 -DA:219,70 -DA:222,70 -DA:223,43 -DA:224,27 -DA:225,6 -DA:226,21 -DA:227,0 -DA:231,21 -DA:234,0 -DA:235,0 -DA:238,70 -DA:242,1 -DA:245,70 -DA:246,21 -DA:247,21 -DA:248,0 -DA:253,70 -DA:254,35 -DA:255,35 -DA:259,70 -DA:260,70 -DA:266,1 -DA:267,38 -DA:268,0 -DA:269,0 -DA:270,0 -DA:275,1 -DA:277,19 -DA:285,19 -DA:286,0 -DA:288,19 -DA:295,1 -DA:296,91 -DA:297,19 -DA:298,19 -DA:299,19 -DA:307,1 -DA:308,1 -DA:309,36 -DA:315,36 -DA:316,36 -DA:317,35 -DA:318,35 -DA:319,35 -DA:321,1 -DA:355,1 -DA:356,105 -DA:357,105 -DA:358,105 -DA:359,105 -DA:364,1 -DA:365,145 -DA:366,145 -DA:367,145 -DA:368,145 -DA:373,1 -DA:374,206 -DA:380,1 -DA:381,240 -DA:382,240 -DA:384,240 -DA:385,240 -DA:386,240 -DA:387,88 -DA:388,95 -DA:389,8 -DA:390,15 -DA:391,24 -DA:392,10 -DA:395,240 -DA:397,240 -DA:404,52 -DA:405,42 -DA:406,42 -DA:407,11 -DA:409,42 -DA:410,10 -DA:411,1 -DA:413,9 -DA:415,52 -DA:427,14 -DA:428,4 -DA:429,10 -DA:430,2 -DA:431,8 -DA:434,8 -DA:436,14 -DA:446,14 -DA:447,2 -DA:448,12 -DA:449,4 -DA:450,8 -DA:453,8 -DA:455,14 -DA:467,37 -DA:468,21 -DA:469,16 -DA:470,2 -DA:474,37 -DA:483,42 -DA:484,21 -DA:485,21 -DA:488,3 -DA:490,42 -DA:503,58 -DA:504,22 -DA:505,36 -DA:508,3 -DA:510,58 -DA:533,23 -DA:538,14 -DA:540,23 -DA:546,240 -DA:547,50 -DA:548,50 -DA:557,240 -DA:561,13 -DA:562,13 -DA:563,13 -DA:567,240 -DA:568,103 -DA:569,103 -DA:570,59 -DA:572,44 -DA:574,137 -DA:575,72 -DA:579,240 -DA:580,45 -DA:589,45 -DA:590,20 -DA:591,20 -DA:597,25 -DA:598,25 -DA:606,1 -DA:608,1 -DA:609,1 -DA:610,6 -DA:611,2 -DA:612,2 -DA:614,6 -LF:203 -LH:183 -BRDA:108,1,0,0 -BRDA:108,1,1,43 -BRDA:115,2,0,0 -BRDA:115,2,1,0 -BRDA:115,3,0,0 -BRDA:115,3,1,0 -BRDA:115,3,2,0 -BRDA:116,4,0,0 -BRDA:116,4,1,0 -BRDA:120,5,0,0 -BRDA:120,5,1,0 -BRDA:120,6,0,0 -BRDA:120,6,1,0 -BRDA:120,6,2,0 -BRDA:145,7,0,1 -BRDA:145,7,1,0 -BRDA:222,8,0,43 -BRDA:222,8,1,27 -BRDA:224,9,0,6 -BRDA:224,9,1,21 -BRDA:226,10,0,0 -BRDA:226,10,1,21 -BRDA:231,11,0,0 -BRDA:231,11,1,21 -BRDA:231,12,0,21 -BRDA:231,12,1,0 -BRDA:231,12,2,0 -BRDA:245,13,0,21 -BRDA:245,13,1,49 -BRDA:245,14,0,70 -BRDA:245,14,1,70 -BRDA:247,15,0,0 -BRDA:247,15,1,21 -BRDA:253,16,0,35 -BRDA:253,16,1,35 -BRDA:253,17,0,70 -BRDA:253,17,1,70 -BRDA:253,17,2,35 -BRDA:259,18,0,70 -BRDA:259,18,1,0 -BRDA:267,19,0,0 -BRDA:267,19,1,38 -BRDA:285,20,0,0 -BRDA:285,20,1,19 -BRDA:296,21,0,19 -BRDA:296,21,1,72 -BRDA:316,22,0,35 -BRDA:316,22,1,1 -BRDA:316,23,0,36 -BRDA:316,23,1,35 -BRDA:316,23,2,17 -BRDA:374,24,0,206 -BRDA:374,24,1,139 -BRDA:374,24,2,121 -BRDA:386,25,0,88 -BRDA:386,25,1,95 -BRDA:386,25,2,8 -BRDA:386,25,3,15 -BRDA:386,25,4,24 -BRDA:386,25,5,10 -BRDA:397,26,0,52 -BRDA:397,26,1,14 -BRDA:397,26,2,14 -BRDA:397,26,3,37 -BRDA:397,26,4,42 -BRDA:397,26,5,58 -BRDA:397,26,6,23 -BRDA:404,27,0,42 -BRDA:404,27,1,10 -BRDA:406,28,0,11 -BRDA:406,28,1,31 -BRDA:407,29,0,0 -BRDA:407,29,1,11 -BRDA:410,30,0,1 -BRDA:410,30,1,9 -BRDA:410,31,0,10 -BRDA:410,31,1,5 -BRDA:427,32,0,4 -BRDA:427,32,1,10 -BRDA:427,33,0,14 -BRDA:427,33,1,9 -BRDA:429,34,0,2 -BRDA:429,34,1,8 -BRDA:431,35,0,0 -BRDA:431,35,1,8 -BRDA:431,36,0,8 -BRDA:431,36,1,4 -BRDA:446,37,0,2 -BRDA:446,37,1,12 -BRDA:448,38,0,4 -BRDA:448,38,1,8 -BRDA:448,39,0,12 -BRDA:448,39,1,8 -BRDA:450,40,0,0 -BRDA:450,40,1,8 -BRDA:450,41,0,8 -BRDA:450,41,1,4 -BRDA:467,42,0,21 -BRDA:467,42,1,16 -BRDA:468,43,0,16 -BRDA:468,43,1,5 -BRDA:469,44,0,2 -BRDA:469,44,1,14 -BRDA:483,45,0,21 -BRDA:483,45,1,21 -BRDA:483,46,0,42 -BRDA:483,46,1,40 -BRDA:483,46,2,37 -BRDA:485,47,0,18 -BRDA:485,47,1,3 -BRDA:485,48,0,21 -BRDA:485,48,1,3 -BRDA:485,48,2,3 -BRDA:485,48,3,3 -BRDA:503,49,0,22 -BRDA:503,49,1,36 -BRDA:503,50,0,58 -BRDA:503,50,1,56 -BRDA:503,50,2,53 -BRDA:505,51,0,33 -BRDA:505,51,1,3 -BRDA:505,52,0,36 -BRDA:505,52,1,3 -BRDA:505,52,2,3 -BRDA:505,52,3,3 -BRDA:533,53,0,9 -BRDA:533,53,1,14 -BRDA:533,54,0,23 -BRDA:533,54,1,5 -BRDA:533,54,2,23 -BRDA:533,54,3,18 -BRDA:533,54,4,12 -BRDA:533,54,5,6 -BRDA:533,54,6,5 -BRDA:533,54,7,4 -BRDA:546,55,0,50 -BRDA:546,55,1,190 -BRDA:546,56,0,240 -BRDA:546,56,1,73 -BRDA:557,57,0,13 -BRDA:557,57,1,227 -BRDA:557,58,0,240 -BRDA:557,58,1,24 -BRDA:562,59,0,6 -BRDA:562,59,1,7 -BRDA:567,60,0,103 -BRDA:567,60,1,137 -BRDA:569,61,0,59 -BRDA:569,61,1,44 -BRDA:574,62,0,72 -BRDA:574,62,1,65 -BRDA:579,63,0,45 -BRDA:579,63,1,195 -BRDA:589,64,0,20 -BRDA:589,64,1,25 -BRDA:610,65,0,2 -BRDA:610,65,1,4 -BRF:157 -BRH:132 -end_of_record -TN: -SF:/data/upstream/node-http2/lib/endpoint.js -FN:50,Endpoint -FN:84,_writePrelude -FN:90,_readPrelude -FN:95,_temporalWrite -FN:153,createTransformStream -FN:156,(anonymous_6) -FN:162,pipeAndFilter -FN:172,_initializeDataFlow -FN:197,_read -FN:209,_write -FN:216,_initializeManagement -FN:220,createStream -FN:227,_initializeErrorHandling -FN:237,_error -FN:243,close -FN:253,(anonymous_16) -FNF:16 -FNH:14 -FNDA:24,Endpoint -FNDA:12,_writePrelude -FNDA:12,_readPrelude -FNDA:11,_temporalWrite -FNDA:0,createTransformStream -FNDA:0,(anonymous_6) -FNDA:96,pipeAndFilter -FNDA:24,_initializeDataFlow -FNDA:155,_read -FNDA:50,_write -FNDA:24,_initializeManagement -FNDA:11,createStream -FNDA:24,_initializeErrorHandling -FNDA:1,_error -FNDA:2,close -FNDA:6,(anonymous_16) -DA:1,1 -DA:3,1 -DA:4,1 -DA:5,1 -DA:6,1 -DA:7,1 -DA:8,1 -DA:9,1 -DA:11,1 -DA:50,1 -DA:51,24 -DA:54,24 -DA:58,24 -DA:59,24 -DA:60,12 -DA:62,12 -DA:68,24 -DA:71,24 -DA:74,24 -DA:76,1 -DA:81,1 -DA:84,1 -DA:85,12 -DA:86,12 -DA:90,1 -DA:92,12 -DA:95,12 -DA:98,11 -DA:99,11 -DA:100,241 -DA:101,1 -DA:103,1 -DA:104,1 -DA:106,240 -DA:111,10 -DA:112,10 -DA:113,10 -DA:114,10 -DA:115,10 -DA:153,1 -DA:154,0 -DA:155,0 -DA:156,0 -DA:157,0 -DA:159,0 -DA:162,1 -DA:163,96 -DA:164,0 -DA:166,96 -DA:170,1 -DA:172,1 -DA:173,24 -DA:174,24 -DA:175,12 -DA:176,12 -DA:177,12 -DA:179,12 -DA:180,12 -DA:181,12 -DA:184,24 -DA:185,24 -DA:186,24 -DA:187,24 -DA:188,24 -DA:190,24 -DA:191,24 -DA:192,24 -DA:193,24 -DA:196,1 -DA:197,1 -DA:198,155 -DA:199,155 -DA:200,155 -DA:201,130 -DA:203,155 -DA:204,67 -DA:206,155 -DA:209,1 -DA:210,50 -DA:216,1 -DA:217,24 -DA:220,1 -DA:221,11 -DA:227,1 -DA:228,24 -DA:229,24 -DA:230,24 -DA:231,24 -DA:232,24 -DA:234,24 -DA:237,1 -DA:238,1 -DA:239,1 -DA:240,1 -DA:243,1 -DA:244,2 -DA:250,1 -DA:252,1 -DA:253,1 -DA:254,6 -DA:255,2 -DA:256,2 -DA:258,6 -LF:103 -LH:97 -BRDA:58,1,0,24 -BRDA:58,1,1,12 -BRDA:59,2,0,12 -BRDA:59,2,1,12 -BRDA:68,3,0,24 -BRDA:68,3,1,24 -BRDA:99,4,0,251 -BRDA:99,4,1,241 -BRDA:100,5,0,1 -BRDA:100,5,1,240 -BRDA:111,6,0,10 -BRDA:111,6,1,0 -BRDA:163,7,0,0 -BRDA:163,7,1,96 -BRDA:174,8,0,12 -BRDA:174,8,1,12 -BRDA:200,9,0,285 -BRDA:200,9,1,285 -BRDA:203,10,0,67 -BRDA:203,10,1,88 -BRDA:254,11,0,2 -BRDA:254,11,1,4 -BRF:22 -BRH:20 -end_of_record -TN: -SF:/data/upstream/node-http2/lib/framer.js -FN:25,Serializer -FN:35,_transform -FN:67,Deserializer -FN:80,(anonymous_4) -FN:91,_transform -FN:202,writeCommonHeader -FN:231,readCommonHeader -FN:278,writeData -FN:282,readData -FN:321,writeHeadersPriority -FN:331,readHeadersPriority -FN:361,writePriority -FN:367,readPriority -FN:393,writeRstStream -FN:401,readRstStream -FN:437,writeSettings -FN:439,(anonymous_17) -FN:457,readSettings -FN:522,writePushPromise -FN:533,readPushPromise -FN:557,writePing -FN:561,readPing -FN:596,writeGoaway -FN:610,readGoaway -FN:633,writeWindowUpdate -FN:643,readWindowUpdate -FN:669,writeContinuation -FN:673,readContinuation -FN:703,(anonymous_29) -FN:716,(anonymous_30) -FN:736,(anonymous_31) -FN:744,(anonymous_32) -FNF:32 -FNH:30 -FNDA:25,Serializer -FNDA:76,_transform -FNDA:25,Deserializer -FNDA:165,(anonymous_4) -FNDA:66,_transform -FNDA:87,writeCommonHeader -FNDA:81,readCommonHeader -FNDA:14,writeData -FNDA:14,readData -FNDA:29,writeHeadersPriority -FNDA:28,readHeadersPriority -FNDA:2,writePriority -FNDA:2,readPriority -FNDA:2,writeRstStream -FNDA:2,readRstStream -FNDA:26,writeSettings -FNDA:78,(anonymous_17) -FNDA:22,readSettings -FNDA:4,writePushPromise -FNDA:4,readPushPromise -FNDA:2,writePing -FNDA:2,readPing -FNDA:4,writeGoaway -FNDA:3,readGoaway -FNDA:2,writeWindowUpdate -FNDA:2,readWindowUpdate -FNDA:2,writeContinuation -FNDA:2,readContinuation -FNDA:6,(anonymous_29) -FNDA:8,(anonymous_30) -FNDA:0,(anonymous_31) -FNDA:0,(anonymous_32) -DA:5,1 -DA:7,1 -DA:9,1 -DA:10,1 -DA:12,1 -DA:25,1 -DA:26,25 -DA:27,25 -DA:28,25 -DA:30,1 -DA:35,1 -DA:36,76 -DA:38,76 -DA:40,76 -DA:41,76 -DA:42,76 -DA:44,76 -DA:46,76 -DA:47,156 -DA:48,0 -DA:50,156 -DA:53,76 -DA:67,1 -DA:68,25 -DA:69,25 -DA:70,25 -DA:71,25 -DA:73,1 -DA:80,1 -DA:81,165 -DA:82,165 -DA:83,165 -DA:84,165 -DA:85,95 -DA:91,1 -DA:92,66 -DA:94,66 -DA:95,0 -DA:98,66 -DA:101,147 -DA:102,147 -DA:103,147 -DA:104,147 -DA:111,147 -DA:112,70 -DA:113,70 -DA:114,70 -DA:116,0 -DA:117,0 -DA:126,147 -DA:127,70 -DA:128,70 -DA:129,70 -DA:130,0 -DA:131,0 -DA:133,70 -DA:134,70 -DA:137,0 -DA:139,70 -DA:143,66 -DA:191,1 -DA:192,1 -DA:194,1 -DA:196,1 -DA:198,1 -DA:200,1 -DA:202,1 -DA:203,87 -DA:205,87 -DA:206,87 -DA:207,91 -DA:209,87 -DA:210,87 -DA:212,87 -DA:213,87 -DA:215,87 -DA:216,87 -DA:217,93 -DA:218,93 -DA:219,93 -DA:220,54 -DA:223,87 -DA:225,87 -DA:226,87 -DA:228,87 -DA:231,1 -DA:232,81 -DA:234,81 -DA:236,81 -DA:237,81 -DA:238,81 -DA:239,81 -DA:240,152 -DA:243,81 -DA:245,81 -DA:272,1 -DA:274,1 -DA:276,1 -DA:278,1 -DA:279,14 -DA:282,1 -DA:283,14 -DA:305,1 -DA:307,1 -DA:309,1 -DA:321,1 -DA:322,29 -DA:323,2 -DA:324,2 -DA:325,2 -DA:326,2 -DA:328,29 -DA:331,1 -DA:332,28 -DA:333,2 -DA:334,2 -DA:336,26 -DA:347,1 -DA:349,1 -DA:351,1 -DA:361,1 -DA:362,2 -DA:363,2 -DA:364,2 -DA:367,1 -DA:368,2 -DA:378,1 -DA:380,1 -DA:382,1 -DA:393,1 -DA:394,2 -DA:395,2 -DA:396,2 -DA:397,2 -DA:398,2 -DA:401,1 -DA:402,2 -DA:413,1 -DA:415,1 -DA:417,1 -DA:437,1 -DA:438,26 -DA:439,26 -DA:440,78 -DA:441,34 -DA:442,34 -DA:443,34 -DA:446,26 -DA:448,26 -DA:449,26 -DA:450,34 -DA:451,34 -DA:454,26 -DA:457,1 -DA:458,22 -DA:460,22 -DA:461,0 -DA:463,22 -DA:464,28 -DA:465,28 -DA:466,28 -DA:467,28 -DA:468,28 -DA:476,1 -DA:480,1 -DA:484,1 -DA:490,1 -DA:504,1 -DA:506,1 -DA:508,1 -DA:522,1 -DA:523,4 -DA:525,4 -DA:526,4 -DA:527,4 -DA:529,4 -DA:530,4 -DA:533,1 -DA:534,4 -DA:535,4 -DA:549,1 -DA:551,1 -DA:553,1 -DA:557,1 -DA:558,2 -DA:561,1 -DA:562,2 -DA:563,0 -DA:565,2 -DA:575,1 -DA:577,1 -DA:579,1 -DA:596,1 -DA:597,4 -DA:599,4 -DA:600,4 -DA:601,4 -DA:603,4 -DA:604,4 -DA:605,4 -DA:607,4 -DA:610,1 -DA:611,3 -DA:612,3 -DA:622,1 -DA:624,1 -DA:626,1 -DA:633,1 -DA:634,2 -DA:636,2 -DA:637,2 -DA:638,2 -DA:640,2 -DA:643,1 -DA:644,2 -DA:663,1 -DA:665,1 -DA:667,1 -DA:669,1 -DA:670,2 -DA:673,1 -DA:674,2 -DA:680,1 -DA:698,1 -DA:702,1 -DA:703,1 -DA:704,6 -DA:705,0 -DA:708,6 -DA:709,4 -DA:712,2 -DA:713,2 -DA:715,2 -DA:716,2 -DA:717,8 -DA:720,2 -DA:721,1 -DA:722,0 -DA:724,1 -DA:727,1 -DA:728,1 -DA:732,2 -DA:733,0 -DA:736,2 -DA:737,0 -DA:740,2 -DA:744,1 -DA:745,0 -LF:248 -LH:234 -BRDA:27,1,0,25 -BRDA:27,1,1,1 -BRDA:47,2,0,0 -BRDA:47,2,1,156 -BRDA:69,3,0,25 -BRDA:69,3,1,1 -BRDA:84,4,0,95 -BRDA:84,4,1,70 -BRDA:94,5,0,0 -BRDA:94,5,1,66 -BRDA:111,6,0,70 -BRDA:111,6,1,77 -BRDA:111,7,0,147 -BRDA:111,7,1,134 -BRDA:113,8,0,70 -BRDA:113,8,1,0 -BRDA:126,9,0,70 -BRDA:126,9,1,77 -BRDA:126,10,0,147 -BRDA:126,10,1,70 -BRDA:127,11,0,70 -BRDA:127,11,1,0 -BRDA:129,12,0,0 -BRDA:129,12,1,70 -BRDA:219,13,0,54 -BRDA:219,13,1,39 -BRDA:225,14,0,87 -BRDA:225,14,1,87 -BRDA:226,15,0,87 -BRDA:226,15,1,26 -BRDA:322,16,0,2 -BRDA:322,16,1,27 -BRDA:324,17,0,2 -BRDA:324,17,1,2 -BRDA:332,18,0,2 -BRDA:332,18,1,26 -BRDA:396,19,0,2 -BRDA:396,19,1,2 -BRDA:440,20,0,34 -BRDA:440,20,1,44 -BRDA:443,21,0,22 -BRDA:443,21,1,12 -BRDA:460,22,0,0 -BRDA:460,22,1,22 -BRDA:466,23,0,28 -BRDA:466,23,1,0 -BRDA:468,24,0,20 -BRDA:468,24,1,8 -BRDA:526,25,0,4 -BRDA:526,25,1,4 -BRDA:562,26,0,0 -BRDA:562,26,1,2 -BRDA:600,27,0,4 -BRDA:600,27,1,4 -BRDA:604,28,0,4 -BRDA:604,28,1,4 -BRDA:637,29,0,2 -BRDA:637,29,1,2 -BRDA:704,30,0,0 -BRDA:704,30,1,6 -BRDA:708,31,0,4 -BRDA:708,31,1,2 -BRDA:720,32,0,1 -BRDA:720,32,1,1 -BRDA:721,33,0,0 -BRDA:721,33,1,1 -BRDA:727,34,0,1 -BRDA:727,34,1,0 -BRDA:732,35,0,0 -BRDA:732,35,1,2 -BRDA:736,36,0,2 -BRDA:736,36,1,2 -BRF:72 -BRH:60 -end_of_record -TN: SF:/data/upstream/node-http2/lib/http.js -FN:173,noop -FN:182,(anonymous_2) -FN:188,(anonymous_3) -FN:195,IncomingMessage -FN:224,_onHeaders -FN:247,(anonymous_6) -FN:252,_onEnd -FN:258,_checkSpecialHeader -FN:271,OutgoingMessage -FN:283,_write -FN:291,_finish -FN:306,setHeader -FN:318,removeHeader -FN:326,getHeader -FN:330,addTrailers -FN:350,Server -FN:367,(anonymous_17) -FN:395,_start -FN:406,_onStream -FN:418,_fallback -FN:434,listen -FN:440,close -FN:445,setTimeout -FN:452,getTimeout -FN:459,setTimeout -FN:470,on -FN:479,addContext -FN:485,createServer -FN:503,IncomingRequest -FN:512,_onHeaders -FN:543,OutgoingResponse -FN:556,writeHead -FN:580,_implicitHeaders -FN:586,write -FN:591,end -FN:596,_onRequestHeaders -FN:600,push -FN:626,on -FN:642,request -FN:645,get -FN:652,Agent -FN:674,request -FN:728,(anonymous_43) -FN:737,negotiated -FN:764,(anonymous_45) -FN:777,get -FN:783,unbundleSocket -FN:795,getMaxSockets -FN:798,setMaxSockets -FN:808,OutgoingRequest -FN:817,_start +FN:164,noop +FN:173,(anonymous_2) +FN:182,IncomingMessage +FN:211,_onHeaders +FN:234,(anonymous_5) +FN:239,_onEnd +FN:245,_checkSpecialHeader +FN:258,OutgoingMessage +FN:270,_write +FN:278,_finish +FN:293,setHeader +FN:305,removeHeader +FN:313,getHeader +FN:317,addTrailers +FN:337,Server +FN:355,(anonymous_16) +FN:384,_start +FN:395,_onStream +FN:408,_fallback +FN:426,listen +FN:432,close +FN:437,setTimeout +FN:444,getTimeout +FN:451,setTimeout +FN:462,on +FN:471,addContext +FN:477,createServer +FN:495,IncomingRequest +FN:504,_onHeaders +FN:535,OutgoingResponse +FN:548,writeHead +FN:572,_implicitHeaders +FN:578,write +FN:583,end +FN:588,_onRequestHeaders +FN:592,push +FN:619,on +FN:635,request +FN:638,get +FN:645,Agent +FN:668,request +FN:725,(anonymous_42) +FN:735,negotiated +FN:763,(anonymous_44) +FN:776,get +FN:782,unbundleSocket +FN:794,getMaxSockets +FN:797,setMaxSockets +FN:807,OutgoingRequest +FN:816,_start FN:850,_fallback FN:856,setPriority FN:866,on @@ -2220,14 +63,13 @@ FN:935,_onHeaders FN:956,IncomingPromise FN:975,cancel FN:979,setPriority -FNF:64 +FNF:63 FNH:59 FNDA:2,noop FNDA:3,(anonymous_2) -FNDA:6,(anonymous_3) -FNDA:25,IncomingMessage +FNDA:24,IncomingMessage FNDA:24,_onHeaders -FNDA:2,(anonymous_6) +FNDA:2,(anonymous_5) FNDA:24,_onEnd FNDA:60,_checkSpecialHeader FNDA:27,OutgoingMessage @@ -2238,10 +80,10 @@ FNDA:1,removeHeader FNDA:3,getHeader FNDA:2,addTrailers FNDA:13,Server -FNDA:9,(anonymous_17) -FNDA:10,_start +FNDA:9,(anonymous_16) +FNDA:9,_start FNDA:10,_onStream -FNDA:0,_fallback +FNDA:1,_fallback FNDA:9,listen FNDA:4,close FNDA:1,setTimeout @@ -2264,16 +106,16 @@ FNDA:4,request FNDA:7,get FNDA:4,Agent FNDA:12,request -FNDA:9,(anonymous_43) +FNDA:9,(anonymous_42) FNDA:9,negotiated -FNDA:9,(anonymous_45) +FNDA:9,(anonymous_44) FNDA:7,get -FNDA:9,unbundleSocket +FNDA:8,unbundleSocket FNDA:1,getMaxSockets FNDA:1,setMaxSockets FNDA:15,OutgoingRequest -FNDA:11,_start -FNDA:4,_fallback +FNDA:10,_start +FNDA:5,_fallback FNDA:0,setPriority FNDA:40,on FNDA:3,setNoDelay @@ -2281,7 +123,7 @@ FNDA:3,setSocketKeepAlive FNDA:3,setTimeout FNDA:3,abort FNDA:2,_onPromise -FNDA:13,IncomingResponse +FNDA:12,IncomingResponse FNDA:12,_onHeaders FNDA:2,IncomingPromise FNDA:0,cancel @@ -2296,351 +138,353 @@ DA:137,1 DA:138,1 DA:139,1 DA:140,1 -DA:142,1 +DA:141,1 DA:143,1 DA:144,1 DA:145,1 DA:147,1 -DA:159,1 -DA:162,1 +DA:158,1 +DA:164,1 DA:165,1 -DA:166,1 -DA:167,1 -DA:173,1 -DA:174,1 -DA:182,3 -DA:186,1 -DA:187,1 -DA:188,1 -DA:189,6 -DA:195,1 -DA:197,25 -DA:198,25 -DA:199,25 -DA:201,25 -DA:205,25 -DA:206,25 -DA:207,25 -DA:210,25 -DA:211,25 -DA:212,25 -DA:215,25 -DA:216,25 -DA:218,1 -DA:224,1 -DA:229,24 -DA:230,168 -DA:231,168 -DA:232,0 -DA:233,0 -DA:234,0 -DA:239,24 -DA:240,73 -DA:241,13 -DA:246,24 -DA:247,24 -DA:248,2 -DA:252,1 -DA:253,24 -DA:256,1 +DA:173,3 +DA:177,1 +DA:182,1 +DA:184,24 +DA:185,24 +DA:186,24 +DA:188,24 +DA:192,24 +DA:193,24 +DA:194,24 +DA:197,24 +DA:198,24 +DA:199,24 +DA:202,24 +DA:203,24 +DA:205,1 +DA:211,1 +DA:216,24 +DA:217,168 +DA:218,168 +DA:219,0 +DA:220,0 +DA:221,0 +DA:226,24 +DA:227,73 +DA:228,13 +DA:233,24 +DA:234,24 +DA:235,2 +DA:239,1 +DA:240,24 +DA:243,1 +DA:245,1 +DA:246,60 +DA:247,0 +DA:248,0 +DA:251,60 DA:258,1 -DA:259,60 -DA:260,0 -DA:261,0 -DA:264,60 -DA:271,1 -DA:273,27 -DA:275,27 -DA:276,27 -DA:277,27 -DA:279,27 -DA:281,1 -DA:283,1 -DA:284,13 -DA:285,12 -DA:287,1 -DA:291,1 -DA:292,31 -DA:293,23 -DA:294,2 +DA:260,27 +DA:262,27 +DA:263,27 +DA:264,27 +DA:266,27 +DA:268,1 +DA:270,1 +DA:271,13 +DA:272,12 +DA:274,1 +DA:278,1 +DA:279,31 +DA:280,23 +DA:281,2 +DA:282,0 +DA:284,2 +DA:287,23 +DA:289,8 +DA:293,1 +DA:294,4 DA:295,0 -DA:297,2 -DA:300,23 -DA:302,8 +DA:297,4 +DA:298,4 +DA:299,0 +DA:301,4 +DA:305,1 DA:306,1 -DA:307,4 -DA:308,0 -DA:310,4 -DA:311,4 -DA:312,0 -DA:314,4 -DA:318,1 -DA:319,1 -DA:320,0 -DA:322,1 -DA:326,1 -DA:327,3 +DA:307,0 +DA:309,1 +DA:313,1 +DA:314,3 +DA:317,1 +DA:318,2 +DA:321,1 +DA:323,1 +DA:328,1 +DA:329,1 DA:330,1 -DA:331,2 -DA:334,1 -DA:336,1 -DA:341,1 -DA:342,1 -DA:343,1 -DA:344,1 -DA:345,1 -DA:350,1 -DA:351,13 -DA:353,13 -DA:354,13 -DA:356,13 -DA:357,13 -DA:360,13 -DA:361,10 -DA:362,10 +DA:331,1 +DA:332,1 +DA:337,1 +DA:338,13 +DA:340,13 +DA:341,13 +DA:343,13 +DA:344,13 +DA:347,13 +DA:348,10 +DA:349,10 +DA:350,10 +DA:351,10 +DA:352,10 +DA:353,10 +DA:354,10 +DA:355,10 +DA:356,9 +DA:357,9 +DA:358,8 +DA:360,1 DA:363,10 -DA:364,10 -DA:365,10 -DA:366,10 -DA:367,10 -DA:368,9 -DA:369,9 -DA:371,0 -DA:374,10 -DA:378,3 -DA:379,1 -DA:380,1 +DA:367,3 +DA:368,1 +DA:369,1 +DA:370,1 +DA:375,2 +DA:376,2 +DA:379,11 DA:381,1 -DA:386,2 -DA:387,2 -DA:390,11 -DA:392,1 -DA:395,1 +DA:384,1 +DA:385,9 +DA:387,9 +DA:392,9 +DA:394,9 +DA:395,9 DA:396,10 -DA:398,10 -DA:403,10 -DA:405,10 -DA:406,10 -DA:407,10 -DA:408,10 -DA:410,10 -DA:413,10 -DA:415,10 -DA:418,1 -DA:419,0 -DA:424,0 -DA:425,0 -DA:428,0 -DA:434,1 -DA:435,9 -DA:437,9 -DA:440,1 -DA:441,4 -DA:442,4 +DA:397,10 +DA:399,10 +DA:402,9 +DA:403,9 +DA:405,9 +DA:408,1 +DA:409,1 +DA:411,1 +DA:416,1 +DA:417,1 +DA:420,1 +DA:426,1 +DA:427,9 +DA:429,9 +DA:432,1 +DA:433,4 +DA:434,4 +DA:437,1 +DA:438,1 +DA:439,1 +DA:443,1 DA:445,1 DA:446,1 -DA:447,1 -DA:451,1 +DA:448,0 +DA:452,1 DA:453,1 -DA:454,1 -DA:456,0 -DA:460,1 -DA:461,1 -DA:470,1 -DA:471,9 +DA:462,1 +DA:463,9 +DA:464,0 +DA:466,9 +DA:471,1 DA:472,0 -DA:474,9 +DA:473,0 +DA:477,1 +DA:478,10 DA:479,1 -DA:480,0 -DA:481,0 -DA:485,1 -DA:486,10 -DA:487,1 -DA:488,1 -DA:491,10 -DA:493,9 -DA:494,9 -DA:497,9 -DA:503,1 -DA:504,12 -DA:506,1 -DA:512,1 -DA:523,12 +DA:480,1 +DA:483,10 +DA:485,9 +DA:486,9 +DA:489,9 +DA:495,1 +DA:496,12 +DA:498,1 +DA:504,1 +DA:515,12 +DA:516,12 +DA:517,12 +DA:518,12 +DA:521,12 DA:524,12 -DA:525,12 -DA:526,12 +DA:527,12 DA:529,12 -DA:532,12 -DA:535,12 -DA:537,12 -DA:543,1 +DA:535,1 +DA:536,12 +DA:538,12 +DA:540,12 +DA:541,12 +DA:542,12 DA:544,12 -DA:546,12 -DA:548,12 +DA:546,1 +DA:548,1 DA:549,12 -DA:550,12 -DA:552,12 -DA:554,1 +DA:550,1 +DA:552,11 +DA:555,12 DA:556,1 -DA:557,12 -DA:558,1 -DA:560,11 -DA:563,12 -DA:564,1 +DA:558,12 +DA:560,12 +DA:561,11 +DA:564,12 DA:566,12 DA:568,12 -DA:569,11 -DA:572,12 -DA:574,12 -DA:576,12 -DA:577,12 -DA:580,1 -DA:581,23 -DA:582,11 -DA:586,1 -DA:587,11 -DA:588,11 -DA:591,1 -DA:592,12 -DA:593,12 -DA:596,1 -DA:597,10 -DA:600,1 +DA:569,12 +DA:572,1 +DA:573,23 +DA:574,11 +DA:578,1 +DA:579,11 +DA:580,11 +DA:583,1 +DA:584,12 +DA:585,12 +DA:588,1 +DA:589,10 +DA:592,1 +DA:593,2 +DA:594,1 +DA:597,2 +DA:598,0 DA:601,2 -DA:602,1 -DA:605,2 -DA:606,0 -DA:609,2 -DA:616,2 -DA:619,2 -DA:621,2 -DA:626,1 -DA:627,12 -DA:628,0 -DA:630,12 -DA:637,1 +DA:608,2 +DA:612,2 +DA:614,2 +DA:619,1 +DA:620,12 +DA:621,0 +DA:623,12 +DA:630,1 +DA:631,1 +DA:632,1 +DA:633,1 +DA:634,1 +DA:635,1 +DA:636,4 DA:638,1 -DA:639,1 -DA:640,1 -DA:641,1 -DA:642,1 -DA:643,4 +DA:639,7 DA:645,1 -DA:646,7 -DA:652,1 -DA:653,4 -DA:655,4 -DA:657,4 +DA:646,4 +DA:648,4 +DA:650,4 +DA:651,4 +DA:652,4 DA:658,4 DA:659,4 -DA:665,4 -DA:666,4 -DA:667,4 -DA:669,4 -DA:670,4 -DA:672,1 -DA:674,1 +DA:660,4 +DA:661,4 +DA:663,4 +DA:664,4 +DA:666,1 +DA:668,1 +DA:669,12 +DA:670,8 +DA:672,4 DA:675,12 -DA:676,8 +DA:676,12 +DA:677,12 +DA:678,12 DA:679,12 -DA:680,12 DA:681,12 -DA:682,12 -DA:683,12 -DA:685,12 -DA:686,1 -DA:687,1 -DA:690,11 +DA:682,1 +DA:683,1 +DA:686,11 +DA:688,11 +DA:689,7 DA:692,11 -DA:693,7 -DA:696,11 -DA:703,11 -DA:704,1 -DA:705,1 -DA:709,10 -DA:710,1 -DA:711,1 -DA:716,1 -DA:717,1 +DA:699,11 +DA:700,1 +DA:701,1 +DA:705,10 +DA:706,1 +DA:707,1 +DA:712,1 +DA:713,1 +DA:718,9 +DA:719,9 +DA:720,9 +DA:721,9 DA:722,9 DA:723,9 -DA:724,9 DA:725,9 DA:726,9 -DA:728,9 -DA:729,9 -DA:730,0 -DA:732,9 +DA:727,9 +DA:728,0 +DA:730,9 +DA:734,9 +DA:735,1 DA:736,9 -DA:737,1 +DA:737,9 DA:738,9 -DA:739,9 -DA:740,9 -DA:741,9 -DA:742,9 -DA:743,9 -DA:744,9 -DA:746,9 +DA:739,8 +DA:740,8 +DA:741,8 +DA:742,8 +DA:743,8 +DA:745,9 +DA:746,1 DA:747,1 -DA:748,1 -DA:750,0 -DA:753,8 -DA:754,8 -DA:756,8 -DA:757,8 -DA:759,0 +DA:749,0 +DA:752,8 +DA:753,7 +DA:755,7 +DA:756,7 +DA:758,1 +DA:763,9 DA:764,9 DA:765,9 -DA:766,9 -DA:767,9 -DA:769,0 -DA:774,11 -DA:777,1 +DA:766,8 +DA:768,1 +DA:773,11 +DA:776,1 +DA:777,7 DA:778,7 DA:779,7 -DA:780,7 -DA:783,1 -DA:784,9 -DA:785,9 -DA:786,9 -DA:787,9 -DA:788,9 -DA:789,9 -DA:790,9 -DA:791,9 -DA:794,1 -DA:796,1 -DA:799,1 -DA:803,1 -DA:808,1 -DA:809,15 -DA:811,15 -DA:813,15 -DA:815,1 -DA:817,1 -DA:818,11 -DA:820,11 -DA:822,11 -DA:823,1 -DA:825,11 -DA:826,11 -DA:828,11 -DA:829,0 -DA:832,11 -DA:833,11 -DA:834,11 -DA:835,11 -DA:837,11 -DA:839,11 -DA:840,11 -DA:842,11 -DA:844,11 -DA:845,11 -DA:847,11 +DA:782,1 +DA:783,8 +DA:784,8 +DA:785,8 +DA:786,8 +DA:787,8 +DA:788,8 +DA:789,8 +DA:790,8 +DA:793,1 +DA:795,1 +DA:798,1 +DA:802,1 +DA:807,1 +DA:808,15 +DA:810,15 +DA:812,15 +DA:814,1 +DA:816,1 +DA:817,10 +DA:819,10 +DA:821,10 +DA:822,1 +DA:824,10 +DA:825,10 +DA:827,10 +DA:828,0 +DA:831,10 +DA:832,10 +DA:833,10 +DA:834,10 +DA:836,10 +DA:839,10 +DA:840,10 +DA:842,10 +DA:844,10 +DA:845,10 +DA:847,10 DA:850,1 -DA:851,4 -DA:852,4 -DA:853,4 +DA:851,5 +DA:852,5 +DA:853,5 DA:856,1 DA:857,0 DA:858,0 @@ -2677,7 +521,7 @@ DA:916,2 DA:917,2 DA:919,0 DA:926,1 -DA:927,13 +DA:927,12 DA:929,1 DA:935,1 DA:943,12 @@ -2701,170 +545,168 @@ DA:976,0 DA:979,1 DA:980,0 DA:983,1 -LF:415 -LH:383 -BRDA:165,1,0,0 -BRDA:165,1,1,1 -BRDA:166,2,0,0 -BRDA:166,2,1,1 -BRDA:167,3,0,0 -BRDA:167,3,1,1 -BRDA:231,4,0,0 -BRDA:231,4,1,168 -BRDA:240,5,0,13 -BRDA:240,5,1,60 -BRDA:259,6,0,0 -BRDA:259,6,1,60 -BRDA:259,7,0,60 -BRDA:259,7,1,60 -BRDA:284,8,0,12 -BRDA:284,8,1,1 -BRDA:292,9,0,23 -BRDA:292,9,1,8 -BRDA:293,10,0,2 -BRDA:293,10,1,21 -BRDA:294,11,0,0 -BRDA:294,11,1,2 -BRDA:307,12,0,0 -BRDA:307,12,1,4 -BRDA:311,13,0,0 -BRDA:311,13,1,4 -BRDA:319,14,0,0 -BRDA:319,14,1,1 -BRDA:351,15,0,13 -BRDA:351,15,1,2 -BRDA:353,16,0,13 -BRDA:353,16,1,2 -BRDA:360,17,0,10 -BRDA:360,17,1,3 -BRDA:360,18,0,13 -BRDA:360,18,1,10 -BRDA:360,18,2,3 -BRDA:368,19,0,9 -BRDA:368,19,1,0 -BRDA:368,20,0,9 -BRDA:368,20,1,9 -BRDA:378,21,0,1 -BRDA:378,21,1,2 -BRDA:435,22,0,0 -BRDA:435,22,1,9 -BRDA:446,23,0,1 -BRDA:446,23,1,0 -BRDA:453,24,0,1 -BRDA:453,24,1,0 -BRDA:460,25,0,1 -BRDA:460,25,1,0 -BRDA:471,26,0,0 -BRDA:471,26,1,9 -BRDA:471,27,0,9 -BRDA:471,27,1,9 -BRDA:472,28,0,0 -BRDA:472,28,1,0 -BRDA:480,29,0,0 -BRDA:480,29,1,0 -BRDA:486,30,0,1 -BRDA:486,30,1,9 -BRDA:493,31,0,9 -BRDA:493,31,1,0 -BRDA:557,32,0,1 -BRDA:557,32,1,11 -BRDA:568,33,0,11 -BRDA:568,33,1,1 -BRDA:568,34,0,12 -BRDA:568,34,1,11 -BRDA:581,35,0,11 -BRDA:581,35,1,12 -BRDA:601,36,0,1 -BRDA:601,36,1,1 -BRDA:605,37,0,0 -BRDA:605,37,1,2 -BRDA:610,38,0,2 -BRDA:610,38,1,2 -BRDA:611,39,0,2 -BRDA:611,39,1,1 -BRDA:611,39,2,1 -BRDA:612,40,0,2 -BRDA:612,40,1,2 -BRDA:612,40,2,2 -BRDA:627,41,0,0 -BRDA:627,41,1,12 -BRDA:627,42,0,12 -BRDA:627,42,1,0 -BRDA:628,43,0,0 -BRDA:628,43,1,0 -BRDA:643,44,0,4 -BRDA:643,44,1,4 -BRDA:646,45,0,7 -BRDA:646,45,1,7 -BRDA:655,46,0,4 -BRDA:655,46,1,1 -BRDA:658,47,0,4 -BRDA:658,47,1,1 -BRDA:675,48,0,8 -BRDA:675,48,1,4 -BRDA:679,49,0,12 -BRDA:679,49,1,12 -BRDA:680,50,0,12 -BRDA:680,50,1,3 -BRDA:681,51,0,12 -BRDA:681,51,1,4 -BRDA:681,51,2,1 -BRDA:682,52,0,12 -BRDA:682,52,1,1 -BRDA:683,53,0,12 -BRDA:683,53,1,1 -BRDA:685,54,0,1 -BRDA:685,54,1,11 -BRDA:685,55,0,12 -BRDA:685,55,1,11 -BRDA:692,56,0,7 -BRDA:692,56,1,4 -BRDA:703,57,0,1 -BRDA:703,57,1,10 -BRDA:709,58,0,1 -BRDA:709,58,1,9 -BRDA:729,59,0,0 -BRDA:729,59,1,9 -BRDA:739,60,0,9 -BRDA:739,60,1,0 +LF:417 +LH:392 +BRDA:218,1,0,0 +BRDA:218,1,1,168 +BRDA:227,2,0,13 +BRDA:227,2,1,60 +BRDA:246,3,0,0 +BRDA:246,3,1,60 +BRDA:246,4,0,60 +BRDA:246,4,1,60 +BRDA:271,5,0,12 +BRDA:271,5,1,1 +BRDA:279,6,0,23 +BRDA:279,6,1,8 +BRDA:280,7,0,2 +BRDA:280,7,1,21 +BRDA:281,8,0,0 +BRDA:281,8,1,2 +BRDA:294,9,0,0 +BRDA:294,9,1,4 +BRDA:298,10,0,0 +BRDA:298,10,1,4 +BRDA:306,11,0,0 +BRDA:306,11,1,1 +BRDA:340,12,0,13 +BRDA:340,12,1,2 +BRDA:347,13,0,10 +BRDA:347,13,1,3 +BRDA:347,14,0,13 +BRDA:347,14,1,10 +BRDA:347,14,2,3 +BRDA:356,15,0,9 +BRDA:356,15,1,9 +BRDA:357,16,0,8 +BRDA:357,16,1,1 +BRDA:357,17,0,9 +BRDA:357,17,1,8 +BRDA:367,18,0,1 +BRDA:367,18,1,2 +BRDA:409,19,0,1 +BRDA:409,19,1,1 +BRDA:427,20,0,0 +BRDA:427,20,1,9 +BRDA:438,21,0,1 +BRDA:438,21,1,0 +BRDA:445,22,0,1 +BRDA:445,22,1,0 +BRDA:452,23,0,1 +BRDA:452,23,1,0 +BRDA:463,24,0,0 +BRDA:463,24,1,9 +BRDA:463,25,0,9 +BRDA:463,25,1,9 +BRDA:464,26,0,0 +BRDA:464,26,1,0 +BRDA:472,27,0,0 +BRDA:472,27,1,0 +BRDA:478,28,0,1 +BRDA:478,28,1,9 +BRDA:485,29,0,9 +BRDA:485,29,1,0 +BRDA:549,30,0,1 +BRDA:549,30,1,11 +BRDA:560,31,0,11 +BRDA:560,31,1,1 +BRDA:560,32,0,12 +BRDA:560,32,1,11 +BRDA:573,33,0,11 +BRDA:573,33,1,12 +BRDA:593,34,0,1 +BRDA:593,34,1,1 +BRDA:597,35,0,0 +BRDA:597,35,1,2 +BRDA:602,36,0,2 +BRDA:602,36,1,2 +BRDA:603,37,0,2 +BRDA:603,37,1,1 +BRDA:603,37,2,1 +BRDA:604,38,0,2 +BRDA:604,38,1,2 +BRDA:604,38,2,2 +BRDA:620,39,0,0 +BRDA:620,39,1,12 +BRDA:620,40,0,12 +BRDA:620,40,1,0 +BRDA:621,41,0,0 +BRDA:621,41,1,0 +BRDA:636,42,0,4 +BRDA:636,42,1,4 +BRDA:639,43,0,7 +BRDA:639,43,1,7 +BRDA:651,44,0,4 +BRDA:651,44,1,1 +BRDA:669,45,0,8 +BRDA:669,45,1,4 +BRDA:675,46,0,12 +BRDA:675,46,1,12 +BRDA:676,47,0,12 +BRDA:676,47,1,3 +BRDA:677,48,0,12 +BRDA:677,48,1,4 +BRDA:677,48,2,1 +BRDA:678,49,0,12 +BRDA:678,49,1,1 +BRDA:679,50,0,12 +BRDA:679,50,1,1 +BRDA:681,51,0,1 +BRDA:681,51,1,11 +BRDA:681,52,0,12 +BRDA:681,52,1,11 +BRDA:688,53,0,7 +BRDA:688,53,1,4 +BRDA:699,54,0,1 +BRDA:699,54,1,10 +BRDA:705,55,0,1 +BRDA:705,55,1,9 +BRDA:726,56,0,9 +BRDA:726,56,1,9 +BRDA:727,57,0,0 +BRDA:727,57,1,9 +BRDA:737,58,0,9 +BRDA:737,58,1,9 +BRDA:738,59,0,8 +BRDA:738,59,1,1 +BRDA:745,60,0,1 +BRDA:745,60,1,8 BRDA:746,61,0,1 -BRDA:746,61,1,8 -BRDA:747,62,0,1 -BRDA:747,62,1,0 -BRDA:753,63,0,8 -BRDA:753,63,1,0 -BRDA:766,64,0,9 -BRDA:766,64,1,0 -BRDA:828,65,0,0 -BRDA:828,65,1,11 -BRDA:838,66,0,11 -BRDA:838,66,1,10 -BRDA:857,67,0,0 -BRDA:857,67,1,0 -BRDA:867,68,0,0 -BRDA:867,68,1,40 -BRDA:867,69,0,40 -BRDA:867,69,1,0 -BRDA:868,70,0,0 -BRDA:868,70,1,0 -BRDA:876,71,0,1 -BRDA:876,71,1,2 -BRDA:878,72,0,1 -BRDA:878,72,1,1 -BRDA:884,73,0,1 -BRDA:884,73,1,2 -BRDA:886,74,0,1 -BRDA:886,74,1,1 -BRDA:892,75,0,1 -BRDA:892,75,1,2 -BRDA:894,76,0,1 -BRDA:894,76,1,1 -BRDA:901,77,0,1 -BRDA:901,77,1,2 -BRDA:903,78,0,1 -BRDA:903,78,1,1 -BRDA:916,79,0,2 -BRDA:916,79,1,0 -BRF:162 -BRH:124 +BRDA:746,61,1,0 +BRDA:752,62,0,7 +BRDA:752,62,1,1 +BRDA:765,63,0,8 +BRDA:765,63,1,1 +BRDA:827,64,0,0 +BRDA:827,64,1,10 +BRDA:838,65,0,10 +BRDA:838,65,1,9 +BRDA:857,66,0,0 +BRDA:857,66,1,0 +BRDA:867,67,0,0 +BRDA:867,67,1,40 +BRDA:867,68,0,40 +BRDA:867,68,1,0 +BRDA:868,69,0,0 +BRDA:868,69,1,0 +BRDA:876,70,0,1 +BRDA:876,70,1,2 +BRDA:878,71,0,1 +BRDA:878,71,1,1 +BRDA:884,72,0,1 +BRDA:884,72,1,2 +BRDA:886,73,0,1 +BRDA:886,73,1,1 +BRDA:892,74,0,1 +BRDA:892,74,1,2 +BRDA:894,75,0,1 +BRDA:894,75,1,1 +BRDA:901,76,0,1 +BRDA:901,76,1,2 +BRDA:903,77,0,1 +BRDA:903,77,1,1 +BRDA:916,78,0,2 +BRDA:916,78,1,0 +BRF:160 +BRH:129 end_of_record diff --git a/doc/compressor.html b/doc/compressor.html deleted file mode 100644 index 872dd60a..00000000 --- a/doc/compressor.html +++ /dev/null @@ -1,1630 +0,0 @@ - - - - - compressor.js - - - - - -
-
- - - -
    - -
  • -
    -

    compressor.js

    -
    -
  • - - - -
  • -
    - -
    - -
    -

    The implementation of the HTTP/2 Header Compression spec is separated from -the 'integration' part which handles HEADERS and PUSH_PROMISE frames. The compression itself is -implemented in the first part of the file, and consists of three classes: HeaderTable, -HeaderSetDecompressor and HeaderSetCompressor. The two latter classes are -Transform Stream subclasses that operate in object mode. -These transform chunks of binary data into [name, value] pairs and vice versa, and store their -state in HeaderTable instances.

    -

    The 'integration' part is also implemented by two Transform Stream subclasses -that operate in object mode: the Compressor and the Decompressor. These -provide a layer between the framer and the -connection handling component.

    - -
    - -
    exports.HeaderTable = HeaderTable;
    -exports.HeaderSetCompressor = HeaderSetCompressor;
    -exports.HeaderSetDecompressor = HeaderSetDecompressor;
    -exports.Compressor = Compressor;
    -exports.Decompressor = Decompressor;
    -
    -var TransformStream = require('stream').Transform;
    -var assert = require('assert');
    -var util = require('util');
    - -
  • - - -
  • -
    - -
    - -
    -

    Header compression

    - -
    - -
  • - - -
  • -
    - -
    - -
    -

    The HeaderTable class

    - -
    - -
  • - - -
  • -
    - -
    - -
    -

    The Header Table is a component used to associate headers to index values. It is -basically an ordered list of [name, value] pairs, so it's implemented as a subclass of Array.

    - -
    - -
    function HeaderTable(log, table, limit) {
    -  var self = table.map(entryFromPair);
    -  self._log = log;
    -  self._limit = limit || DEFAULT_HEADER_TABLE_LIMIT;
    -  self._size = tableSize(self);
    -  self.add = HeaderTable.prototype.add;
    -  return self;
    -}
    - -
  • - - -
  • -
    - -
    - -
    -

    There are few more sets that are needed for the compression/decompression process that are all -subsets of the Header Table, and are implemented as flags on header table entries:

    -
      -
    • Reference Set: contains a group of headers used as a reference for the -differential encoding of a new set of headers. (reference flag)
    • -
    • Emitted headers: the headers that are already emitted as part of the current decompression -process (not part of the spec, emitted flag)
    • -
    • Headers to be kept: headers that should not be removed as the last step of the encoding process -(not part of the spec, keep flag)
    • -
    -

    Relations of the sets:

    -
    ,----------------------------------.
    -|           Header Table           |
    -|                                  |
    -|  ,----------------------------.  |
    -|  |        Reference Set       |  |
    -|  |                            |  |
    -|  |  ,---------.  ,---------.  |  |
    -|  |  |  Keep   |  | Emitted |  |  |
    -|  |  |         |  |         |  |  |
    -|  |  `---------'  `---------'  |  |
    -|  `----------------------------'  |
    -`----------------------------------'
    - -
    - -
    function entryFromPair(pair) {
    -  var entry = pair.slice();
    -  entry.reference = false;
    -  entry.emitted = false;
    -  entry.keep = false;
    -  entry._size = size(entry);
    -  return entry;
    -}
    - -
  • - - -
  • -
    - -
    - -
    -

    The encoder decides how to update the header table and as such can control how much memory is -used by the header table. To limit the memory requirements on the decoder side, the header table -size is bounded.

    -
      -
    • The default header table size limit is 4096 bytes.
    • -
    • The size of an entry is defined as follows: the size of an entry is the sum of its name's -length in bytes, of its value's length in bytes and of 32 bytes.
    • -
    • The size of a header table is the sum of the size of its entries.
    • -
    - -
    - -
    var DEFAULT_HEADER_TABLE_LIMIT = 4096;
    -
    -function size(entry) {
    -  return (new Buffer(entry[0] + entry[1], 'utf8')).length + 32;
    -}
    -
    -function tableSize(table) {
    -  var size = 0;
    -  for (var i = 0; i < table.length; i++) {
    -    size += table[i]._size;
    -  }
    -  return size;
    -}
    - -
  • - - -
  • -
    - -
    - -
    -

    The add(index, entry) can be used to manage the header table:

    -
      -
    • if index is Infinite it pushes the new entry at the end of the table
    • -
    • otherwise, it replaces the entry with the given index with the new entry
    • -
    • before doing such a modification, it has to be ensured that the header table size will stay -lower than or equal to the header table size limit. To achieve this, repeatedly, the first -entry of the header table is removed, until enough space is available for the modification.
    • -
    - -
    - -
    HeaderTable.prototype.add = function(index, entry) {
    -  var limit = this._limit - entry._size;
    -  var droppedEntries = [];
    -
    -  while ((this._size > limit) && (this.length > 0)) {
    -    var dropped = this.shift();
    -    this._size -= dropped._size;
    -    droppedEntries.push(dropped);
    -  }
    -
    -  if (this._size <= limit) {
    -    index -= droppedEntries.length;
    -    if (index < 0) {
    -      this.unshift(entry);
    -    } else {
    -      this.splice(index, 1, entry); // this is like push() if index is Infinity
    -    }
    -    this._size += entry._size;
    -  }
    -
    -  return droppedEntries;
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    Initial header tables

    - -
    - -
  • - - -
  • -
    - -
    - -
    -

    Initial request table

    - -
    - -
    HeaderTable.initialRequestTable  = [
    -  [ ':scheme'                     , 'http'  ],
    -  [ ':scheme'                     , 'https' ],
    -  [ ':host'                       , ''      ],
    -  [ ':path'                       , '/'     ],
    -  [ ':method'                     , 'get'   ],
    -  [ 'accept'                      , ''      ],
    -  [ 'accept-charset'              , ''      ],
    -  [ 'accept-encoding'             , ''      ],
    -  [ 'accept-language'             , ''      ],
    -  [ 'cookie'                      , ''      ],
    -  [ 'if-modified-since'           , ''      ],
    -  [ 'user-agent'                  , ''      ],
    -  [ 'referer'                     , ''      ],
    -  [ 'authorization'               , ''      ],
    -  [ 'allow'                       , ''      ],
    -  [ 'cache-control'               , ''      ],
    -  [ 'connection'                  , ''      ],
    -  [ 'content-length'              , ''      ],
    -  [ 'content-type'                , ''      ],
    -  [ 'date'                        , ''      ],
    -  [ 'expect'                      , ''      ],
    -  [ 'from'                        , ''      ],
    -  [ 'if-match'                    , ''      ],
    -  [ 'if-none-match'               , ''      ],
    -  [ 'if-range'                    , ''      ],
    -  [ 'if-unmodified-since'         , ''      ],
    -  [ 'max-forwards'                , ''      ],
    -  [ 'proxy-authorization'         , ''      ],
    -  [ 'range'                       , ''      ],
    -  [ 'via'                         , ''      ]
    -];
    - -
  • - - -
  • -
    - -
    - -
    -

    Initial response table

    - -
    - -
    HeaderTable.initialResponseTable = [
    -  [ ':status'                     , '200'   ],
    -  [ 'age'                         , ''      ],
    -  [ 'cache-control'               , ''      ],
    -  [ 'content-length'              , ''      ],
    -  [ 'content-type'                , ''      ],
    -  [ 'date'                        , ''      ],
    -  [ 'etag'                        , ''      ],
    -  [ 'expires'                     , ''      ],
    -  [ 'last-modified'               , ''      ],
    -  [ 'server'                      , ''      ],
    -  [ 'set-cookie'                  , ''      ],
    -  [ 'vary'                        , ''      ],
    -  [ 'via'                         , ''      ],
    -  [ 'access-control-allow-origin' , ''      ],
    -  [ 'accept-ranges'               , ''      ],
    -  [ 'allow'                       , ''      ],
    -  [ 'connection'                  , ''      ],
    -  [ 'content-disposition'         , ''      ],
    -  [ 'content-encoding'            , ''      ],
    -  [ 'content-language'            , ''      ],
    -  [ 'content-location'            , ''      ],
    -  [ 'content-range'               , ''      ],
    -  [ 'link'                        , ''      ],
    -  [ 'location'                    , ''      ],
    -  [ 'proxy-authenticate'          , ''      ],
    -  [ 'refresh'                     , ''      ],
    -  [ 'retry-after'                 , ''      ],
    -  [ 'strict-transport-security'   , ''      ],
    -  [ 'transfer-encoding'           , ''      ],
    -  [ 'www-authenticate'            , ''      ]
    -];
    - -
  • - - -
  • -
    - -
    - -
    -

    The HeaderSetDecompressor class

    - -
    - -
  • - - -
  • -
    - -
    - -
    -

    A HeaderSetDecompressor instance is a transform stream that can be used to decompress a -single header set. Its input is a stream of binary data chunks and its output is a stream of -[name, value] pairs.

    -

    Currently, it is not a proper streaming decompressor implementation, since it buffer its input -until the end os the stream, and then processes the whole header block at once.

    - -
    - -
    util.inherits(HeaderSetDecompressor, TransformStream);
    -function HeaderSetDecompressor(log, table) {
    -  TransformStream.call(this, { objectMode: true });
    -
    -  this._log = log.child({ component: 'compressor' });
    -  this._table = table;
    -  this._chunks = [];
    -}
    - -
  • - - -
  • -
    - -
    - -
    -

    _transform is the implementation of the corresponding virtual function of the -TransformStream class. It collects the data chunks for later processing.

    - -
    - -
    HeaderSetDecompressor.prototype._transform = function _transform(chunk, encoding, callback) {
    -  this._chunks.push(chunk);
    -  callback();
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    execute(rep) executes the given header representation.

    -

    The JavaScript object representation of a header representation:

    -
    {
    -  name: String || Integer,  // string literal or index
    -  value: String || Integer, // string literal or index
    -  index: Integer            // -1       : no indexing
    -                            // 0 - ...  : substitution indexing
    -                            // Infinity : incremental indexing
    -}
    -

    Examples:

    -
    Indexed:
    -{ name: 2  , value: 2  , index: -1       }
    -Literal:
    -{ name: 2  , value: 'X', index: -1       } // without indexing
    -{ name: 2  , value: 'Y', index: Infinity } // incremental indexing
    -{ name: 'A', value: 'Z', index: 123      } // substitution indexing
    - -
    - -
    HeaderSetDecompressor.prototype._execute = function _execute(rep) {
    -  this._log.trace({ key: rep.name, value: rep.value, index: rep.index },
    -                  'Executing header representation');
    -
    -  var index, entry, pair;
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • An indexed representation corresponding to an entry present in the reference set -entails the following actions:
        -
      • The entry is removed from the reference set.
      • -
      -
    • -
    • An indexed representation corresponding to an entry not present in the reference set -entails the following actions:
        -
      • The header corresponding to the entry is emitted.
      • -
      • The entry is added to the reference set.
      • -
      -
    • -
    - -
    - -
      if (typeof rep.value === 'number') {
    -    index = rep.value;
    -    entry = this._table[index];
    -
    -    if (entry.reference) {
    -      entry.reference = false;
    -    } else {
    -      entry.reference = true;
    -      entry.emitted = true;
    -      pair = entry.slice();
    -      this.push(pair);
    -    }
    -  }
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • A literal representation that is not added to the header table entails the following -action:
        -
      • The header is emitted.
      • -
      -
    • -
    • A literal representation that is added to the header table entails the following further -actions:
        -
      • The header is added to the header table, at the location defined by the representation.
      • -
      • The new entry is added to the reference set.
      • -
      -
    • -
    - -
    - -
      else {
    -    if (typeof rep.name === 'number') {
    -      pair = [this._table[rep.name][0], rep.value];
    -    } else {
    -      pair = [rep.name, rep.value];
    -    }
    -
    -    index = rep.index;
    -    if (index !== -1) {
    -      entry = entryFromPair(pair);
    -      entry.reference = true;
    -      entry.emitted = true;
    -      this._table.add(index, entry);
    -    }
    -
    -    this.push(pair);
    -  }
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    _flush is the implementation of the corresponding virtual function of the -TransformStream class. The whole decompressing process is done in _flush. It gets called when -the input stream is over.

    - -
    - -
    HeaderSetDecompressor.prototype._flush = function _flush(callback) {
    -  var buffer = concat(this._chunks);
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • processes the header representations
    • -
    - -
    - -
      buffer.cursor = 0;
    -  while (buffer.cursor < buffer.length) {
    -    this._execute(HeaderSetDecompressor.header(buffer));
    -  }
    - -
  • - - -
  • -
    - -
    - -
    - - -
    - -
      for (var index = 0; index < this._table.length; index++) {
    -    var entry = this._table[index];
    -    if (entry.reference && !entry.emitted) {
    -      this.push(entry.slice());
    -    }
    -    entry.emitted = false;
    -  }
    -
    -  callback();
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    The HeaderSetCompressor class

    - -
    - -
  • - - -
  • -
    - -
    - -
    -

    A HeaderSetCompressor instance is a transform stream that can be used to compress a single -header set. Its input is a stream of [name, value] pairs and its output is a stream of -binary data chunks.

    -

    It is a real streaming compressor, since it does not wait until the header set is complete.

    -

    The compression algorithm is (intentionally) not specified by the spec. Therefore, the current -compression algorithm can probably be improved in the future.

    - -
    - -
    util.inherits(HeaderSetCompressor, TransformStream);
    -function HeaderSetCompressor(log, table) {
    -  TransformStream.call(this, { objectMode: true });
    -
    -  this._log = log.child({ component: 'compressor' });
    -  this._table = table;
    -  this.push = TransformStream.prototype.push.bind(this);
    -}
    -
    -HeaderSetCompressor.prototype.send = function send(rep) {
    -  this._log.trace({ key: rep.name, value: rep.value, index: rep.index },
    -                  'Emitting header representation');
    -
    -  if (!rep.chunks) {
    -    rep.chunks = HeaderSetCompressor.header(rep);
    -  }
    -  rep.chunks.forEach(this.push);
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    _transform is the implementation of the corresponding virtual function of the -TransformStream class. It processes the input headers one by one:

    - -
    - -
    HeaderSetCompressor.prototype._transform = function _transform(pair, encoding, callback) {
    -  var name = pair[0].toLowerCase();
    -  var value = pair[1];
    -  var entry, rep;
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • tries to find full (name, value) or name match in the header table
    • -
    - -
    - -
      var nameMatch = -1, fullMatch = -1;
    -  for (var index = 0; index < this._table.length; index++) {
    -    entry = this._table[index];
    -    if (entry[0] === name) {
    -      if (entry[1] === value) {
    -        fullMatch = index;
    -        break;
    -      } else if (nameMatch === -1) {
    -        nameMatch = index;
    -      }
    -    }
    -  }
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • if there's full match, it will be an indexed representation (or more than one) depending -on its presence in the reference, the emitted and the keep set:

      -
        -
      • If the entry is outside the reference set, then a single indexed representation puts the -entry into it and emits the header.

        -
      • -
      • If it's already in the keep set, then 4 indexed representations are needed:

        -
          -
        1. removes it from the reference set
        2. -
        3. puts it back in the reference set and emits the header once
        4. -
        5. removes it again
        6. -
        7. puts it back and emits it again for the second time
        8. -
        -

        It won't be emitted at the end of the decoding process since it's now in the emitted set.

        -
      • -
      • If it's in the emitted set, then 2 indexed representations are needed:

        -
          -
        1. removes it from the reference set
        2. -
        3. puts it back in the reference set and emits the header once
        4. -
        -
      • -
      • If it's in the reference set, but outside the keep set and the emitted set, then this -header is common with the previous header set, and is still untouched. We mark it to keep -in the reference set (that means don't remove at the end of the encoding process).

        -
      • -
      -
    • -
    - -
    - -
      if (fullMatch !== -1) {
    -    rep = { name: fullMatch, value: fullMatch, index: -1 };
    -
    -    if (!entry.reference) {
    -      this.send(rep);
    -      entry.reference = true;
    -      entry.emitted = true;
    -    }
    -
    -    else if (entry.keep) {
    -      this.send(rep);
    -      this.send(rep);
    -      this.send(rep);
    -      this.send(rep);
    -      entry.keep = false;
    -      entry.emitted = true;
    -    }
    -
    -    else if (entry.emitted) {
    -      this.send(rep);
    -      this.send(rep);
    -    }
    -
    -    else {
    -      entry.keep = true;
    -    }
    -  }
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • otherwise, it will be a literal representation (with a name index if there's a name match)
    • -
    - -
    - -
      else {
    -    entry = entryFromPair(pair);
    -    entry.emitted = true;
    -
    -    var insertIndex;
    -    if (entry._size > this._table._limit / 2) {
    -      insertIndex = -1;
    -    } else if (nameMatch !== -1) {
    -      insertIndex = nameMatch;
    -    } else {
    -      insertIndex = Infinity;
    -    }
    -
    -    if (insertIndex !== -1) {
    -      entry.reference = true;
    -      var droppedEntries = this._table.add(insertIndex, entry);
    -      for (index = 0; index < droppedEntries.length; index++) {
    -        var dropped = droppedEntries[index];
    -        if (dropped.keep) {
    -          rep = { name: index, value: index, index: -1 };
    -          this.send(rep);
    -          this.send(rep);
    -        }
    -      }
    -    }
    -
    -    this.send({ name: (nameMatch !== -1) ? nameMatch : name, value: value, index: insertIndex });
    -  }
    -
    -  callback();
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    _flush is the implementation of the corresponding virtual function of the -TransformStream class. It gets called when there's no more header to compress. The final step:

    - -
    - -
    HeaderSetCompressor.prototype._flush = function _flush(callback) {
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • removing entries from the header set that are not marked to be kept or emitted
    • -
    - -
    - -
      for (var index = 0; index < this._table.length; index++) {
    -    var entry = this._table[index];
    -    if (entry.reference && !entry.keep && !entry.emitted) {
    -      this.send({ name: index, value: index, index: -1 });
    -      entry.reference = false;
    -    }
    -    entry.keep = false;
    -    entry.emitted = false;
    -  }
    -
    -  callback();
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    Detailed Format

    - -
    - -
  • - - -
  • -
    - -
    - -
    -

    Integer representation

    -

    The algorithm to represent an integer I is as follows:

    -
      -
    1. If I < 2^N - 1, encode I on N bits
    2. -
    3. Else, encode 2^N - 1 on N bits and do the following steps:
        -
      1. Set I to (I - (2^N - 1)) and Q to 1
      2. -
      3. While Q > 0
          -
        1. Compute Q and R, quotient and remainder of I divided by 2^7
        2. -
        3. If Q is strictly greater than 0, write one 1 bit; otherwise, write one 0 bit
        4. -
        5. Encode R on the next 7 bits
        6. -
        7. I = Q
        8. -
        -
      4. -
      -
    4. -
    - -
    - -
    HeaderSetCompressor.integer = function writeInteger(I, N) {
    -  var limit = Math.pow(2,N) - 1;
    -  if (I < limit) {
    -    return [new Buffer([I])];
    -  }
    -
    -  var bytes = [];
    -  if (N !== 0) {
    -    bytes.push(limit);
    -  }
    -  I -= limit;
    -
    -  var Q = 1, R;
    -  while (Q > 0) {
    -    Q = Math.floor(I / 128);
    -    R = I % 128;
    -
    -    if (Q > 0) {
    -      R += 128;
    -    }
    -    bytes.push(R);
    -
    -    I = Q;
    -  }
    -
    -  return [new Buffer(bytes)];
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    The inverse algorithm:

    -
      -
    1. Set I to the number coded on the lower N bits of the first byte
    2. -
    3. If I is smaller than 2^N - 1 then return I
    4. -
    5. Else the number is encoded on more than one byte, so do the following steps:
        -
      1. Set M to 0
      2. -
      3. While returning with I
          -
        1. Let B be the next byte (the first byte if N is 0)
        2. -
        3. Read out the lower 7 bits of B and multiply it with 2^M
        4. -
        5. Increase I with this number
        6. -
        7. Increase M by 7
        8. -
        9. Return I if the most significant bit of B is 0
        10. -
        -
      4. -
      -
    6. -
    - -
    - -
    HeaderSetDecompressor.integer = function readInteger(buffer, N) {
    -  var limit = Math.pow(2,N) - 1;
    -
    -  var I = buffer[buffer.cursor] & limit;
    -  if (N !== 0) {
    -    buffer.cursor += 1;
    -  }
    -
    -  if (I === limit) {
    -    var M = 0;
    -    do {
    -      I += (buffer[buffer.cursor] & 127) << M;
    -      M += 7;
    -      buffer.cursor += 1;
    -    } while (buffer[buffer.cursor - 1] & 128);
    -  }
    -
    -  return I;
    -};
    -
    -
    - -
  • - - -
  • -
    - -
    - -
    -

    String literal representation

    -

    Literal strings can represent header names or header values. They are encoded in two parts:

    -
      -
    1. The string length, defined as the number of bytes needed to store its UTF-8 representation, -is represented as an integer with a zero bits prefix. If the string length is strictly less -than 128, it is represented as one byte.
    2. -
    3. The string value represented as a list of UTF-8 characters.
    4. -
    - -
    - -
    HeaderSetCompressor.string = function writeString(str) {
    -  var encodedString = new Buffer(str, 'utf8');
    -  var encodedLength = HeaderSetCompressor.integer(encodedString.length, 0);
    -  return encodedLength.concat(encodedString);
    -};
    -
    -HeaderSetDecompressor.string = function readString(buffer) {
    -  var length = HeaderSetDecompressor.integer(buffer, 0);
    -  var str = buffer.toString('utf8', buffer.cursor, buffer.cursor + length);
    -  buffer.cursor += length;
    -  return str;
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    Header represenations

    -

    The JavaScript object representation is described near the -HeaderTable.prototype.execute() method definition.

    -

    All binary header representations start with a prefix signaling the representation type and -an index represented using prefix coded integers:

    -
      0   1   2   3   4   5   6   7
    -+---+---+---+---+---+---+---+---+
    -| 1 |        Index (7+)         |  Indexed Representation
    -+---+---------------------------+
    -
    -+---+---+---+---+---+---+---+---+
    -| 0 | 1 | 1 |    Index (5+)     |  Literal w/o Indexing
    -+---+---+---+-------------------+
    -
    -+---+---+---+---+---+---+---+---+
    -| 0 | 1 | 0 |    Index (5+)     |  Literal w/ Incremental Indexing
    -+---+---+---+-------------------+
    -
    -+---+---+---+---+---+---+---+---+
    -| 0 | 0 |      Index (6+)       |  Literal w/ Substitution Indexing
    -+---+---+-----------------------+
    -

    The Indexed Representation consists of the 1-bit prefix and the Index that is represented as -a 7-bit prefix coded integer and nothing else.

    -

    After the first bits, all literal representations specify the header name, either as a -pointer to the Header Table (Index) or a string literal. When the string literal representation -is used, the Index is set to 0 and the string literal starts at the second byte.

    -

    When using Substitution Indexing, a new index comes next represented as a 0-bit prefix -integer, specifying the record in the Header Table that needs to be replaced.

    -

    For all literal representations, the specification of the header value comes next. It is -always represented as a string.

    - -
    - -
    var representations = {
    -  indexed             : { prefix: 7, pattern: 0x80 },
    -  literal             : { prefix: 5, pattern: 0x60 },
    -  literalIncremental  : { prefix: 5, pattern: 0x40 },
    -  literalSubstitution : { prefix: 6, pattern: 0x00 }
    -};
    -
    -HeaderSetCompressor.header = function writeHeader(header) {
    -  var representation, buffers = [];
    -
    -  if (typeof header.value === 'number') {
    -    representation = representations.indexed;
    -  } else if (header.index === -1) {
    -    representation = representations.literal;
    -  } else if (header.index === Infinity) {
    -    representation = representations.literalIncremental;
    -  } else {
    -    representation = representations.literalSubstitution;
    -  }
    -
    -  if (representation === representations.indexed) {
    -    buffers.push(HeaderSetCompressor.integer(header.value, representation.prefix));
    -
    -  } else {
    -    if (typeof header.name === 'number') {
    -      buffers.push(HeaderSetCompressor.integer(header.name + 1, representation.prefix));
    -    } else {
    -      buffers.push(HeaderSetCompressor.integer(0, representation.prefix));
    -      buffers.push(HeaderSetCompressor.string(header.name));
    -    }
    -
    -    if (representation === representations.literalSubstitution) {
    -      buffers.push(HeaderSetCompressor.integer(header.index, 0));
    -    }
    -
    -    buffers.push(HeaderSetCompressor.string(header.value));
    -  }
    -
    -  buffers[0][0][0] |= representation.pattern;
    -
    -  return Array.prototype.concat.apply([], buffers); // array of arrays of buffers -> array of buffers
    -};
    -
    -HeaderSetDecompressor.header = function readHeader(buffer) {
    -  var representation, header = {};
    -
    -  var firstByte = buffer[buffer.cursor];
    -  if (firstByte & 0x80) {
    -    representation = representations.indexed;
    -  } else if (firstByte & 0x40) {
    -    if (firstByte & 0x20) {
    -      representation = representations.literal;
    -    } else {
    -      representation = representations.literalIncremental;
    -    }
    -  } else {
    -    representation = representations.literalSubstitution;
    -  }
    -
    -  if (representation === representations.indexed) {
    -    header.value = header.name = HeaderSetDecompressor.integer(buffer, representation.prefix);
    -    header.index = -1;
    -
    -  } else {
    -    header.name = HeaderSetDecompressor.integer(buffer, representation.prefix) - 1;
    -    if (header.name === -1) {
    -      header.name = HeaderSetDecompressor.string(buffer);
    -    }
    -
    -    if (representation === representations.literalSubstitution) {
    -      header.index = HeaderSetDecompressor.integer(buffer, 0);
    -    } else if (representation === representations.literalIncremental) {
    -      header.index = Infinity;
    -    } else {
    -      header.index = -1;
    -    }
    -
    -    header.value = HeaderSetDecompressor.string(buffer);
    -  }
    -
    -  return header;
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    Integration with HTTP/2

    - -
    - -
  • - - -
  • -
    - -
    - -
    -

    This section describes the interaction between the compressor/decompressor and the rest of the -HTTP/2 implementation. The Compressor and the Decompressor makes up a layer between the -framer and the connection handling component. They let most -frames pass through, except HEADERS and PUSH_PROMISE frames. They convert the frames between -these two representations:

    -
    {                                   {
    - type: 'HEADERS',                    type: 'HEADERS',
    - flags: {},                          flags: {},
    - stream: 1,               <===>      stream: 1,
    - headers: {                          data: Buffer
    -  N1: 'V1',                         }
    -  N2: ['V1', 'V2', ...],
    -  // ...
    - }
    -}
    -

    There are possibly several binary frame that belong to a single non-binary frame.

    - -
    - -
    var MAX_HTTP_PAYLOAD_SIZE = 16383;
    - -
  • - - -
  • -
    - -
    - -
    -

    The Compressor class

    - -
    - -
  • - - -
  • -
    - -
    - -
    -

    The Compressor transform stream is basically stateless.

    - -
    - -
    util.inherits(Compressor, TransformStream);
    -function Compressor(log, type) {
    -  TransformStream.call(this, { objectMode: true });
    -
    -  this._log = log.child({ component: 'compressor' });
    -
    -  assert((type === 'REQUEST') || (type === 'RESPONSE'));
    -  var initialTable = (type === 'REQUEST') ? HeaderTable.initialRequestTable
    -                                          : HeaderTable.initialResponseTable;
    -  this._table = new HeaderTable(this._log, initialTable);
    -}
    - -
  • - - -
  • -
    - -
    - -
    -

    compress takes a header set, and compresses it using a new HeaderSetCompressor stream -instance. This means that from now on, the advantages of streaming header encoding are lost, -but the API becomes simpler.

    - -
    - -
    Compressor.prototype.compress = function compress(headers) {
    -  var compressor = new HeaderSetCompressor(this._log, this._table);
    -  for (var name in headers) {
    -    var value = headers[name];
    -    if (value instanceof Array) {
    -      for (var i = 0; i< value.length; i++) {
    -        compressor.write([String(name), String(value[i])]);
    -      }
    -    } else {
    -      compressor.write([String(name), String(value)]);
    -    }
    -  }
    -  compressor.end();
    -
    -  var chunk, chunks = [];
    -  while (chunk = compressor.read()) {
    -    chunks.push(chunk);
    -  }
    -  return concat(chunks);
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    When a frame arrives

    - -
    - -
    Compressor.prototype._transform = function _transform(frame, encoding, done) {
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • and it is a HEADERS or PUSH_PROMISE frame
        -
      • it generates a header block using the compress method
      • -
      • cuts the header block into chunks that are not larger than MAX_HTTP_PAYLOAD_SIZE
      • -
      • for each chunk, it pushes out a chunk frame that is identical to the original, except -the data property which holds the given chunk, the type of the frame which is always -CONTINUATION except for the first frame, and the END_HEADERS/END_PUSH_STREAM flag that -marks the last frame and the END_STREAM flag which is always false before the end
      • -
      -
    • -
    - -
    - -
      if (frame.type === 'HEADERS' || frame.type === 'PUSH_PROMISE') {
    -    var buffer = this.compress(frame.headers);
    -
    -    var chunks = cut(buffer, MAX_HTTP_PAYLOAD_SIZE);
    -
    -    for (var i = 0; i < chunks.length; i++) {
    -      var chunkFrame;
    -      var first = (i === 0);
    -      var last = (i === chunks.length - 1);
    -
    -      if (first) {
    -        chunkFrame = util._extend({}, frame);
    -        chunkFrame.flags = util._extend({}, frame.flags);
    -        chunkFrame.flags['END_' + frame.type] = last;
    -      } else {
    -        chunkFrame = {
    -          type: 'CONTINUATION',
    -          flags: { END_HEADERS: last },
    -          stream: frame.stream
    -        };
    -      }
    -      if (chunkFrame.type !== 'PUSH_PROMISE') {
    -        chunkFrame.flags.END_STREAM = last && frame.flags.END_STREAM;
    -      }
    -      chunkFrame.data = chunks[i];
    -
    -      this.push(chunkFrame);
    -    }
    -  }
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • otherwise, the frame is forwarded without taking any action
    • -
    - -
    - -
      else {
    -    this.push(frame);
    -  }
    -
    -  done();
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    The Decompressor class

    - -
    - -
  • - - -
  • -
    - -
    - -
    -

    The Decompressor is a stateful transform stream, since it has to collect multiple frames first, -and the decoding comes after unifying the payload of those frames.

    -

    If there's a frame in progress, this._inProgress is true. The frames are collected in -this._frames, and the type of the frame and the stream identifier is stored in this._type -and this._stream respectively.

    - -
    - -
    util.inherits(Decompressor, TransformStream);
    -function Decompressor(log, type) {
    -  TransformStream.call(this, { objectMode: true });
    -
    -  this._log = log.child({ component: 'compressor' });
    -
    -  assert((type === 'REQUEST') || (type === 'RESPONSE'));
    -  var initialTable = (type === 'REQUEST') ? HeaderTable.initialRequestTable
    -                                          : HeaderTable.initialResponseTable;
    -  this._table = new HeaderTable(this._log, initialTable);
    -
    -  this._inProgress = false;
    -  this._base = undefined;
    -}
    - -
  • - - -
  • -
    - -
    - -
    -

    decompress takes a full header block, and decompresses it using a new HeaderSetDecompressor -stream instance. This means that from now on, the advantages of streaming header decoding are -lost, but the API becomes simpler.

    - -
    - -
    Decompressor.prototype.decompress = function decompress(block) {
    -  var decompressor = new HeaderSetDecompressor(this._log, this._table);
    -  decompressor.end(block);
    -
    -  var headers = {};
    -  var pair;
    -  while (pair = decompressor.read()) {
    -    var name = pair[0];
    -    var value = pair[1];
    -    if (name in headers) {
    -      if (headers[name] instanceof Array) {
    -        headers[name].push(value);
    -      } else {
    -        headers[name] = [headers[name], value];
    -      }
    -    } else {
    -      headers[name] = value;
    -    }
    -  }
    -
    -  return headers;
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    When a frame arrives

    - -
    - -
    Decompressor.prototype._transform = function _transform(frame, encoding, done) {
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • and the collection process is already _inProgress, the frame is simply stored, except if -it's an illegal frame
    • -
    - -
    - -
      if (this._inProgress) {
    -    if ((frame.type !== 'CONTINUATION') || (frame.stream !== this._base.stream)) {
    -      this._log.error('A series of HEADER frames were not continuous');
    -      this.emit('error', 'PROTOCOL_ERROR');
    -      return;
    -    }
    -    this._frames.push(frame);
    -  }
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • and the collection process is not _inProgress, but the new frame's type is HEADERS or -PUSH_PROMISE, a new collection process begins
    • -
    - -
    - -
      else if ((frame.type === 'HEADERS') || (frame.type === 'PUSH_PROMISE')) {
    -    this._inProgress = true;
    -    this._base = frame;
    -    this._frames = [frame];
    -  }
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • otherwise, the frame is forwarded without taking any action
    • -
    - -
    - -
      else {
    -    this.push(frame);
    -  }
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • When the frame signals that it's the last in the series, the header block chunks are -concatenated, the headers are decompressed, and a new frame gets pushed out with the -decompressed headers.
    • -
    - -
    - -
      if (this._inProgress && (frame.flags.END_HEADERS || frame.flags.END_PUSH_PROMISE)) {
    -    var buffer = concat(this._frames.map(function(frame) {
    -      return frame.data;
    -    }));
    -    try {
    -      var headers = this.decompress(buffer);
    -    } catch(error) {
    -      this._log.error({ err: error }, 'Header decompression error');
    -      this.emit('error', 'COMPRESSION_ERROR');
    -      return;
    -    }
    -    this.push(util._extend({ headers: headers }, this._base));
    -    this._inProgress = false;
    -  }
    -
    -  done();
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    Helper functions

    - -
    - -
  • - - -
  • -
    - -
    - -
    -

    Concatenate an array of buffers into a new buffer

    - -
    - -
    function concat(buffers) {
    -  var size = 0;
    -  for (var i = 0; i < buffers.length; i++) {
    -    size += buffers[i].length;
    -  }
    -
    -  var concatenated = new Buffer(size);
    -  for (var cursor = 0, j = 0; j < buffers.length; cursor += buffers[j].length, j++) {
    -    buffers[j].copy(concatenated, cursor);
    -  }
    -
    -  return concatenated;
    -}
    - -
  • - - -
  • -
    - -
    - -
    -

    Cut buffer into chunks not larger than size

    - -
    - -
    function cut(buffer, size) {
    -  var chunks = [];
    -  var cursor = 0;
    -  do {
    -    var chunkSize = Math.min(size, buffer.length - cursor);
    -    chunks.push(buffer.slice(cursor, cursor + chunkSize));
    -    cursor += chunkSize;
    -  } while(cursor < buffer.length);
    -  return chunks;
    -}
    - -
  • - -
-
- - diff --git a/doc/connection.html b/doc/connection.html deleted file mode 100644 index 5c59791b..00000000 --- a/doc/connection.html +++ /dev/null @@ -1,1521 +0,0 @@ - - - - - connection.js - - - - - -
-
- - - -
    - -
  • -
    -

    connection.js

    -
    -
  • - - - -
  • -
    - -
    - -
    - -
    - -
    var assert = require('assert');
    - -
  • - - -
  • -
    - -
    - -
    -

    The Connection class

    - -
    - -
  • - - -
  • -
    - -
    - -
    -

    The Connection class manages HTTP/2 connections. Each instance corresponds to one transport -stream (TCP stream). It operates by sending and receiving frames and is implemented as a -Flow subclass.

    - -
    - -
    var Flow = require('./flow').Flow;
    -
    -exports.Connection = Connection;
    - -
  • - - -
  • -
    - -
    - -
    -

    Public API

    - -
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • new Connection(log, firstStreamId, settings): create a new Connection

      -
    • -
    • Event: 'error' (type): signals a connection level error made by the other end

      -
    • -
    • Event: 'peerError' (type): signals the receipt of a GOAWAY frame that contains an error -code other than NO_ERROR

      -
    • -
    • Event: 'stream' (stream): signals that there's an incoming stream

      -
    • -
    • createStream(): stream: initiate a new stream

      -
    • -
    • set(settings): change the value of one or more settings according to the key-value pairs -of settings

      -
    • -
    • ping([callback]): send a ping and call callback when the answer arrives

      -
    • -
    • close([error]): close the stream with an error code

      -
    • -
    -

    Constructor

    - -
    - -
  • - - -
  • -
    - -
    - -
    -

    The main aspects of managing the connection are:

    - -
    - -
    function Connection(log, firstStreamId, settings) {
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • initializing the base class
    • -
    - -
    - -
      Flow.call(this, 0);
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • logging: every method uses the common logger object
    • -
    - -
    - -
      this._log = log.child({ component: 'connection' });
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • stream management
    • -
    - -
    - -
      this._initializeStreamManagement(firstStreamId);
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • lifecycle management
    • -
    - -
    - -
      this._initializeLifecycleManagement();
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • flow control
    • -
    - -
    - -
      this._initializeFlowControl();
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • settings management
    • -
    - -
    - -
      this._initializeSettingsManagement(settings);
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • multiplexing
    • -
    - -
    - -
      this._initializeMultiplexing();
    -}
    -Connection.prototype = Object.create(Flow.prototype, { constructor: { value: Connection } });
    - -
  • - - -
  • -
    - -
    - -
    -

    Overview

    - -
    - -
  • - - -
  • -
    - -
    - -
    -
             |    ^             |    ^
    -         v    |             v    |
    -    +--------------+   +--------------+
    -+---|   stream1    |---|   stream2    |----      ....      ---+
    -|   | +----------+ |   | +----------+ |                       |
    -|   | | stream1. | |   | | stream2. | |                       |
    -|   +-| upstream |-+   +-| upstream |-+                       |
    -|     +----------+       +----------+                         |
    -|       |     ^             |     ^                           |
    -|       v     |             v     |                           |
    -|       +-----+-------------+-----+--------      ....         |
    -|       ^     |             |     |                           |
    -|       |     v             |     |                           |
    -|   +--------------+        |     |                           |
    -|   |   stream0    |        |     |                           |
    -|   |  connection  |        |     |                           |
    -|   |  management  |     multiplexing                         |
    -|   +--------------+     flow control                         |
    -|                           |     ^                           |
    -|                   _read() |     | _write()                  |
    -|                           v     |                           |
    -|                +------------+ +-----------+                 |
    -|                |output queue| |input queue|                 |
    -+----------------+------------+-+-----------+-----------------+
    -                            |     ^
    -                     read() |     | write()
    -                            v     |
    -

    Stream management

    - -
    - -
  • - - -
  • -
    - -
    - -
    - -
    - -
    var Stream  = require('./stream').Stream;
    - -
  • - - -
  • -
    - -
    - -
    -

    Initialization:

    - -
    - -
    Connection.prototype._initializeStreamManagement = function _initializeStreamManagement(firstStreamId) {
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • streams are stored in two data structures:
        -
      • _streamIds is an id -> stream map of the streams that are allowed to receive frames.
      • -
      • _streamPriorities is a priority -> [stream] map of stream that allowed to send frames.
      • -
      -
    • -
    - -
    - -
      this._streamIds = [];
    -  this._streamPriorities = [];
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • The next outbound stream ID and the last inbound stream id
    • -
    - -
    - -
      this._nextStreamId = firstStreamId;
    -  this._lastIncomingStream = 0;
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • Calling _writeControlFrame when there's an incoming stream with 0 as stream ID
    • -
    - -
    - -
      this._streamIds[0] = { upstream: { write: this._writeControlFrame.bind(this) } };
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • By default, the number of concurrent outbound streams is not limited. The _streamLimit can -be set by the SETTINGS_MAX_CONCURRENT_STREAMS setting.
    • -
    - -
    - -
      this._streamSlotsFree = Infinity;
    -  this._streamLimit = Infinity;
    -  this.on('RECEIVING_SETTINGS_MAX_CONCURRENT_STREAMS', this._updateStreamLimit);
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    _writeControlFrame is called when there's an incoming frame in the _control stream. It -broadcasts the message by creating an event on it.

    - -
    - -
    Connection.prototype._writeControlFrame = function _writeControlFrame(frame) {
    -  if ((frame.type === 'SETTINGS') || (frame.type === 'PING') ||
    -      (frame.type === 'GOAWAY') || (frame.type === 'WINDOW_UPDATE')) {
    -    this._log.debug({ frame: frame }, 'Receiving connection level frame');
    -    this.emit(frame.type, frame);
    -  } else {
    -    this._log.error({ frame: frame }, 'Invalid connection level frame');
    -    this.emit('error', 'PROTOCOL_ERROR');
    -  }
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    Methods to manage the stream slot pool:

    - -
    - -
    Connection.prototype._updateStreamLimit = function _updateStreamLimit(newStreamLimit) {
    -  var wakeup = (this._streamSlotsFree === 0) && (newStreamLimit > this._streamLimit);
    -  this._streamSlotsFree += newStreamLimit - this._streamLimit;
    -  this._streamLimit = newStreamLimit;
    -  if (wakeup) {
    -    this.emit('wakeup');
    -  }
    -};
    -
    -Connection.prototype._changeStreamCount = function _changeStreamCount(change) {
    -  if (change) {
    -    this._log.trace({ free: this._streamSlotsFree, change: change },
    -                    'Changing active stream count.');
    -    var wakeup = (this._streamSlotsFree === 0) && (change < 0);
    -    this._streamSlotsFree -= change;
    -    if (wakeup) {
    -      this.emit('wakeup');
    -    }
    -  }
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    Creating a new inbound or outbound stream with the given id (which is undefined in case of -an outbound stream) consists of three steps:

    -
      -
    1. var stream = new Stream(this._log);
    2. -
    3. this._allocateId(stream, id);
    4. -
    5. this._allocatePriority(stream);
    6. -
    -

    Allocating an ID to a stream

    - -
    - -
    Connection.prototype._allocateId = function _allocateId(stream, id) {
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • initiated stream without definite ID
    • -
    - -
    - -
      if (id === undefined) {
    -    id = this._nextStreamId;
    -    this._nextStreamId += 2;
    -  }
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • incoming stream with a legitim ID (larger than any previous and different parity than ours)
    • -
    - -
    - -
      else if ((id > this._lastIncomingStream) && ((id - this._nextStreamId) % 2 !== 0)) {
    -    this._lastIncomingStream = id;
    -  }
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • incoming stream with invalid ID
    • -
    - -
    - -
      else {
    -    this._log.error({ stream_id: id, lastIncomingStream: this._lastIncomingStream },
    -                    'Invalid incoming stream ID.');
    -    this.emit('error', 'PROTOCOL_ERROR');
    -    return undefined;
    -  }
    -
    -  assert(!(id in this._streamIds));
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • adding to this._streamIds
    • -
    - -
    - -
      this._log.trace({ s: stream, stream_id: id }, 'Allocating ID for stream.');
    -  this._streamIds[id] = stream;
    -  stream.id = id;
    -  this.emit('new_stream', stream, id);
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • handling stream errors as connection errors
    • -
    - -
    - -
      stream.on('error', this.emit.bind(this, 'error'));
    -
    -  return id;
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    Allocating a priority to a stream, and managing priority changes

    - -
    - -
    Connection.prototype._allocatePriority = function _allocatePriority(stream) {
    -  this._log.trace({ s: stream }, 'Allocating priority for stream.');
    -  this._insert(stream, stream._priority);
    -  stream.on('priority', this._reprioritize.bind(this, stream));
    -  stream.upstream.on('readable', this.emit.bind(this, 'wakeup'));
    -  this.emit('wakeup');
    -};
    -
    -Connection.prototype._insert = function _insert(stream, priority) {
    -  if (priority in this._streamPriorities) {
    -    this._streamPriorities[priority].push(stream);
    -  } else {
    -    this._streamPriorities[priority] = [stream];
    -  }
    -};
    -
    -Connection.prototype._reprioritize = function _reprioritize(stream, priority) {
    -  var bucket = this._streamPriorities[stream._priority];
    -  var index = bucket.indexOf(stream);
    -  assert(index !== -1);
    -  bucket.splice(index, 1);
    -  if (bucket.length === 0) {
    -    delete this._streamPriorities[stream._priority];
    -  }
    -
    -  this._insert(stream, priority);
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    Creating an inbound stream with the given ID. It is called when there's an incoming frame to -a previously nonexistent stream.

    - -
    - -
    Connection.prototype._createIncomingStream = function _createIncomingStream(id) {
    -  this._log.debug({ stream_id: id }, 'New incoming stream.');
    -
    -  var stream = new Stream(this._log);
    -  this._allocateId(stream, id);
    -  this._allocatePriority(stream);
    -  this.emit('stream', stream, id);
    -
    -  return stream;
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    Creating an outbound stream

    - -
    - -
    Connection.prototype.createStream = function createStream() {
    -  this._log.trace('Creating new outbound stream.');
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • Receiving is enabled immediately, and an ID gets assigned to the stream
    • -
    - -
    - -
      var stream = new Stream(this._log);
    -  this._allocatePriority(stream);
    -
    -  return stream;
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    Multiplexing

    - -
    - -
  • - - -
  • -
    - -
    - -
    - -
    - -
    Connection.prototype._initializeMultiplexing = function _initializeMultiplexing() {
    -  this.on('window_update', this.emit.bind(this, 'wakeup'));
    -  this._sendScheduled = false;
    -  this._firstFrameReceived = false;
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    The _send method is a virtual method of the Flow class that has to be implemented -by child classes. It reads frames from streams and pushes them to the output buffer.

    - -
    - -
    Connection.prototype._send = function _send(immediate) {
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • Do not do anything if the connectionis already closed
    • -
    - -
    - -
      if (this._closed) {
    -    return;
    -  }
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • Collapsing multiple calls in a turn into a single deferred call
    • -
    - -
    - -
      if (immediate) {
    -    this._sendScheduled = false;
    -  } else {
    -    if (!this._sendScheduled) {
    -      this._sendScheduled = true;
    -      setImmediate(this._send.bind(this, true));
    -    }
    -    return;
    -  }
    -
    -  this._log.trace('Starting forwarding frames from streams.');
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • Looping through priority buckets in priority order.
    • -
    - -
    - -
    priority_loop:
    -  for (var priority in this._streamPriorities) {
    -    var bucket = this._streamPriorities[priority];
    -    var nextBucket = [];
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • Forwarding frames from buckets with round-robin scheduling.
        -
      1. pulling out frame
      2. -
      3. if there's no frame, skip this stream
      4. -
      5. if forwarding this frame would make streamCount greater than streamLimit, skip -this stream
      6. -
      7. adding stream to the bucket of the next round
      8. -
      9. assigning an ID to the frame (allocating an ID to the stream if there isn't already)
      10. -
      11. if forwarding a PUSH_PROMISE, allocate ID to the promised stream
      12. -
      13. forwarding the frame, changing streamCount as appropriate
      14. -
      15. stepping to the next stream if there's still more frame needed in the output buffer
      16. -
      17. switching to the bucket of the next round
      18. -
      -
    • -
    - -
    - -
        while (bucket.length > 0) {
    -      for (var index = 0; index < bucket.length; index++) {
    -        var stream = bucket[index];
    -        var frame = stream.upstream.read((this._window > 0) ? this._window : -1);
    -
    -        if (!frame) {
    -          continue;
    -        } else if (frame.count_change > this._streamSlotsFree) {
    -          stream.upstream.unshift(frame);
    -          continue;
    -        }
    -
    -        nextBucket.push(stream);
    -
    -        if (frame.stream === undefined) {
    -          frame.stream = stream.id || this._allocateId(stream);
    -        }
    -
    -        if (frame.type === 'PUSH_PROMISE') {
    -          this._allocatePriority(frame.promised_stream);
    -          frame.promised_stream = this._allocateId(frame.promised_stream);
    -        }
    -
    -        this._log.trace({ s: stream, frame: frame }, 'Forwarding outgoing frame');
    -        var moreNeeded = this.push(frame);
    -        this._changeStreamCount(frame.count_change);
    -
    -        assert(moreNeeded !== null); // The frame shouldn't be unforwarded
    -        if (moreNeeded === false) {
    -          break priority_loop;
    -        }
    -      }
    -
    -      bucket = nextBucket;
    -      nextBucket = [];
    -    }
    -  }
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • if we couldn't forward any frame, then sleep until window update, or some other wakeup event
    • -
    - -
    - -
      if (moreNeeded === undefined) {
    -    this.once('wakeup', this._send.bind(this));
    -  }
    -
    -  this._log.trace({ moreNeeded: moreNeeded }, 'Stopping forwarding frames from streams.');
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    The _receive method is another virtual method of the Flow class that has to be -implemented by child classes. It forwards the given frame to the appropriate stream:

    - -
    - -
    Connection.prototype._receive = function _receive(frame, done) {
    -  this._log.trace({ frame: frame }, 'Forwarding incoming frame');
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • first frame needs to be checked by the _onFirstFrameReceived method
    • -
    - -
    - -
      if (!this._firstFrameReceived) {
    -    this._firstFrameReceived = true;
    -    this._onFirstFrameReceived(frame);
    -  }
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • gets the appropriate stream from the stream registry
    • -
    - -
    - -
      var stream = this._streamIds[frame.stream];
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • or creates one if it's not in this.streams
    • -
    - -
    - -
      if (!stream) {
    -    stream = this._createIncomingStream(frame.stream);
    -  }
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • in case of PUSH_PROMISE, replaces the promised stream id with a new incoming stream
    • -
    - -
    - -
      if (frame.type === 'PUSH_PROMISE') {
    -    frame.promised_stream = this._createIncomingStream(frame.promised_stream);
    -  }
    -
    -  frame.count_change = this._changeStreamCount.bind(this);
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • and writes it to the stream's upstream
    • -
    - -
    - -
      stream.upstream.write(frame);
    -
    -  done();
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    Settings management

    - -
    - -
  • - - -
  • -
    - -
    - -
    - -
    - -
    var defaultSettings = {
    -  SETTINGS_FLOW_CONTROL_OPTIONS: true
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    Settings management initialization:

    - -
    - -
    Connection.prototype._initializeSettingsManagement = function _initializeSettingsManagement(settings) {
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • Sending the initial settings.
    • -
    - -
    - -
      this._log.debug('Sending the first SETTINGS frame as part of the connection header.');
    -  this.set(settings || defaultSettings);
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • Forwarding SETTINGS frames to the _receiveSettings method
    • -
    - -
    - -
      this.on('SETTINGS', this._receiveSettings);
    -};
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • Checking that the first frame the other endpoint sends is SETTINGS
    • -
    - -
    - -
    Connection.prototype._onFirstFrameReceived = function _onFirstFrameReceived(frame) {
    -  if ((frame.stream === 0) && (frame.type === 'SETTINGS')) {
    -    this._log.debug('Receiving the first SETTINGS frame as part of the connection header.');
    -  } else {
    -    this._log.fatal({ frame: frame }, 'Invalid connection header: first frame is not SETTINGS.');
    -    this.emit('error');
    -  }
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    Handling of incoming SETTINGS frames.

    - -
    - -
    Connection.prototype._receiveSettings = function _receiveSettings(frame) {
    -  for (var name in frame.settings) {
    -    this.emit('RECEIVING_' + name, frame.settings[name]);
    -  }
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    Changing one or more settings value and sending out a SETTINGS frame

    - -
    - -
    Connection.prototype.set = function set(settings) {
    -  this.push({
    -    type: 'SETTINGS',
    -    flags: {},
    -    stream: 0,
    -    settings: settings
    -  });
    -  for (var name in settings) {
    -    this.emit('SENDING_' + name, settings[name]);
    -  }
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    Lifecycle management

    - -
    - -
  • - - -
  • -
    - -
    - -
    -

    The main responsibilities of lifecycle management code:

    -
      -
    • keeping the connection alive by
        -
      • sending PINGs when the connection is idle
      • -
      • answering PINGs
      • -
      -
    • -
    • ending the connection
    • -
    - -
    - -
    Connection.prototype._initializeLifecycleManagement = function _initializeLifecycleManagement() {
    -  this._pings = {};
    -  this.on('PING', this._receivePing);
    -  this.on('GOAWAY', this._receiveGoaway);
    -  this._closed = false;
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    Generating a string of length 16 with random hexadecimal digits

    - -
    - -
    Connection.prototype._generatePingId = function _generatePingId() {
    -  do {
    -    var id = '';
    -    for (var i = 0; i < 16; i++) {
    -      id += Math.floor(Math.random()*16).toString(16);
    -    }
    -  } while(id in this._pings);
    -  return id;
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    Sending a ping and calling callback when the answer arrives

    - -
    - -
    Connection.prototype.ping = function ping(callback) {
    -  var id = this._generatePingId();
    -  var data = new Buffer(id, 'hex');
    -  this._pings[id] = callback;
    -
    -  this._log.debug({ data: data }, 'Sending PING.');
    -  this.push({
    -    type: 'PING',
    -    flags: {
    -      PONG: false
    -    },
    -    stream: 0,
    -    data: data
    -  });
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    Answering pings

    - -
    - -
    Connection.prototype._receivePing = function _receivePing(frame) {
    -  if (frame.flags.PONG) {
    -    var id = frame.data.toString('hex');
    -    if (id in this._pings) {
    -      this._log.debug({ data: frame.data }, 'Receiving answer for a PING.');
    -      var callback = this._pings[id];
    -      if (callback) {
    -        callback();
    -      }
    -      delete this._pings[id];
    -    } else {
    -      this._log.warn({ data: frame.data }, 'Unsolicited PING answer.');
    -    }
    -
    -  } else {
    -    this._log.debug({ data: frame.data }, 'Answering PING.');
    -    this.push({
    -      type: 'PING',
    -      flags: {
    -        PONG: true
    -      },
    -      stream: 0,
    -      data: frame.data
    -    });
    -  }
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    Terminating the connection

    - -
    - -
    Connection.prototype.close = function close(error) {
    -  if (this._closed) {
    -    this._log.warn('Trying to close an already closed connection');
    -    return;
    -  }
    -
    -  this._log.debug({ error: error }, 'Closing the connection');
    -  this.push({
    -    type: 'GOAWAY',
    -    flags: {},
    -    stream: 0,
    -    last_stream: this._lastIncomingStream,
    -    error: error || 'NO_ERROR'
    -  });
    -  this.push(null);
    -  this._closed = true;
    -};
    -
    -Connection.prototype._receiveGoaway = function _receiveGoaway(frame) {
    -  this._log.debug({ error: frame.error }, 'Other end closed the connection');
    -  this.push(null);
    -  this._closed = true;
    -  if (frame.error !== 'NO_ERROR') {
    -    this.emit('peerError', frame.error);
    -  }
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    Flow control

    - -
    - -
  • - - -
  • -
    - -
    - -
    - -
    - -
    Connection.prototype._initializeFlowControl = function _initializeFlowControl() {
    - -
  • - - -
  • -
    - -
    - -
    -

    Handling of initial window size of individual streams.

    - -
    - -
      this._initialStreamWindowSize = INITIAL_STREAM_WINDOW_SIZE;
    -  this.on('new_stream', function(stream) {
    -    stream.upstream.setInitialWindow(this._initialStreamWindowSize);
    -    if (this._remoteFlowControlDisabled) {
    -      stream.upstream.disableRemoteFlowControl();
    -    }
    -  });
    -  this.on('RECEIVING_SETTINGS_INITIAL_WINDOW_SIZE', this._setInitialStreamWindowSize);
    -  this.on('RECEIVING_SETTINGS_FLOW_CONTROL_OPTIONS', this._setLocalFlowControl);
    -  this.on('SENDING_SETTINGS_FLOW_CONTROL_OPTIONS', this._setRemoteFlowControl);
    -  this._streamIds[0].upstream.setInitialWindow = function noop() {};
    -  this._streamIds[0].upstream.disableRemoteFlowControl = function noop() {};
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    The initial connection flow control window is 65535 bytes.

    - -
    - -
    var INITIAL_STREAM_WINDOW_SIZE = 65535;
    - -
  • - - -
  • -
    - -
    - -
    -

    A SETTINGS frame can alter the initial flow control window size for all current streams. When the -value of SETTINGS_INITIAL_WINDOW_SIZE changes, a receiver MUST adjust the window size of all -stream by calling the setInitialStreamWindowSize method. The window size has to be modified by -the difference between the new value and the old value.

    - -
    - -
    Connection.prototype._setInitialStreamWindowSize = function _setInitialStreamWindowSize(size) {
    -  if ((this._initialStreamWindowSize === Infinity) && (size !== Infinity)) {
    -    this._log.error('Trying to manipulate initial flow control window size after flow control was turned off.');
    -    this.emit('error', 'FLOW_CONTROL_ERROR');
    -  } else {
    -    this._log.debug({ size: size }, 'Changing stream initial window size.');
    -    this._initialStreamWindowSize = size;
    -    this._streamIds.forEach(function(stream) {
    -      stream.upstream.setInitialWindow(size);
    -    });
    -  }
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    _setStreamFlowControl() may be used to disable/enable flow control. In practice, it is just -for turning off flow control since it can not be turned on.

    - -
    - -
    Connection.prototype._setLocalFlowControl = function _setLocalFlowControl(disable) {
    -  if (disable) {
    -    this._increaseWindow(Infinity);
    -    this._setInitialStreamWindowSize(Infinity);
    -  } else if (this._initialStreamWindowSize === Infinity) {
    -    this._log.error('Trying to re-enable flow control after it was turned off.');
    -    this.emit('error', 'FLOW_CONTROL_ERROR');
    -  }
    -};
    -
    -Connection.prototype._setRemoteFlowControl = function _setRemoteFlowControl(disable) {
    -  if (disable) {
    -    this.disableRemoteFlowControl();
    -    this._streamIds.forEach(function(stream) {
    -      stream.upstream.disableRemoteFlowControl();
    -    });
    -  } else if (this._remoteFlowControlDisabled) {
    -    this._log.error('Trying to re-enable flow control after it was turned off.');
    -    throw new Error('Trying to re-enable flow control after it was turned off.');
    -  }
    -};
    - -
  • - -
-
- - diff --git a/doc/docco.css b/doc/docco.css deleted file mode 100644 index 8910977e..00000000 --- a/doc/docco.css +++ /dev/null @@ -1,511 +0,0 @@ -/*-------------- node-http2 customizations --------------------*/ - -ul.sections > li > div.annotation { - min-width: 35em !important; - max-width: 35em !important; -} - -#background { - width: 35em !important; -} - -/*--------------------- Typography ----------------------------*/ - -@font-face { - font-family: 'aller-light'; - src: url('public/fonts/aller-light.eot'); - src: url('public/fonts/aller-light.eot?#iefix') format('embedded-opentype'), - url('public/fonts/aller-light.woff') format('woff'), - url('public/fonts/aller-light.ttf') format('truetype'); - font-weight: normal; - font-style: normal; -} - -@font-face { - font-family: 'aller-bold'; - src: url('public/fonts/aller-bold.eot'); - src: url('public/fonts/aller-bold.eot?#iefix') format('embedded-opentype'), - url('public/fonts/aller-bold.woff') format('woff'), - url('public/fonts/aller-bold.ttf') format('truetype'); - font-weight: normal; - font-style: normal; -} - -@font-face { - font-family: 'novecento-bold'; - src: url('public/fonts/novecento-bold.eot'); - src: url('public/fonts/novecento-bold.eot?#iefix') format('embedded-opentype'), - url('public/fonts/novecento-bold.woff') format('woff'), - url('public/fonts/novecento-bold.ttf') format('truetype'); - font-weight: normal; - font-style: normal; -} - -/*--------------------- Layout ----------------------------*/ -html { height: 100%; } -body { - font-family: "aller-light"; - font-size: 14px; - line-height: 18px; - color: #30404f; - margin: 0; padding: 0; - height:100%; -} -#container { min-height: 100%; } - -a { - color: #000; -} - -b, strong { - font-weight: normal; - font-family: "aller-bold"; -} - -p, ul, ol { - margin: 15px 0 0px; -} - -h1, h2, h3, h4, h5, h6 { - color: #112233; - line-height: 1em; - font-weight: normal; - font-family: "novecento-bold"; - text-transform: uppercase; - margin: 30px 0 15px 0; -} - -h1 { - margin-top: 40px; -} - -hr { - border: 0; - background: 1px solid #ddd; - height: 1px; - margin: 20px 0; -} - -pre, tt, code { - font-size: 12px; line-height: 16px; - font-family: Menlo, Monaco, Consolas, "Lucida Console", monospace; - margin: 0; padding: 0; -} - .annotation pre { - display: block; - margin: 0; - padding: 7px 10px; - background: #fcfcfc; - -moz-box-shadow: inset 0 0 10px rgba(0,0,0,0.1); - -webkit-box-shadow: inset 0 0 10px rgba(0,0,0,0.1); - box-shadow: inset 0 0 10px rgba(0,0,0,0.1); - overflow-x: auto; - } - .annotation pre code { - border: 0; - padding: 0; - background: transparent; - } - - -blockquote { - border-left: 5px solid #ccc; - margin: 0; - padding: 1px 0 1px 1em; -} - .sections blockquote p { - font-family: Menlo, Consolas, Monaco, monospace; - font-size: 12px; line-height: 16px; - color: #999; - margin: 10px 0 0; - white-space: pre-wrap; - } - -ul.sections { - list-style: none; - padding:0 0 5px 0;; - margin:0; -} - -/* - Force border-box so that % widths fit the parent - container without overlap because of margin/padding. - - More Info : http://www.quirksmode.org/css/box.html -*/ -ul.sections > li > div { - -moz-box-sizing: border-box; /* firefox */ - -ms-box-sizing: border-box; /* ie */ - -webkit-box-sizing: border-box; /* webkit */ - -khtml-box-sizing: border-box; /* konqueror */ - box-sizing: border-box; /* css3 */ -} - - -/*---------------------- Jump Page -----------------------------*/ -#jump_to, #jump_page { - margin: 0; - background: white; - -webkit-box-shadow: 0 0 25px #777; -moz-box-shadow: 0 0 25px #777; - -webkit-border-bottom-left-radius: 5px; -moz-border-radius-bottomleft: 5px; - font: 16px Arial; - cursor: pointer; - text-align: right; - list-style: none; -} - -#jump_to a { - text-decoration: none; -} - -#jump_to a.large { - display: none; -} -#jump_to a.small { - font-size: 22px; - font-weight: bold; - color: #676767; -} - -#jump_to, #jump_wrapper { - position: fixed; - right: 0; top: 0; - padding: 10px 15px; - margin:0; -} - -#jump_wrapper { - display: none; - padding:0; -} - -#jump_to:hover #jump_wrapper { - display: block; -} - -#jump_page { - padding: 5px 0 3px; - margin: 0 0 25px 25px; -} - -#jump_page .source { - display: block; - padding: 15px; - text-decoration: none; - border-top: 1px solid #eee; -} - -#jump_page .source:hover { - background: #f5f5ff; -} - -#jump_page .source:first-child { -} - -/*---------------------- Low resolutions (> 320px) ---------------------*/ -@media only screen and (min-width: 320px) { - .pilwrap { display: none; } - - ul.sections > li > div { - display: block; - padding:5px 10px 0 10px; - } - - ul.sections > li > div.annotation ul, ul.sections > li > div.annotation ol { - padding-left: 30px; - } - - ul.sections > li > div.content { - background: #f5f5ff; - overflow-x:auto; - -webkit-box-shadow: inset 0 0 5px #e5e5ee; - box-shadow: inset 0 0 5px #e5e5ee; - border: 1px solid #dedede; - margin:5px 10px 5px 10px; - padding-bottom: 5px; - } - - ul.sections > li > div.annotation pre { - margin: 7px 0 7px; - padding-left: 15px; - } - - ul.sections > li > div.annotation p tt, .annotation code { - background: #f8f8ff; - border: 1px solid #dedede; - font-size: 12px; - padding: 0 0.2em; - } -} - -/*---------------------- (> 481px) ---------------------*/ -@media only screen and (min-width: 481px) { - #container { - position: relative; - } - body { - background-color: #F5F5FF; - font-size: 15px; - line-height: 21px; - } - pre, tt, code { - line-height: 18px; - } - p, ul, ol { - margin: 0 0 15px; - } - - - #jump_to { - padding: 5px 10px; - } - #jump_wrapper { - padding: 0; - } - #jump_to, #jump_page { - font: 10px Arial; - text-transform: uppercase; - } - #jump_page .source { - padding: 5px 10px; - } - #jump_to a.large { - display: inline-block; - } - #jump_to a.small { - display: none; - } - - - - #background { - position: absolute; - top: 0; bottom: 0; - width: 350px; - background: #fff; - border-right: 1px solid #e5e5ee; - z-index: -1; - } - - ul.sections > li > div.annotation ul, ul.sections > li > div.annotation ol { - padding-left: 40px; - } - - ul.sections > li { - white-space: nowrap; - } - - ul.sections > li > div { - display: inline-block; - } - - ul.sections > li > div.annotation { - max-width: 350px; - min-width: 350px; - min-height: 5px; - padding: 13px; - overflow-x: hidden; - white-space: normal; - vertical-align: top; - text-align: left; - } - ul.sections > li > div.annotation pre { - margin: 15px 0 15px; - padding-left: 15px; - } - - ul.sections > li > div.content { - padding: 13px; - vertical-align: top; - background: #f5f5ff; - border: none; - -webkit-box-shadow: none; - box-shadow: none; - } - - .pilwrap { - position: relative; - display: inline; - } - - .pilcrow { - font: 12px Arial; - text-decoration: none; - color: #454545; - position: absolute; - top: 3px; left: -20px; - padding: 1px 2px; - opacity: 0; - -webkit-transition: opacity 0.2s linear; - } - .for-h1 .pilcrow { - top: 47px; - } - .for-h2 .pilcrow, .for-h3 .pilcrow, .for-h4 .pilcrow { - top: 35px; - } - - ul.sections > li > div.annotation:hover .pilcrow { - opacity: 1; - } -} - -/*---------------------- (> 1025px) ---------------------*/ -@media only screen and (min-width: 1025px) { - - body { - font-size: 16px; - line-height: 24px; - } - - #background { - width: 525px; - } - ul.sections > li > div.annotation { - max-width: 525px; - min-width: 525px; - padding: 10px 25px 1px 50px; - } - ul.sections > li > div.content { - padding: 9px 15px 16px 25px; - } -} - -/*---------------------- Syntax Highlighting -----------------------------*/ - -td.linenos { background-color: #f0f0f0; padding-right: 10px; } -span.lineno { background-color: #f0f0f0; padding: 0 5px 0 5px; } -/* - -github.com style (c) Vasily Polovnyov - -*/ - -pre code { - display: block; padding: 0.5em; - color: #000; - background: #f8f8ff -} - -pre .comment, -pre .template_comment, -pre .diff .header, -pre .javadoc { - color: #408080; - font-style: italic -} - -pre .keyword, -pre .assignment, -pre .literal, -pre .css .rule .keyword, -pre .winutils, -pre .javascript .title, -pre .lisp .title, -pre .subst { - color: #954121; - /*font-weight: bold*/ -} - -pre .number, -pre .hexcolor { - color: #40a070 -} - -pre .string, -pre .tag .value, -pre .phpdoc, -pre .tex .formula { - color: #219161; -} - -pre .title, -pre .id { - color: #19469D; -} -pre .params { - color: #00F; -} - -pre .javascript .title, -pre .lisp .title, -pre .subst { - font-weight: normal -} - -pre .class .title, -pre .haskell .label, -pre .tex .command { - color: #458; - font-weight: bold -} - -pre .tag, -pre .tag .title, -pre .rules .property, -pre .django .tag .keyword { - color: #000080; - font-weight: normal -} - -pre .attribute, -pre .variable, -pre .instancevar, -pre .lisp .body { - color: #008080 -} - -pre .regexp { - color: #B68 -} - -pre .class { - color: #458; - font-weight: bold -} - -pre .symbol, -pre .ruby .symbol .string, -pre .ruby .symbol .keyword, -pre .ruby .symbol .keymethods, -pre .lisp .keyword, -pre .tex .special, -pre .input_number { - color: #990073 -} - -pre .builtin, -pre .constructor, -pre .built_in, -pre .lisp .title { - color: #0086b3 -} - -pre .preprocessor, -pre .pi, -pre .doctype, -pre .shebang, -pre .cdata { - color: #999; - font-weight: bold -} - -pre .deletion { - background: #fdd -} - -pre .addition { - background: #dfd -} - -pre .diff .change { - background: #0086b3 -} - -pre .chunk { - color: #aaa -} - -pre .tex .formula { - opacity: 0.5; -} diff --git a/doc/endpoint.html b/doc/endpoint.html deleted file mode 100644 index e3a8f1dc..00000000 --- a/doc/endpoint.html +++ /dev/null @@ -1,658 +0,0 @@ - - - - - endpoint.js - - - - - -
-
- - - -
    - -
  • -
    -

    endpoint.js

    -
    -
  • - - - -
  • -
    - -
    - -
    - -
    - -
    var assert = require('assert');
    -
    -var Serializer   = require('./framer').Serializer;
    -var Deserializer = require('./framer').Deserializer;
    -var Compressor   = require('./compressor').Compressor;
    -var Decompressor = require('./compressor').Decompressor;
    -var Connection   = require('./connection').Connection;
    -var Duplex       = require('stream').Duplex;
    -var Transform    = require('stream').Transform;
    -
    -exports.Endpoint = Endpoint;
    - -
  • - - -
  • -
    - -
    - -
    -

    The Endpoint class

    - -
    - -
  • - - -
  • -
    - -
    - -
    -

    Public API

    - -
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • new Endpoint(log, role, settings, filters): create a new Endpoint.

      -
        -
      • log: bunyan logger of the parent
      • -
      • role: 'CLIENT' or 'SERVER'
      • -
      • settings: initial HTTP/2 settings
      • -
      • filters: a map of functions that filter the traffic between components (for debugging or -intentional failure injection).

        -

        Filter functions get three arguments:

        -
          -
        1. frame: the current frame
        2. -
        3. forward(frame): function that can be used to forward a frame to the next component
        4. -
        5. done(): callback to signal the end of the filter process
        6. -
        -

        Valid filter names and their position in the stack:

        -
          -
        • beforeSerialization: after compression, before serialization
        • -
        • beforeCompression: after multiplexing, before compression
        • -
        • afterDeserialization: after deserialization, before decompression
        • -
        • afterDecompression: after decompression, before multiplexing
        • -
        -
      • -
      -
    • -
    • Event: 'stream' (Stream): 'stream' event forwarded from the underlying Connection

      -
    • -
    • Event: 'error' (type): signals an error

      -
    • -
    • createStream(): Stream: initiate a new stream (forwarded to the underlying Connection)

      -
    • -
    • close([error]): close the connection with an error code

      -
    • -
    -

    Constructor

    - -
    - -
  • - - -
  • -
    - -
    - -
    -

    The process of initialization:

    - -
    - -
    function Endpoint(log, role, settings, filters) {
    -  Duplex.call(this);
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • Initializing logging infrastructure
    • -
    - -
    - -
      this._log = log.child({ component: 'endpoint', e: this });
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • First part of the handshake process: sending and receiving the client connection header -prelude.
    • -
    - -
    - -
      assert((role === 'CLIENT') || role === 'SERVER');
    -  if (role === 'CLIENT') {
    -    this._writePrelude();
    -  } else {
    -    this._readPrelude();
    -  }
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • Initialization of componenet. This includes the second part of the handshake process: -sending the first SETTINGS frame. This is done by the connection class right after -initialization.
    • -
    - -
    - -
      this._initializeDataFlow(role, settings, filters || {});
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • Initialization of management code.
    • -
    - -
    - -
      this._initializeManagement();
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • Initializing error handling.
    • -
    - -
    - -
      this._initializeErrorHandling();
    -}
    -Endpoint.prototype = Object.create(Duplex.prototype, { constructor: { value: Endpoint } });
    - -
  • - - -
  • -
    - -
    - -
    -

    Handshake

    - -
    - -
  • - - -
  • -
    - -
    - -
    - -
    - -
    var CLIENT_PRELUDE = new Buffer('PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n');
    - -
  • - - -
  • -
    - -
    - -
    -

    Writing the client header is simple and synchronous.

    - -
    - -
    Endpoint.prototype._writePrelude = function _writePrelude() {
    -  this._log.debug('Sending the client connection header prelude.');
    -  this.push(CLIENT_PRELUDE);
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    The asynchronous process of reading the client header:

    - -
    - -
    Endpoint.prototype._readPrelude = function _readPrelude() {
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • progress in the header is tracker using a cursor
    • -
    - -
    - -
      var cursor = 0;
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • _write is temporarily replaced by the comparator function
    • -
    - -
    - -
      this._write = function _temporalWrite(chunk, encoding, done) {
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • which compares the stored header with the current chunk byte by byte and emits the -'error' event if there's a byte that doesn't match
    • -
    - -
    - -
        var offset = cursor;
    -    while(cursor < CLIENT_PRELUDE.length && (cursor - offset) < chunk.length) {
    -      if (CLIENT_PRELUDE[cursor] !== chunk[cursor - offset]) {
    -        this._log.fatal({ cursor: cursor, offset: offset, chunk: chunk },
    -                        'Client connection header prelude does not match.');
    -        this._error('handshake', 'PROTOCOL_ERROR');
    -        return;
    -      }
    -      cursor += 1;
    -    }
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • if the whole header is over, and there were no error then restore the original _write -and call it with the remaining part of the current chunk
    • -
    - -
    - -
        if (cursor === CLIENT_PRELUDE.length) {
    -      this._log.debug('Successfully received the client connection header prelude.');
    -      delete this._write;
    -      chunk = chunk.slice(cursor - offset);
    -      this._write(chunk, encoding, done);
    -    }
    -  };
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    Data flow

    - -
    - -
  • - - -
  • -
    - -
    - -
    -
    +---------------------------------------------+
    -|                                             |
    -|   +-------------------------------------+   |
    -|   | +---------+ +---------+ +---------+ |   |
    -|   | | stream1 | | stream2 | |   ...   | |   |
    -|   | +---------+ +---------+ +---------+ |   |
    -|   |             connection              |   |
    -|   +-------------------------------------+   |
    -|             |                 ^             |
    -|        pipe |                 | pipe        |
    -|             v                 |             |
    -|   +------------------+------------------+   |
    -|   |    compressor    |   decompressor   |   |
    -|   +------------------+------------------+   |
    -|             |                 ^             |
    -|        pipe |                 | pipe        |
    -|             v                 |             |
    -|   +------------------+------------------+   |
    -|   |    serializer    |   deserializer   |   |
    -|   +------------------+------------------+   |
    -|             |                 ^             |
    -|     _read() |                 | _write()    |
    -|             v                 |             |
    -|      +------------+     +-----------+       |
    -|      |output queue|     |input queue|       |
    -+------+------------+-----+-----------+-------+
    -              |                 ^
    -       read() |                 | write()
    -              v                 |
    - -
    - -
    function createTransformStream(filter) {
    -  var transform = new Transform({ objectMode: true });
    -  var push = transform.push.bind(transform);
    -  transform._transform = function(frame, encoding, done) {
    -    filter(frame, push, done);
    -  };
    -  return transform;
    -}
    -
    -function pipeAndFilter(stream1, stream2, filter) {
    -  if (filter) {
    -    stream1.pipe(createTransformStream(filter)).pipe(stream2);
    -  } else {
    -    stream1.pipe(stream2);
    -  }
    -}
    -
    -var MAX_HTTP_PAYLOAD_SIZE = 16383;
    -
    -Endpoint.prototype._initializeDataFlow = function _initializeDataFlow(role, settings, filters) {
    -  var firstStreamId, compressorRole, decompressorRole;
    -  if (role === 'CLIENT') {
    -    firstStreamId = 1;
    -    compressorRole = 'REQUEST';
    -    decompressorRole = 'RESPONSE';
    -  } else {
    -    firstStreamId = 2;
    -    compressorRole = 'RESPONSE';
    -    decompressorRole = 'REQUEST';
    -  }
    -
    -  this._serializer   = new Serializer(this._log, MAX_HTTP_PAYLOAD_SIZE);
    -  this._deserializer = new Deserializer(this._log, MAX_HTTP_PAYLOAD_SIZE);
    -  this._compressor   = new Compressor(this._log, compressorRole);
    -  this._decompressor = new Decompressor(this._log, decompressorRole);
    -  this._connection   = new Connection(this._log, firstStreamId, settings);
    -
    -  pipeAndFilter(this._connection, this._compressor, filters.beforeCompression);
    -  pipeAndFilter(this._compressor, this._serializer, filters.beforeSerialization);
    -  pipeAndFilter(this._deserializer, this._decompressor, filters.afterDeserialization);
    -  pipeAndFilter(this._decompressor, this._connection, filters.afterDecompression);
    -};
    -
    -var noread = {};
    -Endpoint.prototype._read = function _read() {
    -  this._readableState.sync = true;
    -  var moreNeeded = noread, chunk;
    -  while (moreNeeded && (chunk = this._serializer.read())) {
    -    moreNeeded = this.push(chunk);
    -  }
    -  if (moreNeeded === noread) {
    -    this._serializer.once('readable', this._read.bind(this));
    -  }
    -  this._readableState.sync = false;
    -};
    -
    -Endpoint.prototype._write = function _write(chunk, encoding, done) {
    -  this._deserializer.write(chunk, encoding, done);
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    Management

    - -
    - -
  • - - -
  • -
    - -
    - -
    - -
    - -
    Endpoint.prototype._initializeManagement = function _initializeManagement() {
    -  this._connection.on('stream', this.emit.bind(this, 'stream'));
    -};
    -
    -Endpoint.prototype.createStream = function createStream() {
    -  return this._connection.createStream();
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    Error handling

    - -
    - -
  • - - -
  • -
    - -
    - -
    - -
    - -
    Endpoint.prototype._initializeErrorHandling = function _initializeErrorHandling() {
    -  this._serializer.on('error', this._error.bind(this, 'serializer'));
    -  this._deserializer.on('error', this._error.bind(this, 'deserializer'));
    -  this._compressor.on('error', this._error.bind(this, 'compressor'));
    -  this._decompressor.on('error', this._error.bind(this, 'decompressor'));
    -  this._connection.on('error', this._error.bind(this, 'connection'));
    -
    -  this._connection.on('peerError', this.emit.bind(this, 'peerError'));
    -};
    -
    -Endpoint.prototype._error = function _error(component, error) {
    -  this._log.fatal({ source: component, message: error }, 'Fatal error, closing connection');
    -  this.close(error);
    -  setImmediate(this.emit.bind(this, 'error', error));
    -};
    -
    -Endpoint.prototype.close = function close(error) {
    -  this._connection.close(error);
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    Bunyan serializers

    - -
    - -
  • - - -
  • -
    - -
    - -
    - -
    - -
    exports.serializers = {};
    -
    -var nextId = 0;
    -exports.serializers.e = function(endpoint) {
    -  if (!('id' in endpoint)) {
    -    endpoint.id = nextId;
    -    nextId += 1;
    -  }
    -  return endpoint.id;
    -};
    - -
  • - -
-
- - diff --git a/doc/flow.html b/doc/flow.html deleted file mode 100644 index db6a38bd..00000000 --- a/doc/flow.html +++ /dev/null @@ -1,792 +0,0 @@ - - - - - flow.js - - - - - -
-
- - - -
    - -
  • -
    -

    flow.js

    -
    -
  • - - - -
  • -
    - -
    - -
    - -
    - -
    var assert = require('assert');
    - -
  • - - -
  • -
    - -
    - -
    -

    The Flow class

    - -
    - -
  • - - -
  • -
    - -
    - -
    -

    Flow is a Duplex stream subclass which implements HTTP/2 flow control. It is designed to be -subclassed by Connection and the upstream component of Stream.

    - -
    - -
    var Duplex  = require('stream').Duplex;
    -
    -exports.Flow = Flow;
    - -
  • - - -
  • -
    - -
    - -
    -

    Public API

    - -
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • Event: 'error' (type): signals an error

      -
    • -
    • setInitialWindow(size): the initial flow control window size can be changed any time -(as described in the standard) using this method

      -
    • -
    • disableRemoteFlowControl(): sends a WINDOW_UPDATE signaling that we don't want flow control

      -
    • -
    • disableLocalFlowControl(): disables flow control for outgoing frames

      -
    • -
    -

    API for child classes

    - -
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • new Flow([flowControlId]): creating a new flow that will listen for WINDOW_UPDATES frames -with the given flowControlId (or every update frame if not given)

      -
    • -
    • _send(): called when more frames should be pushed. The child class is expected to override -this (instead of the _read method of the Duplex class).

      -
    • -
    • _receive(frame, readyCallback): called when there's an incoming frame. The child class is -expected to override this (instead of the _write method of the Duplex class).

      -
    • -
    • push(frame): bool: schedules frame for sending.

      -

      Returns true if it needs more frames in the output queue, false if the output queue is -full, and null if did not push the frame into the output queue (instead, it pushed it into -the flow control queue).

      -
    • -
    • read(limit): frame: like the regular read, but the 'flow control size' (0 for non-DATA -frames, length of the payload for DATA frames) of the returned frame will be under limit. -Small exception: pass -1 as limit if the max. flow control size is 0. read(0) means the -same thing as in the original API.

      -
    • -
    • getLastQueuedFrame(): frame: returns the last frame in output buffers

      -
    • -
    • _log: the Flow class uses the _log object of the parent

      -
    • -
    -

    Constructor

    - -
    - -
  • - - -
  • -
    - -
    - -
    -

    When a HTTP/2.0 connection is first established, new streams are created with an initial flow -control window size of 65535 bytes.

    - -
    - -
    var INITIAL_WINDOW_SIZE = 65535;
    - -
  • - - -
  • -
    - -
    - -
    -

    flowControlId is needed if only specific WINDOW_UPDATEs should be watched.

    - -
    - -
    function Flow(flowControlId) {
    -  Duplex.call(this, { objectMode: true });
    -
    -  this._window = this._initialWindow = INITIAL_WINDOW_SIZE;
    -  this._flowControlId = flowControlId;
    -  this._queue = [];
    -  this._ended = false;
    -  this._received = 0;
    -  this._remoteFlowControlDisabled = false;
    -}
    -Flow.prototype = Object.create(Duplex.prototype, { constructor: { value: Flow } });
    - -
  • - - -
  • -
    - -
    - -
    -

    Incoming frames

    - -
    - -
  • - - -
  • -
    - -
    - -
    -

    _receive is called when there's an incoming frame.

    - -
    - -
    Flow.prototype._receive = function _receive(frame, callback) {
    -  throw new Error('The _receive(frame, callback) method has to be overridden by the child class!');
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    _receive is called by _write which in turn is called by Duplex when someone write()s -to the flow. It emits the 'receiving' event and notifies the window size tracking code if the -incoming frame is a WINDOW_UPDATE.

    - -
    - -
    Flow.prototype._write = function _write(frame, encoding, callback) {
    -  if (frame.flags.END_STREAM || (frame.type === 'RST_STREAM')) {
    -    this._ended = true;
    -  }
    -
    -  if ((frame.type === 'DATA') && (frame.data.length > 0) && !this._remoteFlowControlDisabled) {
    -    this._receive(frame, function() {
    -      this._received += frame.data.length;
    -      if (!this._restoreWindowTimer) {
    -        this._restoreWindowTimer = setImmediate(this._restoreWindow.bind(this));
    -      }
    -      callback();
    -    }.bind(this));
    -  }
    -
    -  else {
    -    this._receive(frame, callback);
    -  }
    -
    -  if ((frame.type === 'WINDOW_UPDATE') &&
    -      ((this._flowControlId === undefined) || (frame.stream === this._flowControlId))) {
    -    this._updateWindow(frame);
    -  }
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    _restoreWindow basically acknowledges the DATA frames received since it's last call. It sends -a WINDOW_UPDATE that restores the flow control window of the remote end.

    - -
    - -
    Flow.prototype._restoreWindow = function _restoreWindow() {
    -  delete this._restoreWindowTimer;
    -  if (!this._ended && !this._remoteFlowControlDisabled && (this._received > 0)) {
    -    this.push({
    -      type: 'WINDOW_UPDATE',
    -      flags: {},
    -      stream: this._flowControlId,
    -      window_size: this._received
    -    });
    -    this._received = 0;
    -  }
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    Must be called after sending a SETTINGS frame that turns off flow control on the remote side.

    - -
    - -
    Flow.prototype.disableRemoteFlowControl = function disableRemoteFlowControl() {
    -  this._log.debug('Turning off remote flow control');
    -  this._remoteFlowControlDisabled = true;
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    Outgoing frames - sending procedure

    - -
    - -
  • - - -
  • -
    - -
    - -
    -
                                        flow
    -           +-------------------------------------------------+
    -           |                                                 |
    -           +--------+           +---------+                  |
    -   read()  | output |  _read()  | flow    |  _send()         |
    -<----------|        |<----------| control |<-------------    |
    -           | buffer |           | buffer  |                  |
    -           +--------+           +---------+                  |
    -           | input  |                                        |
    ----------->|        |----------------------------------->    |
    -  write()  | buffer |  _write()              _receive()      |
    -           +--------+                                        |
    -           |                                                 |
    -           +-------------------------------------------------+
    -

    _send is called when more frames should be pushed to the output buffer.

    - -
    - -
    Flow.prototype._send = function _send() {
    -  throw new Error('The _send() method has to be overridden by the child class!');
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    _send is called by _read which is in turn called by Duplex when it wants to have more -items in the output queue.

    - -
    - -
    Flow.prototype._read = function _read() {
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • if the flow control queue is empty, then let the user push more frames
    • -
    - -
    - -
      if (this._queue.length === 0) {
    -    this._send();
    -  }
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • if there are items in the flow control queue, then let's put them into the output queue (to -the extent it is possible with respect to the window size and output queue feedback)
    • -
    - -
    - -
      else if (this._window > 0) {
    -    this._readableState.sync = true; // to avoid reentrant calls
    -    do {
    -      var moreNeeded = this._push(this._queue[0]);
    -      if (moreNeeded !== null) {
    -        this._queue.shift();
    -      }
    -    } while (moreNeeded && (this._queue.length > 0));
    -    this._readableState.sync = false;
    -
    -    assert((moreNeeded == false) ||                              // * output queue is full
    -           (this._queue.length === 0) ||                         // * flow control queue is empty
    -           (!this._window && (this._queue[0].type === 'DATA'))); // * waiting for window update
    -  }
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • otherwise, come back when the flow control window is positive
    • -
    - -
    - -
      else {
    -    this.once('window_update', this._read);
    -  }
    -};
    -
    -var MAX_PAYLOAD_SIZE = 4096; // Must not be greater than MAX_HTTP_PAYLOAD_SIZE which is 16383
    - -
  • - - -
  • -
    - -
    - -
    -

    read(limit) is like the read of the Readable class, but it guarantess that the 'flow control -size' (0 for non-DATA frames, length of the payload for DATA frames) of the returned frame will -be under limit.

    - -
    - -
    Flow.prototype.read = function read(limit) {
    -  if (limit === 0) {
    -    return Duplex.prototype.read.call(this, 0);
    -  } else if (limit === -1) {
    -    limit = 0;
    -  } else if ((limit === undefined) || (limit > MAX_PAYLOAD_SIZE)) {
    -    limit = MAX_PAYLOAD_SIZE;
    -  }
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • Looking at the first frame in the queue without pulling it out if possible. This will save -a costly unshift if the frame proves to be too large to return.
    • -
    - -
    - -
      var firstInQueue = this._readableState.buffer[0];
    -  var frame = firstInQueue || Duplex.prototype.read.call(this);
    -
    -  if ((frame === null) || (frame.type !== 'DATA') || (frame.data.length <= limit)) {
    -    if (firstInQueue) {
    -      Duplex.prototype.read.call(this);
    -    }
    -    return frame;
    -  }
    -
    -  else if (limit <= 0) {
    -    if (!firstInQueue) {
    -      this.unshift(frame);
    -    }
    -    return null;
    -  }
    -
    -  else {
    -    this._log.trace({ frame: frame, size: frame.data.length, forwardable: limit },
    -                    'Splitting out forwardable part of a DATA frame.');
    -    var forwardable = {
    -      type: 'DATA',
    -      flags: {},
    -      stream: frame.stream,
    -      data: frame.data.slice(0, limit)
    -    };
    -    frame.data = frame.data.slice(limit);
    -
    -    if (!firstInQueue) {
    -      this.unshift(frame);
    -    }
    -    return forwardable;
    -  }
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    _parentPush pushes the given frame into the output queue

    - -
    - -
    Flow.prototype._parentPush = function _parentPush(frame) {
    -  this._log.trace({ frame: frame }, 'Pushing frame into the output queue');
    -
    -  if (frame && (frame.type === 'DATA') && (this._window !== Infinity)) {
    -    this._log.trace({ window: this._window, by: frame.data.length },
    -                    'Decreasing flow control window size.');
    -    this._window -= frame.data.length;
    -    assert(this._window >= 0);
    -  }
    -
    -  return Duplex.prototype.push.call(this, frame);
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    _push(frame) pushes frame into the output queue and decreases the flow control window size. -It is capable of splitting DATA frames into smaller parts, if the window size is not enough to -push the whole frame. The return value is similar to push except that it returns null if it -did not push the whole frame to the output queue (but maybe it did push part of the frame).

    - -
    - -
    Flow.prototype._push = function _push(frame) {
    -  var data = frame && (frame.type === 'DATA') && frame.data;
    -
    -  if (!data || (data.length <= this._window)) {
    -    return this._parentPush(frame);
    -  }
    -
    -  else if (this._window <= 0) {
    -    return null;
    -  }
    -
    -  else {
    -    this._log.trace({ frame: frame, size: frame.data.length, forwardable: this._window },
    -                    'Splitting out forwardable part of a DATA frame.');
    -    frame.data = data.slice(this._window);
    -    this._parentPush({
    -      type: 'DATA',
    -      flags: {},
    -      stream: frame.stream,
    -      data: data.slice(0, this._window)
    -    });
    -    return null;
    -  }
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    Push frame into the flow control queue, or if it's empty, then directly into the output queue

    - -
    - -
    Flow.prototype.push = function push(frame) {
    -  if (frame === null) {
    -    this._log.debug('Enqueueing outgoing End Of Stream');
    -  } else {
    -    this._log.debug({ frame: frame }, 'Enqueueing outgoing frame');
    -  }
    -
    -  var moreNeeded = null;
    -  if (this._queue.length === 0) {
    -    moreNeeded = this._push(frame);
    -  }
    -
    -  if (moreNeeded === null) {
    -    this._queue.push(frame);
    -  }
    -
    -  return moreNeeded;
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    getLastQueuedFrame returns the last frame in output buffers. This is primarily used by the -Stream class to mark the last frame with END_STREAM flag.

    - -
    - -
    Flow.prototype.getLastQueuedFrame = function getLastQueuedFrame() {
    -  var readableQueue = this._readableState.buffer;
    -  return this._queue[this._queue.length - 1] || readableQueue[readableQueue.length - 1];
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    Outgoing frames - managing the window size

    - -
    - -
  • - - -
  • -
    - -
    - -
    -

    Flow control window size is manipulated using the _increaseWindow method.

    -
      -
    • Invoking it with Infinite means turning off flow control. Flow control cannot be enabled -again once disabled. Any attempt to re-enable flow control MUST be rejected with a -FLOW_CONTROL_ERROR error code.
    • -
    • A sender MUST NOT allow a flow control window to exceed 2^31 - 1 bytes. The action taken -depends on it being a stream or the connection itself.
    • -
    - -
    - -
    var WINDOW_SIZE_LIMIT = Math.pow(2, 31) - 1;
    -
    -Flow.prototype._increaseWindow = function _increaseWindow(size) {
    -  if ((this._window === Infinity) && (size !== Infinity)) {
    -    this._log.error('Trying to increase flow control window after flow control was turned off.');
    -    this.emit('error', 'FLOW_CONTROL_ERROR');
    -  } else {
    -    this._log.trace({ window: this._window, by: size }, 'Increasing flow control window size.');
    -    this._window += size;
    -    if ((this._window !== Infinity) && (this._window > WINDOW_SIZE_LIMIT)) {
    -      this._log.error('Flow control window grew too large.');
    -      this.emit('error', 'FLOW_CONTROL_ERROR');
    -    } else {
    -      this.emit('window_update');
    -    }
    -  }
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    The _updateWindow method gets called every time there's an incoming WINDOW_UPDATE frame. It -modifies the flow control window:

    -
      -
    • Flow control can be disabled for an individual stream by sending a WINDOW_UPDATE with the -END_FLOW_CONTROL flag set. The payload of a WINDOW_UPDATE frame that has the END_FLOW_CONTROL -flag set is ignored.
    • -
    • A sender that receives a WINDOW_UPDATE frame updates the corresponding window by the amount -specified in the frame.
    • -
    - -
    - -
    Flow.prototype._updateWindow = function _updateWindow(frame) {
    -  this._increaseWindow(frame.flags.END_FLOW_CONTROL ? Infinity : frame.window_size);
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    A SETTINGS frame can alter the initial flow control window size for all current streams. When the -value of SETTINGS_INITIAL_WINDOW_SIZE changes, a receiver MUST adjust the size of all stream by -calling the setInitialWindow method. The window size has to be modified by the difference -between the new value and the old value.

    - -
    - -
    Flow.prototype.setInitialWindow = function setInitialWindow(initialWindow) {
    -  this._increaseWindow(initialWindow - this._initialWindow);
    -  this._initialWindow = initialWindow;
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    Flow control for outgoing frames can be disabled by the peer with various methods.

    - -
    - -
    Flow.prototype.disableLocalFlowControl = function disableLocalFlowControl() {
    -  this._increaseWindow(Infinity);
    -};
    - -
  • - -
-
- - diff --git a/doc/framer.html b/doc/framer.html deleted file mode 100644 index aff6d81e..00000000 --- a/doc/framer.html +++ /dev/null @@ -1,1387 +0,0 @@ - - - - - framer.js - - - - - -
-
- - - -
    - -
  • -
    -

    framer.js

    -
    -
  • - - - -
  • -
    - -
    - -
    -

    The framer consists of two Transform Stream subclasses that operate in object mode: -the Serializer and the Deserializer

    - -
    - -
    var assert = require('assert');
    -
    -var Transform = require('stream').Transform;
    -
    -exports.Serializer = Serializer;
    -exports.Deserializer = Deserializer;
    -
    -var logData = Boolean(process.env.HTTP2_LOG_DATA);
    - -
  • - - -
  • -
    - -
    - -
    -

    Serializer

    - -
    - -
  • - - -
  • -
    - -
    - -
    -
    Frame Objects
    -* * * * * * * --+---------------------------
    -                |                          |
    -                v                          v           Buffers
    - [] -----> Payload Ser. --[buffers]--> Header Ser. --> * * * *
    -empty      adds payload                adds header
    -array        buffers                     buffer
    - -
    - -
    function Serializer(log, sizeLimit) {
    -  this._log = log.child({ component: 'serializer' });
    -  this._sizeLimit = sizeLimit || MAX_PAYLOAD_SIZE;
    -  Transform.call(this, { objectMode: true });
    -}
    -Serializer.prototype = Object.create(Transform.prototype, { constructor: { value: Serializer } });
    - -
  • - - -
  • -
    - -
    - -
    -

    When there's an incoming frame object, it first generates the frame type specific part of the -frame (payload), and then then adds the header part which holds fields that are common to all -frame types (like the length of the payload).

    - -
    - -
    Serializer.prototype._transform = function _transform(frame, encoding, done) {
    -  this._log.trace({ frame: frame }, 'Outgoing frame');
    -
    -  assert(frame.type in Serializer, 'Unknown frame type: ' + frame.type);
    -
    -  var buffers = [];
    -  Serializer[frame.type](frame, buffers);
    -  Serializer.commonHeader(frame, buffers);
    -
    -  assert(buffers[0].readUInt16BE(0) <= this._sizeLimit, 'Frame too large!');
    -
    -  for (var i = 0; i < buffers.length; i++) {
    -    if (logData) {
    -      this._log.trace({ data: buffers[i] }, 'Outgoing data');
    -    }
    -    this.push(buffers[i]);
    -  }
    -
    -  done();
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    Deserializer

    - -
    - -
  • - - -
  • -
    - -
    - -
    -
    Buffers
    -* * * * --------+-------------------------
    -                |                        |
    -                v                        v           Frame Objects
    - {} -----> Header Des. --{frame}--> Payload Des. --> * * * * * * *
    -empty      adds parsed              adds parsed
    -object  header properties        payload properties
    - -
    - -
    function Deserializer(log, sizeLimit) {
    -  this._log = log.child({ component: 'deserializer' });
    -  this._sizeLimit = sizeLimit || MAX_PAYLOAD_SIZE;
    -  Transform.call(this, { objectMode: true });
    -  this._next(COMMON_HEADER_SIZE);
    -}
    -Deserializer.prototype = Object.create(Transform.prototype, { constructor: { value: Deserializer } });
    - -
  • - - -
  • -
    - -
    - -
    -

    The Deserializer is stateful, and it's two main alternating states are: waiting for header and -waiting for payload. The state is stored in the boolean property _waitingForHeader.

    -

    When entering a new state, a _buffer is created that will hold the accumulated data (header or -payload). The _cursor is used to track the progress.

    - -
    - -
    Deserializer.prototype._next = function(size) {
    -  this._cursor = 0;
    -  this._buffer = new Buffer(size);
    -  this._waitingForHeader = !this._waitingForHeader;
    -  if (this._waitingForHeader) {
    -    this._frame = {};
    -  }
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    Parsing an incoming buffer is an iterative process because it can hold multiple frames if it's -large enough. A cursor is used to track the progress in parsing the incoming chunk.

    - -
    - -
    Deserializer.prototype._transform = function _transform(chunk, encoding, done) {
    -  var cursor = 0;
    -
    -  if (logData) {
    -    this._log.trace({ data: chunk }, 'Incoming data');
    -  }
    -
    -  while(cursor < chunk.length) {
    - -
  • - - -
  • -
    - -
    - -
    -

    The content of an incoming buffer is first copied to _buffer. If it can't hold the full -chunk, then only a part of it is copied.

    - -
    - -
        var toCopy = Math.min(chunk.length - cursor, this._buffer.length - this._cursor);
    -    chunk.copy(this._buffer, this._cursor, cursor, cursor + toCopy);
    -    this._cursor += toCopy;
    -    cursor += toCopy;
    - -
  • - - -
  • -
    - -
    - -
    -

    When _buffer is full, it's content gets parsed either as header or payload depending on -the actual state.

    -

    If it's header then the parsed data is stored in a temporary variable and then the -deserializer waits for the specified length payload.

    - -
    - -
        if ((this._cursor === this._buffer.length) && this._waitingForHeader) {
    -      var payloadSize = Deserializer.commonHeader(this._buffer, this._frame);
    -      if (payloadSize <= this._sizeLimit) {
    -        this._next(payloadSize);
    -      } else {
    -        this.emit('error', 'FRAME_TOO_LARGE');
    -        return;
    -      }
    -    }
    - -
  • - - -
  • -
    - -
    - -
    -

    If it's payload then the the frame object is finalized and then gets pushed out. -Unknown frame types are ignored.

    -

    Note: If we just finished the parsing of a header and the payload length is 0, this branch -will also run.

    - -
    - -
        if ((this._cursor === this._buffer.length) && !this._waitingForHeader) {
    -      if (this._frame.type) {
    -        var error = Deserializer[this._frame.type](this._buffer, this._frame);
    -        if (error) {
    -          this._log.error('Incoming frame parsing error: ' + error);
    -          this.emit('error', 'PROTOCOL_ERROR');
    -        } else {
    -          this._log.trace({ frame: this._frame }, 'Incoming frame');
    -          this.push(this._frame);
    -        }
    -      } else {
    -        this._log.warn({ frame: this._frame }, 'Unknown type incoming frame');
    -      }
    -      this._next(COMMON_HEADER_SIZE);
    -    }
    -  }
    -
    -  done();
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    Frame Header

    - -
    - -
  • - - -
  • -
    - -
    - -
    -

    HTTP/2.0 frames share a common base format consisting of an 8-byte header followed by 0 to 65535 -bytes of data.

    -

    Additional size limits can be set by specific application uses. HTTP limits the frame size to -16,383 octets.

    -
     0                   1                   2                   3
    - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    -|         Length (16)           |   Type (8)    |   Flags (8)   |
    -+-+-------------+---------------+-------------------------------+
    -|R|                 Stream Identifier (31)                      |
    -+-+-------------------------------------------------------------+
    -|                     Frame Data (0...)                       ...
    -+---------------------------------------------------------------+
    -

    The fields of the frame header are defined as:

    -
      -
    • Length: -The length of the frame data expressed as an unsigned 16-bit integer. The 8 bytes of the frame -header are not included in this value.

      -
    • -
    • Type: -The 8-bit type of the frame. The frame type determines how the remainder of the frame header -and data are interpreted. Implementations MUST ignore unsupported and unrecognized frame types.

      -
    • -
    • Flags: -An 8-bit field reserved for frame-type specific boolean flags.

      -

      Flags are assigned semantics specific to the indicated frame type. Flags that have no defined -semantics for a particular frame type MUST be ignored, and MUST be left unset (0) when sending.

      -
    • -
    • R: -A reserved 1-bit field. The semantics of this bit are undefined and the bit MUST remain unset -(0) when sending and MUST be ignored when receiving.

      -
    • -
    • Stream Identifier: -A 31-bit stream identifier (see Section 3.4.1). A value 0 is reserved for frames that are -associated with the connection as a whole as opposed to an individual stream.

      -
    • -
    -

    The structure and content of the remaining frame data is dependent entirely on the frame type.

    - -
    - -
    var COMMON_HEADER_SIZE = 8;
    -var MAX_PAYLOAD_SIZE = 65535;
    -
    -var frameTypes = [];
    -
    -var frameFlags = {};
    -
    -var genericAttributes = ['type', 'flags', 'stream'];
    -
    -var typeSpecificAttributes = {};
    -
    -Serializer.commonHeader = function writeCommonHeader(frame, buffers) {
    -  var headerBuffer = new Buffer(COMMON_HEADER_SIZE);
    -
    -  var size = 0;
    -  for (var i = 0; i < buffers.length; i++) {
    -    size += buffers[i].length;
    -  }
    -  assert(size <= MAX_PAYLOAD_SIZE, size);
    -  headerBuffer.writeUInt16BE(size, 0);
    -
    -  var typeId = frameTypes.indexOf(frame.type);  // If we are here then the type is valid for sure
    -  headerBuffer.writeUInt8(typeId, 2);
    -
    -  var flagByte = 0;
    -  for (var flag in frame.flags) {
    -    var position = frameFlags[frame.type].indexOf(flag);
    -    assert(position !== -1, 'Unknown flag for frame type ' + frame.type + ': ' + flag);
    -    if (frame.flags[flag]) {
    -      flagByte |= (1 << position);
    -    }
    -  }
    -  headerBuffer.writeUInt8(flagByte, 3);
    -
    -  assert((0 <= frame.stream) && (frame.stream < 0x7fffffff), frame.stream);
    -  headerBuffer.writeUInt32BE(frame.stream || 0, 4);
    -
    -  buffers.unshift(headerBuffer);
    -};
    -
    -Deserializer.commonHeader = function readCommonHeader(buffer, frame) {
    -  var length = buffer.readUInt16BE(0);
    -
    -  frame.type = frameTypes[buffer.readUInt8(2)];
    -
    -  frame.flags = {};
    -  var flagByte = buffer.readUInt8(3);
    -  var definedFlags = frameFlags[frame.type];
    -  for (var i = 0; i < definedFlags.length; i++) {
    -    frame.flags[definedFlags[i]] = Boolean(flagByte & (1 << i));
    -  }
    -
    -  frame.stream = buffer.readUInt32BE(4) & 0x7fffffff;
    -
    -  return length;
    -};
    -
    -
    - -
  • - - -
  • -
    - -
    - -
    -

    Frame types

    - -
    - -
  • - - -
  • -
    - -
    - -
    -

    Every frame type is registered in the following places:

    -
      -
    • frameTypes: a register of frame type codes (used by commonHeader())
    • -
    • frameFlags: a register of valid flags for frame types (used by commonHeader())
    • -
    • typeSpecificAttributes: a register of frame specific frame object attributes (used by -logging code and also serves as documentation for frame objects)
    • -
    -

    DATA Frames

    - -
    - -
  • - - -
  • -
    - -
    - -
    -

    DATA frames (type=0x0) convey arbitrary, variable-length sequences of octets associated with a -stream.

    -

    The DATA frame defines the following flags:

    -
      -
    • END_STREAM (0x1): -Bit 1 being set indicates that this frame is the last that the endpoint will send for the -identified stream.
    • -
    • RESERVED (0x2): -Bit 2 is reserved for future use.
    • -
    - -
    - -
    frameTypes[0x0] = 'DATA';
    -
    -frameFlags.DATA = ['END_STREAM', 'RESERVED'];
    -
    -typeSpecificAttributes.DATA = ['data'];
    -
    -Serializer.DATA = function writeData(frame, buffers) {
    -  buffers.push(frame.data);
    -};
    -
    -Deserializer.DATA = function readData(buffer, frame) {
    -  frame.data = buffer;
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    HEADERS

    - -
    - -
  • - - -
  • -
    - -
    - -
    -

    The HEADERS frame (type=0x1) allows the sender to create a stream.

    -

    The HEADERS frame defines the following flags:

    -
      -
    • END_STREAM (0x1): -Bit 1 being set indicates that this frame is the last that the endpoint will send for the -identified stream.
    • -
    • RESERVED (0x2): -Bit 2 is reserved for future use.
    • -
    • END_HEADERS (0x4): -The END_HEADERS bit indicates that this frame contains the entire payload necessary to provide -a complete set of headers.
    • -
    • PRIORITY (0x8): -Bit 4 being set indicates that the first four octets of this frame contain a single reserved -bit and a 31-bit priority.
    • -
    - -
    - -
    frameTypes[0x1] = 'HEADERS';
    -
    -frameFlags.HEADERS = ['END_STREAM', 'RESERVED', 'END_HEADERS', 'PRIORITY'];
    -
    -typeSpecificAttributes.HEADERS = ['priority', 'headers', 'data'];
    - -
  • - - -
  • -
    - -
    - -
    -
     0                   1                   2                   3
    - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    -|X|               (Optional) Priority (31)                      |
    -+-+-------------------------------------------------------------+
    -|                    Header Block (*)                         ...
    -+---------------------------------------------------------------+
    -

    The payload of a HEADERS frame contains a Headers Block

    - -
    - -
    Serializer.HEADERS = function writeHeadersPriority(frame, buffers) {
    -  if (frame.flags.PRIORITY) {
    -    var buffer = new Buffer(4);
    -    assert((0 <= frame.priority) && (frame.priority <= 0xffffffff), frame.priority);
    -    buffer.writeUInt32BE(frame.priority, 0);
    -    buffers.push(buffer);
    -  }
    -  buffers.push(frame.data);
    -};
    -
    -Deserializer.HEADERS = function readHeadersPriority(buffer, frame) {
    -  if (frame.flags.PRIORITY) {
    -    frame.priority = buffer.readUInt32BE(0) & 0x7fffffff;
    -    frame.data = buffer.slice(4);
    -  } else {
    -    frame.data = buffer;
    -  }
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    PRIORITY

    - -
    - -
  • - - -
  • -
    - -
    - -
    -

    The PRIORITY frame (type=0x2) specifies the sender-advised priority of a stream.

    -

    The PRIORITY frame does not define any flags.

    - -
    - -
    frameTypes[0x2] = 'PRIORITY';
    -
    -frameFlags.PRIORITY = [];
    -
    -typeSpecificAttributes.PRIORITY = ['priority'];
    - -
  • - - -
  • -
    - -
    - -
    -
     0                   1                   2                   3
    - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    -|X|                   Priority (31)                             |
    -+-+-------------------------------------------------------------+
    -

    The payload of a PRIORITY frame contains a single reserved bit and a 31-bit priority.

    - -
    - -
    Serializer.PRIORITY = function writePriority(frame, buffers) {
    -  var buffer = new Buffer(4);
    -  buffer.writeUInt32BE(frame.priority, 0);
    -  buffers.push(buffer);
    -};
    -
    -Deserializer.PRIORITY = function readPriority(buffer, frame) {
    -  frame.priority = buffer.readUInt32BE(0);
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    RST_STREAM

    - -
    - -
  • - - -
  • -
    - -
    - -
    -

    The RST_STREAM frame (type=0x3) allows for abnormal termination of a stream.

    -

    No type-flags are defined.

    - -
    - -
    frameTypes[0x3] = 'RST_STREAM';
    -
    -frameFlags.RST_STREAM = [];
    -
    -typeSpecificAttributes.RST_STREAM = ['error'];
    - -
  • - - -
  • -
    - -
    - -
    -
     0                   1                   2                   3
    - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    -|                         Error Code (32)                       |
    -+---------------------------------------------------------------+
    -

    The RST_STREAM frame contains a single unsigned, 32-bit integer identifying the error -code (see Error Codes). The error code indicates why the stream is being terminated.

    - -
    - -
    Serializer.RST_STREAM = function writeRstStream(frame, buffers) {
    -  var buffer = new Buffer(4);
    -  var code = errorCodes.indexOf(frame.error);
    -  assert((0 <= code) && (code <= 0xffffffff), code);
    -  buffer.writeUInt32BE(code, 0);
    -  buffers.push(buffer);
    -};
    -
    -Deserializer.RST_STREAM = function readRstStream(buffer, frame) {
    -  frame.error = errorCodes[buffer.readUInt32BE(0)];
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    SETTINGS

    - -
    - -
  • - - -
  • -
    - -
    - -
    -

    The SETTINGS frame (type=0x4) conveys configuration parameters that affect how endpoints -communicate.

    -

    The SETTINGS frame does not define any flags.

    - -
    - -
    frameTypes[0x4] = 'SETTINGS';
    -
    -frameFlags.SETTINGS = [];
    -
    -typeSpecificAttributes.SETTINGS = ['settings'];
    - -
  • - - -
  • -
    - -
    - -
    -

    The payload of a SETTINGS frame consists of zero or more settings. Each setting consists of an -8-bit reserved field, an unsigned 24-bit setting identifier, and an unsigned 32-bit value.

    -
     0                   1                   2                   3
    - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    -|  Reserved(8)  |             Setting Identifier (24)           |
    -+---------------+-----------------------------------------------+
    -|                        Value (32)                             |
    -+---------------------------------------------------------------+
    -

    Each setting in a SETTINGS frame replaces the existing value for that setting. Settings are -processed in the order in which they appear, and a receiver of a SETTINGS frame does not need to -maintain any state other than the current value of settings. Therefore, the value of a setting -is the last value that is seen by a receiver. This permits the inclusion of the same settings -multiple times in the same SETTINGS frame, though doing so does nothing other than waste -connection capacity.

    - -
    - -
    Serializer.SETTINGS = function writeSettings(frame, buffers) {
    -  var settings = [], settingsLeft = Object.keys(frame.settings);
    -  definedSettings.forEach(function(setting, id) {
    -    if (setting.name in frame.settings) {
    -      settingsLeft.splice(settingsLeft.indexOf(setting.name), 1);
    -      var value = frame.settings[setting.name];
    -      settings.push({ id: id, value: setting.flag ? Boolean(value) : value });
    -    }
    -  });
    -  assert(settingsLeft.length === 0, 'Unknown settings: ' + settingsLeft.join(', '));
    -
    -  var buffer = new Buffer(settings.length * 8);
    -  for (var i = 0; i < settings.length; i++) {
    -    buffer.writeUInt32BE(settings[i].id & 0xffffff, i*8);
    -    buffer.writeUInt32BE(settings[i].value, i*8 + 4);
    -  }
    -
    -  buffers.push(buffer);
    -};
    -
    -Deserializer.SETTINGS = function readSettings(buffer, frame) {
    -  frame.settings = {};
    -
    -  if (buffer.length % 8 !== 0) {
    -    return 'Invalid SETTINGS frame';
    -  }
    -  for (var i = 0; i < buffer.length / 8; i++) {
    -    var id = buffer.readUInt32BE(i*8) & 0xffffff;
    -    var setting = definedSettings[id];
    -    if (setting) {
    -      var value = buffer.readUInt32BE(i*8 + 4);
    -      frame.settings[setting.name] = setting.flag ? Boolean(value & 0x1) : value;
    -    } else {
    -      /* Unknown setting, ignoring */
    -    }
    -  }
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    The following settings are defined:

    - -
    - -
    var definedSettings = [];
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • SETTINGS_MAX_CONCURRENT_STREAMS (4): -indicates the maximum number of concurrent streams that the sender will allow.
    • -
    - -
    - -
    definedSettings[4] = { name: 'SETTINGS_MAX_CONCURRENT_STREAMS', flag: false };
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • SETTINGS_INITIAL_WINDOW_SIZE (7): -indicates the sender's initial stream window size (in bytes) for new streams.
    • -
    - -
    - -
    definedSettings[7] = { name: 'SETTINGS_INITIAL_WINDOW_SIZE', flag: false };
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • SETTINGS_FLOW_CONTROL_OPTIONS (10): -indicates that streams directed to the sender will not be subject to flow control. The least -significant bit (0x1) is set to indicate that new streams are not flow controlled. All other -bits are reserved.
    • -
    - -
    - -
    definedSettings[10] = { name: 'SETTINGS_FLOW_CONTROL_OPTIONS', flag: true };
    - -
  • - - -
  • -
    - -
    - -
    -

    PUSH_PROMISE

    - -
    - -
  • - - -
  • -
    - -
    - -
    -

    The PUSH_PROMISE frame (type=0x5) is used to notify the peer endpoint in advance of streams the -sender intends to initiate.

    -

    The PUSH_PROMISE frame defines the following flags:

    -
      -
    • END_PUSH_PROMISE (0x1): -The END_PUSH_PROMISE bit indicates that this frame contains the entire payload necessary to -provide a complete set of headers.
    • -
    - -
    - -
    frameTypes[0x5] = 'PUSH_PROMISE';
    -
    -frameFlags.PUSH_PROMISE = ['END_PUSH_PROMISE'];
    -
    -typeSpecificAttributes.PUSH_PROMISE = ['promised_stream', 'headers', 'data'];
    - -
  • - - -
  • -
    - -
    - -
    -
     0                   1                   2                   3
    - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    -|X|                Promised-Stream-ID (31)                      |
    -+-+-------------------------------------------------------------+
    -|                    Header Block (*)                         ...
    -+---------------------------------------------------------------+
    -

    The PUSH_PROMISE frame includes the unsigned 31-bit identifier of -the stream the endpoint plans to create along with a minimal set of headers that provide -additional context for the stream.

    - -
    - -
    Serializer.PUSH_PROMISE = function writePushPromise(frame, buffers) {
    -  var buffer = new Buffer(4);
    -
    -  var promised_stream = frame.promised_stream;
    -  assert((0 <= promised_stream) && (promised_stream <= 0x7fffffff), promised_stream);
    -  buffer.writeUInt32BE(promised_stream, 0);
    -
    -  buffers.push(buffer);
    -  buffers.push(frame.data);
    -};
    -
    -Deserializer.PUSH_PROMISE = function readPushPromise(buffer, frame) {
    -  frame.promised_stream = buffer.readUInt32BE(0) & 0x7fffffff;
    -  frame.data = buffer.slice(4);
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    PING

    - -
    - -
  • - - -
  • -
    - -
    - -
    -

    The PING frame (type=0x6) is a mechanism for measuring a minimal round-trip time from the -sender, as well as determining whether an idle connection is still functional.

    -

    The PING frame defines one type-specific flag:

    -
      -
    • PONG (0x2): -Bit 2 being set indicates that this PING frame is a PING response.
    • -
    - -
    - -
    frameTypes[0x6] = 'PING';
    -
    -frameFlags.PING = ['PONG'];
    -
    -typeSpecificAttributes.PING = ['data'];
    - -
  • - - -
  • -
    - -
    - -
    -

    In addition to the frame header, PING frames MUST contain 8 additional octets of opaque data.

    - -
    - -
    Serializer.PING = function writePing(frame, buffers) {
    -  buffers.push(frame.data);
    -};
    -
    -Deserializer.PING = function readPing(buffer, frame) {
    -  if (buffer.length !== 8) {
    -    return 'Invalid size PING frame';
    -  }
    -  frame.data = buffer;
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    GOAWAY

    - -
    - -
  • - - -
  • -
    - -
    - -
    -

    The GOAWAY frame (type=0x7) informs the remote peer to stop creating streams on this connection.

    -

    The GOAWAY frame does not define any flags.

    - -
    - -
    frameTypes[0x7] = 'GOAWAY';
    -
    -frameFlags.GOAWAY = [];
    -
    -typeSpecificAttributes.GOAWAY = ['last_stream', 'error'];
    - -
  • - - -
  • -
    - -
    - -
    -
     0                   1                   2                   3
    - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    -|X|                  Last-Stream-ID (31)                        |
    -+-+-------------------------------------------------------------+
    -|                      Error Code (32)                          |
    -+---------------------------------------------------------------+
    -

    The last stream identifier in the GOAWAY frame contains the highest numbered stream identifier -for which the sender of the GOAWAY frame has received frames on and might have taken some action -on.

    -

    The GOAWAY frame also contains a 32-bit error code (see Error Codes) that contains the reason for -closing the connection.

    - -
    - -
    Serializer.GOAWAY = function writeGoaway(frame, buffers) {
    -  var buffer = new Buffer(8);
    -
    -  var last_stream = frame.last_stream;
    -  assert((0 <= last_stream) && (last_stream <= 0x7fffffff), last_stream);
    -  buffer.writeUInt32BE(last_stream, 0);
    -
    -  var code = errorCodes.indexOf(frame.error);
    -  assert((0 <= code) && (code <= 0xffffffff), code);
    -  buffer.writeUInt32BE(code, 4);
    -
    -  buffers.push(buffer);
    -};
    -
    -Deserializer.GOAWAY = function readGoaway(buffer, frame) {
    -  frame.last_stream = buffer.readUInt32BE(0) & 0x7fffffff;
    -  frame.error = errorCodes[buffer.readUInt32BE(4)];
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    WINDOW_UPDATE

    - -
    - -
  • - - -
  • -
    - -
    - -
    -

    The WINDOW_UPDATE frame (type=0x9) is used to implement flow control.

    -

    The WINDOW_UPDATE frame does not define any flags.

    - -
    - -
    frameTypes[0x9] = 'WINDOW_UPDATE';
    -
    -frameFlags.WINDOW_UPDATE = [];
    -
    -typeSpecificAttributes.WINDOW_UPDATE = ['window_size'];
    - -
  • - - -
  • -
    - -
    - -
    -

    The payload of a WINDOW_UPDATE frame is a 32-bit value indicating the additional number of bytes -that the sender can transmit in addition to the existing flow control window. The legal range -for this field is 1 to 2^31 - 1 (0x7fffffff) bytes; the most significant bit of this value is -reserved.

    - -
    - -
    Serializer.WINDOW_UPDATE = function writeWindowUpdate(frame, buffers) {
    -  var buffer = new Buffer(4);
    -
    -  var window_size = frame.window_size;
    -  assert((0 <= window_size) && (window_size <= 0x7fffffff), window_size);
    -  buffer.writeUInt32BE(window_size, 0);
    -
    -  buffers.push(buffer);
    -};
    -
    -Deserializer.WINDOW_UPDATE = function readWindowUpdate(buffer, frame) {
    -  frame.window_size = buffer.readUInt32BE(0) & 0x7fffffff;
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    CONTINUATION

    - -
    - -
  • - - -
  • -
    - -
    - -
    -

    The CONTINUATION frame (type=0xA) is used to continue a sequence of header block fragments.

    -

    The CONTINUATION frame defines the following flags:

    -
      -
    • END_STREAM (0x1): -Bit 1 being set indicates that this frame is the last that the endpoint will send for the -identified stream.
    • -
    • RESERVED (0x2): -Bit 2 is reserved for future use.
    • -
    • END_HEADERS (0x4): -The END_HEADERS bit indicates that this frame ends the sequence of header block fragments -necessary to provide a complete set of headers.
    • -
    - -
    - -
    frameTypes[0xA] = 'CONTINUATION';
    -
    -frameFlags.CONTINUATION = ['END_STREAM', 'RESERVED', 'END_HEADERS'];
    -
    -typeSpecificAttributes.CONTINUATION = ['headers', 'data'];
    -
    -Serializer.CONTINUATION = function writeContinuation(frame, buffers) {
    -  buffers.push(frame.data);
    -};
    -
    -Deserializer.CONTINUATION = function readContinuation(buffer, frame) {
    -  frame.data = buffer;
    -};
    - -
  • - - -
  • -
    - -
    - -
    -

    Error Codes

    - -
    - -
  • - - -
  • -
    - -
    - -
    - -
    - -
    var errorCodes = [
    -  'NO_ERROR',
    -  'PROTOCOL_ERROR',
    -  'INTERNAL_ERROR',
    -  'FLOW_CONTROL_ERROR',
    -  ,
    -  'STREAM_CLOSED',
    -  'FRAME_TOO_LARGE',
    -  'REFUSED_STREAM',
    -  'CANCEL',
    -  'COMPRESSION_ERROR'
    -];
    - -
  • - - -
  • -
    - -
    - -
    -

    Logging

    - -
    - -
  • - - -
  • -
    - -
    - -
    -

    Bunyan serializers to improve logging output -for debug messages emitted in this component.

    - -
    - -
    exports.serializers = {};
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • frame serializer: it transforms data attributes from Buffers to hex strings and filters out -flags that are not present.
    • -
    - -
    - -
    var frameCounter = 0;
    -exports.serializers.frame = function(frame) {
    -  if (!frame) {
    -    return null;
    -  }
    -
    -  if ('id' in frame) {
    -    return frame.id;
    -  }
    -
    -  frame.id = frameCounter;
    -  frameCounter += 1;
    -
    -  var logEntry = { id: frame.id };
    -  genericAttributes.concat(typeSpecificAttributes[frame.type]).forEach(function(name) {
    -    logEntry[name] = frame[name];
    -  });
    -
    -  if (frame.data instanceof Buffer) {
    -    if (logEntry.data.length > 50) {
    -      logEntry.data = frame.data.slice(0, 47).toString('hex') + '...';
    -    } else {
    -      logEntry.data = frame.data.toString('hex');
    -    }
    -
    -    if (!('length' in logEntry)) {
    -      logEntry.length = frame.data.length;
    -    }
    -  }
    -
    -  if (frame.promised_stream instanceof Object) {
    -    logEntry.promised_stream = 'stream-' + frame.promised_stream.id;
    -  }
    -
    -  logEntry.flags = Object.keys(frame.flags || {}).filter(function(name) {
    -    return frame.flags[name] === true;
    -  });
    -
    -  return logEntry;
    -};
    - -
  • - - -
  • -
    - -
    - -
    -
      -
    • data serializer: it simply transforms a buffer to a hex string.
    • -
    - -
    - -
    exports.serializers.data = function(data) {
    -  return data.toString('hex');
    -};
    - -
  • - -
-
- - diff --git a/doc/http.html b/doc/http.html index b592aaee..fe201183 100644 --- a/doc/http.html +++ b/doc/http.html @@ -19,31 +19,6 @@ @@ -241,7 +211,7 @@

API elements that are not applicable to HTTP/2

  • Event: 'timeout'
  • response.writeContinue()
  • response.writeHead(statusCode, [reasonPhrase], [headers]): reasonPhrase will always be -ignored since it's not supported in HTTP/2
  • +ignored since it's not supported in HTTP/2
  • response.setTimeout(timeout, [callback])
  • @@ -291,14 +261,14 @@

    Common server and client side code

    var PassThrough = require('stream').PassThrough; var Readable = require('stream').Readable; var Writable = require('stream').Writable; -var Endpoint = require('./endpoint').Endpoint; +var Endpoint = require('http2-protocol').Endpoint; +var implementedVersion = require('http2-protocol').ImplementedVersion; var http = require('http'); var https = require('https'); exports.STATUS_CODES = http.STATUS_CODES; exports.IncomingMessage = IncomingMessage; exports.OutgoingMessage = OutgoingMessage; -exports.Endpoint = Endpoint; var deprecatedHeaders = [ 'connection', @@ -319,21 +289,6 @@

    Common server and client side code

    -

    The implemented version of the HTTP/2 specification is draft 04.

    - - - -
    var implementedVersion = 'HTTP-draft-06/2.0';
    - - - - -
  • -
    - -
    - -

    When doing NPN/ALPN negotiation, HTTP/1.1 is used as fallback

    @@ -343,28 +298,11 @@

    Common server and client side code

  • -
  • -
    - -
    - -
    -

    Using ALPN or NPN depending on node.js support (preferring ALPN)

    - -
    - -
    var negotiationMethod = process.features.tls_alpn ? 'ALPN' : 'NPN';
    -var protocolList = process.features.tls_alpn ? 'ALPNProtocols' : 'NPNProtocols';
    -var negotiatedProtocol = process.features.tls_alpn ? 'alpnProtocol' : 'npnProtocol';
    - -
  • - - -
  • +
  • - +

    Logging

    @@ -373,11 +311,11 @@

    Logging

  • -
  • +
  • - +

    Logger shim, used when no logger is provided by the user.

    @@ -398,30 +336,26 @@

    Logging

  • -
  • +
  • - +

    Bunyan serializers exported by submodules that are worth adding when creating a logger.

    -
    exports.serializers = {};
    -var modules = ['./framer', './compressor', './flow', './connection', './stream', './endpoint'];
    -modules.forEach(function(module) {
    -  util._extend(exports.serializers, require(module).serializers);
    -});
    +
    exports.serializers = require('http2-protocol').serializers;
  • -
  • +
  • - +

    IncomingMessage class

    @@ -430,11 +364,11 @@

    IncomingMessage class

  • -
  • +
  • - +
    @@ -444,11 +378,11 @@

    IncomingMessage class

  • -
  • +
  • - +
    • This is basically a read-only wrapper for the Stream class.
    • @@ -465,11 +399,11 @@

      IncomingMessage class

      -
    • +
    • - +
      • HTTP/2.0 does not define a way to carry the version identifier that is included in the @@ -485,11 +419,11 @@

        IncomingMessage class

      • -
      • +
      • - +
        • this.headers will store the regular headers (and none of the special colon headers)
        • @@ -504,11 +438,11 @@

          IncomingMessage class

          -
        • +
        • - +
          • Other metadata is filled in when the headers arrive.
          • @@ -524,13 +458,13 @@

            IncomingMessage class

            -
          • +
          • - +
            -

            Request Header Fields +

            Request Header Fields * headers argument: HTTP/2.0 request and response header fields carry information as a series of key-value pairs. This includes the target URI for the request, the status code for the response, as well as HTTP header fields.

            @@ -542,11 +476,11 @@

            IncomingMessage class

          • -
          • +
          • - +
            • An HTTP/2.0 request or response MUST NOT include any of the following header fields: @@ -569,11 +503,11 @@

              IncomingMessage class

            • -
            • +
            • - +
              • Store the regular headers in this.headers
              • @@ -590,11 +524,11 @@

                IncomingMessage class

                -
              • +
              • - +
                • The last header block, if it's not the first, will represent the trailers
                • @@ -627,11 +561,11 @@

                  IncomingMessage class

                  -
                • +
                • - +

                  OutgoingMessage class

                  @@ -640,11 +574,11 @@

                  OutgoingMessage class

                • -
                • +
                • - +
                  @@ -654,11 +588,11 @@

                  OutgoingMessage class

                • -
                • +
                • - +
                  • This is basically a read-only wrapper for the Stream class.
                  • @@ -734,11 +668,11 @@

                    OutgoingMessage class

                    -
                  • +
                  • - +

                    Server side

                    @@ -747,11 +681,11 @@

                    Server side

                  • -
                  • +
                  • - +
                    @@ -765,11 +699,11 @@

                    Server side

                  • -
                  • +
                  • - +

                    Server class

                    @@ -778,17 +712,17 @@

                    Server class

                  • -
                  • +
                  • - +
                    function Server(options) {
                    -  options = options || {};
                    +  options = util._extend({}, options);
                     
                       this._log = (options.log || defaultLogger).child({ component: 'http' });
                       this._settings = options.settings;
                    @@ -799,25 +733,27 @@ 

                    Server class

                  • -
                  • +
                  • - +

                    HTTP2 over TLS (using NPN or ALPN)

                      if ((options.key && options.cert) || options.pfx) {
                    -    this._log.info('Creating HTTP/2 server over TLS/' + negotiationMethod);
                    +    this._log.info('Creating HTTP/2 server over TLS');
                         this._mode = 'tls';
                    -    options[protocolList] = supportedProtocols;
                    +    options.ALPNProtocols = supportedProtocols;
                    +    options.NPNProtocols = supportedProtocols;
                         this._server = https.createServer(options);
                         this._originalSocketListeners = this._server.listeners('secureConnection');
                         this._server.removeAllListeners('secureConnection');
                         this._server.on('secureConnection', function(socket) {
                    -      if (socket[negotiatedProtocol] === implementedVersion && socket.servername) {
                    +      var negotiatedProtocol = socket.alpnProtocol || socket.npnProtocol;
                    +      if ((negotiatedProtocol === implementedVersion) && socket.servername) {
                             start(socket);
                           } else {
                             fallback(socket);
                    @@ -829,11 +765,11 @@ 

                    Server class

                  • -
                  • +
                  • - +

                    HTTP2 over plain TCP

                    @@ -848,11 +784,11 @@

                    Server class

                  • -
                  • +
                  • - +

                    HTTP/2 with HTTP/1.1 upgrade

                    @@ -870,11 +806,11 @@

                    Server class

                  • -
                  • +
                  • - +

                    Starting HTTP/2

                    @@ -899,13 +835,16 @@

                    Server class

                    }); endpoint.on('error', this.emit.bind(this, 'clientError')); + socket.on('error', this.emit.bind(this, 'clientError')); this.emit('connection', socket, endpoint); }; Server.prototype._fallback = function _fallback(socket) { + var negotiatedProtocol = socket.alpnProtocol || socket.npnProtocol; + this._log.info({ client: socket.remoteAddress + ':' + socket.remotePort, - protocol: socket[negotiatedProtocol], + protocol: negotiatedProtocol, SNI: socket.servername }, 'Falling back to simple HTTPS'); @@ -919,11 +858,11 @@

                    Server class

                  • -
                  • +
                  • - +

                    There are 3 possible signatures of the listen function. Every arguments is forwarded to the backing TCP or HTTPS server.

                    @@ -965,11 +904,11 @@

                    Server class

                  • -
                  • +
                  • - +

                    Overriding EventEmitter's on(event, listener) method to forward certain subscriptions to server.There are events on the http.Server class where it makes difference whether someone is @@ -989,11 +928,11 @@

                    Server class

                  • -
                  • +
                  • - +

                    addContext is used to add Server Name Indication contexts

                    @@ -1023,11 +962,11 @@

                    Server class

                  • -
                  • +
                  • - +

                    IncomingRequest class

                    @@ -1036,11 +975,11 @@

                    IncomingRequest class

                  • -
                  • +
                  • - +
                    @@ -1053,13 +992,13 @@

                    IncomingRequest class

                  • -
                  • +
                  • - +
                    -

                    Request Header Fields +

                    Request Header Fields * headers argument: HTTP/2.0 request and response header fields carry information as a series of key-value pairs. This includes the target URI for the request, the status code for the response, as well as HTTP header fields.

                    @@ -1071,16 +1010,16 @@

                    IncomingRequest class

                  • -
                  • +
                  • - +
                    • The ":method" header field includes the HTTP method
                    • The ":scheme" header field includes the scheme portion of the target URI
                    • -
                    • The ":host" header field includes the authority portion of the target URI
                    • +
                    • The ":authority" header field includes the authority portion of the target URI
                    • The ":path" header field includes the path and query parts of the target URI. This field MUST NOT be empty; URIs that do not contain a path component MUST include a value of '/', unless the request is an OPTIONS request for '', in which case the ":path" header @@ -1092,19 +1031,19 @@

                      IncomingRequest class

                    -
                      this.method = this._checkSpecialHeader(':method', headers[':method']);
                    -  this.scheme = this._checkSpecialHeader(':scheme', headers[':scheme']);
                    -  this.host   = this._checkSpecialHeader(':host'  , headers[':host']  );
                    -  this.url    = this._checkSpecialHeader(':path'  , headers[':path']  );
                    +
                      this.method = this._checkSpecialHeader(':method'   , headers[':method']);
                    +  this.scheme = this._checkSpecialHeader(':scheme'   , headers[':scheme']);
                    +  this.host   = this._checkSpecialHeader(':authority', headers[':authority']  );
                    +  this.url    = this._checkSpecialHeader(':path'     , headers[':path']  );
                  • -
                  • +
                  • - +
                    • Host header is included in the headers object for backwards compatibility.
                    • @@ -1117,11 +1056,11 @@

                      IncomingRequest class

                      -
                    • +
                    • - +
                      • Handling regular headers.
                      • @@ -1134,11 +1073,11 @@

                        IncomingRequest class

                        -
                      • +
                      • - +
                        • Signaling that the headers arrived.
                        • @@ -1154,11 +1093,11 @@

                          IncomingRequest class

                          -
                        • +
                        • - +

                          OutgoingResponse class

                          @@ -1167,11 +1106,11 @@

                          OutgoingResponse class

                        • -
                        • +
                        • - +
                          @@ -1245,12 +1184,13 @@

                          OutgoingResponse class

                          var promise = util._extend({ ':method': (options.method || 'GET').toUpperCase(), ':scheme': (options.protocol && options.protocol.slice(0, -1)) || this._requestHeaders[':scheme'], - ':host': options.hostname || options.host || this._requestHeaders[':host'], + ':authority': options.hostname || options.host || this._requestHeaders[':authority'], ':path': options.path }, options.headers); - this._log.info({ method: promise[':method'], scheme: promise[':scheme'], host: promise[':host'], - path: promise[':path'], headers: options.headers }, 'Promising push stream'); + this._log.info({ method: promise[':method'], scheme: promise[':scheme'], + authority: promise[':authority'], path: promise[':path'], + headers: options.headers }, 'Promising push stream'); var pushStream = this.stream.promise(promise); @@ -1260,11 +1200,11 @@

                          OutgoingResponse class

                        • -
                        • +
                        • - +

                          Overriding EventEmitter's on(event, listener) method to forward certain subscriptions to request. See Server.prototype.on for explanation.

                          @@ -1282,11 +1222,11 @@

                          OutgoingResponse class

                        • -
                        • +
                        • - +

                          Client side

                          @@ -1295,11 +1235,11 @@

                          Client side

                        • -
                        • +
                        • - +
                          @@ -1319,11 +1259,11 @@

                          Client side

                        • -
                        • +
                        • - +

                          Agent class

                          @@ -1332,11 +1272,11 @@

                          Agent class

                        • -
                        • +
                        • - +
                          @@ -1344,7 +1284,7 @@

                          Agent class

                          function Agent(options) {
                             EventEmitter.call(this);
                           
                          -  options = options || {};
                          +  options = util._extend({}, options);
                           
                             this._settings = options.settings;
                             this._log = (options.log || defaultLogger).child({ component: 'http' });
                          @@ -1353,11 +1293,11 @@ 

                          Agent class

                        • -
                        • +
                        • - +
                          • Using an own HTTPS agent, because the global agent does not look at NPN/ALPNProtocols when @@ -1369,7 +1309,8 @@

                            Agent class

                            var agentOptions = {};
                          -  agentOptions[protocolList] = supportedProtocols;
                          +  agentOptions.ALPNProtocols = supportedProtocols;
                          +  agentOptions.NPNProtocols = supportedProtocols;
                             this._httpsAgent = new https.Agent(agentOptions);
                           
                             this.sockets = this._httpsAgent.sockets;
                          @@ -1380,6 +1321,8 @@ 

                          Agent class

                          Agent.prototype.request = function request(options, callback) { if (typeof options === 'string') { options = url.parse(options); + } else { + options = util._extend({}, options); } options.method = (options.method || 'GET').toUpperCase(); @@ -1408,11 +1351,11 @@

                          Agent class

                        • -
                        • +
                        • - +
                          • There's an existing HTTP/2 connection to this host
                          • @@ -1428,11 +1371,11 @@

                            Agent class

                            -
                          • +
                          • - +
                            • HTTP/2 over plain TCP
                            • @@ -1454,11 +1397,11 @@

                              Agent class

                              -
                            • +
                            • - +
                              • HTTP/2 over TLS negotiated using NPN or ALPN
                              • @@ -1468,13 +1411,15 @@

                                Agent class

                                  else {
                                     var started = false;
                                -    options[protocolList] = supportedProtocols;
                                +    options.ALPNProtocols = supportedProtocols;
                                +    options.NPNProtocols = supportedProtocols;
                                     options.servername = options.host; // Server Name Indication
                                     options.agent = this._httpsAgent;
                                     var httpsRequest = https.request(options);
                                 
                                     httpsRequest.on('socket', function(socket) {
                                -      if (socket[negotiatedProtocol] !== undefined) {
                                +      var negotiatedProtocol = socket.alpnProtocol || socket.npnProtocol;
                                +      if (negotiatedProtocol !== undefined) {
                                         negotiated();
                                       } else {
                                         socket.on('secureConnect', negotiated);
                                @@ -1484,7 +1429,8 @@ 

                                Agent class

                                var self = this; function negotiated() { var endpoint; - if (httpsRequest.socket[negotiatedProtocol] === implementedVersion) { + var negotiatedProtocol = httpsRequest.socket.alpnProtocol || httpsRequest.socket.npnProtocol; + if (negotiatedProtocol === implementedVersion) { httpsRequest.socket.emit('agentRemove'); unbundleSocket(httpsRequest.socket); endpoint = new Endpoint(self._log, 'CLIENT', self._settings); @@ -1553,11 +1499,11 @@

                                Agent class

                                -
                              • +
                              • - +

                                OutgoingRequest class

                                @@ -1566,11 +1512,11 @@

                                OutgoingRequest class

                              • -
                              • +
                              • - +
                                @@ -1601,11 +1547,12 @@

                                OutgoingRequest class

                                headers[':scheme'] = options.protocol.slice(0, -1); headers[':method'] = options.method; - headers[':host'] = options.host; + headers[':authority'] = options.host; headers[':path'] = options.path; - this._log.info({ scheme: headers[':scheme'], method: headers[':method'], host: headers[':host'], - path: headers[':path'], headers: (options.headers || {}) }, 'Sending request'); + this._log.info({ scheme: headers[':scheme'], method: headers[':method'], + authority: headers[':authority'], path: headers[':path'], + headers: (options.headers || {}) }, 'Sending request'); this.stream.headers(headers); this.headersSent = true; @@ -1634,11 +1581,11 @@

                                OutgoingRequest class

                              • -
                              • +
                              • - +

                                Overriding EventEmitter's on(event, listener) method to forward certain subscriptions to request. See Server.prototype.on for explanation.

                                @@ -1656,11 +1603,11 @@

                                OutgoingRequest class

                              • -
                              • +
                              • - +

                                Methods only in fallback mode

                                @@ -1693,11 +1640,11 @@

                                OutgoingRequest class

                              • -
                              • +
                              • - +

                                Aborting the request

                                @@ -1716,11 +1663,11 @@

                                OutgoingRequest class

                              • -
                              • +
                              • - +

                                Receiving push promises

                                @@ -1741,11 +1688,11 @@

                                OutgoingRequest class

                              • -
                              • +
                              • - +

                                IncomingResponse class

                                @@ -1754,11 +1701,11 @@

                                IncomingResponse class

                              • -
                              • +
                              • - +
                                @@ -1771,13 +1718,13 @@

                                IncomingResponse class

                              • -
                              • +
                              • - +
                                -

                                Response Header Fields +

                                Response Header Fields * headers argument: HTTP/2.0 request and response header fields carry information as a series of key-value pairs. This includes the target URI for the request, the status code for the response, as well as HTTP header fields.

                                @@ -1789,11 +1736,11 @@

                                IncomingResponse class

                              • -
                              • +
                              • - +
                                • A single ":status" header field is defined that carries the HTTP status code field. This @@ -1812,11 +1759,11 @@

                                  IncomingResponse class

                                • -
                                • +
                                • - +
                                  • Handling regular headers.
                                  • @@ -1829,11 +1776,11 @@

                                    IncomingResponse class

                                    -
                                  • +
                                  • - +
                                    • Signaling that the headers arrived.
                                    • @@ -1848,11 +1795,11 @@

                                      IncomingResponse class

                                      -
                                    • +
                                    • - +

                                      IncomingPromise class

                                      @@ -1861,11 +1808,11 @@

                                      IncomingPromise class

                                    • -
                                    • +
                                    • - +
                                      diff --git a/doc/https.html b/doc/https.html deleted file mode 100644 index 10b7671a..00000000 --- a/doc/https.html +++ /dev/null @@ -1,208 +0,0 @@ - - - - - https.js - - - - - -
                                      -
                                      - - - -
                                        - -
                                      • -
                                        -

                                        https.js

                                        -
                                        -
                                      • - - - -
                                      • -
                                        - -
                                        - -
                                        -

                                        This is the main API that can be used to create HTTP/2 server that runs on top of TLS.

                                        - -
                                        - -
                                        var https2 = exports;
                                        - -
                                      • - - -
                                      • -
                                        - -
                                        - -
                                        -

                                        The main governing power behind the http2 API design is that it should look very similar to the -existing node.js HTTP/HTTPS -APIs. The additional features of HTTP/2 are exposed as extensions to these APIs. Furthermore, -node-http2 should fall back to using HTTP/1.1 if needed.

                                        - -
                                        - -
                                        var https = require('https');
                                        -
                                        -var default_settings = {};
                                        - -
                                      • - - -
                                      • -
                                        - -
                                        - -
                                        -

                                        Server

                                        - -
                                        - -
                                      • - - -
                                      • -
                                        - -
                                        - -
                                        - -
                                        - -
                                        https2.createServer = function createServer(options, requestListener) {
                                        -};
                                        - -
                                      • - - -
                                      • -
                                        - -
                                        - -
                                        -

                                        Client

                                        - -
                                        - -
                                      • - - -
                                      • -
                                        - -
                                        - -
                                        - -
                                        - -
                                        https2.request = function request(options, callback) {
                                        -};
                                        -
                                        -https2.get = function get(options, callback) {
                                        -};
                                        - -
                                      • - - -
                                      • -
                                        - -
                                        - -
                                        -

                                        Agent

                                        - -
                                        - -
                                      • - - -
                                      • -
                                        - -
                                        - -
                                        -

                                        HTTPS agents are not yet supported, -so every client request will create a new TCP stream.

                                        - -
                                        - -
                                      • - -
                                      -
                                      - - diff --git a/doc/index.html b/doc/index.html index b6eb9b1b..4e9f9d00 100644 --- a/doc/index.html +++ b/doc/index.html @@ -19,31 +19,6 @@
                                    @@ -78,35 +48,15 @@

                                    index.js

                                    -

                                    node-http2 is an HTTP/2 (draft 04) implementation for node.js.

                                    -

                                    The main building blocks are mainly node.js streams that are connected through -pipes.

                                    -

                                    The main components are:

                                    +

                                    node-http2 is an HTTP/2 (draft 10) implementation for node.js.

                                    +

                                    The core of the protocol is implemented by the http2-protocol module. This module provides +two important features on top of http2-protocol:

                                      -
                                    • http.js: the top layer that presents an API very similar to the standard node.js -HTTPS module (which is in turn very similar to the HTTP module).

                                      -
                                    • -
                                    • Endpoint: represents an HTTP/2 endpoint (client or server). It's -responsible for the the first part of the handshake process (sending/receiving the -connection header) and manages other components (framer, compressor, -connection, streams) that make up a client or server.

                                      -
                                    • -
                                    • Connection: multiplexes the active HTTP/2 streams, manages connection -lifecycle and settings, and responsible for enforcing the connection level limits (flow -control, initiated stream limit)

                                      -
                                    • -
                                    • Stream: implementation of the HTTP/2 stream concept. -Implements the stream state machine defined by the standard, provides -management methods and events for using the stream (sending/receiving headers, data, etc.), -and enforces stream level constraints (flow control, sending only legal frames).

                                      -
                                    • -
                                    • Flow: implements flow control for Connection and Stream as parent class.

                                      -
                                    • -
                                    • Compressor and Decompressor: compression and decompression of HEADER and -PUSH_PROMISE frames

                                      +
                                    • Implementation of different negotiation schemes that can be used to start a HTTP2 connection. +These include TLS ALPN, Upgrade and Plain TCP.

                                    • -
                                    • Serializer and Deserializer: the lowest layer in the stack that transforms -between the binary and the JavaScript object representation of HTTP/2 frames

                                      +
                                    • Providing an API very similar to the standard node.js HTTPS module API +(which is in turn very similar to the HTTP module API).

                                    @@ -115,52 +65,36 @@

                                    index.js

                                    module.exports   = require('./http');
                                     
                                     /*
                                    -                    API user
                                    +                  HTTP API
                                     
                                    -                 |            ^
                                    -                 |            |
                                    - +---------------|------------|--------------------------------------------------------+
                                    - |               |            |        Server/Agent                                    |
                                    - |               v            |                                                        |
                                    - |          +----------+ +----------+                                                  |
                                    - |          | Outgoing | | Incoming |                                                  |
                                    - |          | req/res. | | req/res. |                                                  |
                                    - |          +----------+ +----------+                                                  |
                                    - |               |            ^                                                        |
                                    - |   +-----------|------------|---------------------------------------+   +-----       |
                                    - |   |           |            |   Endpoint                            |   |            |
                                    - |   |           |            |                                       |   |            |
                                    - |   |   +-------|------------|-----------------------------------+   |   |            |
                                    - |   |   |       |            |  Connection                       |   |   |            |
                                    - |   |   |       v            |                                   |   |   |            |
                                    - |   |   |  +-----------------------+  +--------------------      |   |   |            |
                                    - |   |   |  |        Stream         |  |         Stream      ...  |   |   |            |
                                    - |   |   |  +-----------------------+  +--------------------      |   |   |            |
                                    - |   |   |       |            ^              |            ^       |   |   |            |
                                    - |   |   |       v            |              v            |       |   |   |            |
                                    - |   |   |       +------------+--+--------+--+------------+- ...  |   |   |            |
                                    - |   |   |                       |        ^                       |   |   |            |
                                    - |   |   |                       |        |                       |   |   |      ...   |
                                    - |   |   +-----------------------|--------|-----------------------+   |   |            |
                                    - |   |                           |        |                           |   |            |
                                    - |   |                           v        |                           |   |            |
                                    - |   |   +--------------------------+  +--------------------------+   |   |            |
                                    - |   |   |        Compressor        |  |       Decompressor       |   |   |            |
                                    - |   |   +--------------------------+  +--------------------------+   |   |            |
                                    - |   |                           |        ^                           |   |            |
                                    - |   |                           v        |                           |   |            |
                                    - |   |   +--------------------------+  +--------------------------+   |   |            |
                                    - |   |   |        Serializer        |  |       Deserializer       |   |   |            |
                                    - |   |   +--------------------------+  +--------------------------+   |   |            |
                                    - |   |                           |        ^                           |   |            |
                                    - |   +---------------------------|--------|---------------------------+   +-----       |
                                    - |                               |        |                                            |
                                    - |                               v        |                                            |
                                    - |   +----------------------------------------------------------------+   +-----       |
                                    - |   |                           TCP stream                           |   |      ...   |
                                    - |   +----------------------------------------------------------------+   +-----       |
                                    - |                                                                                     |
                                    - +-------------------------------------------------------------------------------------+
                                    +               |            ^
                                    +               |            |
                                    + +-------------|------------|------------------------------------------------------+
                                    + |             |            |        Server/Agent                                  |
                                    + |             v            |                                                      |
                                    + |        +----------+ +----------+                                                |
                                    + |        | Outgoing | | Incoming |                                                |
                                    + |        | req/res. | | req/res. |                                                |
                                    + |        +----------+ +----------+                                                |
                                    + |             |            ^                                                      |
                                    + |             |            |                                                      |
                                    + |   +---------|------------|-------------------------------------+   +-----       |
                                    + |   |         |            |   Endpoint                          |   |            |
                                    + |   |         |            |                                     |   |            |
                                    + |   |         v            |                                     |   |            |
                                    + |   |    +-----------------------+  +--------------------        |   |            |
                                    + |   |    |        Stream         |  |         Stream      ...    |   |            |
                                    + |   |    +-----------------------+  +--------------------        |   |            |
                                    + |   |                                                            |   |            |
                                    + |   +------------------------------------------------------------+   +-----       |
                                    + |                             |        |                                          |
                                    + |                             |        |                                          |
                                    + |                             v        |                                          |
                                    + |   +------------------------------------------------------------+   +-----       |
                                    + |   |                         TCP stream                         |   |      ...   |
                                    + |   +------------------------------------------------------------+   +-----       |
                                    + |                                                                                 |
                                    + +---------------------------------------------------------------------------------+
                                     
                                     */
                                    diff --git a/doc/stream.html b/doc/stream.html deleted file mode 100644 index 7dcf715e..00000000 --- a/doc/stream.html +++ /dev/null @@ -1,1312 +0,0 @@ - - - - - stream.js - - - - - -
                                    -
                                    - - - -
                                      - -
                                    • -
                                      -

                                      stream.js

                                      -
                                      -
                                    • - - - -
                                    • -
                                      - -
                                      - -
                                      - -
                                      - -
                                      var assert = require('assert');
                                      - -
                                    • - - -
                                    • -
                                      - -
                                      - -
                                      -

                                      The Stream class

                                      - -
                                      - -
                                    • - - -
                                    • -
                                      - -
                                      - -
                                      -

                                      Stream is a Duplex stream -subclass that implements the HTTP/2 Stream -concept. It has two 'sides': one that is used by the user to send/receive data (the stream -object itself) and one that is used by a Connection to read/write frames to/from the other peer -(stream.upstream).

                                      - -
                                      - -
                                      var Duplex = require('stream').Duplex;
                                      -
                                      -exports.Stream = Stream;
                                      - -
                                    • - - -
                                    • -
                                      - -
                                      - -
                                      -

                                      Public API

                                      - -
                                      - -
                                    • - - -
                                    • -
                                      - -
                                      - -
                                      -
                                        -
                                      • new Stream(log): create a new Stream

                                        -
                                      • -
                                      • Event: 'headers' (headers): signals incoming headers

                                        -
                                      • -
                                      • Event: 'promise' (stream, headers): signals an incoming push promise

                                        -
                                      • -
                                      • Event: 'priority' (priority): signals a priority change. priority is a number between 0 - (highest priority) and 2^31-1 (lowest priority). Default value is 2^30.

                                        -
                                      • -
                                      • Event: 'error' (type): signals an error

                                        -
                                      • -
                                      • headers(headers): send headers

                                        -
                                      • -
                                      • promise(headers): Stream: promise a stream

                                        -
                                      • -
                                      • priority(priority): set the priority of the stream. Priority can be changed by the peer -too, but once it is set locally, it can not be changed remotely.

                                        -
                                      • -
                                      • reset(error): reset the stream with an error code

                                        -
                                      • -
                                      • upstream: a Flow that is used by the parent connection to write/read frames -that are to be sent/arrived to/from the peer and are related to this stream.

                                        -
                                      • -
                                      -

                                      Headers are always in the regular node.js header format.

                                      -

                                      Constructor

                                      - -
                                      - -
                                    • - - -
                                    • -
                                      - -
                                      - -
                                      -

                                      The main aspects of managing the stream are:

                                      - -
                                      - -
                                      function Stream(log) {
                                      -  Duplex.call(this);
                                      - -
                                    • - - -
                                    • -
                                      - -
                                      - -
                                      -
                                        -
                                      • logging
                                      • -
                                      - -
                                      - -
                                        this._log = log.child({ component: 'stream', s: this });
                                      - -
                                    • - - -
                                    • -
                                      - -
                                      - -
                                      -
                                        -
                                      • receiving and sending stream management commands
                                      • -
                                      - -
                                      - -
                                        this._initializeManagement();
                                      - -
                                    • - - -
                                    • -
                                      - -
                                      - -
                                      -
                                        -
                                      • sending and receiving frames to/from the upstream connection
                                      • -
                                      - -
                                      - -
                                        this._initializeDataFlow();
                                      - -
                                    • - - -
                                    • -
                                      - -
                                      - -
                                      -
                                        -
                                      • maintaining the state of the stream (idle, open, closed, etc.) and error detection
                                      • -
                                      - -
                                      - -
                                        this._initializeState();
                                      -}
                                      -
                                      -Stream.prototype = Object.create(Duplex.prototype, { constructor: { value: Stream } });
                                      - -
                                    • - - -
                                    • -
                                      - -
                                      - -
                                      -

                                      Managing the stream

                                      - -
                                      - -
                                    • - - -
                                    • -
                                      - -
                                      - -
                                      -

                                      the default stream priority is 2^30

                                      - -
                                      - -
                                      var DEFAULT_PRIORITY = Math.pow(2, 30);
                                      -var MAX_PRIORITY = Math.pow(2, 31) - 1;
                                      - -
                                    • - - -
                                    • -
                                      - -
                                      - -
                                      -

                                      PUSH_PROMISE and HEADERS are forwarded to the user through events.

                                      - -
                                      - -
                                      Stream.prototype._initializeManagement = function _initializeManagement() {
                                      -  this._resetSent = false;
                                      -  this._priority = DEFAULT_PRIORITY;
                                      -  this._letPeerPrioritize = true;
                                      -};
                                      -
                                      -Stream.prototype.promise = function promise(headers) {
                                      -  var stream = new Stream(this._log);
                                      -  stream._priority = Math.min(this._priority + 1, MAX_PRIORITY);
                                      -  this._pushUpstream({
                                      -    type: 'PUSH_PROMISE',
                                      -    flags: {},
                                      -    stream: this.id,
                                      -    promised_stream: stream,
                                      -    headers: headers
                                      -  });
                                      -  return stream;
                                      -};
                                      -
                                      -Stream.prototype._onPromise = function _onPromise(frame) {
                                      -  this.emit('promise', frame.promised_stream, frame.headers);
                                      -};
                                      -
                                      -Stream.prototype.headers = function headers(headers) {
                                      -  this._pushUpstream({
                                      -    type: 'HEADERS',
                                      -    flags: {},
                                      -    stream: this.id,
                                      -    headers: headers
                                      -  });
                                      -};
                                      -
                                      -Stream.prototype._onHeaders = function _onHeaders(frame) {
                                      -  if (frame.priority !== undefined) {
                                      -    this.priority(frame.priority, true);
                                      -  }
                                      -  this.emit('headers', frame.headers);
                                      -};
                                      -
                                      -Stream.prototype.priority = function priority(priority, peer) {
                                      -  if ((peer && this._letPeerPrioritize) || !peer) {
                                      -    if (!peer) {
                                      -      this._letPeerPrioritize = false;
                                      -
                                      -      var lastFrame = this.upstream.getLastQueuedFrame();
                                      -      if (lastFrame && ((lastFrame.type === 'HEADERS') || (lastFrame.type === 'PRIORITY'))) {
                                      -        lastFrame.priority = priority;
                                      -      } else {
                                      -        this._pushUpstream({
                                      -          type: 'PRIORITY',
                                      -          flags: {},
                                      -          stream: this.id,
                                      -          priority: priority
                                      -        });
                                      -      }
                                      -    }
                                      -
                                      -    this._log.debug({ priority: priority }, 'Changing priority');
                                      -    this.emit('priority', priority);
                                      -    this._priority = priority;
                                      -  }
                                      -};
                                      -
                                      -Stream.prototype._onPriority = function _onPriority(frame) {
                                      -  this.priority(frame.priority, true);
                                      -};
                                      - -
                                    • - - -
                                    • -
                                      - -
                                      - -
                                      -

                                      Resetting the stream. Normally, an endpoint SHOULD NOT send more than one RST_STREAM frame for -any stream.

                                      - -
                                      - -
                                      Stream.prototype.reset = function reset(error) {
                                      -  if (!this._resetSent) {
                                      -    this._resetSent = true;
                                      -    this._pushUpstream({
                                      -      type: 'RST_STREAM',
                                      -      flags: {},
                                      -      stream: this.id,
                                      -      error: error
                                      -    });
                                      -  }
                                      -};
                                      - -
                                    • - - -
                                    • -
                                      - -
                                      - -
                                      -

                                      Data flow

                                      - -
                                      - -
                                    • - - -
                                    • -
                                      - -
                                      - -
                                      -

                                      The incoming and the generated outgoing frames are received/transmitted on the this.upsteam -Flow. The Connection object instantiating the stream will read -and write frames to/from it. The stream itself is a regular Duplex stream, and is used by -the user to write or read the body of the request.

                                      -
                                      upstream side                  stream                  user side
                                      -
                                      -               +------------------------------------+
                                      -               |                                    |
                                      -               +------------------+                 |
                                      -               |     upstream     |                 |
                                      -               |                  |                 |
                                      -               +--+               |              +--|
                                      -       read()  |  |  _send()      |    _write()  |  |  write(buf)
                                      -<--------------|B |<--------------|--------------| B|<------------
                                      -               |  |               |              |  |
                                      -       frames  +--+               |              +--|  buffers
                                      -               |  |               |              |  |
                                      --------------->|B |---------------|------------->| B|------------>
                                      - write(frame)  |  |  _receive()   |     _read()  |  |  read()
                                      -               +--+               |              +--|
                                      -               |                  |                 |
                                      -               |                  |                 |
                                      -               +------------------+                 |
                                      -               |                                    |
                                      -               +------------------------------------+
                                      -
                                      -B: input or output buffer
                                      - -
                                      - -
                                      var Flow = require('./flow').Flow;
                                      -
                                      -Stream.prototype._initializeDataFlow = function _initializeDataFlow() {
                                      -  this.id = undefined;
                                      -
                                      -  this._ended = false;
                                      -
                                      -  this.upstream = new Flow();
                                      -  this.upstream._log = this._log;
                                      -  this.upstream._send = this._send.bind(this);
                                      -  this.upstream._receive = this._receive.bind(this);
                                      -  this.upstream.write = this._writeUpstream.bind(this);
                                      -  this.upstream.on('error', this.emit.bind(this, 'error'));
                                      -
                                      -  this.on('finish', this._finishing);
                                      -};
                                      -
                                      -Stream.prototype._pushUpstream = function _pushUpstream(frame) {
                                      -  this.upstream.push(frame);
                                      -  this._transition(true, frame);
                                      -};
                                      - -
                                    • - - -
                                    • -
                                      - -
                                      - -
                                      -

                                      Overriding the upstream's write allows us to act immediately instead of waiting for the input -queue to empty. This is important in case of control frames.

                                      - -
                                      - -
                                      Stream.prototype._writeUpstream = function _writeUpstream(frame) {
                                      -  this._log.debug({ frame: frame }, 'Receiving frame');
                                      -
                                      -  var moreNeeded = Flow.prototype.write.call(this.upstream, frame);
                                      - -
                                    • - - -
                                    • -
                                      - -
                                      - -
                                      -
                                        -
                                      • Transition to a new state if that's the effect of receiving the frame
                                      • -
                                      - -
                                      - -
                                        this._transition(false, frame);
                                      - -
                                    • - - -
                                    • -
                                      - -
                                      - -
                                      -
                                        -
                                      • If it's a control frame. Call the appropriate handler method.
                                      • -
                                      - -
                                      - -
                                        if (frame.type === 'HEADERS') {
                                      -    this._onHeaders(frame);
                                      -  } else if (frame.type === 'PUSH_PROMISE') {
                                      -    this._onPromise(frame);
                                      -  } else if (frame.type === 'PRIORITY') {
                                      -    this._onPriority(frame);
                                      -  }
                                      - -
                                    • - - -
                                    • -
                                      - -
                                      - -
                                      -
                                        -
                                      • If it's an invalid stream level frame, emit error
                                      • -
                                      - -
                                      - -
                                        else if ((frame.type !== 'DATA') &&
                                      -           (frame.type !== 'WINDOW_UPDATE') &&
                                      -           (frame.type !== 'RST_STREAM')) {
                                      -    this._log.error({ frame: frame }, 'Invalid stream level frame');
                                      -    this.emit('error', 'PROTOCOL_ERROR');
                                      -  }
                                      -
                                      -  return moreNeeded;
                                      -};
                                      - -
                                    • - - -
                                    • -
                                      - -
                                      - -
                                      -

                                      The _receive method (= upstream._receive) gets called when there's an incoming frame.

                                      - -
                                      - -
                                      Stream.prototype._receive = function _receive(frame, ready) {
                                      - -
                                    • - - -
                                    • -
                                      - -
                                      - -
                                      -
                                        -
                                      • If it's a DATA frame, then push the payload into the output buffer on the other side. -Call ready when the other side is ready to receive more.
                                      • -
                                      - -
                                      - -
                                        if (!this._ended && (frame.type === 'DATA')) {
                                      -    var moreNeeded = this.push(frame.data);
                                      -    if (!moreNeeded) {
                                      -      this._receiveMore = ready;
                                      -    }
                                      -  }
                                      - -
                                    • - - -
                                    • -
                                      - -
                                      - -
                                      -
                                        -
                                      • Any frame may signal the end of the stream with the END_STREAM flag
                                      • -
                                      - -
                                      - -
                                        if (!this._ended && (frame.flags.END_STREAM || (frame.type === 'RST_STREAM'))) {
                                      -    this.push(null);
                                      -    this._ended = true;
                                      -  }
                                      - -
                                    • - - -
                                    • -
                                      - -
                                      - -
                                      -
                                        -
                                      • Postpone calling ready if push() returned a falsy value
                                      • -
                                      - -
                                      - -
                                        if (this._receiveMore !== ready) {
                                      -    ready();
                                      -  }
                                      -};
                                      - -
                                    • - - -
                                    • -
                                      - -
                                      - -
                                      -

                                      The _read method is called when the user side is ready to receive more data. If there's a -pending write on the upstream, then call its pending ready callback to receive more frames.

                                      - -
                                      - -
                                      Stream.prototype._read = function _read() {
                                      -  if (this._receiveMore) {
                                      -    var receiveMore = this._receiveMore;
                                      -    delete this._receiveMore;
                                      -    receiveMore();
                                      -  }
                                      -};
                                      - -
                                    • - - -
                                    • -
                                      - -
                                      - -
                                      -

                                      The write method gets called when there's a write request from the user.

                                      - -
                                      - -
                                      Stream.prototype._write = function _write(buffer, encoding, ready) {
                                      - -
                                    • - - -
                                    • -
                                      - -
                                      - -
                                      -
                                        -
                                      • Chunking is done by the upstream Flow.
                                      • -
                                      - -
                                      - -
                                        var moreNeeded = this._pushUpstream({
                                      -    type: 'DATA',
                                      -    flags: {},
                                      -    stream: this.id,
                                      -    data: buffer
                                      -  });
                                      - -
                                    • - - -
                                    • -
                                      - -
                                      - -
                                      -
                                        -
                                      • Call ready when upstream is ready to receive more frames.
                                      • -
                                      - -
                                      - -
                                        if (moreNeeded) {
                                      -    ready();
                                      -  } else {
                                      -    this._sendMore = ready;
                                      -  }
                                      -};
                                      - -
                                    • - - -
                                    • -
                                      - -
                                      - -
                                      -

                                      The _send (= upstream._send) method is called when upstream is ready to receive more frames. -If there's a pending write on the user side, then call its pending ready callback to receive more -writes.

                                      - -
                                      - -
                                      Stream.prototype._send = function _send() {
                                      -  if (this._sendMore) {
                                      -    var sendMore = this._sendMore;
                                      -    delete this._sendMore;
                                      -    sendMore();
                                      -  }
                                      -};
                                      - -
                                    • - - -
                                    • -
                                      - -
                                      - -
                                      -

                                      When the stream is finishing (the user calls end() on it), then we have to set the END_STREAM -flag on the last frame. If there's no frame in the queue, or if it doesn't support this flag, -then we create a 0 length DATA frame. We could do this all the time, but putting the flag on an -existing frame is a nice optimization.

                                      - -
                                      - -
                                      var emptyBuffer = new Buffer(0);
                                      -Stream.prototype._finishing = function _finishing() {
                                      -  var endFrame = {
                                      -    type: 'DATA',
                                      -    flags: { END_STREAM: true },
                                      -    stream: this.id,
                                      -    data: emptyBuffer
                                      -  };
                                      -  var lastFrame = this.upstream.getLastQueuedFrame();
                                      -  if (lastFrame && ((lastFrame.type === 'DATA') || (lastFrame.type === 'HEADERS'))) {
                                      -    this._log.debug({ frame: lastFrame }, 'Marking last frame with END_STREAM flag.');
                                      -    lastFrame.flags.END_STREAM = true;
                                      -    this._transition(true, endFrame);
                                      -  } else {
                                      -    this._pushUpstream(endFrame);
                                      -  }
                                      -};
                                      - -
                                    • - - -
                                    • -
                                      - -
                                      - -
                                      -

                                      Stream States

                                      - -
                                      - -
                                    • - - -
                                    • -
                                      - -
                                      - -
                                      -
                                                            +--------+
                                      -                PP    |        |    PP
                                      -             ,--------|  idle  |--------.
                                      -            /         |        |         \
                                      -           v          +--------+          v
                                      -    +----------+          |           +----------+
                                      -    |          |          | H         |          |
                                      -,---| reserved |          |           | reserved |---.
                                      -|   | (local)  |          v           | (remote) |   |
                                      -|   +----------+      +--------+      +----------+   |
                                      -|      |          ES  |        |  ES          |      |
                                      -|      | H    ,-------|  open  |-------.      | H    |
                                      -|      |     /        |        |        \     |      |
                                      -|      v    v         +--------+         v    v      |
                                      -|   +----------+          |           +----------+   |
                                      -|   |   half   |          |           |   half   |   |
                                      -|   |  closed  |          | R         |  closed  |   |
                                      -|   | (remote) |          |           | (local)  |   |
                                      -|   +----------+          |           +----------+   |
                                      -|        |                v                 |        |
                                      -|        |  ES / R    +--------+  ES / R    |        |
                                      -|        `----------->|        |<-----------'        |
                                      -|  R                  | closed |                  R  |
                                      -`-------------------->|        |<--------------------'
                                      -                      +--------+
                                      -

                                      Streams begin in the IDLE state and transitions happen when there's an incoming or outgoing frame

                                      - -
                                      - -
                                      Stream.prototype._initializeState = function _initializeState() {
                                      -  this.state = 'IDLE';
                                      -  this._initiated = undefined;
                                      -  this._closedByUs = undefined;
                                      -  this._closedWithRst = undefined;
                                      -};
                                      - -
                                    • - - -
                                    • -
                                      - -
                                      - -
                                      -

                                      Only _setState should change this.state directly. It also logs the state change and notifies -interested parties using the 'state' event.

                                      - -
                                      - -
                                      Stream.prototype._setState = function transition(state) {
                                      -  assert(this.state !== state);
                                      -  this._log.debug({ from: this.state, to: state }, 'State transition');
                                      -  this.state = state;
                                      -  this.emit('state', state);
                                      -};
                                      - -
                                    • - - -
                                    • -
                                      - -
                                      - -
                                      -

                                      A state is 'active' if the stream in that state counts towards the concurrency limit. Streams -that are in the "open" state, or either of the "half closed" states count toward this limit.

                                      - -
                                      - -
                                      function activeState(state) {
                                      -  return ((state === 'HALF_CLOSED_LOCAL') || (state === 'HALF_CLOSED_REMOTE') || (state === 'OPEN'));
                                      -}
                                      - -
                                    • - - -
                                    • -
                                      - -
                                      - -
                                      -

                                      _transition is called every time there's an incoming or outgoing frame. It manages state -transitions, and detects stream errors. A stream error is always caused by a frame that is not -allowed in the current state.

                                      - -
                                      - -
                                      Stream.prototype._transition = function transition(sending, frame) {
                                      -  var receiving = !sending;
                                      -  var error = undefined;
                                      -
                                      -  var DATA = false, HEADERS = false, PRIORITY = false;
                                      -  var RST_STREAM = false, PUSH_PROMISE = false, WINDOW_UPDATE = false;
                                      -  switch(frame.type) {
                                      -    case 'DATA'         : DATA          = true; break;
                                      -    case 'HEADERS'      : HEADERS       = true; break;
                                      -    case 'PRIORITY'     : PRIORITY      = true; break;
                                      -    case 'RST_STREAM'   : RST_STREAM    = true; break;
                                      -    case 'PUSH_PROMISE' : PUSH_PROMISE  = true; break;
                                      -    case 'WINDOW_UPDATE': WINDOW_UPDATE = true; break;
                                      -  }
                                      -
                                      -  var previousState = this.state;
                                      -
                                      -  switch (this.state) {
                                      - -
                                    • - - -
                                    • -
                                      - -
                                      - -
                                      -

                                      All streams start in the idle state. In this state, no frames have been exchanged.

                                      -
                                        -
                                      • Sending or receiving a HEADERS frame causes the stream to become "open".
                                      • -
                                      -

                                      When the HEADERS frame contains the END_STREAM flags, then two state transitions happen.

                                      - -
                                      - -
                                          case 'IDLE':
                                      -      if (HEADERS) {
                                      -        this._setState('OPEN');
                                      -        if (frame.flags.END_STREAM) {
                                      -          this._setState(sending ? 'HALF_CLOSED_LOCAL' : 'HALF_CLOSED_REMOTE');
                                      -        }
                                      -        this._initiated = sending;
                                      -      } else if (sending && RST_STREAM) {
                                      -        this._setState('CLOSED');
                                      -      } else {
                                      -        error = 'PROTOCOL_ERROR';
                                      -      }
                                      -      break;
                                      - -
                                    • - - -
                                    • -
                                      - -
                                      - -
                                      -

                                      A stream in the reserved (local) state is one that has been promised by sending a -PUSH_PROMISE frame.

                                      -
                                        -
                                      • The endpoint can send a HEADERS frame. This causes the stream to open in a "half closed -(remote)" state.
                                      • -
                                      • Either endpoint can send a RST_STREAM frame to cause the stream to become "closed". This -releases the stream reservation.
                                      • -
                                      • An endpoint may receive PRIORITY frame in this state.
                                      • -
                                      • An endpoint MUST NOT send any other type of frame in this state.
                                      • -
                                      - -
                                      - -
                                          case 'RESERVED_LOCAL':
                                      -      if (sending && HEADERS) {
                                      -        this._setState('HALF_CLOSED_REMOTE');
                                      -      } else if (RST_STREAM) {
                                      -        this._setState('CLOSED');
                                      -      } else if (receiving && PRIORITY) {
                                      -        /* No state change */
                                      -      } else {
                                      -        error = 'PROTOCOL_ERROR';
                                      -      }
                                      -      break;
                                      - -
                                    • - - -
                                    • -
                                      - -
                                      - -
                                      -

                                      A stream in the reserved (remote) state has been reserved by a remote peer.

                                      -
                                        -
                                      • Either endpoint can send a RST_STREAM frame to cause the stream to become "closed". This -releases the stream reservation.
                                      • -
                                      • Receiving a HEADERS frame causes the stream to transition to "half closed (local)".
                                      • -
                                      • An endpoint MAY send PRIORITY frames in this state to reprioritize the stream.
                                      • -
                                      • Receiving any other type of frame MUST be treated as a stream error of type PROTOCOL_ERROR.
                                      • -
                                      - -
                                      - -
                                          case 'RESERVED_REMOTE':
                                      -      if (RST_STREAM) {
                                      -        this._setState('CLOSED');
                                      -      } else if (receiving && HEADERS) {
                                      -        this._setState('HALF_CLOSED_LOCAL');
                                      -      } else if (sending && PRIORITY) {
                                      -        /* No state change */
                                      -      } else {
                                      -        error = 'PROTOCOL_ERROR';
                                      -      }
                                      -      break;
                                      - -
                                    • - - -
                                    • -
                                      - -
                                      - -
                                      -

                                      The open state is where both peers can send frames. In this state, sending peers observe -advertised stream level flow control limits.

                                      -
                                        -
                                      • From this state either endpoint can send a frame with a END_STREAM flag set, which causes -the stream to transition into one of the "half closed" states: an endpoint sending a -END_STREAM flag causes the stream state to become "half closed (local)"; an endpoint -receiving a END_STREAM flag causes the stream state to become "half closed (remote)".
                                      • -
                                      • Either endpoint can send a RST_STREAM frame from this state, causing it to transition -immediately to "closed".
                                      • -
                                      - -
                                      - -
                                          case 'OPEN':
                                      -      if (frame.flags.END_STREAM) {
                                      -        this._setState(sending ? 'HALF_CLOSED_LOCAL' : 'HALF_CLOSED_REMOTE');
                                      -      } else if (RST_STREAM) {
                                      -        this._setState('CLOSED');
                                      -      } else {
                                      -        /* No state change */
                                      -      }
                                      -      break;
                                      - -
                                    • - - -
                                    • -
                                      - -
                                      - -
                                      -

                                      A stream that is half closed (local) cannot be used for sending frames.

                                      -
                                        -
                                      • A stream transitions from this state to "closed" when a frame that contains a END_STREAM -flag is received, or when either peer sends a RST_STREAM frame.
                                      • -
                                      • An endpoint MAY send or receive PRIORITY frames in this state to reprioritize the stream.
                                      • -
                                      • WINDOW_UPDATE can be sent by a peer that has sent a frame bearing the END_STREAM flag.
                                      • -
                                      - -
                                      - -
                                          case 'HALF_CLOSED_LOCAL':
                                      -      if (RST_STREAM || (receiving && frame.flags.END_STREAM)) {
                                      -        this._setState('CLOSED');
                                      -      } else if (receiving || (sending && (PRIORITY || WINDOW_UPDATE))) {
                                      -        /* No state change */
                                      -      } else {
                                      -        error = 'PROTOCOL_ERROR';
                                      -      }
                                      -      break;
                                      - -
                                    • - - -
                                    • -
                                      - -
                                      - -
                                      -

                                      A stream that is half closed (remote) is no longer being used by the peer to send frames. -In this state, an endpoint is no longer obligated to maintain a receiver flow control window -if it performs flow control.

                                      -
                                        -
                                      • If an endpoint receives additional frames for a stream that is in this state it MUST -respond with a stream error of type STREAM_CLOSED.
                                      • -
                                      • A stream can transition from this state to "closed" by sending a frame that contains a -END_STREAM flag, or when either peer sends a RST_STREAM frame.
                                      • -
                                      • An endpoint MAY send or receive PRIORITY frames in this state to reprioritize the stream.
                                      • -
                                      • A receiver MAY receive a WINDOW_UPDATE frame on a "half closed (remote)" stream.
                                      • -
                                      - -
                                      - -
                                          case 'HALF_CLOSED_REMOTE':
                                      -      if (RST_STREAM || (sending && frame.flags.END_STREAM)) {
                                      -        this._setState('CLOSED');
                                      -      } else if (sending || (receiving && (WINDOW_UPDATE || PRIORITY))) {
                                      -        /* No state change */
                                      -      } else {
                                      -        error = 'PROTOCOL_ERROR';
                                      -      }
                                      -      break;
                                      - -
                                    • - - -
                                    • -
                                      - -
                                      - -
                                      -

                                      The closed state is the terminal state.

                                      -
                                        -
                                      • An endpoint MUST NOT send frames on a closed stream. An endpoint that receives a frame -after receiving a RST_STREAM or a frame containing a END_STREAM flag on that stream MUST -treat that as a stream error of type STREAM_CLOSED.
                                      • -
                                      • WINDOW_UPDATE, PRIORITY or RST_STREAM frames can be received in this state for a short -period after a frame containing an END_STREAM flag is sent. Until the remote peer receives -and processes the frame bearing the END_STREAM flag, it might send either frame type. -Endpoints MUST ignore WINDOW_UPDATE frames received in this state, though endpoints MAY -choose to treat WINDOW_UPDATE frames that arrive a significant time after sending -END_STREAM as a connection error of type PROTOCOL_ERROR.
                                      • -
                                      • If this state is reached as a result of sending a RST_STREAM frame, the peer that receives -the RST_STREAM might have already sent - or enqueued for sending - frames on the stream -that cannot be withdrawn. An endpoint that sends a RST_STREAM frame MUST ignore frames that -it receives on closed streams after it has sent a RST_STREAM frame. An endpoint MAY choose -to limit the period over which it ignores frames and treat frames that arrive after this -time as being in error.
                                      • -
                                      • An endpoint might receive a PUSH_PROMISE frame after it sends RST_STREAM. PUSH_PROMISE -causes a stream to become "reserved". If promised streams are not desired, a RST_STREAM -can be used to close any of those streams.
                                      • -
                                      - -
                                      - -
                                          case 'CLOSED':
                                      -      if ((sending && RST_STREAM) ||
                                      -          (receiving && this._closedByUs &&
                                      -           (this._closedWithRst || WINDOW_UPDATE || PRIORITY || RST_STREAM))) {
                                      -        /* No state change */
                                      -      } else {
                                      -        error = 'STREAM_CLOSED';
                                      -      }
                                      -      break;
                                      -  }
                                      - -
                                    • - - -
                                    • -
                                      - -
                                      - -
                                      -

                                      Noting that the connection was closed by the other endpoint. It may be important in edge cases. -For example, when the peer tries to cancel a promised stream, but we already sent every data -on it, then the stream is in CLOSED state, yet we want to ignore the incoming RST_STREAM.

                                      - -
                                      - -
                                        if ((this.state === 'CLOSED') && (previousState !== 'CLOSED')) {
                                      -    this._closedByUs = sending;
                                      -    this._closedWithRst = RST_STREAM;
                                      -  }
                                      - -
                                    • - - -
                                    • -
                                      - -
                                      - -
                                      -

                                      Sending/receiving a PUSH_PROMISE

                                      -
                                        -
                                      • Sending a PUSH_PROMISE frame marks the associated stream for later use. The stream state -for the reserved stream transitions to "reserved (local)".
                                      • -
                                      • Receiving a PUSH_PROMISE frame marks the associated stream as reserved by the remote peer. -The state of the stream becomes "reserved (remote)".
                                      • -
                                      - -
                                      - -
                                        if (PUSH_PROMISE && !error) {
                                      -    /* This assertion must hold, because _transition is called immediately when a frame is written
                                      -       to the stream. If it would be called when a frame gets out of the input queue, the state
                                      -       of the reserved could have been changed by then. */
                                      -    assert(frame.promised_stream.state === 'IDLE', frame.promised_stream.state);
                                      -    frame.promised_stream._setState(sending ? 'RESERVED_LOCAL' : 'RESERVED_REMOTE');
                                      -    frame.promised_stream._initiated = sending;
                                      -  }
                                      - -
                                    • - - -
                                    • -
                                      - -
                                      - -
                                      -

                                      Signaling how sending/receiving this frame changes the active stream count (-1, 0 or +1)

                                      - -
                                      - -
                                        if (this._initiated) {
                                      -    var change = (activeState(this.state) - activeState(previousState));
                                      -    if (sending) {
                                      -      frame.count_change = change;
                                      -    } else {
                                      -      frame.count_change(change);
                                      -    }
                                      -  } else if (sending) {
                                      -    frame.count_change = 0;
                                      -  }
                                      - -
                                    • - - -
                                    • -
                                      - -
                                      - -
                                      -

                                      Common error handling.

                                      - -
                                      - -
                                        if (error) {
                                      -    var info = {
                                      -      error: error,
                                      -      frame: frame,
                                      -      state: this.state,
                                      -      closedByUs: this._closedByUs,
                                      -      closedWithRst: this._closedWithRst
                                      -    };
                                      - -
                                    • - - -
                                    • -
                                      - -
                                      - -
                                      -
                                        -
                                      • When sending something invalid, throwing an exception, since it is probably a bug.
                                      • -
                                      - -
                                      - -
                                          if (sending) {
                                      -      this._log.error(info, 'Sending illegal frame.');
                                      -      throw new Error('Sending illegal frame (' + frame.type + ') in ' + this.state + ' state.');
                                      -    }
                                      - -
                                    • - - -
                                    • -
                                      - -
                                      - -
                                      -
                                        -
                                      • When receiving something invalid, sending an RST_STREAM using the reset method. -This will automatically cause a transition to the CLOSED state.
                                      • -
                                      - -
                                      - -
                                          else {
                                      -      this._log.error(info, 'Received illegal frame.');
                                      -      this.emit('error', error);
                                      -    }
                                      -  }
                                      -};
                                      - -
                                    • - - -
                                    • -
                                      - -
                                      - -
                                      -

                                      Bunyan serializers

                                      - -
                                      - -
                                    • - - -
                                    • -
                                      - -
                                      - -
                                      - -
                                      - -
                                      exports.serializers = {};
                                      -
                                      -var nextId = 0;
                                      -exports.serializers.s = function(stream) {
                                      -  if (!('_id' in stream)) {
                                      -    stream._id = nextId;
                                      -    nextId += 1;
                                      -  }
                                      -  return stream._id;
                                      -};
                                      - -
                                    • - -
                                    -
                                    - - From cbbb2d3a266d4417afc1edd6cc542c03b40628ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Moln=C3=A1r?= Date: Wed, 12 Mar 2014 11:38:07 +0100 Subject: [PATCH 17/20] Adding back accidentally deleted docco.css --- doc/docco.css | 511 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 511 insertions(+) create mode 100644 doc/docco.css diff --git a/doc/docco.css b/doc/docco.css new file mode 100644 index 00000000..8910977e --- /dev/null +++ b/doc/docco.css @@ -0,0 +1,511 @@ +/*-------------- node-http2 customizations --------------------*/ + +ul.sections > li > div.annotation { + min-width: 35em !important; + max-width: 35em !important; +} + +#background { + width: 35em !important; +} + +/*--------------------- Typography ----------------------------*/ + +@font-face { + font-family: 'aller-light'; + src: url('public/fonts/aller-light.eot'); + src: url('public/fonts/aller-light.eot?#iefix') format('embedded-opentype'), + url('public/fonts/aller-light.woff') format('woff'), + url('public/fonts/aller-light.ttf') format('truetype'); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: 'aller-bold'; + src: url('public/fonts/aller-bold.eot'); + src: url('public/fonts/aller-bold.eot?#iefix') format('embedded-opentype'), + url('public/fonts/aller-bold.woff') format('woff'), + url('public/fonts/aller-bold.ttf') format('truetype'); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: 'novecento-bold'; + src: url('public/fonts/novecento-bold.eot'); + src: url('public/fonts/novecento-bold.eot?#iefix') format('embedded-opentype'), + url('public/fonts/novecento-bold.woff') format('woff'), + url('public/fonts/novecento-bold.ttf') format('truetype'); + font-weight: normal; + font-style: normal; +} + +/*--------------------- Layout ----------------------------*/ +html { height: 100%; } +body { + font-family: "aller-light"; + font-size: 14px; + line-height: 18px; + color: #30404f; + margin: 0; padding: 0; + height:100%; +} +#container { min-height: 100%; } + +a { + color: #000; +} + +b, strong { + font-weight: normal; + font-family: "aller-bold"; +} + +p, ul, ol { + margin: 15px 0 0px; +} + +h1, h2, h3, h4, h5, h6 { + color: #112233; + line-height: 1em; + font-weight: normal; + font-family: "novecento-bold"; + text-transform: uppercase; + margin: 30px 0 15px 0; +} + +h1 { + margin-top: 40px; +} + +hr { + border: 0; + background: 1px solid #ddd; + height: 1px; + margin: 20px 0; +} + +pre, tt, code { + font-size: 12px; line-height: 16px; + font-family: Menlo, Monaco, Consolas, "Lucida Console", monospace; + margin: 0; padding: 0; +} + .annotation pre { + display: block; + margin: 0; + padding: 7px 10px; + background: #fcfcfc; + -moz-box-shadow: inset 0 0 10px rgba(0,0,0,0.1); + -webkit-box-shadow: inset 0 0 10px rgba(0,0,0,0.1); + box-shadow: inset 0 0 10px rgba(0,0,0,0.1); + overflow-x: auto; + } + .annotation pre code { + border: 0; + padding: 0; + background: transparent; + } + + +blockquote { + border-left: 5px solid #ccc; + margin: 0; + padding: 1px 0 1px 1em; +} + .sections blockquote p { + font-family: Menlo, Consolas, Monaco, monospace; + font-size: 12px; line-height: 16px; + color: #999; + margin: 10px 0 0; + white-space: pre-wrap; + } + +ul.sections { + list-style: none; + padding:0 0 5px 0;; + margin:0; +} + +/* + Force border-box so that % widths fit the parent + container without overlap because of margin/padding. + + More Info : http://www.quirksmode.org/css/box.html +*/ +ul.sections > li > div { + -moz-box-sizing: border-box; /* firefox */ + -ms-box-sizing: border-box; /* ie */ + -webkit-box-sizing: border-box; /* webkit */ + -khtml-box-sizing: border-box; /* konqueror */ + box-sizing: border-box; /* css3 */ +} + + +/*---------------------- Jump Page -----------------------------*/ +#jump_to, #jump_page { + margin: 0; + background: white; + -webkit-box-shadow: 0 0 25px #777; -moz-box-shadow: 0 0 25px #777; + -webkit-border-bottom-left-radius: 5px; -moz-border-radius-bottomleft: 5px; + font: 16px Arial; + cursor: pointer; + text-align: right; + list-style: none; +} + +#jump_to a { + text-decoration: none; +} + +#jump_to a.large { + display: none; +} +#jump_to a.small { + font-size: 22px; + font-weight: bold; + color: #676767; +} + +#jump_to, #jump_wrapper { + position: fixed; + right: 0; top: 0; + padding: 10px 15px; + margin:0; +} + +#jump_wrapper { + display: none; + padding:0; +} + +#jump_to:hover #jump_wrapper { + display: block; +} + +#jump_page { + padding: 5px 0 3px; + margin: 0 0 25px 25px; +} + +#jump_page .source { + display: block; + padding: 15px; + text-decoration: none; + border-top: 1px solid #eee; +} + +#jump_page .source:hover { + background: #f5f5ff; +} + +#jump_page .source:first-child { +} + +/*---------------------- Low resolutions (> 320px) ---------------------*/ +@media only screen and (min-width: 320px) { + .pilwrap { display: none; } + + ul.sections > li > div { + display: block; + padding:5px 10px 0 10px; + } + + ul.sections > li > div.annotation ul, ul.sections > li > div.annotation ol { + padding-left: 30px; + } + + ul.sections > li > div.content { + background: #f5f5ff; + overflow-x:auto; + -webkit-box-shadow: inset 0 0 5px #e5e5ee; + box-shadow: inset 0 0 5px #e5e5ee; + border: 1px solid #dedede; + margin:5px 10px 5px 10px; + padding-bottom: 5px; + } + + ul.sections > li > div.annotation pre { + margin: 7px 0 7px; + padding-left: 15px; + } + + ul.sections > li > div.annotation p tt, .annotation code { + background: #f8f8ff; + border: 1px solid #dedede; + font-size: 12px; + padding: 0 0.2em; + } +} + +/*---------------------- (> 481px) ---------------------*/ +@media only screen and (min-width: 481px) { + #container { + position: relative; + } + body { + background-color: #F5F5FF; + font-size: 15px; + line-height: 21px; + } + pre, tt, code { + line-height: 18px; + } + p, ul, ol { + margin: 0 0 15px; + } + + + #jump_to { + padding: 5px 10px; + } + #jump_wrapper { + padding: 0; + } + #jump_to, #jump_page { + font: 10px Arial; + text-transform: uppercase; + } + #jump_page .source { + padding: 5px 10px; + } + #jump_to a.large { + display: inline-block; + } + #jump_to a.small { + display: none; + } + + + + #background { + position: absolute; + top: 0; bottom: 0; + width: 350px; + background: #fff; + border-right: 1px solid #e5e5ee; + z-index: -1; + } + + ul.sections > li > div.annotation ul, ul.sections > li > div.annotation ol { + padding-left: 40px; + } + + ul.sections > li { + white-space: nowrap; + } + + ul.sections > li > div { + display: inline-block; + } + + ul.sections > li > div.annotation { + max-width: 350px; + min-width: 350px; + min-height: 5px; + padding: 13px; + overflow-x: hidden; + white-space: normal; + vertical-align: top; + text-align: left; + } + ul.sections > li > div.annotation pre { + margin: 15px 0 15px; + padding-left: 15px; + } + + ul.sections > li > div.content { + padding: 13px; + vertical-align: top; + background: #f5f5ff; + border: none; + -webkit-box-shadow: none; + box-shadow: none; + } + + .pilwrap { + position: relative; + display: inline; + } + + .pilcrow { + font: 12px Arial; + text-decoration: none; + color: #454545; + position: absolute; + top: 3px; left: -20px; + padding: 1px 2px; + opacity: 0; + -webkit-transition: opacity 0.2s linear; + } + .for-h1 .pilcrow { + top: 47px; + } + .for-h2 .pilcrow, .for-h3 .pilcrow, .for-h4 .pilcrow { + top: 35px; + } + + ul.sections > li > div.annotation:hover .pilcrow { + opacity: 1; + } +} + +/*---------------------- (> 1025px) ---------------------*/ +@media only screen and (min-width: 1025px) { + + body { + font-size: 16px; + line-height: 24px; + } + + #background { + width: 525px; + } + ul.sections > li > div.annotation { + max-width: 525px; + min-width: 525px; + padding: 10px 25px 1px 50px; + } + ul.sections > li > div.content { + padding: 9px 15px 16px 25px; + } +} + +/*---------------------- Syntax Highlighting -----------------------------*/ + +td.linenos { background-color: #f0f0f0; padding-right: 10px; } +span.lineno { background-color: #f0f0f0; padding: 0 5px 0 5px; } +/* + +github.com style (c) Vasily Polovnyov + +*/ + +pre code { + display: block; padding: 0.5em; + color: #000; + background: #f8f8ff +} + +pre .comment, +pre .template_comment, +pre .diff .header, +pre .javadoc { + color: #408080; + font-style: italic +} + +pre .keyword, +pre .assignment, +pre .literal, +pre .css .rule .keyword, +pre .winutils, +pre .javascript .title, +pre .lisp .title, +pre .subst { + color: #954121; + /*font-weight: bold*/ +} + +pre .number, +pre .hexcolor { + color: #40a070 +} + +pre .string, +pre .tag .value, +pre .phpdoc, +pre .tex .formula { + color: #219161; +} + +pre .title, +pre .id { + color: #19469D; +} +pre .params { + color: #00F; +} + +pre .javascript .title, +pre .lisp .title, +pre .subst { + font-weight: normal +} + +pre .class .title, +pre .haskell .label, +pre .tex .command { + color: #458; + font-weight: bold +} + +pre .tag, +pre .tag .title, +pre .rules .property, +pre .django .tag .keyword { + color: #000080; + font-weight: normal +} + +pre .attribute, +pre .variable, +pre .instancevar, +pre .lisp .body { + color: #008080 +} + +pre .regexp { + color: #B68 +} + +pre .class { + color: #458; + font-weight: bold +} + +pre .symbol, +pre .ruby .symbol .string, +pre .ruby .symbol .keyword, +pre .ruby .symbol .keymethods, +pre .lisp .keyword, +pre .tex .special, +pre .input_number { + color: #990073 +} + +pre .builtin, +pre .constructor, +pre .built_in, +pre .lisp .title { + color: #0086b3 +} + +pre .preprocessor, +pre .pi, +pre .doctype, +pre .shebang, +pre .cdata { + color: #999; + font-weight: bold +} + +pre .deletion { + background: #fdd +} + +pre .addition { + background: #dfd +} + +pre .diff .change { + background: #0086b3 +} + +pre .chunk { + color: #aaa +} + +pre .tex .formula { + opacity: 0.5; +} From cd0986762701d368c438bc20eb5cd35cc6183d14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Moln=C3=A1r?= Date: Mon, 21 Apr 2014 13:56:52 +0200 Subject: [PATCH 18/20] Update from master --- coverage/coverage.json | 2 +- coverage/lcov-report/index.html | 28 +- coverage/lcov-report/lib/http.js.html | 127 ++- coverage/lcov-report/lib/index.html | 28 +- coverage/lcov.info | 1159 +++++++++++++------------ doc/http.html | 282 +++--- doc/index.html | 2 +- 7 files changed, 882 insertions(+), 746 deletions(-) diff --git a/coverage/coverage.json b/coverage/coverage.json index 533db4d9..c4de88cb 100644 --- a/coverage/coverage.json +++ b/coverage/coverage.json @@ -1 +1 @@ -{"/data/upstream/node-http2/lib/http.js":{"path":"/data/upstream/node-http2/lib/http.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":3,"20":1,"21":1,"22":24,"23":24,"24":24,"25":24,"26":24,"27":24,"28":24,"29":24,"30":24,"31":24,"32":24,"33":24,"34":1,"35":1,"36":24,"37":168,"38":168,"39":0,"40":0,"41":0,"42":24,"43":73,"44":13,"45":24,"46":24,"47":2,"48":1,"49":24,"50":1,"51":1,"52":60,"53":0,"54":0,"55":60,"56":1,"57":27,"58":27,"59":27,"60":27,"61":27,"62":1,"63":1,"64":13,"65":12,"66":1,"67":1,"68":31,"69":23,"70":2,"71":0,"72":2,"73":23,"74":8,"75":1,"76":4,"77":0,"78":4,"79":4,"80":0,"81":4,"82":1,"83":1,"84":0,"85":1,"86":1,"87":3,"88":1,"89":2,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":13,"99":13,"100":13,"101":13,"102":13,"103":13,"104":10,"105":10,"106":10,"107":10,"108":10,"109":10,"110":10,"111":10,"112":9,"113":9,"114":8,"115":1,"116":10,"117":3,"118":1,"119":1,"120":1,"121":2,"122":2,"123":11,"124":1,"125":1,"126":9,"127":9,"128":9,"129":9,"130":9,"131":10,"132":10,"133":10,"134":9,"135":9,"136":9,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":9,"145":9,"146":1,"147":4,"148":4,"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"155":0,"156":1,"157":1,"158":1,"159":9,"160":0,"161":9,"162":1,"163":0,"164":0,"165":1,"166":10,"167":1,"168":1,"169":10,"170":9,"171":9,"172":9,"173":1,"174":12,"175":1,"176":1,"177":12,"178":12,"179":12,"180":12,"181":12,"182":12,"183":12,"184":12,"185":1,"186":12,"187":12,"188":12,"189":12,"190":12,"191":12,"192":1,"193":1,"194":12,"195":1,"196":11,"197":12,"198":1,"199":12,"200":12,"201":11,"202":12,"203":12,"204":12,"205":12,"206":1,"207":23,"208":11,"209":1,"210":11,"211":11,"212":1,"213":12,"214":12,"215":1,"216":10,"217":1,"218":2,"219":1,"220":2,"221":0,"222":2,"223":2,"224":2,"225":2,"226":1,"227":12,"228":0,"229":12,"230":1,"231":1,"232":1,"233":1,"234":1,"235":1,"236":4,"237":1,"238":7,"239":1,"240":4,"241":4,"242":4,"243":4,"244":4,"245":4,"246":4,"247":4,"248":4,"249":4,"250":4,"251":1,"252":1,"253":12,"254":8,"255":4,"256":12,"257":12,"258":12,"259":12,"260":12,"261":12,"262":1,"263":1,"264":11,"265":11,"266":7,"267":11,"268":11,"269":1,"270":1,"271":10,"272":1,"273":1,"274":1,"275":1,"276":9,"277":9,"278":9,"279":9,"280":9,"281":9,"282":9,"283":9,"284":9,"285":0,"286":9,"287":9,"288":1,"289":9,"290":9,"291":9,"292":8,"293":8,"294":8,"295":8,"296":8,"297":9,"298":1,"299":1,"300":0,"301":8,"302":7,"303":7,"304":7,"305":1,"306":9,"307":9,"308":9,"309":8,"310":1,"311":11,"312":1,"313":7,"314":7,"315":7,"316":1,"317":8,"318":8,"319":8,"320":8,"321":8,"322":8,"323":8,"324":8,"325":1,"326":1,"327":1,"328":1,"329":1,"330":15,"331":15,"332":15,"333":1,"334":1,"335":10,"336":10,"337":10,"338":1,"339":10,"340":10,"341":10,"342":0,"343":10,"344":10,"345":10,"346":10,"347":10,"348":10,"349":10,"350":10,"351":10,"352":10,"353":10,"354":1,"355":5,"356":5,"357":5,"358":1,"359":0,"360":0,"361":0,"362":1,"363":40,"364":0,"365":40,"366":1,"367":3,"368":1,"369":2,"370":1,"371":1,"372":3,"373":1,"374":2,"375":1,"376":1,"377":3,"378":1,"379":2,"380":1,"381":1,"382":3,"383":1,"384":2,"385":1,"386":1,"387":1,"388":2,"389":2,"390":2,"391":2,"392":0,"393":1,"394":12,"395":1,"396":1,"397":12,"398":12,"399":12,"400":12,"401":1,"402":2,"403":2,"404":2,"405":2,"406":2,"407":2,"408":2,"409":2,"410":2,"411":2,"412":1,"413":1,"414":0,"415":1,"416":0,"417":1},"b":{"1":[0,168],"2":[13,60],"3":[0,60],"4":[60,60],"5":[12,1],"6":[23,8],"7":[2,21],"8":[0,2],"9":[0,4],"10":[0,4],"11":[0,1],"12":[13,2],"13":[10,3],"14":[13,10,3],"15":[9,9],"16":[8,1],"17":[9,8],"18":[1,2],"19":[1,1],"20":[0,9],"21":[1,0],"22":[1,0],"23":[1,0],"24":[0,9],"25":[9,9],"26":[0,0],"27":[0,0],"28":[1,9],"29":[9,0],"30":[1,11],"31":[11,1],"32":[12,11],"33":[11,12],"34":[1,1],"35":[0,2],"36":[2,2],"37":[2,1,1],"38":[2,2,2],"39":[0,12],"40":[12,0],"41":[0,0],"42":[4,4],"43":[7,7],"44":[4,1],"45":[8,4],"46":[12,12],"47":[12,3],"48":[12,4,1],"49":[12,1],"50":[12,1],"51":[1,11],"52":[12,11],"53":[7,4],"54":[1,10],"55":[1,9],"56":[9,9],"57":[0,9],"58":[9,9],"59":[8,1],"60":[1,8],"61":[1,0],"62":[7,1],"63":[8,1],"64":[0,10],"65":[10,9],"66":[0,0],"67":[0,40],"68":[40,0],"69":[0,0],"70":[1,2],"71":[1,1],"72":[1,2],"73":[1,1],"74":[1,2],"75":[1,1],"76":[1,2],"77":[1,1],"78":[2,0]},"f":{"1":2,"2":3,"3":24,"4":24,"5":2,"6":24,"7":60,"8":27,"9":13,"10":31,"11":4,"12":1,"13":3,"14":2,"15":13,"16":9,"17":9,"18":10,"19":1,"20":9,"21":4,"22":1,"23":1,"24":1,"25":9,"26":0,"27":10,"28":12,"29":12,"30":12,"31":12,"32":23,"33":11,"34":12,"35":10,"36":2,"37":12,"38":4,"39":7,"40":4,"41":12,"42":9,"43":9,"44":9,"45":7,"46":8,"47":1,"48":1,"49":15,"50":10,"51":5,"52":0,"53":40,"54":3,"55":3,"56":3,"57":3,"58":2,"59":12,"60":12,"61":2,"62":0,"63":0},"fnMap":{"1":{"name":"noop","line":164,"loc":{"start":{"line":164,"column":0},"end":{"line":164,"column":16}}},"2":{"name":"(anonymous_2)","line":173,"loc":{"start":{"line":173,"column":9},"end":{"line":173,"column":20}}},"3":{"name":"IncomingMessage","line":182,"loc":{"start":{"line":182,"column":0},"end":{"line":182,"column":33}}},"4":{"name":"_onHeaders","line":211,"loc":{"start":{"line":211,"column":39},"end":{"line":211,"column":68}}},"5":{"name":"(anonymous_5)","line":234,"loc":{"start":{"line":234,"column":28},"end":{"line":234,"column":46}}},"6":{"name":"_onEnd","line":239,"loc":{"start":{"line":239,"column":35},"end":{"line":239,"column":53}}},"7":{"name":"_checkSpecialHeader","line":245,"loc":{"start":{"line":245,"column":48},"end":{"line":245,"column":89}}},"8":{"name":"OutgoingMessage","line":258,"loc":{"start":{"line":258,"column":0},"end":{"line":258,"column":27}}},"9":{"name":"_write","line":270,"loc":{"start":{"line":270,"column":35},"end":{"line":270,"column":78}}},"10":{"name":"_finish","line":278,"loc":{"start":{"line":278,"column":36},"end":{"line":278,"column":55}}},"11":{"name":"setHeader","line":293,"loc":{"start":{"line":293,"column":38},"end":{"line":293,"column":70}}},"12":{"name":"removeHeader","line":305,"loc":{"start":{"line":305,"column":41},"end":{"line":305,"column":69}}},"13":{"name":"getHeader","line":313,"loc":{"start":{"line":313,"column":38},"end":{"line":313,"column":63}}},"14":{"name":"addTrailers","line":317,"loc":{"start":{"line":317,"column":40},"end":{"line":317,"column":71}}},"15":{"name":"Server","line":337,"loc":{"start":{"line":337,"column":0},"end":{"line":337,"column":25}}},"16":{"name":"(anonymous_16)","line":355,"loc":{"start":{"line":355,"column":40},"end":{"line":355,"column":57}}},"17":{"name":"_start","line":384,"loc":{"start":{"line":384,"column":26},"end":{"line":384,"column":50}}},"18":{"name":"_onStream","line":395,"loc":{"start":{"line":395,"column":24},"end":{"line":395,"column":51}}},"19":{"name":"_fallback","line":408,"loc":{"start":{"line":408,"column":29},"end":{"line":408,"column":56}}},"20":{"name":"listen","line":426,"loc":{"start":{"line":426,"column":26},"end":{"line":426,"column":58}}},"21":{"name":"close","line":432,"loc":{"start":{"line":432,"column":25},"end":{"line":432,"column":50}}},"22":{"name":"setTimeout","line":437,"loc":{"start":{"line":437,"column":30},"end":{"line":437,"column":69}}},"23":{"name":"getTimeout","line":444,"loc":{"start":{"line":444,"column":7},"end":{"line":444,"column":29}}},"24":{"name":"setTimeout","line":451,"loc":{"start":{"line":451,"column":7},"end":{"line":451,"column":36}}},"25":{"name":"on","line":462,"loc":{"start":{"line":462,"column":22},"end":{"line":462,"column":51}}},"26":{"name":"addContext","line":471,"loc":{"start":{"line":471,"column":30},"end":{"line":471,"column":73}}},"27":{"name":"createServer","line":477,"loc":{"start":{"line":477,"column":0},"end":{"line":477,"column":48}}},"28":{"name":"IncomingRequest","line":495,"loc":{"start":{"line":495,"column":0},"end":{"line":495,"column":33}}},"29":{"name":"_onHeaders","line":504,"loc":{"start":{"line":504,"column":39},"end":{"line":504,"column":68}}},"30":{"name":"OutgoingResponse","line":535,"loc":{"start":{"line":535,"column":0},"end":{"line":535,"column":34}}},"31":{"name":"writeHead","line":548,"loc":{"start":{"line":548,"column":39},"end":{"line":548,"column":93}}},"32":{"name":"_implicitHeaders","line":572,"loc":{"start":{"line":572,"column":46},"end":{"line":572,"column":74}}},"33":{"name":"write","line":578,"loc":{"start":{"line":578,"column":35},"end":{"line":578,"column":52}}},"34":{"name":"end","line":583,"loc":{"start":{"line":583,"column":33},"end":{"line":583,"column":48}}},"35":{"name":"_onRequestHeaders","line":588,"loc":{"start":{"line":588,"column":47},"end":{"line":588,"column":83}}},"36":{"name":"push","line":592,"loc":{"start":{"line":592,"column":34},"end":{"line":592,"column":57}}},"37":{"name":"on","line":619,"loc":{"start":{"line":619,"column":32},"end":{"line":619,"column":61}}},"38":{"name":"request","line":635,"loc":{"start":{"line":635,"column":18},"end":{"line":635,"column":54}}},"39":{"name":"get","line":638,"loc":{"start":{"line":638,"column":14},"end":{"line":638,"column":46}}},"40":{"name":"Agent","line":645,"loc":{"start":{"line":645,"column":0},"end":{"line":645,"column":24}}},"41":{"name":"request","line":668,"loc":{"start":{"line":668,"column":26},"end":{"line":668,"column":62}}},"42":{"name":"(anonymous_42)","line":725,"loc":{"start":{"line":725,"column":30},"end":{"line":725,"column":47}}},"43":{"name":"negotiated","line":735,"loc":{"start":{"line":735,"column":4},"end":{"line":735,"column":26}}},"44":{"name":"(anonymous_44)","line":763,"loc":{"start":{"line":763,"column":19},"end":{"line":763,"column":38}}},"45":{"name":"get","line":776,"loc":{"start":{"line":776,"column":22},"end":{"line":776,"column":54}}},"46":{"name":"unbundleSocket","line":782,"loc":{"start":{"line":782,"column":0},"end":{"line":782,"column":32}}},"47":{"name":"getMaxSockets","line":794,"loc":{"start":{"line":794,"column":7},"end":{"line":794,"column":32}}},"48":{"name":"setMaxSockets","line":797,"loc":{"start":{"line":797,"column":7},"end":{"line":797,"column":37}}},"49":{"name":"OutgoingRequest","line":807,"loc":{"start":{"line":807,"column":0},"end":{"line":807,"column":27}}},"50":{"name":"_start","line":816,"loc":{"start":{"line":816,"column":35},"end":{"line":816,"column":68}}},"51":{"name":"_fallback","line":850,"loc":{"start":{"line":850,"column":38},"end":{"line":850,"column":66}}},"52":{"name":"setPriority","line":856,"loc":{"start":{"line":856,"column":40},"end":{"line":856,"column":71}}},"53":{"name":"on","line":866,"loc":{"start":{"line":866,"column":31},"end":{"line":866,"column":60}}},"54":{"name":"setNoDelay","line":875,"loc":{"start":{"line":875,"column":39},"end":{"line":875,"column":68}}},"55":{"name":"setSocketKeepAlive","line":883,"loc":{"start":{"line":883,"column":47},"end":{"line":883,"column":97}}},"56":{"name":"setTimeout","line":891,"loc":{"start":{"line":891,"column":39},"end":{"line":891,"column":78}}},"57":{"name":"abort","line":900,"loc":{"start":{"line":900,"column":34},"end":{"line":900,"column":51}}},"58":{"name":"_onPromise","line":911,"loc":{"start":{"line":911,"column":39},"end":{"line":911,"column":76}}},"59":{"name":"IncomingResponse","line":926,"loc":{"start":{"line":926,"column":0},"end":{"line":926,"column":34}}},"60":{"name":"_onHeaders","line":935,"loc":{"start":{"line":935,"column":40},"end":{"line":935,"column":69}}},"61":{"name":"IncomingPromise","line":956,"loc":{"start":{"line":956,"column":0},"end":{"line":956,"column":57}}},"62":{"name":"cancel","line":975,"loc":{"start":{"line":975,"column":35},"end":{"line":975,"column":53}}},"63":{"name":"setPriority","line":979,"loc":{"start":{"line":979,"column":40},"end":{"line":979,"column":71}}}},"statementMap":{"1":{"start":{"line":131,"column":0},"end":{"line":131,"column":25}},"2":{"start":{"line":132,"column":0},"end":{"line":132,"column":25}},"3":{"start":{"line":133,"column":0},"end":{"line":133,"column":27}},"4":{"start":{"line":134,"column":0},"end":{"line":134,"column":50}},"5":{"start":{"line":135,"column":0},"end":{"line":135,"column":48}},"6":{"start":{"line":136,"column":0},"end":{"line":136,"column":42}},"7":{"start":{"line":137,"column":0},"end":{"line":137,"column":42}},"8":{"start":{"line":138,"column":0},"end":{"line":138,"column":50}},"9":{"start":{"line":139,"column":0},"end":{"line":139,"column":70}},"10":{"start":{"line":140,"column":0},"end":{"line":140,"column":27}},"11":{"start":{"line":141,"column":0},"end":{"line":141,"column":29}},"12":{"start":{"line":143,"column":0},"end":{"line":143,"column":41}},"13":{"start":{"line":144,"column":0},"end":{"line":144,"column":42}},"14":{"start":{"line":145,"column":0},"end":{"line":145,"column":42}},"15":{"start":{"line":147,"column":0},"end":{"line":155,"column":2}},"16":{"start":{"line":158,"column":0},"end":{"line":158,"column":70}},"17":{"start":{"line":164,"column":0},"end":{"line":164,"column":18}},"18":{"start":{"line":165,"column":0},"end":{"line":174,"column":2}},"19":{"start":{"line":173,"column":22},"end":{"line":173,"column":34}},"20":{"start":{"line":177,"column":0},"end":{"line":177,"column":60}},"21":{"start":{"line":182,"column":0},"end":{"line":204,"column":1}},"22":{"start":{"line":184,"column":2},"end":{"line":184,"column":25}},"23":{"start":{"line":185,"column":2},"end":{"line":185,"column":20}},"24":{"start":{"line":186,"column":2},"end":{"line":186,"column":37}},"25":{"start":{"line":188,"column":2},"end":{"line":188,"column":55}},"26":{"start":{"line":192,"column":2},"end":{"line":192,"column":27}},"27":{"start":{"line":193,"column":2},"end":{"line":193,"column":28}},"28":{"start":{"line":194,"column":2},"end":{"line":194,"column":28}},"29":{"start":{"line":197,"column":2},"end":{"line":197,"column":20}},"30":{"start":{"line":198,"column":2},"end":{"line":198,"column":28}},"31":{"start":{"line":199,"column":2},"end":{"line":199,"column":36}},"32":{"start":{"line":202,"column":2},"end":{"line":202,"column":53}},"33":{"start":{"line":203,"column":2},"end":{"line":203,"column":45}},"34":{"start":{"line":205,"column":0},"end":{"line":205,"column":110}},"35":{"start":{"line":211,"column":0},"end":{"line":237,"column":2}},"36":{"start":{"line":216,"column":2},"end":{"line":223,"column":3}},"37":{"start":{"line":217,"column":4},"end":{"line":217,"column":35}},"38":{"start":{"line":218,"column":4},"end":{"line":222,"column":5}},"39":{"start":{"line":219,"column":6},"end":{"line":219,"column":84}},"40":{"start":{"line":220,"column":6},"end":{"line":220,"column":50}},"41":{"start":{"line":221,"column":6},"end":{"line":221,"column":13}},"42":{"start":{"line":226,"column":2},"end":{"line":230,"column":3}},"43":{"start":{"line":227,"column":4},"end":{"line":229,"column":5}},"44":{"start":{"line":228,"column":6},"end":{"line":228,"column":41}},"45":{"start":{"line":233,"column":2},"end":{"line":233,"column":18}},"46":{"start":{"line":234,"column":2},"end":{"line":236,"column":5}},"47":{"start":{"line":235,"column":4},"end":{"line":235,"column":36}},"48":{"start":{"line":239,"column":0},"end":{"line":241,"column":2}},"49":{"start":{"line":240,"column":2},"end":{"line":240,"column":40}},"50":{"start":{"line":243,"column":0},"end":{"line":243,"column":44}},"51":{"start":{"line":245,"column":0},"end":{"line":253,"column":0}},"52":{"start":{"line":246,"column":2},"end":{"line":249,"column":3}},"53":{"start":{"line":247,"column":4},"end":{"line":247,"column":91}},"54":{"start":{"line":248,"column":4},"end":{"line":248,"column":48}},"55":{"start":{"line":251,"column":2},"end":{"line":251,"column":15}},"56":{"start":{"line":258,"column":0},"end":{"line":267,"column":1}},"57":{"start":{"line":260,"column":2},"end":{"line":260,"column":22}},"58":{"start":{"line":262,"column":2},"end":{"line":262,"column":21}},"59":{"start":{"line":263,"column":2},"end":{"line":263,"column":29}},"60":{"start":{"line":264,"column":2},"end":{"line":264,"column":27}},"61":{"start":{"line":266,"column":2},"end":{"line":266,"column":34}},"62":{"start":{"line":268,"column":0},"end":{"line":268,"column":107}},"63":{"start":{"line":270,"column":0},"end":{"line":276,"column":2}},"64":{"start":{"line":271,"column":2},"end":{"line":275,"column":3}},"65":{"start":{"line":272,"column":4},"end":{"line":272,"column":49}},"66":{"start":{"line":274,"column":4},"end":{"line":274,"column":75}},"67":{"start":{"line":278,"column":0},"end":{"line":291,"column":2}},"68":{"start":{"line":279,"column":2},"end":{"line":290,"column":3}},"69":{"start":{"line":280,"column":4},"end":{"line":286,"column":5}},"70":{"start":{"line":281,"column":6},"end":{"line":285,"column":7}},"71":{"start":{"line":282,"column":8},"end":{"line":282,"column":49}},"72":{"start":{"line":284,"column":8},"end":{"line":284,"column":44}},"73":{"start":{"line":287,"column":4},"end":{"line":287,"column":22}},"74":{"start":{"line":289,"column":4},"end":{"line":289,"column":49}},"75":{"start":{"line":293,"column":0},"end":{"line":303,"column":2}},"76":{"start":{"line":294,"column":2},"end":{"line":302,"column":3}},"77":{"start":{"line":295,"column":4},"end":{"line":295,"column":63}},"78":{"start":{"line":297,"column":4},"end":{"line":297,"column":30}},"79":{"start":{"line":298,"column":4},"end":{"line":300,"column":5}},"80":{"start":{"line":299,"column":6},"end":{"line":299,"column":63}},"81":{"start":{"line":301,"column":4},"end":{"line":301,"column":32}},"82":{"start":{"line":305,"column":0},"end":{"line":311,"column":2}},"83":{"start":{"line":306,"column":2},"end":{"line":310,"column":3}},"84":{"start":{"line":307,"column":4},"end":{"line":307,"column":66}},"85":{"start":{"line":309,"column":4},"end":{"line":309,"column":45}},"86":{"start":{"line":313,"column":0},"end":{"line":315,"column":2}},"87":{"start":{"line":314,"column":2},"end":{"line":314,"column":43}},"88":{"start":{"line":317,"column":0},"end":{"line":319,"column":2}},"89":{"start":{"line":318,"column":2},"end":{"line":318,"column":28}},"90":{"start":{"line":321,"column":0},"end":{"line":321,"column":44}},"91":{"start":{"line":323,"column":0},"end":{"line":323,"column":94}},"92":{"start":{"line":328,"column":0},"end":{"line":328,"column":36}},"93":{"start":{"line":329,"column":0},"end":{"line":329,"column":24}},"94":{"start":{"line":330,"column":0},"end":{"line":330,"column":42}},"95":{"start":{"line":331,"column":0},"end":{"line":331,"column":44}},"96":{"start":{"line":332,"column":0},"end":{"line":332,"column":42}},"97":{"start":{"line":337,"column":0},"end":{"line":380,"column":1}},"98":{"start":{"line":338,"column":2},"end":{"line":338,"column":38}},"99":{"start":{"line":340,"column":2},"end":{"line":340,"column":74}},"100":{"start":{"line":341,"column":2},"end":{"line":341,"column":36}},"101":{"start":{"line":343,"column":2},"end":{"line":343,"column":37}},"102":{"start":{"line":344,"column":2},"end":{"line":344,"column":43}},"103":{"start":{"line":347,"column":2},"end":{"line":377,"column":3}},"104":{"start":{"line":348,"column":4},"end":{"line":348,"column":54}},"105":{"start":{"line":349,"column":4},"end":{"line":349,"column":23}},"106":{"start":{"line":350,"column":4},"end":{"line":350,"column":47}},"107":{"start":{"line":351,"column":4},"end":{"line":351,"column":46}},"108":{"start":{"line":352,"column":4},"end":{"line":352,"column":47}},"109":{"start":{"line":353,"column":4},"end":{"line":353,"column":79}},"110":{"start":{"line":354,"column":4},"end":{"line":354,"column":56}},"111":{"start":{"line":355,"column":4},"end":{"line":362,"column":7}},"112":{"start":{"line":356,"column":6},"end":{"line":356,"column":73}},"113":{"start":{"line":357,"column":6},"end":{"line":361,"column":7}},"114":{"start":{"line":358,"column":8},"end":{"line":358,"column":22}},"115":{"start":{"line":360,"column":8},"end":{"line":360,"column":25}},"116":{"start":{"line":363,"column":4},"end":{"line":363,"column":64}},"117":{"start":{"line":367,"column":7},"end":{"line":377,"column":3}},"118":{"start":{"line":368,"column":4},"end":{"line":368,"column":60}},"119":{"start":{"line":369,"column":4},"end":{"line":369,"column":25}},"120":{"start":{"line":370,"column":4},"end":{"line":370,"column":43}},"121":{"start":{"line":375,"column":4},"end":{"line":375,"column":81}},"122":{"start":{"line":376,"column":4},"end":{"line":376,"column":95}},"123":{"start":{"line":379,"column":2},"end":{"line":379,"column":58}},"124":{"start":{"line":381,"column":0},"end":{"line":381,"column":93}},"125":{"start":{"line":384,"column":0},"end":{"line":406,"column":2}},"126":{"start":{"line":385,"column":2},"end":{"line":385,"column":67}},"127":{"start":{"line":387,"column":2},"end":{"line":390,"column":54}},"128":{"start":{"line":392,"column":2},"end":{"line":392,"column":39}},"129":{"start":{"line":394,"column":2},"end":{"line":394,"column":18}},"130":{"start":{"line":395,"column":2},"end":{"line":400,"column":5}},"131":{"start":{"line":396,"column":4},"end":{"line":396,"column":48}},"132":{"start":{"line":397,"column":4},"end":{"line":397,"column":46}},"133":{"start":{"line":399,"column":4},"end":{"line":399,"column":78}},"134":{"start":{"line":402,"column":2},"end":{"line":402,"column":60}},"135":{"start":{"line":403,"column":2},"end":{"line":403,"column":58}},"136":{"start":{"line":405,"column":2},"end":{"line":405,"column":44}},"137":{"start":{"line":408,"column":0},"end":{"line":421,"column":2}},"138":{"start":{"line":409,"column":2},"end":{"line":409,"column":69}},"139":{"start":{"line":411,"column":2},"end":{"line":414,"column":52}},"140":{"start":{"line":416,"column":2},"end":{"line":418,"column":3}},"141":{"start":{"line":417,"column":4},"end":{"line":417,"column":64}},"142":{"start":{"line":420,"column":2},"end":{"line":420,"column":34}},"143":{"start":{"line":426,"column":0},"end":{"line":430,"column":2}},"144":{"start":{"line":427,"column":2},"end":{"line":428,"column":55}},"145":{"start":{"line":429,"column":2},"end":{"line":429,"column":53}},"146":{"start":{"line":432,"column":0},"end":{"line":435,"column":2}},"147":{"start":{"line":433,"column":2},"end":{"line":433,"column":35}},"148":{"start":{"line":434,"column":2},"end":{"line":434,"column":31}},"149":{"start":{"line":437,"column":0},"end":{"line":441,"column":2}},"150":{"start":{"line":438,"column":2},"end":{"line":440,"column":3}},"151":{"start":{"line":439,"column":4},"end":{"line":439,"column":47}},"152":{"start":{"line":443,"column":0},"end":{"line":456,"column":3}},"153":{"start":{"line":445,"column":4},"end":{"line":449,"column":5}},"154":{"start":{"line":446,"column":6},"end":{"line":446,"column":34}},"155":{"start":{"line":448,"column":6},"end":{"line":448,"column":23}},"156":{"start":{"line":452,"column":4},"end":{"line":454,"column":5}},"157":{"start":{"line":453,"column":6},"end":{"line":453,"column":37}},"158":{"start":{"line":462,"column":0},"end":{"line":468,"column":2}},"159":{"start":{"line":463,"column":2},"end":{"line":467,"column":3}},"160":{"start":{"line":464,"column":4},"end":{"line":464,"column":60}},"161":{"start":{"line":466,"column":4},"end":{"line":466,"column":58}},"162":{"start":{"line":471,"column":0},"end":{"line":475,"column":2}},"163":{"start":{"line":472,"column":2},"end":{"line":474,"column":3}},"164":{"start":{"line":473,"column":4},"end":{"line":473,"column":51}},"165":{"start":{"line":477,"column":0},"end":{"line":490,"column":1}},"166":{"start":{"line":478,"column":2},"end":{"line":481,"column":3}},"167":{"start":{"line":479,"column":4},"end":{"line":479,"column":30}},"168":{"start":{"line":480,"column":4},"end":{"line":480,"column":24}},"169":{"start":{"line":483,"column":2},"end":{"line":483,"column":35}},"170":{"start":{"line":485,"column":2},"end":{"line":487,"column":3}},"171":{"start":{"line":486,"column":4},"end":{"line":486,"column":42}},"172":{"start":{"line":489,"column":2},"end":{"line":489,"column":16}},"173":{"start":{"line":495,"column":0},"end":{"line":497,"column":1}},"174":{"start":{"line":496,"column":2},"end":{"line":496,"column":37}},"175":{"start":{"line":498,"column":0},"end":{"line":498,"column":114}},"176":{"start":{"line":504,"column":0},"end":{"line":530,"column":2}},"177":{"start":{"line":515,"column":2},"end":{"line":515,"column":75}},"178":{"start":{"line":516,"column":2},"end":{"line":516,"column":75}},"179":{"start":{"line":517,"column":2},"end":{"line":517,"column":80}},"180":{"start":{"line":518,"column":2},"end":{"line":518,"column":75}},"181":{"start":{"line":521,"column":2},"end":{"line":521,"column":32}},"182":{"start":{"line":524,"column":2},"end":{"line":524,"column":59}},"183":{"start":{"line":527,"column":2},"end":{"line":528,"column":80}},"184":{"start":{"line":529,"column":2},"end":{"line":529,"column":21}},"185":{"start":{"line":535,"column":0},"end":{"line":545,"column":1}},"186":{"start":{"line":536,"column":2},"end":{"line":536,"column":29}},"187":{"start":{"line":538,"column":2},"end":{"line":538,"column":55}},"188":{"start":{"line":540,"column":2},"end":{"line":540,"column":23}},"189":{"start":{"line":541,"column":2},"end":{"line":541,"column":24}},"190":{"start":{"line":542,"column":2},"end":{"line":542,"column":23}},"191":{"start":{"line":544,"column":2},"end":{"line":544,"column":65}},"192":{"start":{"line":546,"column":0},"end":{"line":546,"column":116}},"193":{"start":{"line":548,"column":0},"end":{"line":570,"column":2}},"194":{"start":{"line":549,"column":2},"end":{"line":553,"column":3}},"195":{"start":{"line":550,"column":4},"end":{"line":550,"column":93}},"196":{"start":{"line":552,"column":4},"end":{"line":552,"column":27}},"197":{"start":{"line":555,"column":2},"end":{"line":557,"column":3}},"198":{"start":{"line":556,"column":4},"end":{"line":556,"column":40}},"199":{"start":{"line":558,"column":2},"end":{"line":558,"column":26}},"200":{"start":{"line":560,"column":2},"end":{"line":562,"column":3}},"201":{"start":{"line":561,"column":4},"end":{"line":561,"column":46}},"202":{"start":{"line":564,"column":2},"end":{"line":564,"column":92}},"203":{"start":{"line":566,"column":2},"end":{"line":566,"column":52}},"204":{"start":{"line":568,"column":2},"end":{"line":568,"column":31}},"205":{"start":{"line":569,"column":2},"end":{"line":569,"column":26}},"206":{"start":{"line":572,"column":0},"end":{"line":576,"column":2}},"207":{"start":{"line":573,"column":2},"end":{"line":575,"column":3}},"208":{"start":{"line":574,"column":4},"end":{"line":574,"column":36}},"209":{"start":{"line":578,"column":0},"end":{"line":581,"column":2}},"210":{"start":{"line":579,"column":2},"end":{"line":579,"column":26}},"211":{"start":{"line":580,"column":2},"end":{"line":580,"column":64}},"212":{"start":{"line":583,"column":0},"end":{"line":586,"column":2}},"213":{"start":{"line":584,"column":2},"end":{"line":584,"column":26}},"214":{"start":{"line":585,"column":2},"end":{"line":585,"column":62}},"215":{"start":{"line":588,"column":0},"end":{"line":590,"column":2}},"216":{"start":{"line":589,"column":2},"end":{"line":589,"column":33}},"217":{"start":{"line":592,"column":0},"end":{"line":615,"column":2}},"218":{"start":{"line":593,"column":2},"end":{"line":595,"column":3}},"219":{"start":{"line":594,"column":4},"end":{"line":594,"column":33}},"220":{"start":{"line":597,"column":2},"end":{"line":599,"column":3}},"221":{"start":{"line":598,"column":4},"end":{"line":598,"column":51}},"222":{"start":{"line":601,"column":2},"end":{"line":606,"column":22}},"223":{"start":{"line":608,"column":2},"end":{"line":610,"column":72}},"224":{"start":{"line":612,"column":2},"end":{"line":612,"column":48}},"225":{"start":{"line":614,"column":2},"end":{"line":614,"column":42}},"226":{"start":{"line":619,"column":0},"end":{"line":625,"column":2}},"227":{"start":{"line":620,"column":2},"end":{"line":624,"column":3}},"228":{"start":{"line":621,"column":4},"end":{"line":621,"column":60}},"229":{"start":{"line":623,"column":4},"end":{"line":623,"column":61}},"230":{"start":{"line":630,"column":0},"end":{"line":630,"column":40}},"231":{"start":{"line":631,"column":0},"end":{"line":631,"column":42}},"232":{"start":{"line":632,"column":0},"end":{"line":632,"column":44}},"233":{"start":{"line":633,"column":0},"end":{"line":633,"column":22}},"234":{"start":{"line":634,"column":0},"end":{"line":634,"column":32}},"235":{"start":{"line":635,"column":0},"end":{"line":637,"column":2}},"236":{"start":{"line":636,"column":2},"end":{"line":636,"column":75}},"237":{"start":{"line":638,"column":0},"end":{"line":640,"column":2}},"238":{"start":{"line":639,"column":2},"end":{"line":639,"column":71}},"239":{"start":{"line":645,"column":0},"end":{"line":665,"column":1}},"240":{"start":{"line":646,"column":2},"end":{"line":646,"column":26}},"241":{"start":{"line":648,"column":2},"end":{"line":648,"column":38}},"242":{"start":{"line":650,"column":2},"end":{"line":650,"column":36}},"243":{"start":{"line":651,"column":2},"end":{"line":651,"column":74}},"244":{"start":{"line":652,"column":2},"end":{"line":652,"column":22}},"245":{"start":{"line":658,"column":2},"end":{"line":658,"column":24}},"246":{"start":{"line":659,"column":2},"end":{"line":659,"column":50}},"247":{"start":{"line":660,"column":2},"end":{"line":660,"column":49}},"248":{"start":{"line":661,"column":2},"end":{"line":661,"column":51}},"249":{"start":{"line":663,"column":2},"end":{"line":663,"column":42}},"250":{"start":{"line":664,"column":2},"end":{"line":664,"column":44}},"251":{"start":{"line":666,"column":0},"end":{"line":666,"column":91}},"252":{"start":{"line":668,"column":0},"end":{"line":774,"column":2}},"253":{"start":{"line":669,"column":2},"end":{"line":673,"column":3}},"254":{"start":{"line":670,"column":4},"end":{"line":670,"column":33}},"255":{"start":{"line":672,"column":4},"end":{"line":672,"column":40}},"256":{"start":{"line":675,"column":2},"end":{"line":675,"column":59}},"257":{"start":{"line":676,"column":2},"end":{"line":676,"column":50}},"258":{"start":{"line":677,"column":2},"end":{"line":677,"column":65}},"259":{"start":{"line":678,"column":2},"end":{"line":678,"column":37}},"260":{"start":{"line":679,"column":2},"end":{"line":679,"column":37}},"261":{"start":{"line":681,"column":2},"end":{"line":684,"column":3}},"262":{"start":{"line":682,"column":4},"end":{"line":682,"column":85}},"263":{"start":{"line":683,"column":4},"end":{"line":683,"column":70}},"264":{"start":{"line":686,"column":2},"end":{"line":686,"column":47}},"265":{"start":{"line":688,"column":2},"end":{"line":690,"column":3}},"266":{"start":{"line":689,"column":4},"end":{"line":689,"column":37}},"267":{"start":{"line":692,"column":2},"end":{"line":696,"column":14}},"268":{"start":{"line":699,"column":2},"end":{"line":771,"column":3}},"269":{"start":{"line":700,"column":4},"end":{"line":700,"column":39}},"270":{"start":{"line":701,"column":4},"end":{"line":701,"column":53}},"271":{"start":{"line":705,"column":7},"end":{"line":771,"column":3}},"272":{"start":{"line":706,"column":4},"end":{"line":706,"column":65}},"273":{"start":{"line":707,"column":4},"end":{"line":711,"column":7}},"274":{"start":{"line":712,"column":4},"end":{"line":712,"column":50}},"275":{"start":{"line":713,"column":4},"end":{"line":713,"column":53}},"276":{"start":{"line":718,"column":4},"end":{"line":718,"column":24}},"277":{"start":{"line":719,"column":4},"end":{"line":719,"column":47}},"278":{"start":{"line":720,"column":4},"end":{"line":720,"column":46}},"279":{"start":{"line":721,"column":4},"end":{"line":721,"column":38}},"280":{"start":{"line":722,"column":4},"end":{"line":722,"column":37}},"281":{"start":{"line":723,"column":4},"end":{"line":723,"column":46}},"282":{"start":{"line":725,"column":4},"end":{"line":732,"column":7}},"283":{"start":{"line":726,"column":6},"end":{"line":726,"column":73}},"284":{"start":{"line":727,"column":6},"end":{"line":731,"column":7}},"285":{"start":{"line":728,"column":8},"end":{"line":728,"column":21}},"286":{"start":{"line":730,"column":8},"end":{"line":730,"column":47}},"287":{"start":{"line":734,"column":4},"end":{"line":734,"column":20}},"288":{"start":{"line":735,"column":4},"end":{"line":761,"column":5}},"289":{"start":{"line":736,"column":6},"end":{"line":736,"column":19}},"290":{"start":{"line":737,"column":6},"end":{"line":737,"column":99}},"291":{"start":{"line":738,"column":6},"end":{"line":744,"column":7}},"292":{"start":{"line":739,"column":8},"end":{"line":739,"column":48}},"293":{"start":{"line":740,"column":8},"end":{"line":740,"column":44}},"294":{"start":{"line":741,"column":8},"end":{"line":741,"column":69}},"295":{"start":{"line":742,"column":8},"end":{"line":742,"column":46}},"296":{"start":{"line":743,"column":8},"end":{"line":743,"column":54}},"297":{"start":{"line":745,"column":6},"end":{"line":760,"column":7}},"298":{"start":{"line":746,"column":8},"end":{"line":750,"column":9}},"299":{"start":{"line":747,"column":10},"end":{"line":747,"column":27}},"300":{"start":{"line":749,"column":10},"end":{"line":749,"column":31}},"301":{"start":{"line":752,"column":8},"end":{"line":759,"column":9}},"302":{"start":{"line":753,"column":10},"end":{"line":754,"column":59}},"303":{"start":{"line":755,"column":10},"end":{"line":755,"column":41}},"304":{"start":{"line":756,"column":10},"end":{"line":756,"column":35}},"305":{"start":{"line":758,"column":10},"end":{"line":758,"column":36}},"306":{"start":{"line":763,"column":4},"end":{"line":770,"column":7}},"307":{"start":{"line":764,"column":6},"end":{"line":764,"column":21}},"308":{"start":{"line":765,"column":6},"end":{"line":769,"column":7}},"309":{"start":{"line":766,"column":8},"end":{"line":766,"column":57}},"310":{"start":{"line":768,"column":8},"end":{"line":768,"column":40}},"311":{"start":{"line":773,"column":2},"end":{"line":773,"column":17}},"312":{"start":{"line":776,"column":0},"end":{"line":780,"column":2}},"313":{"start":{"line":777,"column":2},"end":{"line":777,"column":48}},"314":{"start":{"line":778,"column":2},"end":{"line":778,"column":16}},"315":{"start":{"line":779,"column":2},"end":{"line":779,"column":17}},"316":{"start":{"line":782,"column":0},"end":{"line":791,"column":1}},"317":{"start":{"line":783,"column":2},"end":{"line":783,"column":36}},"318":{"start":{"line":784,"column":2},"end":{"line":784,"column":35}},"319":{"start":{"line":785,"column":2},"end":{"line":785,"column":40}},"320":{"start":{"line":786,"column":2},"end":{"line":786,"column":37}},"321":{"start":{"line":787,"column":2},"end":{"line":787,"column":37}},"322":{"start":{"line":788,"column":2},"end":{"line":788,"column":18}},"323":{"start":{"line":789,"column":2},"end":{"line":789,"column":23}},"324":{"start":{"line":790,"column":2},"end":{"line":790,"column":22}},"325":{"start":{"line":793,"column":0},"end":{"line":800,"column":3}},"326":{"start":{"line":795,"column":4},"end":{"line":795,"column":39}},"327":{"start":{"line":798,"column":4},"end":{"line":798,"column":40}},"328":{"start":{"line":802,"column":0},"end":{"line":802,"column":34}},"329":{"start":{"line":807,"column":0},"end":{"line":813,"column":1}},"330":{"start":{"line":808,"column":2},"end":{"line":808,"column":29}},"331":{"start":{"line":810,"column":2},"end":{"line":810,"column":24}},"332":{"start":{"line":812,"column":2},"end":{"line":812,"column":26}},"333":{"start":{"line":814,"column":0},"end":{"line":814,"column":114}},"334":{"start":{"line":816,"column":0},"end":{"line":848,"column":2}},"335":{"start":{"line":817,"column":2},"end":{"line":817,"column":23}},"336":{"start":{"line":819,"column":2},"end":{"line":819,"column":55}},"337":{"start":{"line":821,"column":2},"end":{"line":823,"column":3}},"338":{"start":{"line":822,"column":4},"end":{"line":822,"column":46}},"339":{"start":{"line":824,"column":2},"end":{"line":824,"column":30}},"340":{"start":{"line":825,"column":2},"end":{"line":825,"column":22}},"341":{"start":{"line":827,"column":2},"end":{"line":829,"column":3}},"342":{"start":{"line":828,"column":4},"end":{"line":828,"column":83}},"343":{"start":{"line":831,"column":2},"end":{"line":831,"column":53}},"344":{"start":{"line":832,"column":2},"end":{"line":832,"column":38}},"345":{"start":{"line":833,"column":2},"end":{"line":833,"column":39}},"346":{"start":{"line":834,"column":2},"end":{"line":834,"column":34}},"347":{"start":{"line":836,"column":2},"end":{"line":838,"column":74}},"348":{"start":{"line":839,"column":2},"end":{"line":839,"column":31}},"349":{"start":{"line":840,"column":2},"end":{"line":840,"column":26}},"350":{"start":{"line":842,"column":2},"end":{"line":842,"column":35}},"351":{"start":{"line":844,"column":2},"end":{"line":844,"column":51}},"352":{"start":{"line":845,"column":2},"end":{"line":845,"column":69}},"353":{"start":{"line":847,"column":2},"end":{"line":847,"column":56}},"354":{"start":{"line":850,"column":0},"end":{"line":854,"column":2}},"355":{"start":{"line":851,"column":2},"end":{"line":851,"column":59}},"356":{"start":{"line":852,"column":2},"end":{"line":852,"column":39}},"357":{"start":{"line":853,"column":2},"end":{"line":853,"column":35}},"358":{"start":{"line":856,"column":0},"end":{"line":862,"column":2}},"359":{"start":{"line":857,"column":2},"end":{"line":861,"column":3}},"360":{"start":{"line":858,"column":4},"end":{"line":858,"column":35}},"361":{"start":{"line":860,"column":4},"end":{"line":860,"column":63}},"362":{"start":{"line":866,"column":0},"end":{"line":872,"column":2}},"363":{"start":{"line":867,"column":2},"end":{"line":871,"column":3}},"364":{"start":{"line":868,"column":4},"end":{"line":868,"column":60}},"365":{"start":{"line":870,"column":4},"end":{"line":870,"column":61}},"366":{"start":{"line":875,"column":0},"end":{"line":881,"column":2}},"367":{"start":{"line":876,"column":2},"end":{"line":880,"column":3}},"368":{"start":{"line":877,"column":4},"end":{"line":877,"column":37}},"369":{"start":{"line":878,"column":9},"end":{"line":880,"column":3}},"370":{"start":{"line":879,"column":4},"end":{"line":879,"column":59}},"371":{"start":{"line":883,"column":0},"end":{"line":889,"column":2}},"372":{"start":{"line":884,"column":2},"end":{"line":888,"column":3}},"373":{"start":{"line":885,"column":4},"end":{"line":885,"column":58}},"374":{"start":{"line":886,"column":9},"end":{"line":888,"column":3}},"375":{"start":{"line":887,"column":4},"end":{"line":887,"column":80}},"376":{"start":{"line":891,"column":0},"end":{"line":897,"column":2}},"377":{"start":{"line":892,"column":2},"end":{"line":896,"column":3}},"378":{"start":{"line":893,"column":4},"end":{"line":893,"column":47}},"379":{"start":{"line":894,"column":9},"end":{"line":896,"column":3}},"380":{"start":{"line":895,"column":4},"end":{"line":895,"column":69}},"381":{"start":{"line":900,"column":0},"end":{"line":908,"column":2}},"382":{"start":{"line":901,"column":2},"end":{"line":907,"column":3}},"383":{"start":{"line":902,"column":4},"end":{"line":902,"column":25}},"384":{"start":{"line":903,"column":9},"end":{"line":907,"column":3}},"385":{"start":{"line":904,"column":4},"end":{"line":904,"column":32}},"386":{"start":{"line":906,"column":4},"end":{"line":906,"column":45}},"387":{"start":{"line":911,"column":0},"end":{"line":921,"column":2}},"388":{"start":{"line":912,"column":2},"end":{"line":912,"column":71}},"389":{"start":{"line":914,"column":2},"end":{"line":914,"column":53}},"390":{"start":{"line":916,"column":2},"end":{"line":920,"column":3}},"391":{"start":{"line":917,"column":4},"end":{"line":917,"column":31}},"392":{"start":{"line":919,"column":4},"end":{"line":919,"column":21}},"393":{"start":{"line":926,"column":0},"end":{"line":928,"column":1}},"394":{"start":{"line":927,"column":2},"end":{"line":927,"column":37}},"395":{"start":{"line":929,"column":0},"end":{"line":929,"column":116}},"396":{"start":{"line":935,"column":0},"end":{"line":951,"column":2}},"397":{"start":{"line":943,"column":2},"end":{"line":943,"column":86}},"398":{"start":{"line":946,"column":2},"end":{"line":946,"column":59}},"399":{"start":{"line":949,"column":2},"end":{"line":949,"column":89}},"400":{"start":{"line":950,"column":2},"end":{"line":950,"column":21}},"401":{"start":{"line":956,"column":0},"end":{"line":972,"column":1}},"402":{"start":{"line":957,"column":2},"end":{"line":957,"column":30}},"403":{"start":{"line":958,"column":2},"end":{"line":958,"column":22}},"404":{"start":{"line":959,"column":2},"end":{"line":959,"column":20}},"405":{"start":{"line":960,"column":2},"end":{"line":960,"column":36}},"406":{"start":{"line":962,"column":2},"end":{"line":962,"column":37}},"407":{"start":{"line":964,"column":2},"end":{"line":964,"column":34}},"408":{"start":{"line":966,"column":2},"end":{"line":966,"column":40}},"409":{"start":{"line":968,"column":2},"end":{"line":968,"column":60}},"410":{"start":{"line":969,"column":2},"end":{"line":969,"column":69}},"411":{"start":{"line":971,"column":2},"end":{"line":971,"column":56}},"412":{"start":{"line":973,"column":0},"end":{"line":973,"column":114}},"413":{"start":{"line":975,"column":0},"end":{"line":977,"column":2}},"414":{"start":{"line":976,"column":2},"end":{"line":976,"column":39}},"415":{"start":{"line":979,"column":0},"end":{"line":981,"column":2}},"416":{"start":{"line":980,"column":2},"end":{"line":980,"column":42}},"417":{"start":{"line":983,"column":0},"end":{"line":983,"column":76}}},"branchMap":{"1":{"line":218,"type":"if","locations":[{"start":{"line":218,"column":4},"end":{"line":218,"column":4}},{"start":{"line":218,"column":4},"end":{"line":218,"column":4}}]},"2":{"line":227,"type":"if","locations":[{"start":{"line":227,"column":4},"end":{"line":227,"column":4}},{"start":{"line":227,"column":4},"end":{"line":227,"column":4}}]},"3":{"line":246,"type":"if","locations":[{"start":{"line":246,"column":2},"end":{"line":246,"column":2}},{"start":{"line":246,"column":2},"end":{"line":246,"column":2}}]},"4":{"line":246,"type":"binary-expr","locations":[{"start":{"line":246,"column":7},"end":{"line":246,"column":32}},{"start":{"line":246,"column":38},"end":{"line":246,"column":56}}]},"5":{"line":271,"type":"if","locations":[{"start":{"line":271,"column":2},"end":{"line":271,"column":2}},{"start":{"line":271,"column":2},"end":{"line":271,"column":2}}]},"6":{"line":279,"type":"if","locations":[{"start":{"line":279,"column":2},"end":{"line":279,"column":2}},{"start":{"line":279,"column":2},"end":{"line":279,"column":2}}]},"7":{"line":280,"type":"if","locations":[{"start":{"line":280,"column":4},"end":{"line":280,"column":4}},{"start":{"line":280,"column":4},"end":{"line":280,"column":4}}]},"8":{"line":281,"type":"if","locations":[{"start":{"line":281,"column":6},"end":{"line":281,"column":6}},{"start":{"line":281,"column":6},"end":{"line":281,"column":6}}]},"9":{"line":294,"type":"if","locations":[{"start":{"line":294,"column":2},"end":{"line":294,"column":2}},{"start":{"line":294,"column":2},"end":{"line":294,"column":2}}]},"10":{"line":298,"type":"if","locations":[{"start":{"line":298,"column":4},"end":{"line":298,"column":4}},{"start":{"line":298,"column":4},"end":{"line":298,"column":4}}]},"11":{"line":306,"type":"if","locations":[{"start":{"line":306,"column":2},"end":{"line":306,"column":2}},{"start":{"line":306,"column":2},"end":{"line":306,"column":2}}]},"12":{"line":340,"type":"binary-expr","locations":[{"start":{"line":340,"column":15},"end":{"line":340,"column":26}},{"start":{"line":340,"column":30},"end":{"line":340,"column":43}}]},"13":{"line":347,"type":"if","locations":[{"start":{"line":347,"column":2},"end":{"line":347,"column":2}},{"start":{"line":347,"column":2},"end":{"line":347,"column":2}}]},"14":{"line":347,"type":"binary-expr","locations":[{"start":{"line":347,"column":7},"end":{"line":347,"column":18}},{"start":{"line":347,"column":22},"end":{"line":347,"column":34}},{"start":{"line":347,"column":39},"end":{"line":347,"column":50}}]},"15":{"line":356,"type":"binary-expr","locations":[{"start":{"line":356,"column":31},"end":{"line":356,"column":50}},{"start":{"line":356,"column":54},"end":{"line":356,"column":72}}]},"16":{"line":357,"type":"if","locations":[{"start":{"line":357,"column":6},"end":{"line":357,"column":6}},{"start":{"line":357,"column":6},"end":{"line":357,"column":6}}]},"17":{"line":357,"type":"binary-expr","locations":[{"start":{"line":357,"column":11},"end":{"line":357,"column":52}},{"start":{"line":357,"column":57},"end":{"line":357,"column":74}}]},"18":{"line":367,"type":"if","locations":[{"start":{"line":367,"column":7},"end":{"line":367,"column":7}},{"start":{"line":367,"column":7},"end":{"line":367,"column":7}}]},"19":{"line":409,"type":"binary-expr","locations":[{"start":{"line":409,"column":27},"end":{"line":409,"column":46}},{"start":{"line":409,"column":50},"end":{"line":409,"column":68}}]},"20":{"line":427,"type":"cond-expr","locations":[{"start":{"line":427,"column":58},"end":{"line":427,"column":79}},{"start":{"line":427,"column":83},"end":{"line":427,"column":87}}]},"21":{"line":438,"type":"if","locations":[{"start":{"line":438,"column":2},"end":{"line":438,"column":2}},{"start":{"line":438,"column":2},"end":{"line":438,"column":2}}]},"22":{"line":445,"type":"if","locations":[{"start":{"line":445,"column":4},"end":{"line":445,"column":4}},{"start":{"line":445,"column":4},"end":{"line":445,"column":4}}]},"23":{"line":452,"type":"if","locations":[{"start":{"line":452,"column":4},"end":{"line":452,"column":4}},{"start":{"line":452,"column":4},"end":{"line":452,"column":4}}]},"24":{"line":463,"type":"if","locations":[{"start":{"line":463,"column":2},"end":{"line":463,"column":2}},{"start":{"line":463,"column":2},"end":{"line":463,"column":2}}]},"25":{"line":463,"type":"binary-expr","locations":[{"start":{"line":463,"column":7},"end":{"line":463,"column":26}},{"start":{"line":463,"column":32},"end":{"line":463,"column":51}}]},"26":{"line":464,"type":"binary-expr","locations":[{"start":{"line":464,"column":27},"end":{"line":464,"column":35}},{"start":{"line":464,"column":39},"end":{"line":464,"column":58}}]},"27":{"line":472,"type":"if","locations":[{"start":{"line":472,"column":2},"end":{"line":472,"column":2}},{"start":{"line":472,"column":2},"end":{"line":472,"column":2}}]},"28":{"line":478,"type":"if","locations":[{"start":{"line":478,"column":2},"end":{"line":478,"column":2}},{"start":{"line":478,"column":2},"end":{"line":478,"column":2}}]},"29":{"line":485,"type":"if","locations":[{"start":{"line":485,"column":2},"end":{"line":485,"column":2}},{"start":{"line":485,"column":2},"end":{"line":485,"column":2}}]},"30":{"line":549,"type":"if","locations":[{"start":{"line":549,"column":2},"end":{"line":549,"column":2}},{"start":{"line":549,"column":2},"end":{"line":549,"column":2}}]},"31":{"line":560,"type":"if","locations":[{"start":{"line":560,"column":2},"end":{"line":560,"column":2}},{"start":{"line":560,"column":2},"end":{"line":560,"column":2}}]},"32":{"line":560,"type":"binary-expr","locations":[{"start":{"line":560,"column":6},"end":{"line":560,"column":19}},{"start":{"line":560,"column":23},"end":{"line":560,"column":49}}]},"33":{"line":573,"type":"if","locations":[{"start":{"line":573,"column":2},"end":{"line":573,"column":2}},{"start":{"line":573,"column":2},"end":{"line":573,"column":2}}]},"34":{"line":593,"type":"if","locations":[{"start":{"line":593,"column":2},"end":{"line":593,"column":2}},{"start":{"line":593,"column":2},"end":{"line":593,"column":2}}]},"35":{"line":597,"type":"if","locations":[{"start":{"line":597,"column":2},"end":{"line":597,"column":2}},{"start":{"line":597,"column":2},"end":{"line":597,"column":2}}]},"36":{"line":602,"type":"binary-expr","locations":[{"start":{"line":602,"column":16},"end":{"line":602,"column":30}},{"start":{"line":602,"column":34},"end":{"line":602,"column":39}}]},"37":{"line":603,"type":"binary-expr","locations":[{"start":{"line":603,"column":16},"end":{"line":603,"column":32}},{"start":{"line":603,"column":36},"end":{"line":603,"column":65}},{"start":{"line":603,"column":70},"end":{"line":603,"column":101}}]},"38":{"line":604,"type":"binary-expr","locations":[{"start":{"line":604,"column":18},"end":{"line":604,"column":34}},{"start":{"line":604,"column":38},"end":{"line":604,"column":50}},{"start":{"line":604,"column":54},"end":{"line":604,"column":88}}]},"39":{"line":620,"type":"if","locations":[{"start":{"line":620,"column":2},"end":{"line":620,"column":2}},{"start":{"line":620,"column":2},"end":{"line":620,"column":2}}]},"40":{"line":620,"type":"binary-expr","locations":[{"start":{"line":620,"column":6},"end":{"line":620,"column":18}},{"start":{"line":620,"column":23},"end":{"line":620,"column":42}}]},"41":{"line":621,"type":"binary-expr","locations":[{"start":{"line":621,"column":27},"end":{"line":621,"column":35}},{"start":{"line":621,"column":39},"end":{"line":621,"column":58}}]},"42":{"line":636,"type":"binary-expr","locations":[{"start":{"line":636,"column":10},"end":{"line":636,"column":23}},{"start":{"line":636,"column":27},"end":{"line":636,"column":46}}]},"43":{"line":639,"type":"binary-expr","locations":[{"start":{"line":639,"column":10},"end":{"line":639,"column":23}},{"start":{"line":639,"column":27},"end":{"line":639,"column":46}}]},"44":{"line":651,"type":"binary-expr","locations":[{"start":{"line":651,"column":15},"end":{"line":651,"column":26}},{"start":{"line":651,"column":30},"end":{"line":651,"column":43}}]},"45":{"line":669,"type":"if","locations":[{"start":{"line":669,"column":2},"end":{"line":669,"column":2}},{"start":{"line":669,"column":2},"end":{"line":669,"column":2}}]},"46":{"line":675,"type":"binary-expr","locations":[{"start":{"line":675,"column":20},"end":{"line":675,"column":34}},{"start":{"line":675,"column":38},"end":{"line":675,"column":43}}]},"47":{"line":676,"type":"binary-expr","locations":[{"start":{"line":676,"column":21},"end":{"line":676,"column":37}},{"start":{"line":676,"column":41},"end":{"line":676,"column":49}}]},"48":{"line":677,"type":"binary-expr","locations":[{"start":{"line":677,"column":17},"end":{"line":677,"column":33}},{"start":{"line":677,"column":37},"end":{"line":677,"column":49}},{"start":{"line":677,"column":53},"end":{"line":677,"column":64}}]},"49":{"line":678,"type":"binary-expr","locations":[{"start":{"line":678,"column":17},"end":{"line":678,"column":29}},{"start":{"line":678,"column":33},"end":{"line":678,"column":36}}]},"50":{"line":679,"type":"binary-expr","locations":[{"start":{"line":679,"column":17},"end":{"line":679,"column":29}},{"start":{"line":679,"column":33},"end":{"line":679,"column":36}}]},"51":{"line":681,"type":"if","locations":[{"start":{"line":681,"column":2},"end":{"line":681,"column":2}},{"start":{"line":681,"column":2},"end":{"line":681,"column":2}}]},"52":{"line":681,"type":"binary-expr","locations":[{"start":{"line":681,"column":6},"end":{"line":681,"column":20}},{"start":{"line":681,"column":24},"end":{"line":681,"column":52}}]},"53":{"line":688,"type":"if","locations":[{"start":{"line":688,"column":2},"end":{"line":688,"column":2}},{"start":{"line":688,"column":2},"end":{"line":688,"column":2}}]},"54":{"line":699,"type":"if","locations":[{"start":{"line":699,"column":2},"end":{"line":699,"column":2}},{"start":{"line":699,"column":2},"end":{"line":699,"column":2}}]},"55":{"line":705,"type":"if","locations":[{"start":{"line":705,"column":7},"end":{"line":705,"column":7}},{"start":{"line":705,"column":7},"end":{"line":705,"column":7}}]},"56":{"line":726,"type":"binary-expr","locations":[{"start":{"line":726,"column":31},"end":{"line":726,"column":50}},{"start":{"line":726,"column":54},"end":{"line":726,"column":72}}]},"57":{"line":727,"type":"if","locations":[{"start":{"line":727,"column":6},"end":{"line":727,"column":6}},{"start":{"line":727,"column":6},"end":{"line":727,"column":6}}]},"58":{"line":737,"type":"binary-expr","locations":[{"start":{"line":737,"column":31},"end":{"line":737,"column":63}},{"start":{"line":737,"column":67},"end":{"line":737,"column":98}}]},"59":{"line":738,"type":"if","locations":[{"start":{"line":738,"column":6},"end":{"line":738,"column":6}},{"start":{"line":738,"column":6},"end":{"line":738,"column":6}}]},"60":{"line":745,"type":"if","locations":[{"start":{"line":745,"column":6},"end":{"line":745,"column":6}},{"start":{"line":745,"column":6},"end":{"line":745,"column":6}}]},"61":{"line":746,"type":"if","locations":[{"start":{"line":746,"column":8},"end":{"line":746,"column":8}},{"start":{"line":746,"column":8},"end":{"line":746,"column":8}}]},"62":{"line":752,"type":"if","locations":[{"start":{"line":752,"column":8},"end":{"line":752,"column":8}},{"start":{"line":752,"column":8},"end":{"line":752,"column":8}}]},"63":{"line":765,"type":"if","locations":[{"start":{"line":765,"column":6},"end":{"line":765,"column":6}},{"start":{"line":765,"column":6},"end":{"line":765,"column":6}}]},"64":{"line":827,"type":"if","locations":[{"start":{"line":827,"column":2},"end":{"line":827,"column":2}},{"start":{"line":827,"column":2},"end":{"line":827,"column":2}}]},"65":{"line":838,"type":"binary-expr","locations":[{"start":{"line":838,"column":29},"end":{"line":838,"column":44}},{"start":{"line":838,"column":48},"end":{"line":838,"column":50}}]},"66":{"line":857,"type":"if","locations":[{"start":{"line":857,"column":2},"end":{"line":857,"column":2}},{"start":{"line":857,"column":2},"end":{"line":857,"column":2}}]},"67":{"line":867,"type":"if","locations":[{"start":{"line":867,"column":2},"end":{"line":867,"column":2}},{"start":{"line":867,"column":2},"end":{"line":867,"column":2}}]},"68":{"line":867,"type":"binary-expr","locations":[{"start":{"line":867,"column":6},"end":{"line":867,"column":18}},{"start":{"line":867,"column":23},"end":{"line":867,"column":42}}]},"69":{"line":868,"type":"binary-expr","locations":[{"start":{"line":868,"column":27},"end":{"line":868,"column":35}},{"start":{"line":868,"column":39},"end":{"line":868,"column":58}}]},"70":{"line":876,"type":"if","locations":[{"start":{"line":876,"column":2},"end":{"line":876,"column":2}},{"start":{"line":876,"column":2},"end":{"line":876,"column":2}}]},"71":{"line":878,"type":"if","locations":[{"start":{"line":878,"column":9},"end":{"line":878,"column":9}},{"start":{"line":878,"column":9},"end":{"line":878,"column":9}}]},"72":{"line":884,"type":"if","locations":[{"start":{"line":884,"column":2},"end":{"line":884,"column":2}},{"start":{"line":884,"column":2},"end":{"line":884,"column":2}}]},"73":{"line":886,"type":"if","locations":[{"start":{"line":886,"column":9},"end":{"line":886,"column":9}},{"start":{"line":886,"column":9},"end":{"line":886,"column":9}}]},"74":{"line":892,"type":"if","locations":[{"start":{"line":892,"column":2},"end":{"line":892,"column":2}},{"start":{"line":892,"column":2},"end":{"line":892,"column":2}}]},"75":{"line":894,"type":"if","locations":[{"start":{"line":894,"column":9},"end":{"line":894,"column":9}},{"start":{"line":894,"column":9},"end":{"line":894,"column":9}}]},"76":{"line":901,"type":"if","locations":[{"start":{"line":901,"column":2},"end":{"line":901,"column":2}},{"start":{"line":901,"column":2},"end":{"line":901,"column":2}}]},"77":{"line":903,"type":"if","locations":[{"start":{"line":903,"column":9},"end":{"line":903,"column":9}},{"start":{"line":903,"column":9},"end":{"line":903,"column":9}}]},"78":{"line":916,"type":"if","locations":[{"start":{"line":916,"column":2},"end":{"line":916,"column":2}},{"start":{"line":916,"column":2},"end":{"line":916,"column":2}}]}}}} \ No newline at end of file +{"/data/upstream/node-http2/lib/http.js":{"path":"/data/upstream/node-http2/lib/http.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":3,"20":1,"21":1,"22":24,"23":24,"24":24,"25":24,"26":24,"27":24,"28":24,"29":24,"30":24,"31":24,"32":24,"33":24,"34":1,"35":1,"36":24,"37":24,"38":73,"39":13,"40":24,"41":24,"42":2,"43":1,"44":24,"45":1,"46":1,"47":60,"48":0,"49":0,"50":60,"51":1,"52":24,"53":168,"54":168,"55":0,"56":0,"57":0,"58":24,"59":73,"60":0,"61":0,"62":73,"63":0,"64":0,"65":1,"66":27,"67":27,"68":27,"69":27,"70":27,"71":1,"72":1,"73":13,"74":12,"75":1,"76":1,"77":31,"78":23,"79":2,"80":0,"81":2,"82":23,"83":8,"84":1,"85":4,"86":0,"87":4,"88":4,"89":0,"90":4,"91":1,"92":1,"93":0,"94":1,"95":1,"96":3,"97":1,"98":2,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":13,"108":13,"109":13,"110":13,"111":13,"112":13,"113":10,"114":10,"115":10,"116":10,"117":10,"118":10,"119":10,"120":10,"121":9,"122":9,"123":8,"124":1,"125":10,"126":3,"127":1,"128":1,"129":1,"130":2,"131":2,"132":11,"133":1,"134":1,"135":9,"136":9,"137":9,"138":9,"139":9,"140":10,"141":10,"142":10,"143":9,"144":9,"145":9,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"152":1,"153":9,"154":9,"155":1,"156":4,"157":4,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":0,"165":1,"166":1,"167":1,"168":9,"169":0,"170":9,"171":1,"172":0,"173":0,"174":1,"175":10,"176":1,"177":1,"178":10,"179":9,"180":9,"181":9,"182":1,"183":12,"184":1,"185":1,"186":12,"187":12,"188":12,"189":12,"190":12,"191":12,"192":12,"193":12,"194":1,"195":12,"196":12,"197":12,"198":12,"199":12,"200":12,"201":1,"202":1,"203":12,"204":1,"205":11,"206":12,"207":1,"208":12,"209":12,"210":11,"211":12,"212":12,"213":12,"214":12,"215":1,"216":23,"217":11,"218":1,"219":11,"220":11,"221":1,"222":12,"223":12,"224":1,"225":10,"226":1,"227":2,"228":1,"229":2,"230":0,"231":2,"232":2,"233":2,"234":2,"235":1,"236":12,"237":0,"238":12,"239":1,"240":1,"241":1,"242":1,"243":1,"244":1,"245":4,"246":1,"247":7,"248":1,"249":4,"250":4,"251":4,"252":4,"253":4,"254":4,"255":4,"256":4,"257":4,"258":4,"259":4,"260":1,"261":1,"262":12,"263":8,"264":4,"265":12,"266":12,"267":12,"268":12,"269":12,"270":12,"271":1,"272":1,"273":11,"274":11,"275":7,"276":11,"277":11,"278":1,"279":1,"280":10,"281":1,"282":1,"283":1,"284":1,"285":9,"286":9,"287":9,"288":9,"289":9,"290":9,"291":9,"292":9,"293":9,"294":0,"295":9,"296":9,"297":1,"298":9,"299":9,"300":9,"301":8,"302":8,"303":8,"304":8,"305":8,"306":9,"307":1,"308":1,"309":0,"310":8,"311":7,"312":7,"313":7,"314":1,"315":9,"316":9,"317":9,"318":8,"319":1,"320":11,"321":1,"322":7,"323":7,"324":7,"325":1,"326":8,"327":8,"328":8,"329":8,"330":8,"331":8,"332":8,"333":8,"334":1,"335":1,"336":1,"337":1,"338":1,"339":15,"340":15,"341":15,"342":1,"343":1,"344":10,"345":10,"346":10,"347":1,"348":10,"349":10,"350":10,"351":0,"352":10,"353":10,"354":10,"355":10,"356":10,"357":10,"358":10,"359":10,"360":10,"361":10,"362":10,"363":1,"364":5,"365":5,"366":5,"367":1,"368":0,"369":0,"370":0,"371":1,"372":40,"373":0,"374":40,"375":1,"376":3,"377":1,"378":2,"379":1,"380":1,"381":3,"382":1,"383":2,"384":1,"385":1,"386":3,"387":1,"388":2,"389":1,"390":1,"391":3,"392":1,"393":2,"394":1,"395":1,"396":1,"397":2,"398":2,"399":2,"400":2,"401":0,"402":1,"403":12,"404":1,"405":1,"406":12,"407":12,"408":12,"409":12,"410":1,"411":2,"412":2,"413":2,"414":2,"415":2,"416":2,"417":2,"418":2,"419":2,"420":2,"421":1,"422":1,"423":0,"424":1,"425":0,"426":1},"b":{"1":[13,60],"2":[0,60],"3":[60,60],"4":[0,168],"5":[0,73],"6":[0,73],"7":[12,1],"8":[23,8],"9":[2,21],"10":[0,2],"11":[0,4],"12":[0,4],"13":[0,1],"14":[13,2],"15":[10,3],"16":[13,10,3],"17":[9,9],"18":[8,1],"19":[9,8],"20":[1,2],"21":[1,1],"22":[0,9],"23":[1,0],"24":[1,0],"25":[1,0],"26":[0,9],"27":[9,9],"28":[0,0],"29":[0,0],"30":[1,9],"31":[9,0],"32":[1,11],"33":[11,1],"34":[12,11],"35":[11,12],"36":[1,1],"37":[0,2],"38":[2,2],"39":[2,1,1],"40":[2,2,2],"41":[0,12],"42":[12,0],"43":[0,0],"44":[4,4],"45":[7,7],"46":[4,1],"47":[8,4],"48":[12,12],"49":[12,3],"50":[12,4,1],"51":[12,1],"52":[12,1],"53":[1,11],"54":[12,11],"55":[7,4],"56":[1,10],"57":[1,9],"58":[9,9],"59":[0,9],"60":[9,9],"61":[8,1],"62":[1,8],"63":[1,0],"64":[7,1],"65":[8,1],"66":[0,10],"67":[10,9],"68":[0,0],"69":[0,40],"70":[40,0],"71":[0,0],"72":[1,2],"73":[1,1],"74":[1,2],"75":[1,1],"76":[1,2],"77":[1,1],"78":[1,2],"79":[1,1],"80":[2,0]},"f":{"1":2,"2":3,"3":24,"4":24,"5":2,"6":24,"7":60,"8":24,"9":27,"10":13,"11":31,"12":4,"13":1,"14":3,"15":2,"16":13,"17":9,"18":9,"19":10,"20":1,"21":9,"22":4,"23":1,"24":1,"25":1,"26":9,"27":0,"28":10,"29":12,"30":12,"31":12,"32":12,"33":23,"34":11,"35":12,"36":10,"37":2,"38":12,"39":4,"40":7,"41":4,"42":12,"43":9,"44":9,"45":9,"46":7,"47":8,"48":1,"49":1,"50":15,"51":10,"52":5,"53":0,"54":40,"55":3,"56":3,"57":3,"58":3,"59":2,"60":12,"61":12,"62":2,"63":0,"64":0},"fnMap":{"1":{"name":"noop","line":164,"loc":{"start":{"line":164,"column":0},"end":{"line":164,"column":16}}},"2":{"name":"(anonymous_2)","line":173,"loc":{"start":{"line":173,"column":9},"end":{"line":173,"column":20}}},"3":{"name":"IncomingMessage","line":182,"loc":{"start":{"line":182,"column":0},"end":{"line":182,"column":33}}},"4":{"name":"_onHeaders","line":211,"loc":{"start":{"line":211,"column":39},"end":{"line":211,"column":68}}},"5":{"name":"(anonymous_5)","line":224,"loc":{"start":{"line":224,"column":28},"end":{"line":224,"column":46}}},"6":{"name":"_onEnd","line":229,"loc":{"start":{"line":229,"column":35},"end":{"line":229,"column":53}}},"7":{"name":"_checkSpecialHeader","line":235,"loc":{"start":{"line":235,"column":48},"end":{"line":235,"column":89}}},"8":{"name":"_validateHeaders","line":244,"loc":{"start":{"line":244,"column":45},"end":{"line":244,"column":80}}},"9":{"name":"OutgoingMessage","line":277,"loc":{"start":{"line":277,"column":0},"end":{"line":277,"column":27}}},"10":{"name":"_write","line":289,"loc":{"start":{"line":289,"column":35},"end":{"line":289,"column":78}}},"11":{"name":"_finish","line":297,"loc":{"start":{"line":297,"column":36},"end":{"line":297,"column":55}}},"12":{"name":"setHeader","line":312,"loc":{"start":{"line":312,"column":38},"end":{"line":312,"column":70}}},"13":{"name":"removeHeader","line":324,"loc":{"start":{"line":324,"column":41},"end":{"line":324,"column":69}}},"14":{"name":"getHeader","line":332,"loc":{"start":{"line":332,"column":38},"end":{"line":332,"column":63}}},"15":{"name":"addTrailers","line":336,"loc":{"start":{"line":336,"column":40},"end":{"line":336,"column":71}}},"16":{"name":"Server","line":356,"loc":{"start":{"line":356,"column":0},"end":{"line":356,"column":25}}},"17":{"name":"(anonymous_17)","line":374,"loc":{"start":{"line":374,"column":40},"end":{"line":374,"column":57}}},"18":{"name":"_start","line":403,"loc":{"start":{"line":403,"column":26},"end":{"line":403,"column":50}}},"19":{"name":"_onStream","line":414,"loc":{"start":{"line":414,"column":24},"end":{"line":414,"column":51}}},"20":{"name":"_fallback","line":427,"loc":{"start":{"line":427,"column":29},"end":{"line":427,"column":56}}},"21":{"name":"listen","line":445,"loc":{"start":{"line":445,"column":26},"end":{"line":445,"column":58}}},"22":{"name":"close","line":451,"loc":{"start":{"line":451,"column":25},"end":{"line":451,"column":50}}},"23":{"name":"setTimeout","line":456,"loc":{"start":{"line":456,"column":30},"end":{"line":456,"column":69}}},"24":{"name":"getTimeout","line":463,"loc":{"start":{"line":463,"column":7},"end":{"line":463,"column":29}}},"25":{"name":"setTimeout","line":470,"loc":{"start":{"line":470,"column":7},"end":{"line":470,"column":36}}},"26":{"name":"on","line":481,"loc":{"start":{"line":481,"column":22},"end":{"line":481,"column":51}}},"27":{"name":"addContext","line":490,"loc":{"start":{"line":490,"column":30},"end":{"line":490,"column":73}}},"28":{"name":"createServer","line":496,"loc":{"start":{"line":496,"column":0},"end":{"line":496,"column":48}}},"29":{"name":"IncomingRequest","line":514,"loc":{"start":{"line":514,"column":0},"end":{"line":514,"column":33}}},"30":{"name":"_onHeaders","line":523,"loc":{"start":{"line":523,"column":39},"end":{"line":523,"column":68}}},"31":{"name":"OutgoingResponse","line":554,"loc":{"start":{"line":554,"column":0},"end":{"line":554,"column":34}}},"32":{"name":"writeHead","line":567,"loc":{"start":{"line":567,"column":39},"end":{"line":567,"column":93}}},"33":{"name":"_implicitHeaders","line":591,"loc":{"start":{"line":591,"column":46},"end":{"line":591,"column":74}}},"34":{"name":"write","line":597,"loc":{"start":{"line":597,"column":35},"end":{"line":597,"column":52}}},"35":{"name":"end","line":602,"loc":{"start":{"line":602,"column":33},"end":{"line":602,"column":48}}},"36":{"name":"_onRequestHeaders","line":607,"loc":{"start":{"line":607,"column":47},"end":{"line":607,"column":83}}},"37":{"name":"push","line":611,"loc":{"start":{"line":611,"column":34},"end":{"line":611,"column":57}}},"38":{"name":"on","line":638,"loc":{"start":{"line":638,"column":32},"end":{"line":638,"column":61}}},"39":{"name":"request","line":654,"loc":{"start":{"line":654,"column":18},"end":{"line":654,"column":54}}},"40":{"name":"get","line":657,"loc":{"start":{"line":657,"column":14},"end":{"line":657,"column":46}}},"41":{"name":"Agent","line":664,"loc":{"start":{"line":664,"column":0},"end":{"line":664,"column":24}}},"42":{"name":"request","line":687,"loc":{"start":{"line":687,"column":26},"end":{"line":687,"column":62}}},"43":{"name":"(anonymous_43)","line":744,"loc":{"start":{"line":744,"column":30},"end":{"line":744,"column":47}}},"44":{"name":"negotiated","line":754,"loc":{"start":{"line":754,"column":4},"end":{"line":754,"column":26}}},"45":{"name":"(anonymous_45)","line":782,"loc":{"start":{"line":782,"column":19},"end":{"line":782,"column":38}}},"46":{"name":"get","line":795,"loc":{"start":{"line":795,"column":22},"end":{"line":795,"column":54}}},"47":{"name":"unbundleSocket","line":801,"loc":{"start":{"line":801,"column":0},"end":{"line":801,"column":32}}},"48":{"name":"getMaxSockets","line":813,"loc":{"start":{"line":813,"column":7},"end":{"line":813,"column":32}}},"49":{"name":"setMaxSockets","line":816,"loc":{"start":{"line":816,"column":7},"end":{"line":816,"column":37}}},"50":{"name":"OutgoingRequest","line":826,"loc":{"start":{"line":826,"column":0},"end":{"line":826,"column":27}}},"51":{"name":"_start","line":835,"loc":{"start":{"line":835,"column":35},"end":{"line":835,"column":68}}},"52":{"name":"_fallback","line":869,"loc":{"start":{"line":869,"column":38},"end":{"line":869,"column":66}}},"53":{"name":"setPriority","line":875,"loc":{"start":{"line":875,"column":40},"end":{"line":875,"column":71}}},"54":{"name":"on","line":885,"loc":{"start":{"line":885,"column":31},"end":{"line":885,"column":60}}},"55":{"name":"setNoDelay","line":894,"loc":{"start":{"line":894,"column":39},"end":{"line":894,"column":68}}},"56":{"name":"setSocketKeepAlive","line":902,"loc":{"start":{"line":902,"column":47},"end":{"line":902,"column":97}}},"57":{"name":"setTimeout","line":910,"loc":{"start":{"line":910,"column":39},"end":{"line":910,"column":78}}},"58":{"name":"abort","line":919,"loc":{"start":{"line":919,"column":34},"end":{"line":919,"column":51}}},"59":{"name":"_onPromise","line":930,"loc":{"start":{"line":930,"column":39},"end":{"line":930,"column":76}}},"60":{"name":"IncomingResponse","line":945,"loc":{"start":{"line":945,"column":0},"end":{"line":945,"column":34}}},"61":{"name":"_onHeaders","line":954,"loc":{"start":{"line":954,"column":40},"end":{"line":954,"column":69}}},"62":{"name":"IncomingPromise","line":975,"loc":{"start":{"line":975,"column":0},"end":{"line":975,"column":57}}},"63":{"name":"cancel","line":994,"loc":{"start":{"line":994,"column":35},"end":{"line":994,"column":53}}},"64":{"name":"setPriority","line":998,"loc":{"start":{"line":998,"column":40},"end":{"line":998,"column":71}}}},"statementMap":{"1":{"start":{"line":131,"column":0},"end":{"line":131,"column":25}},"2":{"start":{"line":132,"column":0},"end":{"line":132,"column":25}},"3":{"start":{"line":133,"column":0},"end":{"line":133,"column":27}},"4":{"start":{"line":134,"column":0},"end":{"line":134,"column":50}},"5":{"start":{"line":135,"column":0},"end":{"line":135,"column":48}},"6":{"start":{"line":136,"column":0},"end":{"line":136,"column":42}},"7":{"start":{"line":137,"column":0},"end":{"line":137,"column":42}},"8":{"start":{"line":138,"column":0},"end":{"line":138,"column":50}},"9":{"start":{"line":139,"column":0},"end":{"line":139,"column":70}},"10":{"start":{"line":140,"column":0},"end":{"line":140,"column":27}},"11":{"start":{"line":141,"column":0},"end":{"line":141,"column":29}},"12":{"start":{"line":143,"column":0},"end":{"line":143,"column":41}},"13":{"start":{"line":144,"column":0},"end":{"line":144,"column":42}},"14":{"start":{"line":145,"column":0},"end":{"line":145,"column":42}},"15":{"start":{"line":147,"column":0},"end":{"line":155,"column":2}},"16":{"start":{"line":158,"column":0},"end":{"line":158,"column":70}},"17":{"start":{"line":164,"column":0},"end":{"line":164,"column":18}},"18":{"start":{"line":165,"column":0},"end":{"line":174,"column":2}},"19":{"start":{"line":173,"column":22},"end":{"line":173,"column":34}},"20":{"start":{"line":177,"column":0},"end":{"line":177,"column":60}},"21":{"start":{"line":182,"column":0},"end":{"line":204,"column":1}},"22":{"start":{"line":184,"column":2},"end":{"line":184,"column":25}},"23":{"start":{"line":185,"column":2},"end":{"line":185,"column":20}},"24":{"start":{"line":186,"column":2},"end":{"line":186,"column":37}},"25":{"start":{"line":188,"column":2},"end":{"line":188,"column":55}},"26":{"start":{"line":192,"column":2},"end":{"line":192,"column":27}},"27":{"start":{"line":193,"column":2},"end":{"line":193,"column":28}},"28":{"start":{"line":194,"column":2},"end":{"line":194,"column":28}},"29":{"start":{"line":197,"column":2},"end":{"line":197,"column":20}},"30":{"start":{"line":198,"column":2},"end":{"line":198,"column":28}},"31":{"start":{"line":199,"column":2},"end":{"line":199,"column":36}},"32":{"start":{"line":202,"column":2},"end":{"line":202,"column":53}},"33":{"start":{"line":203,"column":2},"end":{"line":203,"column":45}},"34":{"start":{"line":205,"column":0},"end":{"line":205,"column":110}},"35":{"start":{"line":211,"column":0},"end":{"line":227,"column":2}},"36":{"start":{"line":213,"column":2},"end":{"line":213,"column":33}},"37":{"start":{"line":216,"column":2},"end":{"line":220,"column":3}},"38":{"start":{"line":217,"column":4},"end":{"line":219,"column":5}},"39":{"start":{"line":218,"column":6},"end":{"line":218,"column":41}},"40":{"start":{"line":223,"column":2},"end":{"line":223,"column":18}},"41":{"start":{"line":224,"column":2},"end":{"line":226,"column":5}},"42":{"start":{"line":225,"column":4},"end":{"line":225,"column":36}},"43":{"start":{"line":229,"column":0},"end":{"line":231,"column":2}},"44":{"start":{"line":230,"column":2},"end":{"line":230,"column":40}},"45":{"start":{"line":233,"column":0},"end":{"line":233,"column":44}},"46":{"start":{"line":235,"column":0},"end":{"line":242,"column":2}},"47":{"start":{"line":236,"column":2},"end":{"line":239,"column":3}},"48":{"start":{"line":237,"column":4},"end":{"line":237,"column":91}},"49":{"start":{"line":238,"column":4},"end":{"line":238,"column":40}},"50":{"start":{"line":241,"column":2},"end":{"line":241,"column":15}},"51":{"start":{"line":244,"column":0},"end":{"line":272,"column":2}},"52":{"start":{"line":249,"column":2},"end":{"line":256,"column":3}},"53":{"start":{"line":250,"column":4},"end":{"line":250,"column":35}},"54":{"start":{"line":251,"column":4},"end":{"line":255,"column":5}},"55":{"start":{"line":252,"column":6},"end":{"line":252,"column":84}},"56":{"start":{"line":253,"column":6},"end":{"line":253,"column":42}},"57":{"start":{"line":254,"column":6},"end":{"line":254,"column":13}},"58":{"start":{"line":258,"column":2},"end":{"line":271,"column":3}},"59":{"start":{"line":260,"column":4},"end":{"line":263,"column":5}},"60":{"start":{"line":261,"column":6},"end":{"line":261,"column":42}},"61":{"start":{"line":262,"column":6},"end":{"line":262,"column":13}},"62":{"start":{"line":267,"column":4},"end":{"line":270,"column":5}},"63":{"start":{"line":268,"column":6},"end":{"line":268,"column":42}},"64":{"start":{"line":269,"column":6},"end":{"line":269,"column":13}},"65":{"start":{"line":277,"column":0},"end":{"line":286,"column":1}},"66":{"start":{"line":279,"column":2},"end":{"line":279,"column":22}},"67":{"start":{"line":281,"column":2},"end":{"line":281,"column":21}},"68":{"start":{"line":282,"column":2},"end":{"line":282,"column":29}},"69":{"start":{"line":283,"column":2},"end":{"line":283,"column":27}},"70":{"start":{"line":285,"column":2},"end":{"line":285,"column":34}},"71":{"start":{"line":287,"column":0},"end":{"line":287,"column":107}},"72":{"start":{"line":289,"column":0},"end":{"line":295,"column":2}},"73":{"start":{"line":290,"column":2},"end":{"line":294,"column":3}},"74":{"start":{"line":291,"column":4},"end":{"line":291,"column":49}},"75":{"start":{"line":293,"column":4},"end":{"line":293,"column":75}},"76":{"start":{"line":297,"column":0},"end":{"line":310,"column":2}},"77":{"start":{"line":298,"column":2},"end":{"line":309,"column":3}},"78":{"start":{"line":299,"column":4},"end":{"line":305,"column":5}},"79":{"start":{"line":300,"column":6},"end":{"line":304,"column":7}},"80":{"start":{"line":301,"column":8},"end":{"line":301,"column":49}},"81":{"start":{"line":303,"column":8},"end":{"line":303,"column":44}},"82":{"start":{"line":306,"column":4},"end":{"line":306,"column":22}},"83":{"start":{"line":308,"column":4},"end":{"line":308,"column":49}},"84":{"start":{"line":312,"column":0},"end":{"line":322,"column":2}},"85":{"start":{"line":313,"column":2},"end":{"line":321,"column":3}},"86":{"start":{"line":314,"column":4},"end":{"line":314,"column":63}},"87":{"start":{"line":316,"column":4},"end":{"line":316,"column":30}},"88":{"start":{"line":317,"column":4},"end":{"line":319,"column":5}},"89":{"start":{"line":318,"column":6},"end":{"line":318,"column":63}},"90":{"start":{"line":320,"column":4},"end":{"line":320,"column":32}},"91":{"start":{"line":324,"column":0},"end":{"line":330,"column":2}},"92":{"start":{"line":325,"column":2},"end":{"line":329,"column":3}},"93":{"start":{"line":326,"column":4},"end":{"line":326,"column":66}},"94":{"start":{"line":328,"column":4},"end":{"line":328,"column":45}},"95":{"start":{"line":332,"column":0},"end":{"line":334,"column":2}},"96":{"start":{"line":333,"column":2},"end":{"line":333,"column":43}},"97":{"start":{"line":336,"column":0},"end":{"line":338,"column":2}},"98":{"start":{"line":337,"column":2},"end":{"line":337,"column":28}},"99":{"start":{"line":340,"column":0},"end":{"line":340,"column":44}},"100":{"start":{"line":342,"column":0},"end":{"line":342,"column":94}},"101":{"start":{"line":347,"column":0},"end":{"line":347,"column":36}},"102":{"start":{"line":348,"column":0},"end":{"line":348,"column":24}},"103":{"start":{"line":349,"column":0},"end":{"line":349,"column":42}},"104":{"start":{"line":350,"column":0},"end":{"line":350,"column":44}},"105":{"start":{"line":351,"column":0},"end":{"line":351,"column":42}},"106":{"start":{"line":356,"column":0},"end":{"line":399,"column":1}},"107":{"start":{"line":357,"column":2},"end":{"line":357,"column":38}},"108":{"start":{"line":359,"column":2},"end":{"line":359,"column":74}},"109":{"start":{"line":360,"column":2},"end":{"line":360,"column":36}},"110":{"start":{"line":362,"column":2},"end":{"line":362,"column":37}},"111":{"start":{"line":363,"column":2},"end":{"line":363,"column":43}},"112":{"start":{"line":366,"column":2},"end":{"line":396,"column":3}},"113":{"start":{"line":367,"column":4},"end":{"line":367,"column":54}},"114":{"start":{"line":368,"column":4},"end":{"line":368,"column":23}},"115":{"start":{"line":369,"column":4},"end":{"line":369,"column":47}},"116":{"start":{"line":370,"column":4},"end":{"line":370,"column":46}},"117":{"start":{"line":371,"column":4},"end":{"line":371,"column":47}},"118":{"start":{"line":372,"column":4},"end":{"line":372,"column":79}},"119":{"start":{"line":373,"column":4},"end":{"line":373,"column":56}},"120":{"start":{"line":374,"column":4},"end":{"line":381,"column":7}},"121":{"start":{"line":375,"column":6},"end":{"line":375,"column":73}},"122":{"start":{"line":376,"column":6},"end":{"line":380,"column":7}},"123":{"start":{"line":377,"column":8},"end":{"line":377,"column":22}},"124":{"start":{"line":379,"column":8},"end":{"line":379,"column":25}},"125":{"start":{"line":382,"column":4},"end":{"line":382,"column":64}},"126":{"start":{"line":386,"column":7},"end":{"line":396,"column":3}},"127":{"start":{"line":387,"column":4},"end":{"line":387,"column":60}},"128":{"start":{"line":388,"column":4},"end":{"line":388,"column":25}},"129":{"start":{"line":389,"column":4},"end":{"line":389,"column":43}},"130":{"start":{"line":394,"column":4},"end":{"line":394,"column":81}},"131":{"start":{"line":395,"column":4},"end":{"line":395,"column":95}},"132":{"start":{"line":398,"column":2},"end":{"line":398,"column":58}},"133":{"start":{"line":400,"column":0},"end":{"line":400,"column":93}},"134":{"start":{"line":403,"column":0},"end":{"line":425,"column":2}},"135":{"start":{"line":404,"column":2},"end":{"line":404,"column":67}},"136":{"start":{"line":406,"column":2},"end":{"line":409,"column":54}},"137":{"start":{"line":411,"column":2},"end":{"line":411,"column":39}},"138":{"start":{"line":413,"column":2},"end":{"line":413,"column":18}},"139":{"start":{"line":414,"column":2},"end":{"line":419,"column":5}},"140":{"start":{"line":415,"column":4},"end":{"line":415,"column":48}},"141":{"start":{"line":416,"column":4},"end":{"line":416,"column":46}},"142":{"start":{"line":418,"column":4},"end":{"line":418,"column":78}},"143":{"start":{"line":421,"column":2},"end":{"line":421,"column":60}},"144":{"start":{"line":422,"column":2},"end":{"line":422,"column":58}},"145":{"start":{"line":424,"column":2},"end":{"line":424,"column":44}},"146":{"start":{"line":427,"column":0},"end":{"line":440,"column":2}},"147":{"start":{"line":428,"column":2},"end":{"line":428,"column":69}},"148":{"start":{"line":430,"column":2},"end":{"line":433,"column":52}},"149":{"start":{"line":435,"column":2},"end":{"line":437,"column":3}},"150":{"start":{"line":436,"column":4},"end":{"line":436,"column":64}},"151":{"start":{"line":439,"column":2},"end":{"line":439,"column":34}},"152":{"start":{"line":445,"column":0},"end":{"line":449,"column":2}},"153":{"start":{"line":446,"column":2},"end":{"line":447,"column":55}},"154":{"start":{"line":448,"column":2},"end":{"line":448,"column":53}},"155":{"start":{"line":451,"column":0},"end":{"line":454,"column":2}},"156":{"start":{"line":452,"column":2},"end":{"line":452,"column":35}},"157":{"start":{"line":453,"column":2},"end":{"line":453,"column":31}},"158":{"start":{"line":456,"column":0},"end":{"line":460,"column":2}},"159":{"start":{"line":457,"column":2},"end":{"line":459,"column":3}},"160":{"start":{"line":458,"column":4},"end":{"line":458,"column":47}},"161":{"start":{"line":462,"column":0},"end":{"line":475,"column":3}},"162":{"start":{"line":464,"column":4},"end":{"line":468,"column":5}},"163":{"start":{"line":465,"column":6},"end":{"line":465,"column":34}},"164":{"start":{"line":467,"column":6},"end":{"line":467,"column":23}},"165":{"start":{"line":471,"column":4},"end":{"line":473,"column":5}},"166":{"start":{"line":472,"column":6},"end":{"line":472,"column":37}},"167":{"start":{"line":481,"column":0},"end":{"line":487,"column":2}},"168":{"start":{"line":482,"column":2},"end":{"line":486,"column":3}},"169":{"start":{"line":483,"column":4},"end":{"line":483,"column":60}},"170":{"start":{"line":485,"column":4},"end":{"line":485,"column":58}},"171":{"start":{"line":490,"column":0},"end":{"line":494,"column":2}},"172":{"start":{"line":491,"column":2},"end":{"line":493,"column":3}},"173":{"start":{"line":492,"column":4},"end":{"line":492,"column":51}},"174":{"start":{"line":496,"column":0},"end":{"line":509,"column":1}},"175":{"start":{"line":497,"column":2},"end":{"line":500,"column":3}},"176":{"start":{"line":498,"column":4},"end":{"line":498,"column":30}},"177":{"start":{"line":499,"column":4},"end":{"line":499,"column":24}},"178":{"start":{"line":502,"column":2},"end":{"line":502,"column":35}},"179":{"start":{"line":504,"column":2},"end":{"line":506,"column":3}},"180":{"start":{"line":505,"column":4},"end":{"line":505,"column":42}},"181":{"start":{"line":508,"column":2},"end":{"line":508,"column":16}},"182":{"start":{"line":514,"column":0},"end":{"line":516,"column":1}},"183":{"start":{"line":515,"column":2},"end":{"line":515,"column":37}},"184":{"start":{"line":517,"column":0},"end":{"line":517,"column":114}},"185":{"start":{"line":523,"column":0},"end":{"line":549,"column":2}},"186":{"start":{"line":534,"column":2},"end":{"line":534,"column":75}},"187":{"start":{"line":535,"column":2},"end":{"line":535,"column":75}},"188":{"start":{"line":536,"column":2},"end":{"line":536,"column":80}},"189":{"start":{"line":537,"column":2},"end":{"line":537,"column":75}},"190":{"start":{"line":540,"column":2},"end":{"line":540,"column":32}},"191":{"start":{"line":543,"column":2},"end":{"line":543,"column":59}},"192":{"start":{"line":546,"column":2},"end":{"line":547,"column":80}},"193":{"start":{"line":548,"column":2},"end":{"line":548,"column":21}},"194":{"start":{"line":554,"column":0},"end":{"line":564,"column":1}},"195":{"start":{"line":555,"column":2},"end":{"line":555,"column":29}},"196":{"start":{"line":557,"column":2},"end":{"line":557,"column":55}},"197":{"start":{"line":559,"column":2},"end":{"line":559,"column":23}},"198":{"start":{"line":560,"column":2},"end":{"line":560,"column":24}},"199":{"start":{"line":561,"column":2},"end":{"line":561,"column":23}},"200":{"start":{"line":563,"column":2},"end":{"line":563,"column":65}},"201":{"start":{"line":565,"column":0},"end":{"line":565,"column":116}},"202":{"start":{"line":567,"column":0},"end":{"line":589,"column":2}},"203":{"start":{"line":568,"column":2},"end":{"line":572,"column":3}},"204":{"start":{"line":569,"column":4},"end":{"line":569,"column":93}},"205":{"start":{"line":571,"column":4},"end":{"line":571,"column":27}},"206":{"start":{"line":574,"column":2},"end":{"line":576,"column":3}},"207":{"start":{"line":575,"column":4},"end":{"line":575,"column":40}},"208":{"start":{"line":577,"column":2},"end":{"line":577,"column":26}},"209":{"start":{"line":579,"column":2},"end":{"line":581,"column":3}},"210":{"start":{"line":580,"column":4},"end":{"line":580,"column":46}},"211":{"start":{"line":583,"column":2},"end":{"line":583,"column":92}},"212":{"start":{"line":585,"column":2},"end":{"line":585,"column":52}},"213":{"start":{"line":587,"column":2},"end":{"line":587,"column":31}},"214":{"start":{"line":588,"column":2},"end":{"line":588,"column":26}},"215":{"start":{"line":591,"column":0},"end":{"line":595,"column":2}},"216":{"start":{"line":592,"column":2},"end":{"line":594,"column":3}},"217":{"start":{"line":593,"column":4},"end":{"line":593,"column":36}},"218":{"start":{"line":597,"column":0},"end":{"line":600,"column":2}},"219":{"start":{"line":598,"column":2},"end":{"line":598,"column":26}},"220":{"start":{"line":599,"column":2},"end":{"line":599,"column":64}},"221":{"start":{"line":602,"column":0},"end":{"line":605,"column":2}},"222":{"start":{"line":603,"column":2},"end":{"line":603,"column":26}},"223":{"start":{"line":604,"column":2},"end":{"line":604,"column":62}},"224":{"start":{"line":607,"column":0},"end":{"line":609,"column":2}},"225":{"start":{"line":608,"column":2},"end":{"line":608,"column":33}},"226":{"start":{"line":611,"column":0},"end":{"line":634,"column":2}},"227":{"start":{"line":612,"column":2},"end":{"line":614,"column":3}},"228":{"start":{"line":613,"column":4},"end":{"line":613,"column":33}},"229":{"start":{"line":616,"column":2},"end":{"line":618,"column":3}},"230":{"start":{"line":617,"column":4},"end":{"line":617,"column":51}},"231":{"start":{"line":620,"column":2},"end":{"line":625,"column":22}},"232":{"start":{"line":627,"column":2},"end":{"line":629,"column":72}},"233":{"start":{"line":631,"column":2},"end":{"line":631,"column":48}},"234":{"start":{"line":633,"column":2},"end":{"line":633,"column":42}},"235":{"start":{"line":638,"column":0},"end":{"line":644,"column":2}},"236":{"start":{"line":639,"column":2},"end":{"line":643,"column":3}},"237":{"start":{"line":640,"column":4},"end":{"line":640,"column":60}},"238":{"start":{"line":642,"column":4},"end":{"line":642,"column":61}},"239":{"start":{"line":649,"column":0},"end":{"line":649,"column":40}},"240":{"start":{"line":650,"column":0},"end":{"line":650,"column":42}},"241":{"start":{"line":651,"column":0},"end":{"line":651,"column":44}},"242":{"start":{"line":652,"column":0},"end":{"line":652,"column":22}},"243":{"start":{"line":653,"column":0},"end":{"line":653,"column":32}},"244":{"start":{"line":654,"column":0},"end":{"line":656,"column":2}},"245":{"start":{"line":655,"column":2},"end":{"line":655,"column":75}},"246":{"start":{"line":657,"column":0},"end":{"line":659,"column":2}},"247":{"start":{"line":658,"column":2},"end":{"line":658,"column":71}},"248":{"start":{"line":664,"column":0},"end":{"line":684,"column":1}},"249":{"start":{"line":665,"column":2},"end":{"line":665,"column":26}},"250":{"start":{"line":667,"column":2},"end":{"line":667,"column":38}},"251":{"start":{"line":669,"column":2},"end":{"line":669,"column":36}},"252":{"start":{"line":670,"column":2},"end":{"line":670,"column":74}},"253":{"start":{"line":671,"column":2},"end":{"line":671,"column":22}},"254":{"start":{"line":677,"column":2},"end":{"line":677,"column":24}},"255":{"start":{"line":678,"column":2},"end":{"line":678,"column":50}},"256":{"start":{"line":679,"column":2},"end":{"line":679,"column":49}},"257":{"start":{"line":680,"column":2},"end":{"line":680,"column":51}},"258":{"start":{"line":682,"column":2},"end":{"line":682,"column":42}},"259":{"start":{"line":683,"column":2},"end":{"line":683,"column":44}},"260":{"start":{"line":685,"column":0},"end":{"line":685,"column":91}},"261":{"start":{"line":687,"column":0},"end":{"line":793,"column":2}},"262":{"start":{"line":688,"column":2},"end":{"line":692,"column":3}},"263":{"start":{"line":689,"column":4},"end":{"line":689,"column":33}},"264":{"start":{"line":691,"column":4},"end":{"line":691,"column":40}},"265":{"start":{"line":694,"column":2},"end":{"line":694,"column":59}},"266":{"start":{"line":695,"column":2},"end":{"line":695,"column":50}},"267":{"start":{"line":696,"column":2},"end":{"line":696,"column":65}},"268":{"start":{"line":697,"column":2},"end":{"line":697,"column":37}},"269":{"start":{"line":698,"column":2},"end":{"line":698,"column":37}},"270":{"start":{"line":700,"column":2},"end":{"line":703,"column":3}},"271":{"start":{"line":701,"column":4},"end":{"line":701,"column":85}},"272":{"start":{"line":702,"column":4},"end":{"line":702,"column":70}},"273":{"start":{"line":705,"column":2},"end":{"line":705,"column":47}},"274":{"start":{"line":707,"column":2},"end":{"line":709,"column":3}},"275":{"start":{"line":708,"column":4},"end":{"line":708,"column":37}},"276":{"start":{"line":711,"column":2},"end":{"line":715,"column":14}},"277":{"start":{"line":718,"column":2},"end":{"line":790,"column":3}},"278":{"start":{"line":719,"column":4},"end":{"line":719,"column":39}},"279":{"start":{"line":720,"column":4},"end":{"line":720,"column":53}},"280":{"start":{"line":724,"column":7},"end":{"line":790,"column":3}},"281":{"start":{"line":725,"column":4},"end":{"line":725,"column":65}},"282":{"start":{"line":726,"column":4},"end":{"line":730,"column":7}},"283":{"start":{"line":731,"column":4},"end":{"line":731,"column":50}},"284":{"start":{"line":732,"column":4},"end":{"line":732,"column":53}},"285":{"start":{"line":737,"column":4},"end":{"line":737,"column":24}},"286":{"start":{"line":738,"column":4},"end":{"line":738,"column":47}},"287":{"start":{"line":739,"column":4},"end":{"line":739,"column":46}},"288":{"start":{"line":740,"column":4},"end":{"line":740,"column":38}},"289":{"start":{"line":741,"column":4},"end":{"line":741,"column":37}},"290":{"start":{"line":742,"column":4},"end":{"line":742,"column":46}},"291":{"start":{"line":744,"column":4},"end":{"line":751,"column":7}},"292":{"start":{"line":745,"column":6},"end":{"line":745,"column":73}},"293":{"start":{"line":746,"column":6},"end":{"line":750,"column":7}},"294":{"start":{"line":747,"column":8},"end":{"line":747,"column":21}},"295":{"start":{"line":749,"column":8},"end":{"line":749,"column":47}},"296":{"start":{"line":753,"column":4},"end":{"line":753,"column":20}},"297":{"start":{"line":754,"column":4},"end":{"line":780,"column":5}},"298":{"start":{"line":755,"column":6},"end":{"line":755,"column":19}},"299":{"start":{"line":756,"column":6},"end":{"line":756,"column":99}},"300":{"start":{"line":757,"column":6},"end":{"line":763,"column":7}},"301":{"start":{"line":758,"column":8},"end":{"line":758,"column":48}},"302":{"start":{"line":759,"column":8},"end":{"line":759,"column":44}},"303":{"start":{"line":760,"column":8},"end":{"line":760,"column":69}},"304":{"start":{"line":761,"column":8},"end":{"line":761,"column":46}},"305":{"start":{"line":762,"column":8},"end":{"line":762,"column":54}},"306":{"start":{"line":764,"column":6},"end":{"line":779,"column":7}},"307":{"start":{"line":765,"column":8},"end":{"line":769,"column":9}},"308":{"start":{"line":766,"column":10},"end":{"line":766,"column":27}},"309":{"start":{"line":768,"column":10},"end":{"line":768,"column":31}},"310":{"start":{"line":771,"column":8},"end":{"line":778,"column":9}},"311":{"start":{"line":772,"column":10},"end":{"line":773,"column":59}},"312":{"start":{"line":774,"column":10},"end":{"line":774,"column":41}},"313":{"start":{"line":775,"column":10},"end":{"line":775,"column":35}},"314":{"start":{"line":777,"column":10},"end":{"line":777,"column":36}},"315":{"start":{"line":782,"column":4},"end":{"line":789,"column":7}},"316":{"start":{"line":783,"column":6},"end":{"line":783,"column":21}},"317":{"start":{"line":784,"column":6},"end":{"line":788,"column":7}},"318":{"start":{"line":785,"column":8},"end":{"line":785,"column":57}},"319":{"start":{"line":787,"column":8},"end":{"line":787,"column":40}},"320":{"start":{"line":792,"column":2},"end":{"line":792,"column":17}},"321":{"start":{"line":795,"column":0},"end":{"line":799,"column":2}},"322":{"start":{"line":796,"column":2},"end":{"line":796,"column":48}},"323":{"start":{"line":797,"column":2},"end":{"line":797,"column":16}},"324":{"start":{"line":798,"column":2},"end":{"line":798,"column":17}},"325":{"start":{"line":801,"column":0},"end":{"line":810,"column":1}},"326":{"start":{"line":802,"column":2},"end":{"line":802,"column":36}},"327":{"start":{"line":803,"column":2},"end":{"line":803,"column":35}},"328":{"start":{"line":804,"column":2},"end":{"line":804,"column":40}},"329":{"start":{"line":805,"column":2},"end":{"line":805,"column":37}},"330":{"start":{"line":806,"column":2},"end":{"line":806,"column":37}},"331":{"start":{"line":807,"column":2},"end":{"line":807,"column":18}},"332":{"start":{"line":808,"column":2},"end":{"line":808,"column":23}},"333":{"start":{"line":809,"column":2},"end":{"line":809,"column":22}},"334":{"start":{"line":812,"column":0},"end":{"line":819,"column":3}},"335":{"start":{"line":814,"column":4},"end":{"line":814,"column":39}},"336":{"start":{"line":817,"column":4},"end":{"line":817,"column":40}},"337":{"start":{"line":821,"column":0},"end":{"line":821,"column":34}},"338":{"start":{"line":826,"column":0},"end":{"line":832,"column":1}},"339":{"start":{"line":827,"column":2},"end":{"line":827,"column":29}},"340":{"start":{"line":829,"column":2},"end":{"line":829,"column":24}},"341":{"start":{"line":831,"column":2},"end":{"line":831,"column":26}},"342":{"start":{"line":833,"column":0},"end":{"line":833,"column":114}},"343":{"start":{"line":835,"column":0},"end":{"line":867,"column":2}},"344":{"start":{"line":836,"column":2},"end":{"line":836,"column":23}},"345":{"start":{"line":838,"column":2},"end":{"line":838,"column":55}},"346":{"start":{"line":840,"column":2},"end":{"line":842,"column":3}},"347":{"start":{"line":841,"column":4},"end":{"line":841,"column":46}},"348":{"start":{"line":843,"column":2},"end":{"line":843,"column":30}},"349":{"start":{"line":844,"column":2},"end":{"line":844,"column":22}},"350":{"start":{"line":846,"column":2},"end":{"line":848,"column":3}},"351":{"start":{"line":847,"column":4},"end":{"line":847,"column":83}},"352":{"start":{"line":850,"column":2},"end":{"line":850,"column":53}},"353":{"start":{"line":851,"column":2},"end":{"line":851,"column":38}},"354":{"start":{"line":852,"column":2},"end":{"line":852,"column":39}},"355":{"start":{"line":853,"column":2},"end":{"line":853,"column":34}},"356":{"start":{"line":855,"column":2},"end":{"line":857,"column":74}},"357":{"start":{"line":858,"column":2},"end":{"line":858,"column":31}},"358":{"start":{"line":859,"column":2},"end":{"line":859,"column":26}},"359":{"start":{"line":861,"column":2},"end":{"line":861,"column":35}},"360":{"start":{"line":863,"column":2},"end":{"line":863,"column":51}},"361":{"start":{"line":864,"column":2},"end":{"line":864,"column":69}},"362":{"start":{"line":866,"column":2},"end":{"line":866,"column":56}},"363":{"start":{"line":869,"column":0},"end":{"line":873,"column":2}},"364":{"start":{"line":870,"column":2},"end":{"line":870,"column":59}},"365":{"start":{"line":871,"column":2},"end":{"line":871,"column":39}},"366":{"start":{"line":872,"column":2},"end":{"line":872,"column":35}},"367":{"start":{"line":875,"column":0},"end":{"line":881,"column":2}},"368":{"start":{"line":876,"column":2},"end":{"line":880,"column":3}},"369":{"start":{"line":877,"column":4},"end":{"line":877,"column":35}},"370":{"start":{"line":879,"column":4},"end":{"line":879,"column":63}},"371":{"start":{"line":885,"column":0},"end":{"line":891,"column":2}},"372":{"start":{"line":886,"column":2},"end":{"line":890,"column":3}},"373":{"start":{"line":887,"column":4},"end":{"line":887,"column":60}},"374":{"start":{"line":889,"column":4},"end":{"line":889,"column":61}},"375":{"start":{"line":894,"column":0},"end":{"line":900,"column":2}},"376":{"start":{"line":895,"column":2},"end":{"line":899,"column":3}},"377":{"start":{"line":896,"column":4},"end":{"line":896,"column":37}},"378":{"start":{"line":897,"column":9},"end":{"line":899,"column":3}},"379":{"start":{"line":898,"column":4},"end":{"line":898,"column":59}},"380":{"start":{"line":902,"column":0},"end":{"line":908,"column":2}},"381":{"start":{"line":903,"column":2},"end":{"line":907,"column":3}},"382":{"start":{"line":904,"column":4},"end":{"line":904,"column":58}},"383":{"start":{"line":905,"column":9},"end":{"line":907,"column":3}},"384":{"start":{"line":906,"column":4},"end":{"line":906,"column":80}},"385":{"start":{"line":910,"column":0},"end":{"line":916,"column":2}},"386":{"start":{"line":911,"column":2},"end":{"line":915,"column":3}},"387":{"start":{"line":912,"column":4},"end":{"line":912,"column":47}},"388":{"start":{"line":913,"column":9},"end":{"line":915,"column":3}},"389":{"start":{"line":914,"column":4},"end":{"line":914,"column":69}},"390":{"start":{"line":919,"column":0},"end":{"line":927,"column":2}},"391":{"start":{"line":920,"column":2},"end":{"line":926,"column":3}},"392":{"start":{"line":921,"column":4},"end":{"line":921,"column":25}},"393":{"start":{"line":922,"column":9},"end":{"line":926,"column":3}},"394":{"start":{"line":923,"column":4},"end":{"line":923,"column":32}},"395":{"start":{"line":925,"column":4},"end":{"line":925,"column":45}},"396":{"start":{"line":930,"column":0},"end":{"line":940,"column":2}},"397":{"start":{"line":931,"column":2},"end":{"line":931,"column":71}},"398":{"start":{"line":933,"column":2},"end":{"line":933,"column":53}},"399":{"start":{"line":935,"column":2},"end":{"line":939,"column":3}},"400":{"start":{"line":936,"column":4},"end":{"line":936,"column":31}},"401":{"start":{"line":938,"column":4},"end":{"line":938,"column":21}},"402":{"start":{"line":945,"column":0},"end":{"line":947,"column":1}},"403":{"start":{"line":946,"column":2},"end":{"line":946,"column":37}},"404":{"start":{"line":948,"column":0},"end":{"line":948,"column":116}},"405":{"start":{"line":954,"column":0},"end":{"line":970,"column":2}},"406":{"start":{"line":962,"column":2},"end":{"line":962,"column":86}},"407":{"start":{"line":965,"column":2},"end":{"line":965,"column":59}},"408":{"start":{"line":968,"column":2},"end":{"line":968,"column":89}},"409":{"start":{"line":969,"column":2},"end":{"line":969,"column":21}},"410":{"start":{"line":975,"column":0},"end":{"line":991,"column":1}},"411":{"start":{"line":976,"column":2},"end":{"line":976,"column":30}},"412":{"start":{"line":977,"column":2},"end":{"line":977,"column":22}},"413":{"start":{"line":978,"column":2},"end":{"line":978,"column":20}},"414":{"start":{"line":979,"column":2},"end":{"line":979,"column":36}},"415":{"start":{"line":981,"column":2},"end":{"line":981,"column":37}},"416":{"start":{"line":983,"column":2},"end":{"line":983,"column":34}},"417":{"start":{"line":985,"column":2},"end":{"line":985,"column":40}},"418":{"start":{"line":987,"column":2},"end":{"line":987,"column":60}},"419":{"start":{"line":988,"column":2},"end":{"line":988,"column":69}},"420":{"start":{"line":990,"column":2},"end":{"line":990,"column":56}},"421":{"start":{"line":992,"column":0},"end":{"line":992,"column":114}},"422":{"start":{"line":994,"column":0},"end":{"line":996,"column":2}},"423":{"start":{"line":995,"column":2},"end":{"line":995,"column":39}},"424":{"start":{"line":998,"column":0},"end":{"line":1000,"column":2}},"425":{"start":{"line":999,"column":2},"end":{"line":999,"column":42}},"426":{"start":{"line":1002,"column":0},"end":{"line":1002,"column":76}}},"branchMap":{"1":{"line":217,"type":"if","locations":[{"start":{"line":217,"column":4},"end":{"line":217,"column":4}},{"start":{"line":217,"column":4},"end":{"line":217,"column":4}}]},"2":{"line":236,"type":"if","locations":[{"start":{"line":236,"column":2},"end":{"line":236,"column":2}},{"start":{"line":236,"column":2},"end":{"line":236,"column":2}}]},"3":{"line":236,"type":"binary-expr","locations":[{"start":{"line":236,"column":7},"end":{"line":236,"column":32}},{"start":{"line":236,"column":38},"end":{"line":236,"column":56}}]},"4":{"line":251,"type":"if","locations":[{"start":{"line":251,"column":4},"end":{"line":251,"column":4}},{"start":{"line":251,"column":4},"end":{"line":251,"column":4}}]},"5":{"line":260,"type":"if","locations":[{"start":{"line":260,"column":4},"end":{"line":260,"column":4}},{"start":{"line":260,"column":4},"end":{"line":260,"column":4}}]},"6":{"line":267,"type":"if","locations":[{"start":{"line":267,"column":4},"end":{"line":267,"column":4}},{"start":{"line":267,"column":4},"end":{"line":267,"column":4}}]},"7":{"line":290,"type":"if","locations":[{"start":{"line":290,"column":2},"end":{"line":290,"column":2}},{"start":{"line":290,"column":2},"end":{"line":290,"column":2}}]},"8":{"line":298,"type":"if","locations":[{"start":{"line":298,"column":2},"end":{"line":298,"column":2}},{"start":{"line":298,"column":2},"end":{"line":298,"column":2}}]},"9":{"line":299,"type":"if","locations":[{"start":{"line":299,"column":4},"end":{"line":299,"column":4}},{"start":{"line":299,"column":4},"end":{"line":299,"column":4}}]},"10":{"line":300,"type":"if","locations":[{"start":{"line":300,"column":6},"end":{"line":300,"column":6}},{"start":{"line":300,"column":6},"end":{"line":300,"column":6}}]},"11":{"line":313,"type":"if","locations":[{"start":{"line":313,"column":2},"end":{"line":313,"column":2}},{"start":{"line":313,"column":2},"end":{"line":313,"column":2}}]},"12":{"line":317,"type":"if","locations":[{"start":{"line":317,"column":4},"end":{"line":317,"column":4}},{"start":{"line":317,"column":4},"end":{"line":317,"column":4}}]},"13":{"line":325,"type":"if","locations":[{"start":{"line":325,"column":2},"end":{"line":325,"column":2}},{"start":{"line":325,"column":2},"end":{"line":325,"column":2}}]},"14":{"line":359,"type":"binary-expr","locations":[{"start":{"line":359,"column":15},"end":{"line":359,"column":26}},{"start":{"line":359,"column":30},"end":{"line":359,"column":43}}]},"15":{"line":366,"type":"if","locations":[{"start":{"line":366,"column":2},"end":{"line":366,"column":2}},{"start":{"line":366,"column":2},"end":{"line":366,"column":2}}]},"16":{"line":366,"type":"binary-expr","locations":[{"start":{"line":366,"column":7},"end":{"line":366,"column":18}},{"start":{"line":366,"column":22},"end":{"line":366,"column":34}},{"start":{"line":366,"column":39},"end":{"line":366,"column":50}}]},"17":{"line":375,"type":"binary-expr","locations":[{"start":{"line":375,"column":31},"end":{"line":375,"column":50}},{"start":{"line":375,"column":54},"end":{"line":375,"column":72}}]},"18":{"line":376,"type":"if","locations":[{"start":{"line":376,"column":6},"end":{"line":376,"column":6}},{"start":{"line":376,"column":6},"end":{"line":376,"column":6}}]},"19":{"line":376,"type":"binary-expr","locations":[{"start":{"line":376,"column":11},"end":{"line":376,"column":52}},{"start":{"line":376,"column":57},"end":{"line":376,"column":74}}]},"20":{"line":386,"type":"if","locations":[{"start":{"line":386,"column":7},"end":{"line":386,"column":7}},{"start":{"line":386,"column":7},"end":{"line":386,"column":7}}]},"21":{"line":428,"type":"binary-expr","locations":[{"start":{"line":428,"column":27},"end":{"line":428,"column":46}},{"start":{"line":428,"column":50},"end":{"line":428,"column":68}}]},"22":{"line":446,"type":"cond-expr","locations":[{"start":{"line":446,"column":58},"end":{"line":446,"column":79}},{"start":{"line":446,"column":83},"end":{"line":446,"column":87}}]},"23":{"line":457,"type":"if","locations":[{"start":{"line":457,"column":2},"end":{"line":457,"column":2}},{"start":{"line":457,"column":2},"end":{"line":457,"column":2}}]},"24":{"line":464,"type":"if","locations":[{"start":{"line":464,"column":4},"end":{"line":464,"column":4}},{"start":{"line":464,"column":4},"end":{"line":464,"column":4}}]},"25":{"line":471,"type":"if","locations":[{"start":{"line":471,"column":4},"end":{"line":471,"column":4}},{"start":{"line":471,"column":4},"end":{"line":471,"column":4}}]},"26":{"line":482,"type":"if","locations":[{"start":{"line":482,"column":2},"end":{"line":482,"column":2}},{"start":{"line":482,"column":2},"end":{"line":482,"column":2}}]},"27":{"line":482,"type":"binary-expr","locations":[{"start":{"line":482,"column":7},"end":{"line":482,"column":26}},{"start":{"line":482,"column":32},"end":{"line":482,"column":51}}]},"28":{"line":483,"type":"binary-expr","locations":[{"start":{"line":483,"column":27},"end":{"line":483,"column":35}},{"start":{"line":483,"column":39},"end":{"line":483,"column":58}}]},"29":{"line":491,"type":"if","locations":[{"start":{"line":491,"column":2},"end":{"line":491,"column":2}},{"start":{"line":491,"column":2},"end":{"line":491,"column":2}}]},"30":{"line":497,"type":"if","locations":[{"start":{"line":497,"column":2},"end":{"line":497,"column":2}},{"start":{"line":497,"column":2},"end":{"line":497,"column":2}}]},"31":{"line":504,"type":"if","locations":[{"start":{"line":504,"column":2},"end":{"line":504,"column":2}},{"start":{"line":504,"column":2},"end":{"line":504,"column":2}}]},"32":{"line":568,"type":"if","locations":[{"start":{"line":568,"column":2},"end":{"line":568,"column":2}},{"start":{"line":568,"column":2},"end":{"line":568,"column":2}}]},"33":{"line":579,"type":"if","locations":[{"start":{"line":579,"column":2},"end":{"line":579,"column":2}},{"start":{"line":579,"column":2},"end":{"line":579,"column":2}}]},"34":{"line":579,"type":"binary-expr","locations":[{"start":{"line":579,"column":6},"end":{"line":579,"column":19}},{"start":{"line":579,"column":23},"end":{"line":579,"column":49}}]},"35":{"line":592,"type":"if","locations":[{"start":{"line":592,"column":2},"end":{"line":592,"column":2}},{"start":{"line":592,"column":2},"end":{"line":592,"column":2}}]},"36":{"line":612,"type":"if","locations":[{"start":{"line":612,"column":2},"end":{"line":612,"column":2}},{"start":{"line":612,"column":2},"end":{"line":612,"column":2}}]},"37":{"line":616,"type":"if","locations":[{"start":{"line":616,"column":2},"end":{"line":616,"column":2}},{"start":{"line":616,"column":2},"end":{"line":616,"column":2}}]},"38":{"line":621,"type":"binary-expr","locations":[{"start":{"line":621,"column":16},"end":{"line":621,"column":30}},{"start":{"line":621,"column":34},"end":{"line":621,"column":39}}]},"39":{"line":622,"type":"binary-expr","locations":[{"start":{"line":622,"column":16},"end":{"line":622,"column":32}},{"start":{"line":622,"column":36},"end":{"line":622,"column":65}},{"start":{"line":622,"column":70},"end":{"line":622,"column":101}}]},"40":{"line":623,"type":"binary-expr","locations":[{"start":{"line":623,"column":18},"end":{"line":623,"column":34}},{"start":{"line":623,"column":38},"end":{"line":623,"column":50}},{"start":{"line":623,"column":54},"end":{"line":623,"column":88}}]},"41":{"line":639,"type":"if","locations":[{"start":{"line":639,"column":2},"end":{"line":639,"column":2}},{"start":{"line":639,"column":2},"end":{"line":639,"column":2}}]},"42":{"line":639,"type":"binary-expr","locations":[{"start":{"line":639,"column":6},"end":{"line":639,"column":18}},{"start":{"line":639,"column":23},"end":{"line":639,"column":42}}]},"43":{"line":640,"type":"binary-expr","locations":[{"start":{"line":640,"column":27},"end":{"line":640,"column":35}},{"start":{"line":640,"column":39},"end":{"line":640,"column":58}}]},"44":{"line":655,"type":"binary-expr","locations":[{"start":{"line":655,"column":10},"end":{"line":655,"column":23}},{"start":{"line":655,"column":27},"end":{"line":655,"column":46}}]},"45":{"line":658,"type":"binary-expr","locations":[{"start":{"line":658,"column":10},"end":{"line":658,"column":23}},{"start":{"line":658,"column":27},"end":{"line":658,"column":46}}]},"46":{"line":670,"type":"binary-expr","locations":[{"start":{"line":670,"column":15},"end":{"line":670,"column":26}},{"start":{"line":670,"column":30},"end":{"line":670,"column":43}}]},"47":{"line":688,"type":"if","locations":[{"start":{"line":688,"column":2},"end":{"line":688,"column":2}},{"start":{"line":688,"column":2},"end":{"line":688,"column":2}}]},"48":{"line":694,"type":"binary-expr","locations":[{"start":{"line":694,"column":20},"end":{"line":694,"column":34}},{"start":{"line":694,"column":38},"end":{"line":694,"column":43}}]},"49":{"line":695,"type":"binary-expr","locations":[{"start":{"line":695,"column":21},"end":{"line":695,"column":37}},{"start":{"line":695,"column":41},"end":{"line":695,"column":49}}]},"50":{"line":696,"type":"binary-expr","locations":[{"start":{"line":696,"column":17},"end":{"line":696,"column":33}},{"start":{"line":696,"column":37},"end":{"line":696,"column":49}},{"start":{"line":696,"column":53},"end":{"line":696,"column":64}}]},"51":{"line":697,"type":"binary-expr","locations":[{"start":{"line":697,"column":17},"end":{"line":697,"column":29}},{"start":{"line":697,"column":33},"end":{"line":697,"column":36}}]},"52":{"line":698,"type":"binary-expr","locations":[{"start":{"line":698,"column":17},"end":{"line":698,"column":29}},{"start":{"line":698,"column":33},"end":{"line":698,"column":36}}]},"53":{"line":700,"type":"if","locations":[{"start":{"line":700,"column":2},"end":{"line":700,"column":2}},{"start":{"line":700,"column":2},"end":{"line":700,"column":2}}]},"54":{"line":700,"type":"binary-expr","locations":[{"start":{"line":700,"column":6},"end":{"line":700,"column":20}},{"start":{"line":700,"column":24},"end":{"line":700,"column":52}}]},"55":{"line":707,"type":"if","locations":[{"start":{"line":707,"column":2},"end":{"line":707,"column":2}},{"start":{"line":707,"column":2},"end":{"line":707,"column":2}}]},"56":{"line":718,"type":"if","locations":[{"start":{"line":718,"column":2},"end":{"line":718,"column":2}},{"start":{"line":718,"column":2},"end":{"line":718,"column":2}}]},"57":{"line":724,"type":"if","locations":[{"start":{"line":724,"column":7},"end":{"line":724,"column":7}},{"start":{"line":724,"column":7},"end":{"line":724,"column":7}}]},"58":{"line":745,"type":"binary-expr","locations":[{"start":{"line":745,"column":31},"end":{"line":745,"column":50}},{"start":{"line":745,"column":54},"end":{"line":745,"column":72}}]},"59":{"line":746,"type":"if","locations":[{"start":{"line":746,"column":6},"end":{"line":746,"column":6}},{"start":{"line":746,"column":6},"end":{"line":746,"column":6}}]},"60":{"line":756,"type":"binary-expr","locations":[{"start":{"line":756,"column":31},"end":{"line":756,"column":63}},{"start":{"line":756,"column":67},"end":{"line":756,"column":98}}]},"61":{"line":757,"type":"if","locations":[{"start":{"line":757,"column":6},"end":{"line":757,"column":6}},{"start":{"line":757,"column":6},"end":{"line":757,"column":6}}]},"62":{"line":764,"type":"if","locations":[{"start":{"line":764,"column":6},"end":{"line":764,"column":6}},{"start":{"line":764,"column":6},"end":{"line":764,"column":6}}]},"63":{"line":765,"type":"if","locations":[{"start":{"line":765,"column":8},"end":{"line":765,"column":8}},{"start":{"line":765,"column":8},"end":{"line":765,"column":8}}]},"64":{"line":771,"type":"if","locations":[{"start":{"line":771,"column":8},"end":{"line":771,"column":8}},{"start":{"line":771,"column":8},"end":{"line":771,"column":8}}]},"65":{"line":784,"type":"if","locations":[{"start":{"line":784,"column":6},"end":{"line":784,"column":6}},{"start":{"line":784,"column":6},"end":{"line":784,"column":6}}]},"66":{"line":846,"type":"if","locations":[{"start":{"line":846,"column":2},"end":{"line":846,"column":2}},{"start":{"line":846,"column":2},"end":{"line":846,"column":2}}]},"67":{"line":857,"type":"binary-expr","locations":[{"start":{"line":857,"column":29},"end":{"line":857,"column":44}},{"start":{"line":857,"column":48},"end":{"line":857,"column":50}}]},"68":{"line":876,"type":"if","locations":[{"start":{"line":876,"column":2},"end":{"line":876,"column":2}},{"start":{"line":876,"column":2},"end":{"line":876,"column":2}}]},"69":{"line":886,"type":"if","locations":[{"start":{"line":886,"column":2},"end":{"line":886,"column":2}},{"start":{"line":886,"column":2},"end":{"line":886,"column":2}}]},"70":{"line":886,"type":"binary-expr","locations":[{"start":{"line":886,"column":6},"end":{"line":886,"column":18}},{"start":{"line":886,"column":23},"end":{"line":886,"column":42}}]},"71":{"line":887,"type":"binary-expr","locations":[{"start":{"line":887,"column":27},"end":{"line":887,"column":35}},{"start":{"line":887,"column":39},"end":{"line":887,"column":58}}]},"72":{"line":895,"type":"if","locations":[{"start":{"line":895,"column":2},"end":{"line":895,"column":2}},{"start":{"line":895,"column":2},"end":{"line":895,"column":2}}]},"73":{"line":897,"type":"if","locations":[{"start":{"line":897,"column":9},"end":{"line":897,"column":9}},{"start":{"line":897,"column":9},"end":{"line":897,"column":9}}]},"74":{"line":903,"type":"if","locations":[{"start":{"line":903,"column":2},"end":{"line":903,"column":2}},{"start":{"line":903,"column":2},"end":{"line":903,"column":2}}]},"75":{"line":905,"type":"if","locations":[{"start":{"line":905,"column":9},"end":{"line":905,"column":9}},{"start":{"line":905,"column":9},"end":{"line":905,"column":9}}]},"76":{"line":911,"type":"if","locations":[{"start":{"line":911,"column":2},"end":{"line":911,"column":2}},{"start":{"line":911,"column":2},"end":{"line":911,"column":2}}]},"77":{"line":913,"type":"if","locations":[{"start":{"line":913,"column":9},"end":{"line":913,"column":9}},{"start":{"line":913,"column":9},"end":{"line":913,"column":9}}]},"78":{"line":920,"type":"if","locations":[{"start":{"line":920,"column":2},"end":{"line":920,"column":2}},{"start":{"line":920,"column":2},"end":{"line":920,"column":2}}]},"79":{"line":922,"type":"if","locations":[{"start":{"line":922,"column":9},"end":{"line":922,"column":9}},{"start":{"line":922,"column":9},"end":{"line":922,"column":9}}]},"80":{"line":935,"type":"if","locations":[{"start":{"line":935,"column":2},"end":{"line":935,"column":2}},{"start":{"line":935,"column":2},"end":{"line":935,"column":2}}]}}}} \ No newline at end of file diff --git a/coverage/lcov-report/index.html b/coverage/lcov-report/index.html index f0bcaca9..666562ca 100644 --- a/coverage/lcov-report/index.html +++ b/coverage/lcov-report/index.html @@ -183,16 +183,16 @@

                                    Code coverage report for All files

                                    - Statements: 94% (392 / 417)      + Statements: 93.19% (397 / 426)      - Branches: 80.63% (129 / 160)      + Branches: 79.88% (131 / 164)      - Functions: 93.65% (59 / 63)      + Functions: 93.75% (60 / 64)      - Lines: 94% (392 / 417)      + Lines: 93.19% (397 / 426)     

                                    @@ -216,15 +216,15 @@

                                    lib/ - - 94% - (392 / 417) - 80.63% - (129 / 160) - 93.65% - (59 / 63) - 94% - (392 / 417) + + 93.19% + (397 / 426) + 79.88% + (131 / 164) + 93.75% + (60 / 64) + 93.19% + (397 / 426) @@ -232,7 +232,7 @@

                                  diff --git a/coverage/lcov-report/lib/http.js.html b/coverage/lcov-report/lib/http.js.html index 454c4778..87dcdf04 100644 --- a/coverage/lcov-report/lib/http.js.html +++ b/coverage/lcov-report/lib/http.js.html @@ -183,16 +183,16 @@

                                  Code coverage report for lib/http.js

                                  - Statements: 94% (392 / 417)      + Statements: 93.19% (397 / 426)      - Branches: 80.63% (129 / 160)      + Branches: 79.88% (131 / 164)      - Functions: 93.65% (59 / 63)      + Functions: 93.75% (60 / 64)      - Lines: 94% (392 / 417)      + Lines: 93.19% (397 / 426)     

                                  All files » lib/ » http.js
                                  @@ -1182,7 +1182,26 @@

                                  981 982 983 -984  +984 +985 +986 +987 +988 +989 +990 +991 +992 +993 +994 +995 +996 +997 +998 +999 +1000 +1001 +1002 +1003        @@ -1394,17 +1413,7 @@

                                    1   -  -  -  24 -168 -168 -  -  -  -  -      24 @@ -1435,6 +1444,35 @@

                                  60     +1 +  +  +  +  +24 +168 +168 +  +  +  +  +  +  +24 +  +73 +  +  +  +  +  +  +73 +  +  +  +  +        @@ -2288,7 +2326,7 @@

                                  // // [1]: http://nodejs.org/api/https.html // [2]: http://nodejs.org/api/http.html -// [3]: http://tools.ietf.org/html/draft-ietf-httpbis-http2-10#section-8.1.3.2 +// [3]: http://tools.ietf.org/html/draft-ietf-httpbis-http2-11#section-8.1.3.2 // [expect-continue]: https://github.com/http2/http2-spec/issues/18 // [connect]: https://github.com/http2/http2-spec/issues/230   @@ -2371,23 +2409,13 @@

                                  } IncomingMessage.prototype = Object.create(PassThrough.prototype, { constructor: { value: IncomingMessage } });   -// [Request Header Fields](http://tools.ietf.org/html/draft-ietf-httpbis-http2-10#section-8.1.3.1) +// [Request Header Fields](http://tools.ietf.org/html/draft-ietf-httpbis-http2-11#section-8.1.3.1) // * `headers` argument: HTTP/2.0 request and response header fields carry information as a series // of key-value pairs. This includes the target URI for the request, the status code for the // response, as well as HTTP header fields. IncomingMessage.prototype._onHeaders = function _onHeaders(headers) { - // * An HTTP/2.0 request or response MUST NOT include any of the following header fields: - // Connection, Host, Keep-Alive, Proxy-Connection, TE, Transfer-Encoding, and Upgrade. A server - // MUST treat the presence of any of these header fields as a stream error of type - // PROTOCOL_ERROR. - for (var i = 0; i < deprecatedHeaders.length; i++) { - var key = deprecatedHeaders[i]; - Iif (key in headers) { - this._log.error({ key: key, value: headers[key] }, 'Deprecated header found'); - this.stream.emit('error', 'PROTOCOL_ERROR'); - return; - } - } + // * Detects malformed headers + this._validateHeaders(headers);   // * Store the _regular_ headers in `this.headers` for (var name in headers) { @@ -2412,12 +2440,41 @@

                                  IncomingMessage.prototype._checkSpecialHeader = function _checkSpecialHeader(key, value) { Iif ((typeof value !== 'string') || (value.length === 0)) { this._log.error({ key: key, value: value }, 'Invalid or missing special header field'); - this.stream.emit('error', 'PROTOCOL_ERROR'); + this.stream.reset('PROTOCOL_ERROR'); }   return value; -} -; +}; +  +IncomingMessage.prototype._validateHeaders = function _validateHeaders(headers) { + // * An HTTP/2.0 request or response MUST NOT include any of the following header fields: + // Connection, Host, Keep-Alive, Proxy-Connection, TE, Transfer-Encoding, and Upgrade. A server + // MUST treat the presence of any of these header fields as a stream error of type + // PROTOCOL_ERROR. + for (var i = 0; i < deprecatedHeaders.length; i++) { + var key = deprecatedHeaders[i]; + Iif (key in headers) { + this._log.error({ key: key, value: headers[key] }, 'Deprecated header found'); + this.stream.reset('PROTOCOL_ERROR'); + return; + } + } +  + for (var headerName in headers) { + // * Empty header name field is malformed + Iif (headerName.length <= 1) { + this.stream.reset('PROTOCOL_ERROR'); + return; + } + // * A request or response containing uppercase header name field names MUST be + // treated as malformed (Section 8.1.3.5). Implementations that detect malformed + // requests or responses need to ensure that the stream ends. + Iif(/[A-Z]/.test(headerName)) { + this.stream.reset('PROTOCOL_ERROR'); + return; + } + } +};   // OutgoingMessage class // --------------------- @@ -2664,7 +2721,7 @@

                                  } IncomingRequest.prototype = Object.create(IncomingMessage.prototype, { constructor: { value: IncomingRequest } });   -// [Request Header Fields](http://tools.ietf.org/html/draft-ietf-httpbis-http2-10#section-8.1.3.1) +// [Request Header Fields](http://tools.ietf.org/html/draft-ietf-httpbis-http2-11#section-8.1.3.1) // * `headers` argument: HTTP/2.0 request and response header fields carry information as a series // of key-value pairs. This includes the target URI for the request, the status code for the // response, as well as HTTP header fields. @@ -3095,7 +3152,7 @@

                                  } IncomingResponse.prototype = Object.create(IncomingMessage.prototype, { constructor: { value: IncomingResponse } });   -// [Response Header Fields](http://tools.ietf.org/html/draft-ietf-httpbis-http2-10#section-8.1.3.2) +// [Response Header Fields](http://tools.ietf.org/html/draft-ietf-httpbis-http2-11#section-8.1.3.2) // * `headers` argument: HTTP/2.0 request and response header fields carry information as a series // of key-value pairs. This includes the target URI for the request, the status code for the // response, as well as HTTP header fields. @@ -3153,7 +3210,7 @@

                                diff --git a/coverage/lcov-report/lib/index.html b/coverage/lcov-report/lib/index.html index 0b102a1b..cc7660cc 100644 --- a/coverage/lcov-report/lib/index.html +++ b/coverage/lcov-report/lib/index.html @@ -183,16 +183,16 @@

                                Code coverage report for lib/

                                - Statements: 94% (392 / 417)      + Statements: 93.19% (397 / 426)      - Branches: 80.63% (129 / 160)      + Branches: 79.88% (131 / 164)      - Functions: 93.65% (59 / 63)      + Functions: 93.75% (60 / 64)      - Lines: 94% (392 / 417)      + Lines: 93.19% (397 / 426)     

                                All files » lib/
                                @@ -216,15 +216,15 @@

                                http.js - - 94% - (392 / 417) - 80.63% - (129 / 160) - 93.65% - (59 / 63) - 94% - (392 / 417) + + 93.19% + (397 / 426) + 79.88% + (131 / 164) + 93.75% + (60 / 64) + 93.19% + (397 / 426) @@ -232,7 +232,7 @@

                              • diff --git a/coverage/lcov.info b/coverage/lcov.info index 68d20874..2026725f 100644 --- a/coverage/lcov.info +++ b/coverage/lcov.info @@ -4,67 +4,68 @@ FN:164,noop FN:173,(anonymous_2) FN:182,IncomingMessage FN:211,_onHeaders -FN:234,(anonymous_5) -FN:239,_onEnd -FN:245,_checkSpecialHeader -FN:258,OutgoingMessage -FN:270,_write -FN:278,_finish -FN:293,setHeader -FN:305,removeHeader -FN:313,getHeader -FN:317,addTrailers -FN:337,Server -FN:355,(anonymous_16) -FN:384,_start -FN:395,_onStream -FN:408,_fallback -FN:426,listen -FN:432,close -FN:437,setTimeout -FN:444,getTimeout -FN:451,setTimeout -FN:462,on -FN:471,addContext -FN:477,createServer -FN:495,IncomingRequest -FN:504,_onHeaders -FN:535,OutgoingResponse -FN:548,writeHead -FN:572,_implicitHeaders -FN:578,write -FN:583,end -FN:588,_onRequestHeaders -FN:592,push -FN:619,on -FN:635,request -FN:638,get -FN:645,Agent -FN:668,request -FN:725,(anonymous_42) -FN:735,negotiated -FN:763,(anonymous_44) -FN:776,get -FN:782,unbundleSocket -FN:794,getMaxSockets -FN:797,setMaxSockets -FN:807,OutgoingRequest -FN:816,_start -FN:850,_fallback -FN:856,setPriority -FN:866,on -FN:875,setNoDelay -FN:883,setSocketKeepAlive -FN:891,setTimeout -FN:900,abort -FN:911,_onPromise -FN:926,IncomingResponse -FN:935,_onHeaders -FN:956,IncomingPromise -FN:975,cancel -FN:979,setPriority -FNF:63 -FNH:59 +FN:224,(anonymous_5) +FN:229,_onEnd +FN:235,_checkSpecialHeader +FN:244,_validateHeaders +FN:277,OutgoingMessage +FN:289,_write +FN:297,_finish +FN:312,setHeader +FN:324,removeHeader +FN:332,getHeader +FN:336,addTrailers +FN:356,Server +FN:374,(anonymous_17) +FN:403,_start +FN:414,_onStream +FN:427,_fallback +FN:445,listen +FN:451,close +FN:456,setTimeout +FN:463,getTimeout +FN:470,setTimeout +FN:481,on +FN:490,addContext +FN:496,createServer +FN:514,IncomingRequest +FN:523,_onHeaders +FN:554,OutgoingResponse +FN:567,writeHead +FN:591,_implicitHeaders +FN:597,write +FN:602,end +FN:607,_onRequestHeaders +FN:611,push +FN:638,on +FN:654,request +FN:657,get +FN:664,Agent +FN:687,request +FN:744,(anonymous_43) +FN:754,negotiated +FN:782,(anonymous_45) +FN:795,get +FN:801,unbundleSocket +FN:813,getMaxSockets +FN:816,setMaxSockets +FN:826,OutgoingRequest +FN:835,_start +FN:869,_fallback +FN:875,setPriority +FN:885,on +FN:894,setNoDelay +FN:902,setSocketKeepAlive +FN:910,setTimeout +FN:919,abort +FN:930,_onPromise +FN:945,IncomingResponse +FN:954,_onHeaders +FN:975,IncomingPromise +FN:994,cancel +FN:998,setPriority +FNF:64 +FNH:60 FNDA:2,noop FNDA:3,(anonymous_2) FNDA:24,IncomingMessage @@ -72,6 +73,7 @@ FNDA:24,_onHeaders FNDA:2,(anonymous_5) FNDA:24,_onEnd FNDA:60,_checkSpecialHeader +FNDA:24,_validateHeaders FNDA:27,OutgoingMessage FNDA:13,_write FNDA:31,_finish @@ -80,7 +82,7 @@ FNDA:1,removeHeader FNDA:3,getHeader FNDA:2,addTrailers FNDA:13,Server -FNDA:9,(anonymous_16) +FNDA:9,(anonymous_17) FNDA:9,_start FNDA:10,_onStream FNDA:1,_fallback @@ -106,9 +108,9 @@ FNDA:4,request FNDA:7,get FNDA:4,Agent FNDA:12,request -FNDA:9,(anonymous_42) +FNDA:9,(anonymous_43) FNDA:9,negotiated -FNDA:9,(anonymous_44) +FNDA:9,(anonymous_45) FNDA:7,get FNDA:8,unbundleSocket FNDA:1,getMaxSockets @@ -163,550 +165,563 @@ DA:202,24 DA:203,24 DA:205,1 DA:211,1 +DA:213,24 DA:216,24 -DA:217,168 -DA:218,168 -DA:219,0 -DA:220,0 -DA:221,0 -DA:226,24 -DA:227,73 -DA:228,13 -DA:233,24 -DA:234,24 -DA:235,2 -DA:239,1 -DA:240,24 -DA:243,1 -DA:245,1 -DA:246,60 -DA:247,0 -DA:248,0 -DA:251,60 -DA:258,1 -DA:260,27 -DA:262,27 -DA:263,27 -DA:264,27 -DA:266,27 -DA:268,1 -DA:270,1 -DA:271,13 -DA:272,12 -DA:274,1 -DA:278,1 -DA:279,31 -DA:280,23 -DA:281,2 -DA:282,0 -DA:284,2 -DA:287,23 -DA:289,8 +DA:217,73 +DA:218,13 +DA:223,24 +DA:224,24 +DA:225,2 +DA:229,1 +DA:230,24 +DA:233,1 +DA:235,1 +DA:236,60 +DA:237,0 +DA:238,0 +DA:241,60 +DA:244,1 +DA:249,24 +DA:250,168 +DA:251,168 +DA:252,0 +DA:253,0 +DA:254,0 +DA:258,24 +DA:260,73 +DA:261,0 +DA:262,0 +DA:267,73 +DA:268,0 +DA:269,0 +DA:277,1 +DA:279,27 +DA:281,27 +DA:282,27 +DA:283,27 +DA:285,27 +DA:287,1 +DA:289,1 +DA:290,13 +DA:291,12 DA:293,1 -DA:294,4 -DA:295,0 -DA:297,4 -DA:298,4 -DA:299,0 -DA:301,4 -DA:305,1 -DA:306,1 -DA:307,0 -DA:309,1 -DA:313,1 -DA:314,3 -DA:317,1 -DA:318,2 -DA:321,1 -DA:323,1 +DA:297,1 +DA:298,31 +DA:299,23 +DA:300,2 +DA:301,0 +DA:303,2 +DA:306,23 +DA:308,8 +DA:312,1 +DA:313,4 +DA:314,0 +DA:316,4 +DA:317,4 +DA:318,0 +DA:320,4 +DA:324,1 +DA:325,1 +DA:326,0 DA:328,1 -DA:329,1 -DA:330,1 -DA:331,1 DA:332,1 -DA:337,1 -DA:338,13 -DA:340,13 -DA:341,13 -DA:343,13 -DA:344,13 -DA:347,13 -DA:348,10 -DA:349,10 -DA:350,10 -DA:351,10 -DA:352,10 -DA:353,10 -DA:354,10 -DA:355,10 -DA:356,9 -DA:357,9 -DA:358,8 -DA:360,1 -DA:363,10 -DA:367,3 -DA:368,1 -DA:369,1 -DA:370,1 -DA:375,2 -DA:376,2 -DA:379,11 -DA:381,1 -DA:384,1 -DA:385,9 -DA:387,9 -DA:392,9 -DA:394,9 -DA:395,9 -DA:396,10 -DA:397,10 -DA:399,10 -DA:402,9 -DA:403,9 -DA:405,9 -DA:408,1 -DA:409,1 -DA:411,1 -DA:416,1 -DA:417,1 -DA:420,1 -DA:426,1 -DA:427,9 -DA:429,9 -DA:432,1 -DA:433,4 -DA:434,4 -DA:437,1 -DA:438,1 +DA:333,3 +DA:336,1 +DA:337,2 +DA:340,1 +DA:342,1 +DA:347,1 +DA:348,1 +DA:349,1 +DA:350,1 +DA:351,1 +DA:356,1 +DA:357,13 +DA:359,13 +DA:360,13 +DA:362,13 +DA:363,13 +DA:366,13 +DA:367,10 +DA:368,10 +DA:369,10 +DA:370,10 +DA:371,10 +DA:372,10 +DA:373,10 +DA:374,10 +DA:375,9 +DA:376,9 +DA:377,8 +DA:379,1 +DA:382,10 +DA:386,3 +DA:387,1 +DA:388,1 +DA:389,1 +DA:394,2 +DA:395,2 +DA:398,11 +DA:400,1 +DA:403,1 +DA:404,9 +DA:406,9 +DA:411,9 +DA:413,9 +DA:414,9 +DA:415,10 +DA:416,10 +DA:418,10 +DA:421,9 +DA:422,9 +DA:424,9 +DA:427,1 +DA:428,1 +DA:430,1 +DA:435,1 +DA:436,1 DA:439,1 -DA:443,1 DA:445,1 -DA:446,1 -DA:448,0 -DA:452,1 -DA:453,1 +DA:446,9 +DA:448,9 +DA:451,1 +DA:452,4 +DA:453,4 +DA:456,1 +DA:457,1 +DA:458,1 DA:462,1 -DA:463,9 -DA:464,0 -DA:466,9 +DA:464,1 +DA:465,1 +DA:467,0 DA:471,1 -DA:472,0 -DA:473,0 -DA:477,1 -DA:478,10 -DA:479,1 -DA:480,1 -DA:483,10 +DA:472,1 +DA:481,1 +DA:482,9 +DA:483,0 DA:485,9 -DA:486,9 -DA:489,9 -DA:495,1 -DA:496,12 +DA:490,1 +DA:491,0 +DA:492,0 +DA:496,1 +DA:497,10 DA:498,1 -DA:504,1 +DA:499,1 +DA:502,10 +DA:504,9 +DA:505,9 +DA:508,9 +DA:514,1 DA:515,12 -DA:516,12 -DA:517,12 -DA:518,12 -DA:521,12 -DA:524,12 -DA:527,12 -DA:529,12 -DA:535,1 +DA:517,1 +DA:523,1 +DA:534,12 +DA:535,12 DA:536,12 -DA:538,12 +DA:537,12 DA:540,12 -DA:541,12 -DA:542,12 -DA:544,12 -DA:546,1 -DA:548,1 -DA:549,12 -DA:550,1 -DA:552,11 +DA:543,12 +DA:546,12 +DA:548,12 +DA:554,1 DA:555,12 -DA:556,1 -DA:558,12 +DA:557,12 +DA:559,12 DA:560,12 -DA:561,11 -DA:564,12 -DA:566,12 +DA:561,12 +DA:563,12 +DA:565,1 +DA:567,1 DA:568,12 -DA:569,12 -DA:572,1 -DA:573,23 -DA:574,11 -DA:578,1 -DA:579,11 +DA:569,1 +DA:571,11 +DA:574,12 +DA:575,1 +DA:577,12 +DA:579,12 DA:580,11 -DA:583,1 -DA:584,12 +DA:583,12 DA:585,12 -DA:588,1 -DA:589,10 -DA:592,1 -DA:593,2 -DA:594,1 -DA:597,2 -DA:598,0 -DA:601,2 -DA:608,2 +DA:587,12 +DA:588,12 +DA:591,1 +DA:592,23 +DA:593,11 +DA:597,1 +DA:598,11 +DA:599,11 +DA:602,1 +DA:603,12 +DA:604,12 +DA:607,1 +DA:608,10 +DA:611,1 DA:612,2 -DA:614,2 -DA:619,1 -DA:620,12 -DA:621,0 -DA:623,12 -DA:630,1 -DA:631,1 -DA:632,1 -DA:633,1 -DA:634,1 -DA:635,1 -DA:636,4 +DA:613,1 +DA:616,2 +DA:617,0 +DA:620,2 +DA:627,2 +DA:631,2 +DA:633,2 DA:638,1 -DA:639,7 -DA:645,1 -DA:646,4 -DA:648,4 -DA:650,4 -DA:651,4 -DA:652,4 -DA:658,4 -DA:659,4 -DA:660,4 -DA:661,4 -DA:663,4 -DA:664,4 -DA:666,1 -DA:668,1 -DA:669,12 -DA:670,8 -DA:672,4 -DA:675,12 -DA:676,12 -DA:677,12 -DA:678,12 -DA:679,12 -DA:681,12 -DA:682,1 -DA:683,1 -DA:686,11 -DA:688,11 -DA:689,7 -DA:692,11 -DA:699,11 -DA:700,1 +DA:639,12 +DA:640,0 +DA:642,12 +DA:649,1 +DA:650,1 +DA:651,1 +DA:652,1 +DA:653,1 +DA:654,1 +DA:655,4 +DA:657,1 +DA:658,7 +DA:664,1 +DA:665,4 +DA:667,4 +DA:669,4 +DA:670,4 +DA:671,4 +DA:677,4 +DA:678,4 +DA:679,4 +DA:680,4 +DA:682,4 +DA:683,4 +DA:685,1 +DA:687,1 +DA:688,12 +DA:689,8 +DA:691,4 +DA:694,12 +DA:695,12 +DA:696,12 +DA:697,12 +DA:698,12 +DA:700,12 DA:701,1 -DA:705,10 -DA:706,1 -DA:707,1 -DA:712,1 -DA:713,1 -DA:718,9 -DA:719,9 -DA:720,9 -DA:721,9 -DA:722,9 -DA:723,9 -DA:725,9 -DA:726,9 -DA:727,9 -DA:728,0 -DA:730,9 -DA:734,9 -DA:735,1 -DA:736,9 +DA:702,1 +DA:705,11 +DA:707,11 +DA:708,7 +DA:711,11 +DA:718,11 +DA:719,1 +DA:720,1 +DA:724,10 +DA:725,1 +DA:726,1 +DA:731,1 +DA:732,1 DA:737,9 DA:738,9 -DA:739,8 -DA:740,8 -DA:741,8 -DA:742,8 -DA:743,8 +DA:739,9 +DA:740,9 +DA:741,9 +DA:742,9 +DA:744,9 DA:745,9 -DA:746,1 -DA:747,1 -DA:749,0 -DA:752,8 -DA:753,7 -DA:755,7 -DA:756,7 -DA:758,1 -DA:763,9 +DA:746,9 +DA:747,0 +DA:749,9 +DA:753,9 +DA:754,1 +DA:755,9 +DA:756,9 +DA:757,9 +DA:758,8 +DA:759,8 +DA:760,8 +DA:761,8 +DA:762,8 DA:764,9 -DA:765,9 -DA:766,8 -DA:768,1 -DA:773,11 -DA:776,1 -DA:777,7 -DA:778,7 -DA:779,7 -DA:782,1 -DA:783,8 -DA:784,8 +DA:765,1 +DA:766,1 +DA:768,0 +DA:771,8 +DA:772,7 +DA:774,7 +DA:775,7 +DA:777,1 +DA:782,9 +DA:783,9 +DA:784,9 DA:785,8 -DA:786,8 -DA:787,8 -DA:788,8 -DA:789,8 -DA:790,8 -DA:793,1 +DA:787,1 +DA:792,11 DA:795,1 -DA:798,1 -DA:802,1 -DA:807,1 -DA:808,15 -DA:810,15 -DA:812,15 +DA:796,7 +DA:797,7 +DA:798,7 +DA:801,1 +DA:802,8 +DA:803,8 +DA:804,8 +DA:805,8 +DA:806,8 +DA:807,8 +DA:808,8 +DA:809,8 +DA:812,1 DA:814,1 -DA:816,1 -DA:817,10 -DA:819,10 -DA:821,10 -DA:822,1 -DA:824,10 -DA:825,10 -DA:827,10 -DA:828,0 -DA:831,10 -DA:832,10 -DA:833,10 -DA:834,10 +DA:817,1 +DA:821,1 +DA:826,1 +DA:827,15 +DA:829,15 +DA:831,15 +DA:833,1 +DA:835,1 DA:836,10 -DA:839,10 +DA:838,10 DA:840,10 -DA:842,10 +DA:841,1 +DA:843,10 DA:844,10 -DA:845,10 -DA:847,10 -DA:850,1 -DA:851,5 -DA:852,5 -DA:853,5 -DA:856,1 -DA:857,0 -DA:858,0 -DA:860,0 -DA:866,1 -DA:867,40 -DA:868,0 -DA:870,40 +DA:846,10 +DA:847,0 +DA:850,10 +DA:851,10 +DA:852,10 +DA:853,10 +DA:855,10 +DA:858,10 +DA:859,10 +DA:861,10 +DA:863,10 +DA:864,10 +DA:866,10 +DA:869,1 +DA:870,5 +DA:871,5 +DA:872,5 DA:875,1 -DA:876,3 -DA:877,1 -DA:878,2 -DA:879,1 -DA:883,1 -DA:884,3 +DA:876,0 +DA:877,0 +DA:879,0 DA:885,1 -DA:886,2 -DA:887,1 -DA:891,1 -DA:892,3 -DA:893,1 -DA:894,2 -DA:895,1 -DA:900,1 -DA:901,3 +DA:886,40 +DA:887,0 +DA:889,40 +DA:894,1 +DA:895,3 +DA:896,1 +DA:897,2 +DA:898,1 DA:902,1 -DA:903,2 +DA:903,3 DA:904,1 +DA:905,2 DA:906,1 -DA:911,1 -DA:912,2 -DA:914,2 -DA:916,2 -DA:917,2 -DA:919,0 -DA:926,1 -DA:927,12 -DA:929,1 -DA:935,1 -DA:943,12 +DA:910,1 +DA:911,3 +DA:912,1 +DA:913,2 +DA:914,1 +DA:919,1 +DA:920,3 +DA:921,1 +DA:922,2 +DA:923,1 +DA:925,1 +DA:930,1 +DA:931,2 +DA:933,2 +DA:935,2 +DA:936,2 +DA:938,0 +DA:945,1 DA:946,12 -DA:949,12 -DA:950,12 -DA:956,1 -DA:957,2 -DA:958,2 -DA:959,2 -DA:960,2 -DA:962,2 -DA:964,2 -DA:966,2 -DA:968,2 -DA:969,2 -DA:971,2 -DA:973,1 +DA:948,1 +DA:954,1 +DA:962,12 +DA:965,12 +DA:968,12 +DA:969,12 DA:975,1 -DA:976,0 -DA:979,1 -DA:980,0 -DA:983,1 -LF:417 -LH:392 -BRDA:218,1,0,0 -BRDA:218,1,1,168 -BRDA:227,2,0,13 -BRDA:227,2,1,60 -BRDA:246,3,0,0 -BRDA:246,3,1,60 -BRDA:246,4,0,60 -BRDA:246,4,1,60 -BRDA:271,5,0,12 -BRDA:271,5,1,1 -BRDA:279,6,0,23 -BRDA:279,6,1,8 -BRDA:280,7,0,2 -BRDA:280,7,1,21 -BRDA:281,8,0,0 -BRDA:281,8,1,2 -BRDA:294,9,0,0 -BRDA:294,9,1,4 -BRDA:298,10,0,0 -BRDA:298,10,1,4 -BRDA:306,11,0,0 -BRDA:306,11,1,1 -BRDA:340,12,0,13 -BRDA:340,12,1,2 -BRDA:347,13,0,10 -BRDA:347,13,1,3 -BRDA:347,14,0,13 -BRDA:347,14,1,10 -BRDA:347,14,2,3 -BRDA:356,15,0,9 -BRDA:356,15,1,9 -BRDA:357,16,0,8 -BRDA:357,16,1,1 -BRDA:357,17,0,9 -BRDA:357,17,1,8 -BRDA:367,18,0,1 -BRDA:367,18,1,2 -BRDA:409,19,0,1 -BRDA:409,19,1,1 -BRDA:427,20,0,0 -BRDA:427,20,1,9 -BRDA:438,21,0,1 -BRDA:438,21,1,0 -BRDA:445,22,0,1 -BRDA:445,22,1,0 -BRDA:452,23,0,1 -BRDA:452,23,1,0 -BRDA:463,24,0,0 -BRDA:463,24,1,9 -BRDA:463,25,0,9 -BRDA:463,25,1,9 -BRDA:464,26,0,0 -BRDA:464,26,1,0 -BRDA:472,27,0,0 -BRDA:472,27,1,0 -BRDA:478,28,0,1 -BRDA:478,28,1,9 -BRDA:485,29,0,9 -BRDA:485,29,1,0 -BRDA:549,30,0,1 -BRDA:549,30,1,11 -BRDA:560,31,0,11 -BRDA:560,31,1,1 -BRDA:560,32,0,12 -BRDA:560,32,1,11 -BRDA:573,33,0,11 -BRDA:573,33,1,12 -BRDA:593,34,0,1 -BRDA:593,34,1,1 -BRDA:597,35,0,0 -BRDA:597,35,1,2 -BRDA:602,36,0,2 -BRDA:602,36,1,2 -BRDA:603,37,0,2 -BRDA:603,37,1,1 -BRDA:603,37,2,1 -BRDA:604,38,0,2 -BRDA:604,38,1,2 -BRDA:604,38,2,2 -BRDA:620,39,0,0 -BRDA:620,39,1,12 -BRDA:620,40,0,12 -BRDA:620,40,1,0 -BRDA:621,41,0,0 -BRDA:621,41,1,0 -BRDA:636,42,0,4 -BRDA:636,42,1,4 -BRDA:639,43,0,7 -BRDA:639,43,1,7 -BRDA:651,44,0,4 -BRDA:651,44,1,1 -BRDA:669,45,0,8 -BRDA:669,45,1,4 -BRDA:675,46,0,12 -BRDA:675,46,1,12 -BRDA:676,47,0,12 -BRDA:676,47,1,3 -BRDA:677,48,0,12 -BRDA:677,48,1,4 -BRDA:677,48,2,1 -BRDA:678,49,0,12 -BRDA:678,49,1,1 -BRDA:679,50,0,12 -BRDA:679,50,1,1 -BRDA:681,51,0,1 -BRDA:681,51,1,11 -BRDA:681,52,0,12 -BRDA:681,52,1,11 -BRDA:688,53,0,7 -BRDA:688,53,1,4 -BRDA:699,54,0,1 -BRDA:699,54,1,10 -BRDA:705,55,0,1 -BRDA:705,55,1,9 -BRDA:726,56,0,9 -BRDA:726,56,1,9 -BRDA:727,57,0,0 -BRDA:727,57,1,9 -BRDA:737,58,0,9 -BRDA:737,58,1,9 -BRDA:738,59,0,8 -BRDA:738,59,1,1 -BRDA:745,60,0,1 -BRDA:745,60,1,8 -BRDA:746,61,0,1 -BRDA:746,61,1,0 -BRDA:752,62,0,7 -BRDA:752,62,1,1 -BRDA:765,63,0,8 -BRDA:765,63,1,1 -BRDA:827,64,0,0 -BRDA:827,64,1,10 -BRDA:838,65,0,10 -BRDA:838,65,1,9 -BRDA:857,66,0,0 -BRDA:857,66,1,0 -BRDA:867,67,0,0 -BRDA:867,67,1,40 -BRDA:867,68,0,40 -BRDA:867,68,1,0 -BRDA:868,69,0,0 -BRDA:868,69,1,0 -BRDA:876,70,0,1 -BRDA:876,70,1,2 -BRDA:878,71,0,1 -BRDA:878,71,1,1 -BRDA:884,72,0,1 -BRDA:884,72,1,2 -BRDA:886,73,0,1 -BRDA:886,73,1,1 -BRDA:892,74,0,1 -BRDA:892,74,1,2 -BRDA:894,75,0,1 -BRDA:894,75,1,1 -BRDA:901,76,0,1 -BRDA:901,76,1,2 -BRDA:903,77,0,1 -BRDA:903,77,1,1 -BRDA:916,78,0,2 -BRDA:916,78,1,0 -BRF:160 -BRH:129 +DA:976,2 +DA:977,2 +DA:978,2 +DA:979,2 +DA:981,2 +DA:983,2 +DA:985,2 +DA:987,2 +DA:988,2 +DA:990,2 +DA:992,1 +DA:994,1 +DA:995,0 +DA:998,1 +DA:999,0 +DA:1002,1 +LF:426 +LH:397 +BRDA:217,1,0,13 +BRDA:217,1,1,60 +BRDA:236,2,0,0 +BRDA:236,2,1,60 +BRDA:236,3,0,60 +BRDA:236,3,1,60 +BRDA:251,4,0,0 +BRDA:251,4,1,168 +BRDA:260,5,0,0 +BRDA:260,5,1,73 +BRDA:267,6,0,0 +BRDA:267,6,1,73 +BRDA:290,7,0,12 +BRDA:290,7,1,1 +BRDA:298,8,0,23 +BRDA:298,8,1,8 +BRDA:299,9,0,2 +BRDA:299,9,1,21 +BRDA:300,10,0,0 +BRDA:300,10,1,2 +BRDA:313,11,0,0 +BRDA:313,11,1,4 +BRDA:317,12,0,0 +BRDA:317,12,1,4 +BRDA:325,13,0,0 +BRDA:325,13,1,1 +BRDA:359,14,0,13 +BRDA:359,14,1,2 +BRDA:366,15,0,10 +BRDA:366,15,1,3 +BRDA:366,16,0,13 +BRDA:366,16,1,10 +BRDA:366,16,2,3 +BRDA:375,17,0,9 +BRDA:375,17,1,9 +BRDA:376,18,0,8 +BRDA:376,18,1,1 +BRDA:376,19,0,9 +BRDA:376,19,1,8 +BRDA:386,20,0,1 +BRDA:386,20,1,2 +BRDA:428,21,0,1 +BRDA:428,21,1,1 +BRDA:446,22,0,0 +BRDA:446,22,1,9 +BRDA:457,23,0,1 +BRDA:457,23,1,0 +BRDA:464,24,0,1 +BRDA:464,24,1,0 +BRDA:471,25,0,1 +BRDA:471,25,1,0 +BRDA:482,26,0,0 +BRDA:482,26,1,9 +BRDA:482,27,0,9 +BRDA:482,27,1,9 +BRDA:483,28,0,0 +BRDA:483,28,1,0 +BRDA:491,29,0,0 +BRDA:491,29,1,0 +BRDA:497,30,0,1 +BRDA:497,30,1,9 +BRDA:504,31,0,9 +BRDA:504,31,1,0 +BRDA:568,32,0,1 +BRDA:568,32,1,11 +BRDA:579,33,0,11 +BRDA:579,33,1,1 +BRDA:579,34,0,12 +BRDA:579,34,1,11 +BRDA:592,35,0,11 +BRDA:592,35,1,12 +BRDA:612,36,0,1 +BRDA:612,36,1,1 +BRDA:616,37,0,0 +BRDA:616,37,1,2 +BRDA:621,38,0,2 +BRDA:621,38,1,2 +BRDA:622,39,0,2 +BRDA:622,39,1,1 +BRDA:622,39,2,1 +BRDA:623,40,0,2 +BRDA:623,40,1,2 +BRDA:623,40,2,2 +BRDA:639,41,0,0 +BRDA:639,41,1,12 +BRDA:639,42,0,12 +BRDA:639,42,1,0 +BRDA:640,43,0,0 +BRDA:640,43,1,0 +BRDA:655,44,0,4 +BRDA:655,44,1,4 +BRDA:658,45,0,7 +BRDA:658,45,1,7 +BRDA:670,46,0,4 +BRDA:670,46,1,1 +BRDA:688,47,0,8 +BRDA:688,47,1,4 +BRDA:694,48,0,12 +BRDA:694,48,1,12 +BRDA:695,49,0,12 +BRDA:695,49,1,3 +BRDA:696,50,0,12 +BRDA:696,50,1,4 +BRDA:696,50,2,1 +BRDA:697,51,0,12 +BRDA:697,51,1,1 +BRDA:698,52,0,12 +BRDA:698,52,1,1 +BRDA:700,53,0,1 +BRDA:700,53,1,11 +BRDA:700,54,0,12 +BRDA:700,54,1,11 +BRDA:707,55,0,7 +BRDA:707,55,1,4 +BRDA:718,56,0,1 +BRDA:718,56,1,10 +BRDA:724,57,0,1 +BRDA:724,57,1,9 +BRDA:745,58,0,9 +BRDA:745,58,1,9 +BRDA:746,59,0,0 +BRDA:746,59,1,9 +BRDA:756,60,0,9 +BRDA:756,60,1,9 +BRDA:757,61,0,8 +BRDA:757,61,1,1 +BRDA:764,62,0,1 +BRDA:764,62,1,8 +BRDA:765,63,0,1 +BRDA:765,63,1,0 +BRDA:771,64,0,7 +BRDA:771,64,1,1 +BRDA:784,65,0,8 +BRDA:784,65,1,1 +BRDA:846,66,0,0 +BRDA:846,66,1,10 +BRDA:857,67,0,10 +BRDA:857,67,1,9 +BRDA:876,68,0,0 +BRDA:876,68,1,0 +BRDA:886,69,0,0 +BRDA:886,69,1,40 +BRDA:886,70,0,40 +BRDA:886,70,1,0 +BRDA:887,71,0,0 +BRDA:887,71,1,0 +BRDA:895,72,0,1 +BRDA:895,72,1,2 +BRDA:897,73,0,1 +BRDA:897,73,1,1 +BRDA:903,74,0,1 +BRDA:903,74,1,2 +BRDA:905,75,0,1 +BRDA:905,75,1,1 +BRDA:911,76,0,1 +BRDA:911,76,1,2 +BRDA:913,77,0,1 +BRDA:913,77,1,1 +BRDA:920,78,0,1 +BRDA:920,78,1,2 +BRDA:922,79,0,1 +BRDA:922,79,1,1 +BRDA:935,80,0,2 +BRDA:935,80,1,0 +BRF:164 +BRH:131 end_of_record diff --git a/doc/http.html b/doc/http.html index fe201183..ae644d36 100644 --- a/doc/http.html +++ b/doc/http.html @@ -211,7 +211,7 @@

                                API elements that are not applicable to HTTP/2

                              • Event: 'timeout'
                              • response.writeContinue()
                              • response.writeHead(statusCode, [reasonPhrase], [headers]): reasonPhrase will always be -ignored since it's not supported in HTTP/2
                              • +ignored since it's not supported in HTTP/2
                              • response.setTimeout(timeout, [callback])
                            • @@ -464,7 +464,7 @@

                              IncomingMessage class

                              -

                              Request Header Fields +

                              Request Header Fields * headers argument: HTTP/2.0 request and response header fields carry information as a series of key-value pairs. This includes the target URI for the request, the status code for the response, as well as HTTP header fields.

                              @@ -483,22 +483,12 @@

                              IncomingMessage class

                              -
                            • An HTTP/2.0 request or response MUST NOT include any of the following header fields: -Connection, Host, Keep-Alive, Proxy-Connection, TE, Transfer-Encoding, and Upgrade. A server -MUST treat the presence of any of these header fields as a stream error of type -PROTOCOL_ERROR.
                            • +
                            • Detects malformed headers
                          -
                            for (var i = 0; i < deprecatedHeaders.length; i++) {
                          -    var key = deprecatedHeaders[i];
                          -    if (key in headers) {
                          -      this._log.error({ key: key, value: headers[key] }, 'Deprecated header found');
                          -      this.stream.emit('error', 'PROTOCOL_ERROR');
                          -      return;
                          -    }
                          -  }
                          +
                            this._validateHeaders(headers);
                        • @@ -551,12 +541,13 @@

                          IncomingMessage class

                          IncomingMessage.prototype._checkSpecialHeader = function _checkSpecialHeader(key, value) { if ((typeof value !== 'string') || (value.length === 0)) { this._log.error({ key: key, value: value }, 'Invalid or missing special header field'); - this.stream.emit('error', 'PROTOCOL_ERROR'); + this.stream.reset('PROTOCOL_ERROR'); } return value; -} -;
  • +}; + +IncomingMessage.prototype._validateHeaders = function _validateHeaders(headers) {
    @@ -564,13 +555,29 @@

    IncomingMessage class

  • -
    +
    -

    OutgoingMessage class

    +
      +
    • An HTTP/2.0 request or response MUST NOT include any of the following header fields: +Connection, Host, Keep-Alive, Proxy-Connection, TE, Transfer-Encoding, and Upgrade. A server +MUST treat the presence of any of these header fields as a stream error of type +PROTOCOL_ERROR.
    • +
    +
      for (var i = 0; i < deprecatedHeaders.length; i++) {
    +    var key = deprecatedHeaders[i];
    +    if (key in headers) {
    +      this._log.error({ key: key, value: headers[key] }, 'Deprecated header found');
    +      this.stream.reset('PROTOCOL_ERROR');
    +      return;
    +    }
    +  }
    +
    +  for (var headerName in headers) {
    +
  • @@ -580,10 +587,16 @@

    OutgoingMessage class

    - +
      +
    • Empty header name field is malformed
    • +
    + -
    function OutgoingMessage() {
    +
        if (headerName.length <= 1) {
    +      this.stream.reset('PROTOCOL_ERROR');
    +      return;
    +    }
    @@ -595,6 +608,57 @@

    OutgoingMessage class

      +
    • A request or response containing uppercase header name field names MUST be +treated as malformed (Section 8.1.3.5). Implementations that detect malformed +requests or responses need to ensure that the stream ends.
    • +
    + + + +
        if(/[A-Z]/.test(headerName)) {
    +      this.stream.reset('PROTOCOL_ERROR');
    +      return;
    +    }
    +  }
    +};
    + + + + +
  • +
    + +
    + +
    +

    OutgoingMessage class

    + +
    + +
  • + + +
  • +
    + +
    + +
    + +
    + +
    function OutgoingMessage() {
    + +
  • + + +
  • +
    + +
    + +
    +
    • This is basically a read-only wrapper for the Stream class.
    @@ -668,11 +732,11 @@

    OutgoingMessage class

  • -
  • +
  • - +

    Server side

    @@ -681,11 +745,11 @@

    Server side

  • -
  • +
  • - +
    @@ -699,11 +763,11 @@

    Server side

  • -
  • +
  • - +

    Server class

    @@ -712,11 +776,11 @@

    Server class

  • -
  • +
  • - +
    @@ -733,11 +797,11 @@

    Server class

  • -
  • +
  • - +

    HTTP2 over TLS (using NPN or ALPN)

    @@ -765,11 +829,11 @@

    Server class

  • -
  • +
  • - +

    HTTP2 over plain TCP

    @@ -784,11 +848,11 @@

    Server class

  • -
  • +
  • - +

    HTTP/2 with HTTP/1.1 upgrade

    @@ -806,11 +870,11 @@

    Server class

  • -
  • +
  • - +

    Starting HTTP/2

    @@ -858,11 +922,11 @@

    Server class

  • -
  • +
  • - +

    There are 3 possible signatures of the listen function. Every arguments is forwarded to the backing TCP or HTTPS server.

    @@ -904,11 +968,11 @@

    Server class

  • -
  • +
  • - +

    Overriding EventEmitter's on(event, listener) method to forward certain subscriptions to server.There are events on the http.Server class where it makes difference whether someone is @@ -928,11 +992,11 @@

    Server class

  • -
  • +
  • - +

    addContext is used to add Server Name Indication contexts

    @@ -962,11 +1026,11 @@

    Server class

  • -
  • +
  • - +

    IncomingRequest class

    @@ -975,11 +1039,11 @@

    IncomingRequest class

  • -
  • +
  • - +
    @@ -992,13 +1056,13 @@

    IncomingRequest class

  • -
  • +
  • - +
    -

    Request Header Fields +

    Request Header Fields * headers argument: HTTP/2.0 request and response header fields carry information as a series of key-value pairs. This includes the target URI for the request, the status code for the response, as well as HTTP header fields.

    @@ -1010,11 +1074,11 @@

    IncomingRequest class

  • -
  • +
  • - +
    • The ":method" header field includes the HTTP method
    • @@ -1039,11 +1103,11 @@

      IncomingRequest class

      -
    • +
    • - +
      • Host header is included in the headers object for backwards compatibility.
      • @@ -1056,11 +1120,11 @@

        IncomingRequest class

        -
      • +
      • - +
        • Handling regular headers.
        • @@ -1073,11 +1137,11 @@

          IncomingRequest class

          -
        • +
        • - +
          • Signaling that the headers arrived.
          • @@ -1093,11 +1157,11 @@

            IncomingRequest class

            -
          • +
          • - +

            OutgoingResponse class

            @@ -1106,11 +1170,11 @@

            OutgoingResponse class

          • -
          • +
          • - +
            @@ -1200,11 +1264,11 @@

            OutgoingResponse class

          • -
          • +
          • - +

            Overriding EventEmitter's on(event, listener) method to forward certain subscriptions to request. See Server.prototype.on for explanation.

            @@ -1222,11 +1286,11 @@

            OutgoingResponse class

          • -
          • +
          • - +

            Client side

            @@ -1235,11 +1299,11 @@

            Client side

          • -
          • +
          • - +
            @@ -1259,11 +1323,11 @@

            Client side

          • -
          • +
          • - +

            Agent class

            @@ -1272,11 +1336,11 @@

            Agent class

          • -
          • +
          • - +
            @@ -1293,11 +1357,11 @@

            Agent class

          • -
          • +
          • - +
            • Using an own HTTPS agent, because the global agent does not look at NPN/ALPNProtocols when @@ -1351,11 +1415,11 @@

              Agent class

            • -
            • +
            • - +
              • There's an existing HTTP/2 connection to this host
              • @@ -1371,11 +1435,11 @@

                Agent class

                -
              • +
              • - +
                • HTTP/2 over plain TCP
                • @@ -1397,11 +1461,11 @@

                  Agent class

                  -
                • +
                • - +
                  • HTTP/2 over TLS negotiated using NPN or ALPN
                  • @@ -1499,11 +1563,11 @@

                    Agent class

                    -
                  • +
                  • - +

                    OutgoingRequest class

                    @@ -1512,11 +1576,11 @@

                    OutgoingRequest class

                  • -
                  • +
                  • - +
                    @@ -1581,11 +1645,11 @@

                    OutgoingRequest class

                  • -
                  • +
                  • - +

                    Overriding EventEmitter's on(event, listener) method to forward certain subscriptions to request. See Server.prototype.on for explanation.

                    @@ -1603,11 +1667,11 @@

                    OutgoingRequest class

                  • -
                  • +
                  • - +

                    Methods only in fallback mode

                    @@ -1640,11 +1704,11 @@

                    OutgoingRequest class

                  • -
                  • +
                  • - +

                    Aborting the request

                    @@ -1663,11 +1727,11 @@

                    OutgoingRequest class

                  • -
                  • +
                  • - +

                    Receiving push promises

                    @@ -1688,11 +1752,11 @@

                    OutgoingRequest class

                  • -
                  • +
                  • - +

                    IncomingResponse class

                    @@ -1701,11 +1765,11 @@

                    IncomingResponse class

                  • -
                  • +
                  • - +
                    @@ -1718,13 +1782,13 @@

                    IncomingResponse class

                  • -
                  • +
                  • - +
                    -

                    Response Header Fields +

                    Response Header Fields * headers argument: HTTP/2.0 request and response header fields carry information as a series of key-value pairs. This includes the target URI for the request, the status code for the response, as well as HTTP header fields.

                    @@ -1736,11 +1800,11 @@

                    IncomingResponse class

                  • -
                  • +
                  • - +
                    • A single ":status" header field is defined that carries the HTTP status code field. This @@ -1759,11 +1823,11 @@

                      IncomingResponse class

                    • -
                    • +
                    • - +
                      • Handling regular headers.
                      • @@ -1776,11 +1840,11 @@

                        IncomingResponse class

                        -
                      • +
                      • - +
                        • Signaling that the headers arrived.
                        • @@ -1795,11 +1859,11 @@

                          IncomingResponse class

                          -
                        • +
                        • - +

                          IncomingPromise class

                          @@ -1808,11 +1872,11 @@

                          IncomingPromise class

                        • -
                        • +
                        • - +
                          diff --git a/doc/index.html b/doc/index.html index 4e9f9d00..b140a701 100644 --- a/doc/index.html +++ b/doc/index.html @@ -48,7 +48,7 @@

                          index.js

                          -

                          node-http2 is an HTTP/2 (draft 10) implementation for node.js.

                          +

                          node-http2 is an HTTP/2 (draft 11) implementation for node.js.

                          The core of the protocol is implemented by the http2-protocol module. This module provides two important features on top of http2-protocol:

                            From 22fe98d151bab0713ea127ec78028926540469c2 Mon Sep 17 00:00:00 2001 From: Nicholas Hurley Date: Mon, 1 Aug 2016 10:05:27 -0700 Subject: [PATCH 19/20] Update docs --- doc/http.html | 1829 +++++++++++++++++----------- doc/index.html | 38 +- doc/protocol.jst | 59 + doc/protocol/compressor.html | 2217 ++++++++++++++++++++++++++++++++++ doc/protocol/connection.html | 1759 +++++++++++++++++++++++++++ doc/protocol/endpoint.html | 718 +++++++++++ doc/protocol/flow.html | 889 ++++++++++++++ doc/protocol/framer.html | 2196 +++++++++++++++++++++++++++++++++ doc/protocol/index.html | 170 +++ doc/protocol/stream.html | 1485 +++++++++++++++++++++++ doc/root.jst | 59 + 11 files changed, 10728 insertions(+), 691 deletions(-) create mode 100644 doc/protocol.jst create mode 100644 doc/protocol/compressor.html create mode 100644 doc/protocol/connection.html create mode 100644 doc/protocol/endpoint.html create mode 100644 doc/protocol/flow.html create mode 100644 doc/protocol/framer.html create mode 100644 doc/protocol/index.html create mode 100644 doc/protocol/stream.html create mode 100644 doc/root.jst diff --git a/doc/http.html b/doc/http.html index ae644d36..29456c79 100644 --- a/doc/http.html +++ b/doc/http.html @@ -16,18 +16,21 @@ Jump To … +
                          @@ -39,10 +42,10 @@
                        • -
                          +
                          -

                          Public API

                          +

                          Public API

                          @@ -55,45 +58,55 @@

                          Public API

                          + +
                          + +
                        • + + +
                        • +
                          + +
                          + +

                          The main governing power behind the http2 API design is that it should look very similar to the existing node.js [HTTPS API][1] (which is, in turn, almost identical to the [HTTP API][2]). The additional features of HTTP/2 are exposed as extensions to this API. Furthermore, node-http2 should fall back to using HTTP/1.1 if needed. Compatibility with undocumented or deprecated elements of the node.js HTTP/HTTPS API is a non-goal.

                          -

                          Additional and modified API elements

                          +

                          Additional and modified API elements

                        • -
                        • +
                        • - +
                          • Class: http2.Endpoint: an API for using the raw HTTP/2 framing layer. For documentation -see the lib/endpoint.js file.

                            +see protocol/endpoint.js.

                          • Class: http2.Server

                              -
                            • Event: 'connection' (socket, [endpoint]): there's a second argument if the negotiation of -HTTP/2 was successful: the reference to the Endpoint object tied to the +
                            • Event: ‘connection’ (socket, [endpoint]): there’s a second argument if the negotiation of +HTTP/2 was successful: the reference to the Endpoint object tied to the socket.
                          • http2.createServer(options, [requestListener]): additional option:

                            • log: an optional bunyan logger object
                            • -
                            • plain: if true, the server will accept HTTP/2 connections over plain TCP instead of -TLS
                          • Class: http2.ServerResponse

                              -
                            • response.push(options): initiates a server push. options describes the 'imaginary' +
                            • response.push(options): initiates a server push. options describes the ‘imaginary’ request to which the push stream is a response; the possible options are identical to the ones accepted by http2.request. Returns a ServerResponse object that can be used to send the response headers and content.
                            • @@ -106,21 +119,25 @@

                              Additional and modified API elements

                          • agent.sockets: only contains TCP sockets that corresponds to HTTP/1 requests.
                          • -
                          • agent.endpoints: contains Endpoint objects for HTTP/2 connections.
                          • +
                          • agent.endpoints: contains Endpoint objects for HTTP/2 connections.
                          • +
                          +
                        • +
                        • http2.request(options, [callback]):

                          +
                            +
                          • similar to http.request
                        • -
                        • http2.request(options, [callback]): additional option:

                          +
                        • http2.get(options, [callback]):

                            -
                          • plain: if true, the client will not try to build a TLS tunnel, instead it will use -the raw TCP stream for HTTP/2
                          • +
                          • similar to http.get
                        • Class: http2.ClientRequest

                            -
                          • Event: 'socket' (socket): in case of an HTTP/2 incoming message, socket is a reference -to the associated HTTP/2 Stream object (and not to the TCP socket).
                          • -
                          • Event: 'push' (promise): signals the intention of a server push associated to this -request. promise is an IncomingPromise. If there's no listener for this event, the server +
                          • Event: ‘socket’ (socket): in case of an HTTP/2 incoming message, socket is a reference +to the associated HTTP/2 Stream object (and not to the TCP socket).
                          • +
                          • Event: ‘push’ (promise): signals the intention of a server push associated to this +request. promise is an IncomingPromise. If there’s no listener for this event, the server push is cancelled.
                          • request.setPriority(priority): assign a priority to this request. priority is a number between 0 (highest priority) and 2^31-1 (lowest priority). Default value is 2^30.
                          • @@ -130,8 +147,8 @@

                            Additional and modified API elements

                            • has two subclasses for easier interface description: IncomingRequest and IncomingResponse
                            • -
                            • message.socket: in case of an HTTP/2 incoming message, it's a reference to the associated -HTTP/2 Stream object (and not to the TCP socket).
                            • +
                            • message.socket: in case of an HTTP/2 incoming message, it’s a reference to the associated +HTTP/2 Stream object (and not to the TCP socket).
                          • Class: http2.IncomingRequest (IncomingMessage)

                            @@ -146,11 +163,11 @@

                            Additional and modified API elements

                          • Class: http2.IncomingPromise (IncomingRequest)

                              -
                            • contains the metadata of the 'imaginary' request to which the server push is an answer.
                            • -
                            • Event: 'response' (response): signals the arrival of the actual push stream. response +
                            • contains the metadata of the ‘imaginary’ request to which the server push is an answer.
                            • +
                            • Event: ‘response’ (response): signals the arrival of the actual push stream. response is an IncomingResponse.
                            • -
                            • Event: 'push' (promise): signals the intention of a server push associated to this -request. promise is an IncomingPromise. If there's no listener for this event, the server +
                            • Event: ‘push’ (promise): signals the intention of a server push associated to this +request. promise is an IncomingPromise. If there’s no listener for this event, the server push is cancelled.
                            • promise.cancel(): cancels the promised server push.
                            • promise.setPriority(priority): assign a priority to this push stream. priority is a @@ -158,18 +175,18 @@

                              Additional and modified API elements

                          -

                          API elements not yet implemented

                          +

                          API elements not yet implemented

                      • -
                      • +
                      • - +
                        • Class: http2.Server
                            @@ -177,55 +194,55 @@

                            API elements not yet implemented

                        -

                        API elements that are not applicable to HTTP/2

                        +

                        API elements that are not applicable to HTTP/2

                      • -
                      • +
                      • - +

                        The reason may be deprecation of certain HTTP/1.1 features, or that some API elements simply -don't make sense when using HTTP/2. These will not be present when a request is done with HTTP/2, +don’t make sense when using HTTP/2. These will not be present when a request is done with HTTP/2, but will function normally when falling back to using HTTP/1.1.

                        • Class: http2.Server

                            -
                          • Event: 'checkContinue': not in the spec, yet (see http-spec#18)
                          • -
                          • Event: 'upgrade': upgrade is deprecated in HTTP/2
                          • -
                          • Event: 'timeout': HTTP/2 sockets won't timeout because of application level keepalive +
                          • Event: ‘checkContinue’: not in the spec
                          • +
                          • Event: ‘upgrade’: upgrade is deprecated in HTTP/2
                          • +
                          • Event: ‘timeout’: HTTP/2 sockets won’t timeout because of application level keepalive (PING frames)
                          • -
                          • Event: 'connect': not in the spec, yet (see http-spec#230)
                          • +
                          • Event: ‘connect’: not yet supported
                          • server.setTimeout(msecs, [callback])
                          • server.timeout
                        • Class: http2.ServerResponse

                            -
                          • Event: 'close'
                          • -
                          • Event: 'timeout'
                          • +
                          • Event: ‘close’
                          • +
                          • Event: ‘timeout’
                          • response.writeContinue()
                          • response.writeHead(statusCode, [reasonPhrase], [headers]): reasonPhrase will always be -ignored since it's not supported in HTTP/2
                          • +ignored since it’s not supported in HTTP/2
                          • response.setTimeout(timeout, [callback])
                        • Class: http2.Agent

                            -
                          • agent.maxSockets: only affects HTTP/1 connection pool. When using HTTP/2, there's always +
                          • agent.maxSockets: only affects HTTP/1 connection pool. When using HTTP/2, there’s always one connection per host.
                        • Class: http2.ClientRequest

                            -
                          • Event: 'upgrade'
                          • -
                          • Event: 'connect'
                          • -
                          • Event: 'continue'
                          • +
                          • Event: ‘upgrade’
                          • +
                          • Event: ‘connect’
                          • +
                          • Event: ‘continue’
                          • request.setTimeout(timeout, [callback])
                          • request.setNoDelay([noDelay])
                          • request.setSocketKeepAlive([enable], [initialDelay])
                          • @@ -233,96 +250,174 @@

                            API elements that are not applicable to HTTP/2

                          • Class: http2.IncomingMessage

                              -
                            • Event: 'close'
                            • +
                            • Event: ‘close’
                            • message.setTimeout(timeout, [callback])
                          -

                          Common server and client side code

                      • -
                      • +
                      • - + +
                        +

                        Common server and client side code

                        + +
                        + +
                      • + + +
                      • +
                        + +
                        +
                        -
                        var net = require('net');
                        -var url = require('url');
                        -var util = require('util');
                        -var EventEmitter = require('events').EventEmitter;
                        -var PassThrough = require('stream').PassThrough;
                        -var Readable = require('stream').Readable;
                        -var Writable = require('stream').Writable;
                        -var Endpoint = require('http2-protocol').Endpoint;
                        -var implementedVersion = require('http2-protocol').ImplementedVersion;
                        -var http = require('http');
                        -var https = require('https');
                        +            
                        +var net = require('net');
                        +var url = require('url');
                        +var util = require('util');
                        +var EventEmitter = require('events').EventEmitter;
                        +var PassThrough = require('stream').PassThrough;
                        +var Readable = require('stream').Readable;
                        +var Writable = require('stream').Writable;
                        +var protocol = require('./protocol');
                        +var Endpoint = protocol.Endpoint;
                        +var http = require('http');
                        +var https = require('https');
                         
                         exports.STATUS_CODES = http.STATUS_CODES;
                         exports.IncomingMessage = IncomingMessage;
                         exports.OutgoingMessage = OutgoingMessage;
                        -
                        -var deprecatedHeaders = [
                        -  'connection',
                        -  'host',
                        -  'keep-alive',
                        -  'proxy-connection',
                        -  'te',
                        -  'transfer-encoding',
                        -  'upgrade'
                        +exports.protocol = protocol;
                        +
                        +var deprecatedHeaders = [
                        +  'connection',
                        +  'host',
                        +  'keep-alive',
                        +  'proxy-connection',
                        +  'transfer-encoding',
                        +  'upgrade'
                         ];
                      • -
                      • +
                      • - +

                        When doing NPN/ALPN negotiation, HTTP/1.1 is used as fallback

                        -
                        var supportedProtocols = [implementedVersion, 'http/1.1', 'http/1.0'];
                        +
                        var supportedProtocols = [protocol.VERSION, 'http/1.1', 'http/1.0'];
                      • -
                      • +
                      • -
                        - +
                        + +
                        +

                        Ciphersuite list based on the recommendations of https://wiki.mozilla.org/Security/Server_Side_TLS +The only modification is that kEDH+AESGCM were placed after DHE and ECDHE suites

                        + +
                        + +
                        var cipherSuites = [
                        +  'ECDHE-RSA-AES128-GCM-SHA256',
                        +  'ECDHE-ECDSA-AES128-GCM-SHA256',
                        +  'ECDHE-RSA-AES256-GCM-SHA384',
                        +  'ECDHE-ECDSA-AES256-GCM-SHA384',
                        +  'DHE-RSA-AES128-GCM-SHA256',
                        +  'DHE-DSS-AES128-GCM-SHA256',
                        +  'ECDHE-RSA-AES128-SHA256',
                        +  'ECDHE-ECDSA-AES128-SHA256',
                        +  'ECDHE-RSA-AES128-SHA',
                        +  'ECDHE-ECDSA-AES128-SHA',
                        +  'ECDHE-RSA-AES256-SHA384',
                        +  'ECDHE-ECDSA-AES256-SHA384',
                        +  'ECDHE-RSA-AES256-SHA',
                        +  'ECDHE-ECDSA-AES256-SHA',
                        +  'DHE-RSA-AES128-SHA256',
                        +  'DHE-RSA-AES128-SHA',
                        +  'DHE-DSS-AES128-SHA256',
                        +  'DHE-RSA-AES256-SHA256',
                        +  'DHE-DSS-AES256-SHA',
                        +  'DHE-RSA-AES256-SHA',
                        +  'kEDH+AESGCM',
                        +  'AES128-GCM-SHA256',
                        +  'AES256-GCM-SHA384',
                        +  'ECDHE-RSA-RC4-SHA',
                        +  'ECDHE-ECDSA-RC4-SHA',
                        +  'AES128',
                        +  'AES256',
                        +  'RC4-SHA',
                        +  'HIGH',
                        +  '!aNULL',
                        +  '!eNULL',
                        +  '!EXPORT',
                        +  '!DES',
                        +  '!3DES',
                        +  '!MD5',
                        +  '!PSK'
                        +].join(':');
                        + +
                      • + + +
                      • +
                        + +
                        +
                        -

                        Logging

                        +

                        Logging

                      • -
                      • +
                      • - + +
                        + +
                        + +
                      • + + +
                      • +
                        + +
                        +

                        Logger shim, used when no logger is provided by the user.

                        -
                        function noop() {}
                        -var defaultLogger = {
                        +            
                        function noop() {}
                        +var defaultLogger = {
                           fatal: noop,
                           error: noop,
                           warn : noop,
                        @@ -330,80 +425,81 @@ 

                        Logging

                        debug: noop, trace: noop, - child: function() { return this; } + child: function() { return this; } };
                      • -
                      • +
                      • - +

                        Bunyan serializers exported by submodules that are worth adding when creating a logger.

                        -
                        exports.serializers = require('http2-protocol').serializers;
                        +
                        exports.serializers = protocol.serializers;
                      • -
                      • +
                      • -
                        - +
                        +
                        -

                        IncomingMessage class

                        +

                        IncomingMessage class

                      • -
                      • +
                      • - +
                        -
                        function IncomingMessage(stream) {
                        +
                        +function IncomingMessage(stream) {
                      • -
                      • +
                      • - +
                          -
                        • This is basically a read-only wrapper for the Stream class.
                        • +
                        • This is basically a read-only wrapper for the Stream class.
                        -
                          PassThrough.call(this);
                        -  stream.pipe(this);
                        -  this.socket = this.stream = stream;
                        +            
                          PassThrough.call(this);
                        +  stream.pipe(this);
                        +  this.socket = this.stream = stream;
                         
                        -  this._log = stream._log.child({ component: 'http' });
                        + this._log = stream._log.child({ component: 'http' });
                      • -
                      • +
                      • - +
                        • HTTP/2.0 does not define a way to carry the version identifier that is included in the @@ -412,18 +508,18 @@

                          IncomingMessage class

                        -
                          this.httpVersion = '2.0';
                        -  this.httpVersionMajor = 2;
                        -  this.httpVersionMinor = 0;
                        +
                          this.httpVersion = '2.0';
                        +  this.httpVersionMajor = 2;
                        +  this.httpVersionMinor = 0;
                      • -
                      • +
                      • - +
                        • this.headers will store the regular headers (and none of the special colon headers)
                        • @@ -431,18 +527,18 @@

                          IncomingMessage class

                        -
                          this.headers = {};
                        -  this.trailers = undefined;
                        -  this._lastHeadersSeen = undefined;
                        +
                          this.headers = {};
                        +  this.trailers = undefined;
                        +  this._lastHeadersSeen = undefined;
                      • -
                      • +
                      • - +
                        • Other metadata is filled in when the headers arrive.
                        • @@ -450,37 +546,39 @@

                          IncomingMessage class

                        -
                          stream.once('headers', this._onHeaders.bind(this));
                        -  stream.once('end', this._onEnd.bind(this));
                        +            
                          stream.once('headers', this._onHeaders.bind(this));
                        +  stream.once('end', this._onEnd.bind(this));
                         }
                        -IncomingMessage.prototype = Object.create(PassThrough.prototype, { constructor: { value: IncomingMessage } });
                        +IncomingMessage.prototype = Object.create(PassThrough.prototype, { constructor: { value: IncomingMessage } });
                      • -
                      • +
                      • - +
                        -

                        Request Header Fields -* headers argument: HTTP/2.0 request and response header fields carry information as a series - of key-value pairs. This includes the target URI for the request, the status code for the - response, as well as HTTP header fields.

                        +

                        Request Header Fields

                        +
                          +
                        • headers argument: HTTP/2.0 request and response header fields carry information as a series +of key-value pairs. This includes the target URI for the request, the status code for the +response, as well as HTTP header fields.
                        • +
                        -
                        IncomingMessage.prototype._onHeaders = function _onHeaders(headers) {
                        +
                        IncomingMessage.prototype._onHeaders = function _onHeaders(headers) {
                      • -
                      • +
                      • - +
                        • Detects malformed headers
                        • @@ -488,16 +586,16 @@

                          IncomingMessage class

                        -
                          this._validateHeaders(headers);
                        +
                          this._validateHeaders(headers);
                      • -
                      • +
                      • - +
                        • Store the regular headers in this.headers
                        • @@ -505,87 +603,92 @@

                          IncomingMessage class

                        -
                          for (var name in headers) {
                        -    if (name[0] !== ':') {
                        -      this.headers[name] = headers[name];
                        +            
                          for (var name in headers) {
                        +    if (name[0] !== ':') {
                        +      if (name === 'set-cookie' && !Array.isArray(headers[name])) {
                        +        this.headers[name] = [headers[name]];
                        +      } else {
                        +        this.headers[name] = headers[name];
                        +      }
                             }
                           }
                      • -
                      • +
                      • - +
                          -
                        • The last header block, if it's not the first, will represent the trailers
                        • +
                        • The last header block, if it’s not the first, will represent the trailers
                        -
                          var self = this;
                        -  this.stream.on('headers', function(headers) {
                        +            
                          var self = this;
                        +  this.stream.on('headers', function(headers) {
                             self._lastHeadersSeen = headers;
                           });
                         };
                         
                        -IncomingMessage.prototype._onEnd = function _onEnd() {
                        -  this.trailers = this._lastHeadersSeen;
                        +IncomingMessage.prototype._onEnd = function _onEnd() {
                        +  this.trailers = this._lastHeadersSeen;
                         };
                         
                         IncomingMessage.prototype.setTimeout = noop;
                         
                        -IncomingMessage.prototype._checkSpecialHeader = function _checkSpecialHeader(key, value) {
                        -  if ((typeof value !== 'string') || (value.length === 0)) {
                        -    this._log.error({ key: key, value: value }, 'Invalid or missing special header field');
                        -    this.stream.reset('PROTOCOL_ERROR');
                        +IncomingMessage.prototype._checkSpecialHeader = function _checkSpecialHeader(key, value) {
                        +  if ((typeof value !== 'string') || (value.length === 0)) {
                        +    this._log.error({ key: key, value: value }, 'Invalid or missing special header field');
                        +    this.stream.reset('PROTOCOL_ERROR');
                           }
                         
                        -  return value;
                        +  return value;
                         };
                         
                        -IncomingMessage.prototype._validateHeaders = function _validateHeaders(headers) {
                        +IncomingMessage.prototype._validateHeaders = function _validateHeaders(headers) {
                      • -
                      • +
                      • - +
                        • An HTTP/2.0 request or response MUST NOT include any of the following header fields: -Connection, Host, Keep-Alive, Proxy-Connection, TE, Transfer-Encoding, and Upgrade. A server +Connection, Host, Keep-Alive, Proxy-Connection, Transfer-Encoding, and Upgrade. A server MUST treat the presence of any of these header fields as a stream error of type -PROTOCOL_ERROR.
                        • +PROTOCOL_ERROR. +If the TE header is present, it’s only valid value is ‘trailers’
                        -
                          for (var i = 0; i < deprecatedHeaders.length; i++) {
                        -    var key = deprecatedHeaders[i];
                        -    if (key in headers) {
                        -      this._log.error({ key: key, value: headers[key] }, 'Deprecated header found');
                        -      this.stream.reset('PROTOCOL_ERROR');
                        -      return;
                        +            
                          for (var i = 0; i < deprecatedHeaders.length; i++) {
                        +    var key = deprecatedHeaders[i];
                        +    if (key in headers || (key === 'te' && headers[key] !== 'trailers')) {
                        +      this._log.error({ key: key, value: headers[key] }, 'Deprecated header found');
                        +      this.stream.reset('PROTOCOL_ERROR');
                        +      return;
                             }
                           }
                         
                        -  for (var headerName in headers) {
                        + for (var headerName in headers) {
                      • -
                      • +
                      • - +
                        • Empty header name field is malformed
                        • @@ -593,19 +696,19 @@

                          IncomingMessage class

                        -
                            if (headerName.length <= 1) {
                        -      this.stream.reset('PROTOCOL_ERROR');
                        -      return;
                        +            
                            if (headerName.length <= 1) {
                        +      this.stream.reset('PROTOCOL_ERROR');
                        +      return;
                             }
                      • -
                      • +
                      • - +
                        • A request or response containing uppercase header name field names MUST be @@ -615,9 +718,9 @@

                          IncomingMessage class

                        -
                            if(/[A-Z]/.test(headerName)) {
                        -      this.stream.reset('PROTOCOL_ERROR');
                        -      return;
                        +            
                            if(/[A-Z]/.test(headerName)) {
                        +      this.stream.reset('PROTOCOL_ERROR');
                        +      return;
                             }
                           }
                         };
                        @@ -625,104 +728,107 @@

                        IncomingMessage class

                      • -
                      • +
                      • -
                        - +
                        +
                        -

                        OutgoingMessage class

                        +

                        OutgoingMessage class

                      • -
                      • +
                      • - +
                        -
                        function OutgoingMessage() {
                        +
                        +function OutgoingMessage() {
                      • -
                      • +
                      • - +
                          -
                        • This is basically a read-only wrapper for the Stream class.
                        • +
                        • This is basically a read-only wrapper for the Stream class.
                        -
                          Writable.call(this);
                        +            
                          Writable.call(this);
                         
                        -  this._headers = {};
                        -  this._trailers = undefined;
                        -  this.headersSent = false;
                        +  this._headers = {};
                        +  this._trailers = undefined;
                        +  this.headersSent = false;
                        +  this.finished = false;
                         
                        -  this.on('finish', this._finish);
                        +  this.on('finish', this._finish);
                         }
                        -OutgoingMessage.prototype = Object.create(Writable.prototype, { constructor: { value: OutgoingMessage } });
                        +OutgoingMessage.prototype = Object.create(Writable.prototype, { constructor: { value: OutgoingMessage } });
                         
                        -OutgoingMessage.prototype._write = function _write(chunk, encoding, callback) {
                        -  if (this.stream) {
                        -    this.stream.write(chunk, encoding, callback);
                        -  } else {
                        -    this.once('socket', this._write.bind(this, chunk, encoding, callback));
                        +OutgoingMessage.prototype._write = function _write(chunk, encoding, callback) {
                        +  if (this.stream) {
                        +    this.stream.write(chunk, encoding, callback);
                        +  } else {
                        +    this.once('socket', this._write.bind(this, chunk, encoding, callback));
                           }
                         };
                         
                        -OutgoingMessage.prototype._finish = function _finish() {
                        -  if (this.stream) {
                        -    if (this._trailers) {
                        -      if (this.request) {
                        -        this.request.addTrailers(this._trailers);
                        -      } else {
                        -        this.stream.headers(this._trailers);
                        +OutgoingMessage.prototype._finish = function _finish() {
                        +  if (this.stream) {
                        +    if (this._trailers) {
                        +      if (this.request) {
                        +        this.request.addTrailers(this._trailers);
                        +      } else {
                        +        this.stream.headers(this._trailers);
                               }
                             }
                        -    this.stream.end();
                        -  } else {
                        -    this.once('socket', this._finish.bind(this));
                        +    this.finished = true;
                        +    this.stream.end();
                        +  } else {
                        +    this.once('socket', this._finish.bind(this));
                           }
                         };
                         
                        -OutgoingMessage.prototype.setHeader = function setHeader(name, value) {
                        -  if (this.headersSent) {
                        -    throw new Error('Can\'t set headers after they are sent.');
                        -  } else {
                        +OutgoingMessage.prototype.setHeader = function setHeader(name, value) {
                        +  if (this.headersSent) {
                        +    return this.emit('error', new Error('Can\'t set headers after they are sent.'));
                        +  } else {
                             name = name.toLowerCase();
                        -    if (deprecatedHeaders.indexOf(name) !== -1) {
                        -      throw new Error('Cannot set deprecated header: ' + name);
                        +    if (deprecatedHeaders.indexOf(name) !== -1) {
                        +      return this.emit('error', new Error('Cannot set deprecated header: ' + name));
                             }
                        -    this._headers[name] = value;
                        +    this._headers[name] = value;
                           }
                         };
                         
                        -OutgoingMessage.prototype.removeHeader = function removeHeader(name) {
                        -  if (this.headersSent) {
                        -    throw new Error('Can\'t remove headers after they are sent.');
                        -  } else {
                        -    delete this._headers[name.toLowerCase()];
                        +OutgoingMessage.prototype.removeHeader = function removeHeader(name) {
                        +  if (this.headersSent) {
                        +    return this.emit('error', new Error('Can\'t remove headers after they are sent.'));
                        +  } else {
                        +    delete this._headers[name.toLowerCase()];
                           }
                         };
                         
                        -OutgoingMessage.prototype.getHeader = function getHeader(name) {
                        -  return this._headers[name.toLowerCase()];
                        +OutgoingMessage.prototype.getHeader = function getHeader(name) {
                        +  return this._headers[name.toLowerCase()];
                         };
                         
                        -OutgoingMessage.prototype.addTrailers = function addTrailers(trailers) {
                        -  this._trailers = trailers;
                        +OutgoingMessage.prototype.addTrailers = function addTrailers(trailers) {
                        +  this._trailers = trailers;
                         };
                         
                         OutgoingMessage.prototype.setTimeout = noop;
                        @@ -732,235 +838,340 @@ 

                        OutgoingMessage class

                      • -
                      • +
                      • -
                        - +
                        +
                        -

                        Server side

                        +

                        Server side

                      • -
                      • +
                      • - +
                        -
                        exports.createServer = createServer;
                        +            
                         exports.Server = Server;
                         exports.IncomingRequest = IncomingRequest;
                         exports.OutgoingResponse = OutgoingResponse;
                        -exports.ServerResponse = OutgoingResponse; // for API compatibility
                        +exports.ServerResponse = OutgoingResponse; // for API compatibility
                      • -
                      • +
                      • -
                        - +
                        +
                        -

                        Server class

                        +

                        Forward events event on source to all listeners on target.

                        +

                        Note: The calling context is source.

                        +
                        function forwardEvent(event, source, target) {
                        +  function forward() {
                        +    var listeners = target.listeners(event);
                        +
                        +    var n = listeners.length;
                        +
                      • -
                      • +
                      • - + +
                        +

                        Special case for error event with no listeners.

                        + +
                        + +
                            if (n === 0 && event === 'error') {
                        +      var args = [event];
                        +      args.push.apply(args, arguments);
                        +
                        +      target.emit.apply(target, args);
                        +      return;
                        +    }
                        +
                        +    for (var i = 0; i < n; ++i) {
                        +      listeners[i].apply(source, arguments);
                        +    }
                        +  }
                        +
                        +  source.on(event, forward);
                        + +
                      • + + +
                      • +
                        + +
                        + +
                        +

                        A reference to the function is necessary to be able to stop +forwarding.

                        + +
                        + +
                          return forward;
                        +}
                        + +
                      • + + +
                      • +
                        + +
                        + +
                        +

                        Server class

                        + +
                        + +
                      • + + +
                      • +
                        + +
                        +
                        -
                        function Server(options) {
                        +            
                        +function Server(options) {
                           options = util._extend({}, options);
                         
                        -  this._log = (options.log || defaultLogger).child({ component: 'http' });
                        -  this._settings = options.settings;
                        +  this._log = (options.log || defaultLogger).child({ component: 'http' });
                        +  this._settings = options.settings;
                         
                        -  var start = this._start.bind(this);
                        -  var fallback = this._fallback.bind(this);
                        + var start = this._start.bind(this); + var fallback = this._fallback.bind(this);
                      • -
                      • +
                      • - +

                        HTTP2 over TLS (using NPN or ALPN)

                        -
                          if ((options.key && options.cert) || options.pfx) {
                        -    this._log.info('Creating HTTP/2 server over TLS');
                        -    this._mode = 'tls';
                        +            
                          if ((options.key && options.cert) || options.pfx) {
                        +    this._log.info('Creating HTTP/2 server over TLS');
                        +    this._mode = 'tls';
                             options.ALPNProtocols = supportedProtocols;
                             options.NPNProtocols = supportedProtocols;
                        -    this._server = https.createServer(options);
                        -    this._originalSocketListeners = this._server.listeners('secureConnection');
                        -    this._server.removeAllListeners('secureConnection');
                        -    this._server.on('secureConnection', function(socket) {
                        -      var negotiatedProtocol = socket.alpnProtocol || socket.npnProtocol;
                        -      if ((negotiatedProtocol === implementedVersion) && socket.servername) {
                        +    options.ciphers = options.ciphers || cipherSuites;
                        +    options.honorCipherOrder = (options.honorCipherOrder != false);
                        +    this._server = https.createServer(options);
                        +    this._originalSocketListeners = this._server.listeners('secureConnection');
                        +    this._server.removeAllListeners('secureConnection');
                        +    this._server.on('secureConnection', function(socket) {
                        +      var negotiatedProtocol = socket.alpnProtocol || socket.npnProtocol;
                        + +
                      • + + +
                      • +
                        + +
                        + +
                        +

                        It’s true that the client MUST use SNI, but if it doesn’t, we don’t care, don’t fall back to HTTP/1, +since if the ALPN negotiation is otherwise successful, the client thinks we speak HTTP/2 but we don’t.

                        + +
                        + +
                              if (negotiatedProtocol === protocol.VERSION) {
                                 start(socket);
                        -      } else {
                        +      } else {
                                 fallback(socket);
                               }
                             });
                        -    this._server.on('request', this.emit.bind(this, 'request'));
                        +    this._server.on('request', this.emit.bind(this, 'request'));
                        +
                        +    forwardEvent('error', this._server, this);
                        +    forwardEvent('listening', this._server, this);
                           }
                      • -
                      • +
                      • - +

                        HTTP2 over plain TCP

                        -
                          else if (options.plain) {
                        -    this._log.info('Creating HTTP/2 server over plain TCP');
                        -    this._mode = 'plain';
                        -    this._server = net.createServer(start);
                        +            
                          else if (options.plain) {
                        +    this._log.info('Creating HTTP/2 server over plain TCP');
                        +    this._mode = 'plain';
                        +    this._server = net.createServer(start);
                           }
                      • -
                      • +
                      • - +

                        HTTP/2 with HTTP/1.1 upgrade

                        -
                          else {
                        -    this._log.error('Trying to create HTTP/2 server with Upgrade from HTTP/1.1');
                        -    throw new Error('HTTP1.1 -> HTTP2 upgrade is not yet supported. Please provide TLS keys.');
                        +            
                          else {
                        +    this._log.error('Trying to create HTTP/2 server with Upgrade from HTTP/1.1');
                        +    throw new Error('HTTP1.1 -> HTTP2 upgrade is not yet supported. Please provide TLS keys.');
                           }
                         
                        -  this._server.on('close', this.emit.bind(this, 'close'));
                        +  this._server.on('close', this.emit.bind(this, 'close'));
                         }
                        -Server.prototype = Object.create(EventEmitter.prototype, { constructor: { value: Server } });
                        +Server.prototype = Object.create(EventEmitter.prototype, { constructor: { value: Server } });
                      • -
                      • +
                      • - +

                        Starting HTTP/2

                        -
                        Server.prototype._start = function _start(socket) {
                        -  var endpoint = new Endpoint(this._log, 'SERVER', this._settings);
                        +            
                        Server.prototype._start = function _start(socket) {
                        +  var endpoint = new Endpoint(this._log, 'SERVER', this._settings);
                         
                        -  this._log.info({ e: endpoint,
                        -                   client: socket.remoteAddress + ':' + socket.remotePort,
                        +  this._log.info({ e: endpoint,
                        +                   client: socket.remoteAddress + ':' + socket.remotePort,
                                            SNI: socket.servername
                        -                 }, 'New incoming HTTP/2 connection');
                        +                 }, 'New incoming HTTP/2 connection');
                         
                           endpoint.pipe(socket).pipe(endpoint);
                         
                        -  var self = this;
                        -  endpoint.on('stream', function _onStream(stream) {
                        -    var response = new OutgoingResponse(stream);
                        -    var request = new IncomingRequest(stream);
                        -
                        -    request.once('ready', self.emit.bind(self, 'request', request, response));
                        -  });
                        -
                        -  endpoint.on('error', this.emit.bind(this, 'clientError'));
                        -  socket.on('error', this.emit.bind(this, 'clientError'));
                        +  var self = this;
                        +  endpoint.on('stream', function _onStream(stream) {
                        +    var response = new OutgoingResponse(stream);
                        +    var request = new IncomingRequest(stream);
                        + +
                      • + + +
                      • +
                        + +
                        + +
                        +

                        Some conformance to Node.js Https specs allows to distinguish clients:

                        - this.emit('connection', socket, endpoint); +
                        + +
                            request.remoteAddress = socket.remoteAddress;
                        +    request.remotePort = socket.remotePort;
                        +    request.connection = request.socket = response.socket = socket;
                        +
                        +    request.once('ready', self.emit.bind(self, 'request', request, response));
                        +  });
                        +
                        +  endpoint.on('error', this.emit.bind(this, 'clientError'));
                        +  socket.on('error', this.emit.bind(this, 'clientError'));
                        +
                        +  this.emit('connection', socket, endpoint);
                         };
                         
                        -Server.prototype._fallback = function _fallback(socket) {
                        -  var negotiatedProtocol = socket.alpnProtocol || socket.npnProtocol;
                        +Server.prototype._fallback = function _fallback(socket) {
                        +  var negotiatedProtocol = socket.alpnProtocol || socket.npnProtocol;
                         
                        -  this._log.info({ client: socket.remoteAddress + ':' + socket.remotePort,
                        +  this._log.info({ client: socket.remoteAddress + ':' + socket.remotePort,
                                            protocol: negotiatedProtocol,
                                            SNI: socket.servername
                        -                 }, 'Falling back to simple HTTPS');
                        +                 }, 'Falling back to simple HTTPS');
                         
                        -  for (var i = 0; i < this._originalSocketListeners.length; i++) {
                        -    this._originalSocketListeners[i].call(this._server, socket);
                        +  for (var i = 0; i < this._originalSocketListeners.length; i++) {
                        +    this._originalSocketListeners[i].call(this._server, socket);
                           }
                         
                        -  this.emit('connection', socket);
                        +  this.emit('connection', socket);
                         };
                      • -
                      • +
                      • - +
                        -

                        There are 3 possible signatures of the listen function. Every arguments is forwarded to +

                        There are 3 possible signatures of the listen function. Every arguments is forwarded to the backing TCP or HTTPS server.

                        -
                        Server.prototype.listen = function listen(port, hostname) {
                        -  this._log.info({ on: ((typeof hostname === 'string') ? (hostname + ':' + port) : port) },
                        -                 'Listening for incoming connections');
                        -  this._server.listen.apply(this._server, arguments);
                        +            
                        Server.prototype.listen = function listen(port, hostname) {
                        +  this._log.info({ on: ((typeof hostname === 'string') ? (hostname + ':' + port) : port) },
                        +                 'Listening for incoming connections');
                        +  this._server.listen.apply(this._server, arguments);
                        +
                        +  return this._server;
                         };
                         
                        -Server.prototype.close = function close(callback) {
                        -  this._log.info('Closing server');
                        -  this._server.close(callback);
                        +Server.prototype.close = function close(callback) {
                        +  this._log.info('Closing server');
                        +  this._server.close(callback);
                         };
                         
                        -Server.prototype.setTimeout = function setTimeout(timeout, callback) {
                        -  if (this._mode === 'tls') {
                        -    this._server.setTimeout(timeout, callback);
                        +Server.prototype.setTimeout = function setTimeout(timeout, callback) {
                        +  if (this._mode === 'tls') {
                        +    this._server.setTimeout(timeout, callback);
                           }
                         };
                         
                        -Object.defineProperty(Server.prototype, 'timeout', {
                        -  get: function getTimeout() {
                        -    if (this._mode === 'tls') {
                        -      return this._server.timeout;
                        -    } else {
                        -      return undefined;
                        +Object.defineProperty(Server.prototype, 'timeout', {
                        +  get: function getTimeout() {
                        +    if (this._mode === 'tls') {
                        +      return this._server.timeout;
                        +    } else {
                        +      return undefined;
                             }
                           },
                        -  set: function setTimeout(timeout) {
                        -    if (this._mode === 'tls') {
                        -      this._server.timeout = timeout;
                        +  set: function setTimeout(timeout) {
                        +    if (this._mode === 'tls') {
                        +      this._server.timeout = timeout;
                             }
                           }
                         });
                        @@ -968,126 +1179,212 @@

                        Server class

                      • -
                      • +
                      • - +
                        -

                        Overriding EventEmitter's on(event, listener) method to forward certain subscriptions to +

                        Overriding EventEmitter‘s on(event, listener) method to forward certain subscriptions to server.There are events on the http.Server class where it makes difference whether someone is listening on the event or not. In these cases, we can not simply forward the events from the server to this since that means a listener. Instead, we forward the subscriptions.

                        -
                        Server.prototype.on = function on(event, listener) {
                        -  if ((event === 'upgrade') || (event === 'timeout')) {
                        -    this._server.on(event, listener && listener.bind(this));
                        -  } else {
                        -    EventEmitter.prototype.on.call(this, event, listener);
                        +            
                        Server.prototype.on = function on(event, listener) {
                        +  if ((event === 'upgrade') || (event === 'timeout')) {
                        +    return this._server.on(event, listener && listener.bind(this));
                        +  } else {
                        +    return EventEmitter.prototype.on.call(this, event, listener);
                           }
                         };
                      • -
                      • +
                      • - +

                        addContext is used to add Server Name Indication contexts

                        -
                        Server.prototype.addContext = function addContext(hostname, credentials) {
                        -  if (this._mode === 'tls') {
                        -    this._server.addContext(hostname, credentials);
                        +            
                        Server.prototype.addContext = function addContext(hostname, credentials) {
                        +  if (this._mode === 'tls') {
                        +    this._server.addContext(hostname, credentials);
                           }
                         };
                         
                        -function createServer(options, requestListener) {
                        -  if (typeof options === 'function') {
                        +Server.prototype.address = function address() {
                        +  return this._server.address()
                        +};
                        +
                        +function createServerRaw(options, requestListener) {
                        +  if (typeof options === 'function') {
                             requestListener = options;
                        -    options = undefined;
                        +    options = {};
                        +  }
                        +
                        +  if (options.pfx || (options.key && options.cert)) {
                        +    throw new Error('options.pfx, options.key, and options.cert are nonsensical!');
                           }
                         
                        -  var server = new Server(options);
                        +  options.plain = true;
                        +  var server = new Server(options);
                         
                        -  if (requestListener) {
                        -    server.on('request', requestListener);
                        +  if (requestListener) {
                        +    server.on('request', requestListener);
                           }
                         
                        -  return server;
                        +  return server;
                        +}
                        +
                        +function createServerTLS(options, requestListener) {
                        +  if (typeof options === 'function') {
                        +    throw new Error('options are required!');
                        +  }
                        +  if (!options.pfx && !(options.key && options.cert)) {
                        +    throw new Error('options.pfx or options.key and options.cert are required!');
                        +  }
                        +  options.plain = false;
                        +
                        +  var server = new Server(options);
                        +
                        +  if (requestListener) {
                        +    server.on('request', requestListener);
                        +  }
                        +
                        +  return server;
                         }
                      • -
                      • +
                      • -
                        - +
                        +
                        -

                        IncomingRequest class

                        +

                        Exposed main interfaces for HTTPS connections (the default)

                        +
                        exports.https = {};
                        +exports.createServer = exports.https.createServer = createServerTLS;
                        +exports.request = exports.https.request = requestTLS;
                        +exports.get = exports.https.get = getTLS;
                        +
                      • -
                      • +
                      • - +
                        +

                        Exposed main interfaces for raw TCP connections (not recommended)

                        + +
                        + +
                        exports.raw = {};
                        +exports.raw.createServer = createServerRaw;
                        +exports.raw.request = requestRaw;
                        +exports.raw.get = getRaw;
                        + +
                      • + + +
                      • +
                        +
                        + +
                        +

                        Exposed main interfaces for HTTP plaintext upgrade connections (not implemented)

                        +
                        -
                        function IncomingRequest(stream) {
                        -  IncomingMessage.call(this, stream);
                        +            
                        function notImplemented() {
                        +    throw new Error('HTTP UPGRADE is not implemented!');
                         }
                        -IncomingRequest.prototype = Object.create(IncomingMessage.prototype, { constructor: { value: IncomingRequest } });
                        + +exports.http = {}; +exports.http.createServer = exports.http.request = exports.http.get = notImplemented;
                      • -
                      • +
                      • - + +
                        +

                        IncomingRequest class

                        + +
                        + +
                      • + + +
                      • +
                        + +
                        +
                        -

                        Request Header Fields -* headers argument: HTTP/2.0 request and response header fields carry information as a series - of key-value pairs. This includes the target URI for the request, the status code for the - response, as well as HTTP header fields.

                        + +
                        + +
                        +function IncomingRequest(stream) {
                        +  IncomingMessage.call(this, stream);
                        +}
                        +IncomingRequest.prototype = Object.create(IncomingMessage.prototype, { constructor: { value: IncomingRequest } });
                        + +
                      • + + +
                      • +
                        + +
                        + +
                        +

                        Request Header Fields

                        +
                          +
                        • headers argument: HTTP/2.0 request and response header fields carry information as a series +of key-value pairs. This includes the target URI for the request, the status code for the +response, as well as HTTP header fields.
                        • +
                        -
                        IncomingRequest.prototype._onHeaders = function _onHeaders(headers) {
                        +
                        IncomingRequest.prototype._onHeaders = function _onHeaders(headers) {
                      • -
                      • +
                      • - +
                          -
                        • The ":method" header field includes the HTTP method
                        • -
                        • The ":scheme" header field includes the scheme portion of the target URI
                        • -
                        • The ":authority" header field includes the authority portion of the target URI
                        • -
                        • The ":path" header field includes the path and query parts of the target URI. +
                        • The “:method” header field includes the HTTP method
                        • +
                        • The “:scheme” header field includes the scheme portion of the target URI
                        • +
                        • The “:authority” header field includes the authority portion of the target URI
                        • +
                        • The “:path” header field includes the path and query parts of the target URI. This field MUST NOT be empty; URIs that do not contain a path component MUST include a value -of '/', unless the request is an OPTIONS request for '', in which case the ":path" header -field MUST include ''.
                        • +of ‘/‘, unless the request is an OPTIONS request for ‘‘, in which case the “:path” header +field MUST include ‘‘.
                        • All HTTP/2.0 requests MUST include exactly one valid value for all of these header fields. A server MUST treat the absence of any of these header fields, presence of multiple values, or an invalid value as a stream error of type PROTOCOL_ERROR.
                        • @@ -1095,19 +1392,36 @@

                          IncomingRequest class

                        -
                          this.method = this._checkSpecialHeader(':method'   , headers[':method']);
                        -  this.scheme = this._checkSpecialHeader(':scheme'   , headers[':scheme']);
                        -  this.host   = this._checkSpecialHeader(':authority', headers[':authority']  );
                        -  this.url    = this._checkSpecialHeader(':path'     , headers[':path']  );
                        +
                          this.method = this._checkSpecialHeader(':method'   , headers[':method']);
                        +  this.scheme = this._checkSpecialHeader(':scheme'   , headers[':scheme']);
                        +  this.host   = this._checkSpecialHeader(':authority', headers[':authority']  );
                        +  this.url    = this._checkSpecialHeader(':path'     , headers[':path']  );
                        +  if (!this.method || !this.scheme || !this.host || !this.url) {
                      • -
                      • +
                      • - + +
                        +

                        This is invalid, and we’ve sent a RST_STREAM, so don’t continue processing

                        + +
                        + +
                            return;
                        +  }
                        + +
                      • + + +
                      • +
                        + +
                        +
                        • Host header is included in the headers object for backwards compatibility.
                        • @@ -1115,16 +1429,16 @@

                          IncomingRequest class

                        -
                          this.headers.host = this.host;
                        +
                          this.headers.host = this.host;
                      • -
                      • +
                      • - +
                        • Handling regular headers.
                        • @@ -1132,16 +1446,16 @@

                          IncomingRequest class

                        -
                          IncomingMessage.prototype._onHeaders.call(this, headers);
                        +
                          IncomingMessage.prototype._onHeaders.call(this, headers);
                      • -
                      • +
                      • - +
                        • Signaling that the headers arrived.
                        • @@ -1149,219 +1463,297 @@

                          IncomingRequest class

                        -
                          this._log.info({ method: this.method, scheme: this.scheme, host: this.host,
                        -                   path: this.url, headers: this.headers }, 'Incoming request');
                        -  this.emit('ready');
                        +            
                          this._log.info({ method: this.method, scheme: this.scheme, host: this.host,
                        +                   path: this.url, headers: this.headers }, 'Incoming request');
                        +  this.emit('ready');
                         };
                      • -
                      • +
                      • -
                        - +
                        +
                        -

                        OutgoingResponse class

                        +

                        OutgoingResponse class

                      • -
                      • +
                      • - +
                        -
                        function OutgoingResponse(stream) {
                        -  OutgoingMessage.call(this);
                        +            
                        +function OutgoingResponse(stream) {
                        +  OutgoingMessage.call(this);
                         
                        -  this._log = stream._log.child({ component: 'http' });
                        +  this._log = stream._log.child({ component: 'http' });
                         
                        -  this.stream = stream;
                        -  this.statusCode = 200;
                        -  this.sendDate = true;
                        +  this.stream = stream;
                        +  this.statusCode = 200;
                        +  this.sendDate = true;
                         
                        -  this.stream.once('headers', this._onRequestHeaders.bind(this));
                        +  this.stream.once('headers', this._onRequestHeaders.bind(this));
                         }
                        -OutgoingResponse.prototype = Object.create(OutgoingMessage.prototype, { constructor: { value: OutgoingResponse } });
                        +OutgoingResponse.prototype = Object.create(OutgoingMessage.prototype, { constructor: { value: OutgoingResponse } });
                        +
                        +OutgoingResponse.prototype.writeHead = function writeHead(statusCode, reasonPhrase, headers) {
                        +  if (this.headersSent) {
                        +    return;
                        +  }
                         
                        -OutgoingResponse.prototype.writeHead = function writeHead(statusCode, reasonPhrase, headers) {
                        -  if (typeof reasonPhrase === 'string') {
                        -    this._log.warn('Reason phrase argument was present but ignored by the writeHead method');
                        -  } else {
                        +  if (typeof reasonPhrase === 'string') {
                        +    this._log.warn('Reason phrase argument was present but ignored by the writeHead method');
                        +  } else {
                             headers = reasonPhrase;
                           }
                         
                        -  for (var name in headers) {
                        -    this.setHeader(name, headers[name]);
                        +  for (var name in headers) {
                        +    this.setHeader(name, headers[name]);
                           }
                        -  headers = this._headers;
                        +  headers = this._headers;
                         
                        -  if (this.sendDate && !('date' in this._headers)) {
                        -    headers.date = (new Date()).toUTCString();
                        +  if (this.sendDate && !('date' in this._headers)) {
                        +    headers.date = (new Date()).toUTCString();
                           }
                         
                        -  this._log.info({ status: statusCode, headers: this._headers }, 'Sending server response');
                        +  this._log.info({ status: statusCode, headers: this._headers }, 'Sending server response');
                         
                        -  headers[':status'] = this.statusCode = statusCode;
                        +  headers[':status'] = this.statusCode = statusCode;
                         
                        -  this.stream.headers(headers);
                        -  this.headersSent = true;
                        +  this.stream.headers(headers);
                        +  this.headersSent = true;
                         };
                         
                        -OutgoingResponse.prototype._implicitHeaders = function _implicitHeaders() {
                        -  if (!this.headersSent) {
                        -    this.writeHead(this.statusCode);
                        +OutgoingResponse.prototype._implicitHeaders = function _implicitHeaders() {
                        +  if (!this.headersSent) {
                        +    this.writeHead(this.statusCode);
                           }
                         };
                         
                        -OutgoingResponse.prototype.write = function write() {
                        -  this._implicitHeaders();
                        -  return OutgoingMessage.prototype.write.apply(this, arguments);
                        +OutgoingResponse.prototype._implicitHeader = function() {
                        +  this._implicitHeaders();
                        +};
                        +
                        +OutgoingResponse.prototype.write = function write() {
                        +  this._implicitHeaders();
                        +  return OutgoingMessage.prototype.write.apply(this, arguments);
                         };
                         
                        -OutgoingResponse.prototype.end = function end() {
                        -  this._implicitHeaders();
                        -  return OutgoingMessage.prototype.end.apply(this, arguments);
                        +OutgoingResponse.prototype.end = function end() {
                        +  this.finshed = true;
                        +  this._implicitHeaders();
                        +  return OutgoingMessage.prototype.end.apply(this, arguments);
                         };
                         
                        -OutgoingResponse.prototype._onRequestHeaders = function _onRequestHeaders(headers) {
                        -  this._requestHeaders = headers;
                        +OutgoingResponse.prototype._onRequestHeaders = function _onRequestHeaders(headers) {
                        +  this._requestHeaders = headers;
                         };
                         
                        -OutgoingResponse.prototype.push = function push(options) {
                        -  if (typeof options === 'string') {
                        +OutgoingResponse.prototype.push = function push(options) {
                        +  if (typeof options === 'string') {
                             options = url.parse(options);
                           }
                         
                        -  if (!options.path) {
                        -    throw new Error('`path` option is mandatory.');
                        +  if (!options.path) {
                        +    throw new Error('`path` option is mandatory.');
                           }
                         
                        -  var promise = util._extend({
                        -    ':method': (options.method || 'GET').toUpperCase(),
                        -    ':scheme': (options.protocol && options.protocol.slice(0, -1)) || this._requestHeaders[':scheme'],
                        -    ':authority': options.hostname || options.host || this._requestHeaders[':authority'],
                        -    ':path': options.path
                        +  var promise = util._extend({
                        +    ':method': (options.method || 'GET').toUpperCase(),
                        +    ':scheme': (options.protocol && options.protocol.slice(0, -1)) || this._requestHeaders[':scheme'],
                        +    ':authority': options.hostname || options.host || this._requestHeaders[':authority'],
                        +    ':path': options.path
                           }, options.headers);
                         
                        -  this._log.info({ method: promise[':method'], scheme: promise[':scheme'],
                        -                   authority: promise[':authority'], path: promise[':path'],
                        -                   headers: options.headers }, 'Promising push stream');
                        +  this._log.info({ method: promise[':method'], scheme: promise[':scheme'],
                        +                   authority: promise[':authority'], path: promise[':path'],
                        +                   headers: options.headers }, 'Promising push stream');
                         
                        -  var pushStream = this.stream.promise(promise);
                        +  var pushStream = this.stream.promise(promise);
                        +
                        +  return new OutgoingResponse(pushStream);
                        +};
                         
                        -  return new OutgoingResponse(pushStream);
                        +OutgoingResponse.prototype.altsvc = function altsvc(host, port, protocolID, maxAge, origin) {
                        +    if (origin === undefined) {
                        +        origin = "";
                        +    }
                        +    this.stream.altsvc(host, port, protocolID, maxAge, origin);
                         };
                      • -
                      • +
                      • - +
                        -

                        Overriding EventEmitter's on(event, listener) method to forward certain subscriptions to +

                        Overriding EventEmitter‘s on(event, listener) method to forward certain subscriptions to request. See Server.prototype.on for explanation.

                        -
                        OutgoingResponse.prototype.on = function on(event, listener) {
                        -  if (this.request && (event === 'timeout')) {
                        -    this.request.on(event, listener && listener.bind(this));
                        -  } else {
                        -    OutgoingMessage.prototype.on.call(this, event, listener);
                        +            
                        OutgoingResponse.prototype.on = function on(event, listener) {
                        +  if (this.request && (event === 'timeout')) {
                        +    this.request.on(event, listener && listener.bind(this));
                        +  } else {
                        +    OutgoingMessage.prototype.on.call(this, event, listener);
                           }
                         };
                      • -
                      • +
                      • -
                        - +
                        +
                        -

                        Client side

                        +

                        Client side

                      • -
                      • +
                      • - +
                        -
                        exports.ClientRequest = OutgoingRequest; // for API compatibility
                        +            
                        +exports.ClientRequest = OutgoingRequest; // for API compatibility
                         exports.OutgoingRequest = OutgoingRequest;
                         exports.IncomingResponse = IncomingResponse;
                         exports.Agent = Agent;
                        -exports.globalAgent = undefined;
                        -exports.request = function request(options, callback) {
                        -  return (options.agent || exports.globalAgent).request(options, callback);
                        -};
                        -exports.get = function get(options, callback) {
                        -  return (options.agent || exports.globalAgent).get(options, callback);
                        -};
                        +exports.globalAgent = undefined; + +function requestRaw(options, callback) { + if (typeof options === "string") { + options = url.parse(options); + } + options.plain = true; + if (options.protocol && options.protocol !== "http:") { + throw new Error('This interface only supports http-schemed URLs'); + } + if (options.agent && typeof(options.agent.request) === 'function') { + var agentOptions = util._extend({}, options); + delete agentOptions.agent; + return options.agent.request(agentOptions, callback); + } + return exports.globalAgent.request(options, callback); +} + +function requestTLS(options, callback) { + if (typeof options === "string") { + options = url.parse(options); + } + options.plain = false; + if (options.protocol && options.protocol !== "https:") { + throw new Error('This interface only supports https-schemed URLs'); + } + if (options.agent && typeof(options.agent.request) === 'function') { + var agentOptions = util._extend({}, options); + delete agentOptions.agent; + return options.agent.request(agentOptions, callback); + } + return exports.globalAgent.request(options, callback); +} + +function getRaw(options, callback) { + if (typeof options === "string") { + options = url.parse(options); + } + options.plain = true; + if (options.protocol && options.protocol !== "http:") { + throw new Error('This interface only supports http-schemed URLs'); + } + if (options.agent && typeof(options.agent.get) === 'function') { + var agentOptions = util._extend({}, options); + delete agentOptions.agent; + return options.agent.get(agentOptions, callback); + } + return exports.globalAgent.get(options, callback); +} + +function getTLS(options, callback) { + if (typeof options === "string") { + options = url.parse(options); + } + options.plain = false; + if (options.protocol && options.protocol !== "https:") { + throw new Error('This interface only supports https-schemed URLs'); + } + if (options.agent && typeof(options.agent.get) === 'function') { + var agentOptions = util._extend({}, options); + delete agentOptions.agent; + return options.agent.get(agentOptions, callback); + } + return exports.globalAgent.get(options, callback); +}
                      • -
                      • +
                      • -
                        - +
                        +
                        -

                        Agent class

                        +

                        Agent class

                      • -
                      • +
                      • - +
                        -
                        function Agent(options) {
                        -  EventEmitter.call(this);
                        +            
                        +function Agent(options) {
                        +  EventEmitter.call(this);
                        +  this.setMaxListeners(0);
                         
                           options = util._extend({}, options);
                         
                        -  this._settings = options.settings;
                        -  this._log = (options.log || defaultLogger).child({ component: 'http' });
                        -  this.endpoints = {};
                        + this._settings = options.settings; + this._log = (options.log || defaultLogger).child({ component: 'http' }); + this.endpoints = {};
                      • -
                      • +
                      • - +
                        • Using an own HTTPS agent, because the global agent does not look at NPN/ALPNProtocols when @@ -1372,74 +1764,74 @@

                          Agent class

                        -
                          var agentOptions = {};
                        -  agentOptions.ALPNProtocols = supportedProtocols;
                        -  agentOptions.NPNProtocols = supportedProtocols;
                        -  this._httpsAgent = new https.Agent(agentOptions);
                        +            
                          options.ALPNProtocols = supportedProtocols;
                        +  options.NPNProtocols = supportedProtocols;
                        +  this._httpsAgent = new https.Agent(options);
                         
                        -  this.sockets = this._httpsAgent.sockets;
                        -  this.requests = this._httpsAgent.requests;
                        +  this.sockets = this._httpsAgent.sockets;
                        +  this.requests = this._httpsAgent.requests;
                         }
                        -Agent.prototype = Object.create(EventEmitter.prototype, { constructor: { value: Agent } });
                        +Agent.prototype = Object.create(EventEmitter.prototype, { constructor: { value: Agent } });
                         
                        -Agent.prototype.request = function request(options, callback) {
                        -  if (typeof options === 'string') {
                        +Agent.prototype.request = function request(options, callback) {
                        +  if (typeof options === 'string') {
                             options = url.parse(options);
                        -  } else {
                        +  } else {
                             options = util._extend({}, options);
                           }
                         
                        -  options.method = (options.method || 'GET').toUpperCase();
                        -  options.protocol = options.protocol || 'https:';
                        -  options.host = options.hostname || options.host || 'localhost';
                        -  options.port = options.port || 443;
                        -  options.path = options.path || '/';
                        +  options.method = (options.method || 'GET').toUpperCase();
                        +  options.protocol = options.protocol || 'https:';
                        +  options.host = options.hostname || options.host || 'localhost';
                        +  options.port = options.port || 443;
                        +  options.path = options.path || '/';
                         
                        -  if (!options.plain && options.protocol === 'http:') {
                        -    this._log.error('Trying to negotiate client request with Upgrade from HTTP/1.1');
                        -    throw new Error('HTTP1.1 -> HTTP2 upgrade is not yet supported.');
                        +  if (!options.plain && options.protocol === 'http:') {
                        +    this._log.error('Trying to negotiate client request with Upgrade from HTTP/1.1');
                        +    this.emit('error', new Error('HTTP1.1 -> HTTP2 upgrade is not yet supported.'));
                           }
                         
                        -  var request = new OutgoingRequest(this._log);
                        +  var request = new OutgoingRequest(this._log);
                         
                        -  if (callback) {
                        -    request.on('response', callback);
                        +  if (callback) {
                        +    request.on('response', callback);
                           }
                         
                        -  var key = [
                        +  var key = [
                             !!options.plain,
                             options.host,
                             options.port
                        -  ].join(':');
                        + ].join(':'); + var self = this;
                      • -
                      • +
                      • - +
                          -
                        • There's an existing HTTP/2 connection to this host
                        • +
                        • There’s an existing HTTP/2 connection to this host
                        -
                          if (key in this.endpoints) {
                        -    var endpoint = this.endpoints[key];
                        +            
                          if (key in this.endpoints) {
                        +    var endpoint = this.endpoints[key];
                             request._start(endpoint.createStream(), options);
                           }
                      • -
                      • +
                      • - +
                        • HTTP/2 over plain TCP
                        • @@ -1447,13 +1839,25 @@

                          Agent class

                        -
                          else if (options.plain) {
                        -    endpoint = new Endpoint(this._log, 'CLIENT', this._settings);
                        +            
                          else if (options.plain) {
                        +    endpoint = new Endpoint(this._log, 'CLIENT', this._settings);
                             endpoint.socket = net.connect({
                               host: options.host,
                               port: options.port,
                               localAddress: options.localAddress
                             });
                        +
                        +    endpoint.socket.on('error', function (error) {
                        +      self._log.error('Socket error: ' + error.toString());
                        +      request.emit('error', error);
                        +    });
                        +
                        +    endpoint.on('error', function(error){
                        +      self._log.error('Connection error: ' + error.toString());
                        +      request.emit('error', error);
                        +    });
                        +
                        +    this.endpoints[key] = endpoint;
                             endpoint.pipe(endpoint.socket).pipe(endpoint);
                             request._start(endpoint.createStream(), options);
                           }
                        @@ -1461,290 +1865,363 @@

                        Agent class

                      • -
                      • +
                      • - +
                          -
                        • HTTP/2 over TLS negotiated using NPN or ALPN
                        • +
                        • HTTP/2 over TLS negotiated using NPN or ALPN, or fallback to HTTPS1
                        -
                          else {
                        -    var started = false;
                        +            
                          else {
                        +    var started = false;
                        +    var createAgent = hasAgentOptions(options);
                             options.ALPNProtocols = supportedProtocols;
                             options.NPNProtocols = supportedProtocols;
                        -    options.servername = options.host; // Server Name Indication
                        -    options.agent = this._httpsAgent;
                        -    var httpsRequest = https.request(options);
                        +    options.servername = options.host; // Server Name Indication
                        +    options.ciphers = options.ciphers || cipherSuites;
                        +    if (createAgent) {
                        +      options.agent = new https.Agent(options);
                        +    } else if (options.agent == null) {
                        +      options.agent = this._httpsAgent;
                        +    }
                        +    var httpsRequest = https.request(options);
                        +
                        +    httpsRequest.on('error', function (error) {
                        +      self._log.error('Socket error: ' + error.toString());
                        +      self.removeAllListeners(key);
                        +      request.emit('error', error);
                        +    });
                         
                        -    httpsRequest.on('socket', function(socket) {
                        -      var negotiatedProtocol = socket.alpnProtocol || socket.npnProtocol;
                        -      if (negotiatedProtocol !== undefined) {
                        +    httpsRequest.on('socket', function(socket) {
                        +      var negotiatedProtocol = socket.alpnProtocol || socket.npnProtocol;
                        +      if (negotiatedProtocol != null) { // null in >=0.11.0, undefined in <0.11.0
                                 negotiated();
                        -      } else {
                        -        socket.on('secureConnect', negotiated);
                        +      } else {
                        +        socket.on('secureConnect', negotiated);
                               }
                             });
                         
                        -    var self = this;
                        -    function negotiated() {
                        -      var endpoint;
                        -      var negotiatedProtocol = httpsRequest.socket.alpnProtocol || httpsRequest.socket.npnProtocol;
                        -      if (negotiatedProtocol === implementedVersion) {
                        -        httpsRequest.socket.emit('agentRemove');
                        +    function negotiated() {
                        +      var endpoint;
                        +      var negotiatedProtocol = httpsRequest.socket.alpnProtocol || httpsRequest.socket.npnProtocol;
                        +      if (negotiatedProtocol === protocol.VERSION) {
                        +        httpsRequest.socket.emit('agentRemove');
                                 unbundleSocket(httpsRequest.socket);
                        -        endpoint = new Endpoint(self._log, 'CLIENT', self._settings);
                        +        endpoint = new Endpoint(self._log, 'CLIENT', self._settings);
                                 endpoint.socket = httpsRequest.socket;
                                 endpoint.pipe(endpoint.socket).pipe(endpoint);
                               }
                        -      if (started) {
                        -        if (endpoint) {
                        -          endpoint.close();
                        -        } else {
                        -          httpsRequest.abort();
                        -        }
                        -      } else {
                        -        if (endpoint) {
                        -          self._log.info({ e: endpoint, server: options.host + ':' + options.port },
                        -                         'New outgoing HTTP/2 connection');
                        +      if (started) {
                        + +
                      • + + +
                      • +
                        + +
                        + +
                        +

                        ** In the meantime, an other connection was made to the same host…

                        + +
                        + +
                                if (endpoint) {
                        + +
                      • + + +
                      • +
                        + +
                        + +
                        +

                        * and it turned out to be HTTP2 and the request was multiplexed on that one, so we should close this one

                        + +
                        + +
                                  endpoint.close();
                        +        }
                        + +
                      • + + +
                      • +
                        + +
                        + +
                        +

                        * otherwise, the fallback to HTTPS1 is already done.

                        + +
                        + +
                              } else {
                        +        if (endpoint) {
                        +          self._log.info({ e: endpoint, server: options.host + ':' + options.port },
                        +                         'New outgoing HTTP/2 connection');
                                   self.endpoints[key] = endpoint;
                                   self.emit(key, endpoint);
                        -        } else {
                        -          self.emit(key, undefined);
                        +        } else {
                        +          self.emit(key, undefined);
                                 }
                               }
                             }
                         
                        -    this.once(key, function(endpoint) {
                        -      started = true;
                        -      if (endpoint) {
                        +    this.once(key, function(endpoint) {
                        +      started = true;
                        +      if (endpoint) {
                                 request._start(endpoint.createStream(), options);
                        -      } else {
                        +      } else {
                                 request._fallback(httpsRequest);
                               }
                             });
                           }
                         
                        -  return request;
                        +  return request;
                         };
                         
                        -Agent.prototype.get = function get(options, callback) {
                        -  var request = this.request(options, callback);
                        +Agent.prototype.get = function get(options, callback) {
                        +  var request = this.request(options, callback);
                           request.end();
                        -  return request;
                        +  return request;
                        +};
                        +
                        +Agent.prototype.destroy = function(error) {
                        +  if (this._httpsAgent) {
                        +    this._httpsAgent.destroy();
                        +  }
                        +  for (var key in this.endpoints) {
                        +    this.endpoints[key].close(error);
                        +  }
                         };
                         
                        -function unbundleSocket(socket) {
                        -  socket.removeAllListeners('data');
                        -  socket.removeAllListeners('end');
                        -  socket.removeAllListeners('readable');
                        -  socket.removeAllListeners('close');
                        -  socket.removeAllListeners('error');
                        +function unbundleSocket(socket) {
                        +  socket.removeAllListeners('data');
                        +  socket.removeAllListeners('end');
                        +  socket.removeAllListeners('readable');
                        +  socket.removeAllListeners('close');
                        +  socket.removeAllListeners('error');
                           socket.unpipe();
                        -  delete socket.ondata;
                        -  delete socket.onend;
                        +  delete socket.ondata;
                        +  delete socket.onend;
                         }
                         
                        -Object.defineProperty(Agent.prototype, 'maxSockets', {
                        -  get: function getMaxSockets() {
                        -    return this._httpsAgent.maxSockets;
                        +function hasAgentOptions(options) {
                        +  return options.pfx != null ||
                        +    options.key != null ||
                        +    options.passphrase != null ||
                        +    options.cert != null ||
                        +    options.ca != null ||
                        +    options.ciphers != null ||
                        +    options.rejectUnauthorized != null ||
                        +    options.secureProtocol != null;
                        +}
                        +
                        +Object.defineProperty(Agent.prototype, 'maxSockets', {
                        +  get: function getMaxSockets() {
                        +    return this._httpsAgent.maxSockets;
                           },
                        -  set: function setMaxSockets(value) {
                        -    this._httpsAgent.maxSockets = value;
                        +  set: function setMaxSockets(value) {
                        +    this._httpsAgent.maxSockets = value;
                           }
                         });
                         
                        -exports.globalAgent = new Agent();
                        +exports.globalAgent = new Agent();
  • -
  • +
  • -
    - +
    +
    -

    OutgoingRequest class

    +

    OutgoingRequest class

  • -
  • +
  • - +
    -
    function OutgoingRequest() {
    -  OutgoingMessage.call(this);
    +            
    +function OutgoingRequest() {
    +  OutgoingMessage.call(this);
     
    -  this._log = undefined;
    +  this._log = undefined;
     
    -  this.stream = undefined;
    +  this.stream = undefined;
     }
    -OutgoingRequest.prototype = Object.create(OutgoingMessage.prototype, { constructor: { value: OutgoingRequest } });
    +OutgoingRequest.prototype = Object.create(OutgoingMessage.prototype, { constructor: { value: OutgoingRequest } });
     
    -OutgoingRequest.prototype._start = function _start(stream, options) {
    -  this.stream = stream;
    +OutgoingRequest.prototype._start = function _start(stream, options) {
    +  this.stream = stream;
    +  this.options = options;
     
    -  this._log = stream._log.child({ component: 'http' });
    +  this._log = stream._log.child({ component: 'http' });
     
    -  for (var key in options.headers) {
    -    this.setHeader(key, options.headers[key]);
    +  for (var key in options.headers) {
    +    this.setHeader(key, options.headers[key]);
       }
    -  var headers = this._headers;
    -  delete headers.host;
    +  var headers = this._headers;
    +  delete headers.host;
     
    -  if (options.auth) {
    -    headers.authorization = 'Basic ' + new Buffer(options.auth).toString('base64');
    +  if (options.auth) {
    +    headers.authorization = 'Basic ' + new Buffer(options.auth).toString('base64');
       }
     
    -  headers[':scheme'] = options.protocol.slice(0, -1);
    -  headers[':method'] = options.method;
    -  headers[':authority'] = options.host;
    -  headers[':path'] = options.path;
    +  headers[':scheme'] = options.protocol.slice(0, -1);
    +  headers[':method'] = options.method;
    +  headers[':authority'] = options.host;
    +  headers[':path'] = options.path;
     
    -  this._log.info({ scheme: headers[':scheme'], method: headers[':method'],
    -                   authority: headers[':authority'], path: headers[':path'],
    -                   headers: (options.headers || {}) }, 'Sending request');
    -  this.stream.headers(headers);
    -  this.headersSent = true;
    +  this._log.info({ scheme: headers[':scheme'], method: headers[':method'],
    +                   authority: headers[':authority'], path: headers[':path'],
    +                   headers: (options.headers || {}) }, 'Sending request');
    +  this.stream.headers(headers);
    +  this.headersSent = true;
     
    -  this.emit('socket', this.stream);
    +  this.emit('socket', this.stream);
    +  var response = new IncomingResponse(this.stream);
    +  response.req = this;
    +  response.once('ready', this.emit.bind(this, 'response', response));
     
    -  var response = new IncomingResponse(this.stream);
    -  response.once('ready', this.emit.bind(this, 'response', response));
    -
    -  this.stream.on('promise', this._onPromise.bind(this));
    +  this.stream.on('promise', this._onPromise.bind(this));
     };
     
    -OutgoingRequest.prototype._fallback = function _fallback(request) {
    -  request.on('response', this.emit.bind(this, 'response'));
    -  this.stream = this.request = request;
    -  this.emit('socket', this.socket);
    +OutgoingRequest.prototype._fallback = function _fallback(request) {
    +  request.on('response', this.emit.bind(this, 'response'));
    +  this.stream = this.request = request;
    +  this.emit('socket', this.socket);
     };
     
    -OutgoingRequest.prototype.setPriority = function setPriority(priority) {
    -  if (this.stream) {
    -    this.stream.priority(priority);
    -  } else {
    -    this.once('socket', this.setPriority.bind(this, priority));
    +OutgoingRequest.prototype.setPriority = function setPriority(priority) {
    +  if (this.stream) {
    +    this.stream.priority(priority);
    +  } else {
    +    this.once('socket', this.setPriority.bind(this, priority));
       }
     };
  • -
  • +
  • - +
    -

    Overriding EventEmitter's on(event, listener) method to forward certain subscriptions to +

    Overriding EventEmitter‘s on(event, listener) method to forward certain subscriptions to request. See Server.prototype.on for explanation.

    -
    OutgoingRequest.prototype.on = function on(event, listener) {
    -  if (this.request && (event === 'upgrade')) {
    -    this.request.on(event, listener && listener.bind(this));
    -  } else {
    -    OutgoingMessage.prototype.on.call(this, event, listener);
    +            
    OutgoingRequest.prototype.on = function on(event, listener) {
    +  if (this.request && (event === 'upgrade')) {
    +    this.request.on(event, listener && listener.bind(this));
    +  } else {
    +    OutgoingMessage.prototype.on.call(this, event, listener);
       }
     };
  • -
  • +
  • - +

    Methods only in fallback mode

    -
    OutgoingRequest.prototype.setNoDelay = function setNoDelay(noDelay) {
    -  if (this.request) {
    -    this.request.setNoDelay(noDelay);
    -  } else if (!this.stream) {
    -    this.on('socket', this.setNoDelay.bind(this, noDelay));
    +            
    OutgoingRequest.prototype.setNoDelay = function setNoDelay(noDelay) {
    +  if (this.request) {
    +    this.request.setNoDelay(noDelay);
    +  } else if (!this.stream) {
    +    this.on('socket', this.setNoDelay.bind(this, noDelay));
       }
     };
     
    -OutgoingRequest.prototype.setSocketKeepAlive = function setSocketKeepAlive(enable, initialDelay) {
    -  if (this.request) {
    -    this.request.setSocketKeepAlive(enable, initialDelay);
    -  } else if (!this.stream) {
    -    this.on('socket', this.setSocketKeepAlive.bind(this, enable, initialDelay));
    +OutgoingRequest.prototype.setSocketKeepAlive = function setSocketKeepAlive(enable, initialDelay) {
    +  if (this.request) {
    +    this.request.setSocketKeepAlive(enable, initialDelay);
    +  } else if (!this.stream) {
    +    this.on('socket', this.setSocketKeepAlive.bind(this, enable, initialDelay));
       }
     };
     
    -OutgoingRequest.prototype.setTimeout = function setTimeout(timeout, callback) {
    -  if (this.request) {
    -    this.request.setTimeout(timeout, callback);
    -  } else if (!this.stream) {
    -    this.on('socket', this.setTimeout.bind(this, timeout, callback));
    +OutgoingRequest.prototype.setTimeout = function setTimeout(timeout, callback) {
    +  if (this.request) {
    +    this.request.setTimeout(timeout, callback);
    +  } else if (!this.stream) {
    +    this.on('socket', this.setTimeout.bind(this, timeout, callback));
       }
     };
  • -
  • +
  • - +

    Aborting the request

    -
    OutgoingRequest.prototype.abort = function abort() {
    -  if (this.request) {
    -    this.request.abort();
    -  } else if (this.stream) {
    -    this.stream.reset('CANCEL');
    -  } else {
    -    this.on('socket', this.abort.bind(this));
    +            
    OutgoingRequest.prototype.abort = function abort() {
    +  if (this.request) {
    +    this.request.abort();
    +  } else if (this.stream) {
    +    this.stream.reset('CANCEL');
    +  } else {
    +    this.on('socket', this.abort.bind(this));
       }
     };
  • -
  • +
  • - +

    Receiving push promises

    -
    OutgoingRequest.prototype._onPromise = function _onPromise(stream, headers) {
    -  this._log.info({ push_stream: stream.id }, 'Receiving push promise');
    +            
    OutgoingRequest.prototype._onPromise = function _onPromise(stream, headers) {
    +  this._log.info({ push_stream: stream.id }, 'Receiving push promise');
     
    -  var promise = new IncomingPromise(stream, headers);
    +  var promise = new IncomingPromise(stream, headers);
     
    -  if (this.listeners('push').length > 0) {
    -    this.emit('push', promise);
    -  } else {
    +  if (this.listeners('push').length > 0) {
    +    this.emit('push', promise);
    +  } else {
         promise.cancel();
       }
     };
    @@ -1752,64 +2229,67 @@

    OutgoingRequest class

  • -
  • +
  • -
    - +
    +
    -

    IncomingResponse class

    +

    IncomingResponse class

  • -
  • +
  • - +
    -
    function IncomingResponse(stream) {
    -  IncomingMessage.call(this, stream);
    +            
    +function IncomingResponse(stream) {
    +  IncomingMessage.call(this, stream);
     }
    -IncomingResponse.prototype = Object.create(IncomingMessage.prototype, { constructor: { value: IncomingResponse } });
    +IncomingResponse.prototype = Object.create(IncomingMessage.prototype, { constructor: { value: IncomingResponse } });
  • -
  • +
  • - +
    -

    Response Header Fields -* headers argument: HTTP/2.0 request and response header fields carry information as a series - of key-value pairs. This includes the target URI for the request, the status code for the - response, as well as HTTP header fields.

    +

    Response Header Fields

    +
      +
    • headers argument: HTTP/2.0 request and response header fields carry information as a series +of key-value pairs. This includes the target URI for the request, the status code for the +response, as well as HTTP header fields.
    • +
    -
    IncomingResponse.prototype._onHeaders = function _onHeaders(headers) {
    +
    IncomingResponse.prototype._onHeaders = function _onHeaders(headers) {
  • -
  • +
  • - +
      -
    • A single ":status" header field is defined that carries the HTTP status code field. This +
    • A single “:status” header field is defined that carries the HTTP status code field. This header field MUST be included in all responses.
    • -
    • A client MUST treat the absence of the ":status" header field, the presence of multiple +
    • A client MUST treat the absence of the “:status” header field, the presence of multiple values, or an invalid value as a stream error of type PROTOCOL_ERROR. Note: currently, we do not enforce it strictly: we accept any format, and parse it as int
    • HTTP/2.0 does not define a way to carry the reason phrase that is included in an HTTP/1.1 @@ -1818,16 +2298,16 @@

      IncomingResponse class

    -
      this.statusCode = parseInt(this._checkSpecialHeader(':status', headers[':status']));
    +
      this.statusCode = parseInt(this._checkSpecialHeader(':status', headers[':status']));
  • -
  • +
  • - +
    • Handling regular headers.
    • @@ -1835,16 +2315,16 @@

      IncomingResponse class

    -
      IncomingMessage.prototype._onHeaders.call(this, headers);
    +
      IncomingMessage.prototype._onHeaders.call(this, headers);
  • -
  • +
  • - +
    • Signaling that the headers arrived.
    • @@ -1852,60 +2332,61 @@

      IncomingResponse class

    -
      this._log.info({ status: this.statusCode, headers: this.headers}, 'Incoming response');
    -  this.emit('ready');
    +            
      this._log.info({ status: this.statusCode, headers: this.headers}, 'Incoming response');
    +  this.emit('ready');
     };
  • -
  • +
  • -
    - +
    +
    -

    IncomingPromise class

    +

    IncomingPromise class

  • -
  • +
  • - +
    -
    function IncomingPromise(responseStream, promiseHeaders) {
    -  var stream = new Readable();
    +            
    +function IncomingPromise(responseStream, promiseHeaders) {
    +  var stream = new Readable();
       stream._read = noop;
    -  stream.push(null);
    +  stream.push(null);
       stream._log = responseStream._log;
     
    -  IncomingRequest.call(this, stream);
    +  IncomingRequest.call(this, stream);
     
    -  this._onHeaders(promiseHeaders);
    +  this._onHeaders(promiseHeaders);
     
    -  this._responseStream = responseStream;
    +  this._responseStream = responseStream;
     
    -  var response = new IncomingResponse(this._responseStream);
    -  response.once('ready', this.emit.bind(this, 'response', response));
    +  var response = new IncomingResponse(this._responseStream);
    +  response.once('ready', this.emit.bind(this, 'response', response));
     
    -  this.stream.on('promise', this._onPromise.bind(this));
    +  this.stream.on('promise', this._onPromise.bind(this));
     }
    -IncomingPromise.prototype = Object.create(IncomingRequest.prototype, { constructor: { value: IncomingPromise } });
    +IncomingPromise.prototype = Object.create(IncomingRequest.prototype, { constructor: { value: IncomingPromise } });
     
    -IncomingPromise.prototype.cancel = function cancel() {
    -  this._responseStream.reset('CANCEL');
    +IncomingPromise.prototype.cancel = function cancel() {
    +  this._responseStream.reset('CANCEL');
     };
     
    -IncomingPromise.prototype.setPriority = function setPriority(priority) {
    -  this._responseStream.priority(priority);
    +IncomingPromise.prototype.setPriority = function setPriority(priority) {
    +  this._responseStream.priority(priority);
     };
     
     IncomingPromise.prototype._onPromise = OutgoingRequest.prototype._onPromise;
    diff --git a/doc/index.html b/doc/index.html index b140a701..d79d63e0 100644 --- a/doc/index.html +++ b/doc/index.html @@ -16,18 +16,21 @@ Jump To … +
  • @@ -48,23 +51,24 @@

    index.js

    -

    node-http2 is an HTTP/2 (draft 11) implementation for node.js.

    -

    The core of the protocol is implemented by the http2-protocol module. This module provides -two important features on top of http2-protocol:

    +

    node-http2 is an HTTP/2 implementation for node.js.

    +

    The core of the protocol is implemented in the protocol sub-directory. This directory provides +two important features on top of the protocol:

    • Implementation of different negotiation schemes that can be used to start a HTTP2 connection. These include TLS ALPN, Upgrade and Plain TCP.

    • -
    • Providing an API very similar to the standard node.js HTTPS module API -(which is in turn very similar to the HTTP module API).

      +
    • Providing an API very similar to the standard node.js HTTPS module API +(which is in turn very similar to the HTTP module API).

    -
    module.exports   = require('./http');
    +            
    +module.exports   = require('./http');
     
    -/*
    +/*
                       HTTP API
     
                    |            ^
    diff --git a/doc/protocol.jst b/doc/protocol.jst
    new file mode 100644
    index 00000000..72ebeadf
    --- /dev/null
    +++ b/doc/protocol.jst
    @@ -0,0 +1,59 @@
    +
    +
    +
    +
    +  <%= title %>
    +  
    +  
    +  
    +
    +
    +  
    +
    + <% if (sources.length > 1) { %> + + <% } %> +
      + <% if (!hasTitle) { %> +
    • +
      +

      <%= title %>

      +
      +
    • + <% } %> + <% for (var i=0, l=sections.length; i + <% var section = sections[i]; %> +
    • +
      + <% heading = section.docsHtml.match(/^\s*<(h\d)>/) %> +
      + +
      + <%= section.docsHtml %> +
      + <% if (section.codeText.replace(/\s/gm, '') != '') { %> +
      <%= section.codeHtml %>
      + <% } %> +
    • + <% } %> +
    +
    + + diff --git a/doc/protocol/compressor.html b/doc/protocol/compressor.html new file mode 100644 index 00000000..f82b2fd9 --- /dev/null +++ b/doc/protocol/compressor.html @@ -0,0 +1,2217 @@ + + + + + compressor.js + + + + + +
    +
    + + + +
      + +
    • +
      +

      compressor.js

      +
      +
    • + + + +
    • +
      + +
      + +
      +

      The implementation of the HTTP/2 Header Compression spec is separated from +the ‘integration’ part which handles HEADERS and PUSH_PROMISE frames. The compression itself is +implemented in the first part of the file, and consists of three classes: HeaderTable, +HeaderSetDecompressor and HeaderSetCompressor. The two latter classes are +Transform Stream subclasses that operate in object mode. +These transform chunks of binary data into [name, value] pairs and vice versa, and store their +state in HeaderTable instances.

      +

      The ‘integration’ part is also implemented by two Transform Stream subclasses +that operate in object mode: the Compressor and the Decompressor. These +provide a layer between the framer and the +connection handling component.

      + +
      + +
      +exports.HeaderTable = HeaderTable;
      +exports.HuffmanTable = HuffmanTable;
      +exports.HeaderSetCompressor = HeaderSetCompressor;
      +exports.HeaderSetDecompressor = HeaderSetDecompressor;
      +exports.Compressor = Compressor;
      +exports.Decompressor = Decompressor;
      +
      +var TransformStream = require('stream').Transform;
      +var assert = require('assert');
      +var util = require('util');
      + +
    • + + +
    • +
      + +
      + +
      +

      Header compression

      + +
      + +
    • + + +
    • +
      + +
      + +
      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      The HeaderTable class

      + +
      + +
    • + + +
    • +
      + +
      + +
      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      The Header Table is a component used to associate headers to index values. It is basically an +ordered list of [name, value] pairs, so it’s implemented as a subclass of Array. +In this implementation, the Header Table and the Static Table are handled as a single table.

      + +
      + +
      function HeaderTable(log, limit) {
      +  var self = HeaderTable.staticTable.map(entryFromPair);
      +  self._log = log;
      +  self._limit = limit || DEFAULT_HEADER_TABLE_LIMIT;
      +  self._staticLength = self.length;
      +  self._size = 0;
      +  self._enforceLimit = HeaderTable.prototype._enforceLimit;
      +  self.add = HeaderTable.prototype.add;
      +  self.setSizeLimit = HeaderTable.prototype.setSizeLimit;
      +  return self;
      +}
      +
      +function entryFromPair(pair) {
      +  var entry = pair.slice();
      +  entry._size = size(entry);
      +  return entry;
      +}
      + +
    • + + +
    • +
      + +
      + +
      +

      The encoder decides how to update the header table and as such can control how much memory is +used by the header table. To limit the memory requirements on the decoder side, the header table +size is bounded.

      +
        +
      • The default header table size limit is 4096 bytes.
      • +
      • The size of an entry is defined as follows: the size of an entry is the sum of its name’s +length in bytes, of its value’s length in bytes and of 32 bytes.
      • +
      • The size of a header table is the sum of the size of its entries.
      • +
      + +
      + +
      var DEFAULT_HEADER_TABLE_LIMIT = 4096;
      +
      +function size(entry) {
      +  return (new Buffer(entry[0] + entry[1], 'utf8')).length + 32;
      +}
      + +
    • + + +
    • +
      + +
      + +
      +

      The add(index, entry) can be used to manage the header table:

      +
        +
      • it pushes the new entry at the beggining of the table
      • +
      • before doing such a modification, it has to be ensured that the header table size will stay +lower than or equal to the header table size limit. To achieve this, entries are evicted from +the end of the header table until the size of the header table is less than or equal to +(this._limit - entry.size), or until the table is empty.

        +
               <----------  Index Address Space ---------->
        +       <-- Static  Table -->  <-- Header  Table -->
        +       +---+-----------+---+  +---+-----------+---+
        +       | 0 |    ...    | k |  |k+1|    ...    | n |
        +       +---+-----------+---+  +---+-----------+---+
        +                              ^                   |
        +                              |                   V
        +                       Insertion Point       Drop Point
        +
      • +
      + +
      + +
      +HeaderTable.prototype._enforceLimit = function _enforceLimit(limit) {
      +  var droppedEntries = [];
      +  while ((this._size > 0) && (this._size > limit)) {
      +    var dropped = this.pop();
      +    this._size -= dropped._size;
      +    droppedEntries.unshift(dropped);
      +  }
      +  return droppedEntries;
      +};
      +
      +HeaderTable.prototype.add = function(entry) {
      +  var limit = this._limit - entry._size;
      +  var droppedEntries = this._enforceLimit(limit);
      +
      +  if (this._size <= limit) {
      +    this.splice(this._staticLength, 0, entry);
      +    this._size += entry._size;
      +  }
      +
      +  return droppedEntries;
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      The table size limit can be changed externally. In this case, the same eviction algorithm is used

      + +
      + +
      HeaderTable.prototype.setSizeLimit = function setSizeLimit(limit) {
      +  this._limit = limit;
      +  this._enforceLimit(this._limit);
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      The Static Table

      + +
      + +
    • + + +
    • +
      + +
      + +
      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      The table is generated with feeding the table from the spec to the following sed command:

      +
      sed -re "s/\s*\| [0-9]+\s*\| ([^ ]*)/  [ '\1'/g" -e "s/\|\s([^ ]*)/, '\1'/g" -e 's/ \|/],/g'
      +
      +
      + +
      +HeaderTable.staticTable  = [
      +  [ ':authority'                  , ''            ],
      +  [ ':method'                     , 'GET'         ],
      +  [ ':method'                     , 'POST'        ],
      +  [ ':path'                       , '/'           ],
      +  [ ':path'                       , '/index.html' ],
      +  [ ':scheme'                     , 'http'        ],
      +  [ ':scheme'                     , 'https'       ],
      +  [ ':status'                     , '200'         ],
      +  [ ':status'                     , '204'         ],
      +  [ ':status'                     , '206'         ],
      +  [ ':status'                     , '304'         ],
      +  [ ':status'                     , '400'         ],
      +  [ ':status'                     , '404'         ],
      +  [ ':status'                     , '500'         ],
      +  [ 'accept-charset'              , ''            ],
      +  [ 'accept-encoding'             , 'gzip, deflate'],
      +  [ 'accept-language'             , ''            ],
      +  [ 'accept-ranges'               , ''            ],
      +  [ 'accept'                      , ''            ],
      +  [ 'access-control-allow-origin' , ''            ],
      +  [ 'age'                         , ''            ],
      +  [ 'allow'                       , ''            ],
      +  [ 'authorization'               , ''            ],
      +  [ 'cache-control'               , ''            ],
      +  [ 'content-disposition'         , ''            ],
      +  [ 'content-encoding'            , ''            ],
      +  [ 'content-language'            , ''            ],
      +  [ 'content-length'              , ''            ],
      +  [ 'content-location'            , ''            ],
      +  [ 'content-range'               , ''            ],
      +  [ 'content-type'                , ''            ],
      +  [ 'cookie'                      , ''            ],
      +  [ 'date'                        , ''            ],
      +  [ 'etag'                        , ''            ],
      +  [ 'expect'                      , ''            ],
      +  [ 'expires'                     , ''            ],
      +  [ 'from'                        , ''            ],
      +  [ 'host'                        , ''            ],
      +  [ 'if-match'                    , ''            ],
      +  [ 'if-modified-since'           , ''            ],
      +  [ 'if-none-match'               , ''            ],
      +  [ 'if-range'                    , ''            ],
      +  [ 'if-unmodified-since'         , ''            ],
      +  [ 'last-modified'               , ''            ],
      +  [ 'link'                        , ''            ],
      +  [ 'location'                    , ''            ],
      +  [ 'max-forwards'                , ''            ],
      +  [ 'proxy-authenticate'          , ''            ],
      +  [ 'proxy-authorization'         , ''            ],
      +  [ 'range'                       , ''            ],
      +  [ 'referer'                     , ''            ],
      +  [ 'refresh'                     , ''            ],
      +  [ 'retry-after'                 , ''            ],
      +  [ 'server'                      , ''            ],
      +  [ 'set-cookie'                  , ''            ],
      +  [ 'strict-transport-security'   , ''            ],
      +  [ 'transfer-encoding'           , ''            ],
      +  [ 'user-agent'                  , ''            ],
      +  [ 'vary'                        , ''            ],
      +  [ 'via'                         , ''            ],
      +  [ 'www-authenticate'            , ''            ]
      +];
      + +
    • + + +
    • +
      + +
      + +
      +

      The HeaderSetDecompressor class

      + +
      + +
    • + + +
    • +
      + +
      + +
      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      A HeaderSetDecompressor instance is a transform stream that can be used to decompress a +single header set. Its input is a stream of binary data chunks and its output is a stream of +[name, value] pairs.

      +

      Currently, it is not a proper streaming decompressor implementation, since it buffer its input +until the end os the stream, and then processes the whole header block at once.

      + +
      + +
      +util.inherits(HeaderSetDecompressor, TransformStream);
      +function HeaderSetDecompressor(log, table) {
      +  TransformStream.call(this, { objectMode: true });
      +
      +  this._log = log.child({ component: 'compressor' });
      +  this._table = table;
      +  this._chunks = [];
      +}
      + +
    • + + +
    • +
      + +
      + +
      +

      _transform is the implementation of the corresponding virtual function of the +TransformStream class. It collects the data chunks for later processing.

      + +
      + +
      HeaderSetDecompressor.prototype._transform = function _transform(chunk, encoding, callback) {
      +  this._chunks.push(chunk);
      +  callback();
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      execute(rep) executes the given header representation.

      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      The JavaScript object representation of a header representation:

      +
      {
      +  name: String || Integer,  // string literal or index
      +  value: String || Integer, // string literal or index
      +  index: Boolean            // with or without indexing
      +}
      +

      Important: to ease the indexing of the header table, indexes start at 0 instead of 1.

      +

      Examples:

      +
      Indexed:
      +{ name: 2  , value: 2  , index: false }
      +Literal:
      +{ name: 2  , value: 'X', index: false } // without indexing
      +{ name: 2  , value: 'Y', index: true  } // with indexing
      +{ name: 'A', value: 'Z', index: true  } // with indexing, literal name
      +
      +
      + +
      HeaderSetDecompressor.prototype._execute = function _execute(rep) {
      +  this._log.trace({ key: rep.name, value: rep.value, index: rep.index },
      +                  'Executing header representation');
      +
      +  var entry, pair;
      +
      +  if (rep.contextUpdate) {
      +    this._table.setSizeLimit(rep.newMaxSize);
      +  }
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • An indexed representation entails the following actions:
          +
        • The header field corresponding to the referenced entry is emitted
        • +
        +
      • +
      + +
      + +
        else if (typeof rep.value === 'number') {
      +    var index = rep.value;
      +    entry = this._table[index];
      +
      +    pair = entry.slice();
      +    this.push(pair);
      +  }
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • A literal representation that is not added to the header table entails the following +action:
          +
        • The header is emitted.
        • +
        +
      • +
      • A literal representation that is added to the header table entails the following further +actions:
          +
        • The header is added to the header table.
        • +
        • The header is emitted.
        • +
        +
      • +
      + +
      + +
        else {
      +    if (typeof rep.name === 'number') {
      +      pair = [this._table[rep.name][0], rep.value];
      +    } else {
      +      pair = [rep.name, rep.value];
      +    }
      +
      +    if (rep.index) {
      +      entry = entryFromPair(pair);
      +      this._table.add(entry);
      +    }
      +
      +    this.push(pair);
      +  }
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      _flush is the implementation of the corresponding virtual function of the +TransformStream class. The whole decompressing process is done in _flush. It gets called when +the input stream is over.

      + +
      + +
      HeaderSetDecompressor.prototype._flush = function _flush(callback) {
      +  var buffer = concat(this._chunks);
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • processes the header representations
      • +
      + +
      + +
        buffer.cursor = 0;
      +  while (buffer.cursor < buffer.length) {
      +    this._execute(HeaderSetDecompressor.header(buffer));
      +  }
      +
      +  callback();
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      The HeaderSetCompressor class

      + +
      + +
    • + + +
    • +
      + +
      + +
      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      A HeaderSetCompressor instance is a transform stream that can be used to compress a single +header set. Its input is a stream of [name, value] pairs and its output is a stream of +binary data chunks.

      +

      It is a real streaming compressor, since it does not wait until the header set is complete.

      +

      The compression algorithm is (intentionally) not specified by the spec. Therefore, the current +compression algorithm can probably be improved in the future.

      + +
      + +
      +util.inherits(HeaderSetCompressor, TransformStream);
      +function HeaderSetCompressor(log, table) {
      +  TransformStream.call(this, { objectMode: true });
      +
      +  this._log = log.child({ component: 'compressor' });
      +  this._table = table;
      +  this.push = TransformStream.prototype.push.bind(this);
      +}
      +
      +HeaderSetCompressor.prototype.send = function send(rep) {
      +  this._log.trace({ key: rep.name, value: rep.value, index: rep.index },
      +                  'Emitting header representation');
      +
      +  if (!rep.chunks) {
      +    rep.chunks = HeaderSetCompressor.header(rep);
      +  }
      +  rep.chunks.forEach(this.push);
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      _transform is the implementation of the corresponding virtual function of the +TransformStream class. It processes the input headers one by one:

      + +
      + +
      HeaderSetCompressor.prototype._transform = function _transform(pair, encoding, callback) {
      +  var name = pair[0].toLowerCase();
      +  var value = pair[1];
      +  var entry, rep;
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • tries to find full (name, value) or name match in the header table
      • +
      + +
      + +
        var nameMatch = -1, fullMatch = -1;
      +  for (var droppedIndex = 0; droppedIndex < this._table.length; droppedIndex++) {
      +    entry = this._table[droppedIndex];
      +    if (entry[0] === name) {
      +      if (entry[1] === value) {
      +        fullMatch = droppedIndex;
      +        break;
      +      } else if (nameMatch === -1) {
      +        nameMatch = droppedIndex;
      +      }
      +    }
      +  }
      +
      +  var mustNeverIndex = ((name === 'cookie' && value.length < 20) ||
      +                        (name === 'set-cookie' && value.length < 20) ||
      +                        name === 'authorization');
      +
      +  if (fullMatch !== -1 && !mustNeverIndex) {
      +    this.send({ name: fullMatch, value: fullMatch, index: false });
      +  }
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • otherwise, it will be a literal representation (with a name index if there’s a name match)
      • +
      + +
      + +
        else {
      +    entry = entryFromPair(pair);
      +
      +    var indexing = (entry._size < this._table._limit / 2) && !mustNeverIndex;
      +
      +    if (indexing) {
      +      this._table.add(entry);
      +    }
      +
      +    this.send({ name: (nameMatch !== -1) ? nameMatch : name, value: value, index: indexing, mustNeverIndex: mustNeverIndex, contextUpdate: false });
      +  }
      +
      +  callback();
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      _flush is the implementation of the corresponding virtual function of the +TransformStream class. It gets called when there’s no more header to compress. The final step:

      + +
      + +
      HeaderSetCompressor.prototype._flush = function _flush(callback) {
      +  callback();
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      Detailed Format

      + +
      + +
    • + + +
    • +
      + +
      + +
      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      Integer representation

      +

      The algorithm to represent an integer I is as follows:

      +
        +
      1. If I < 2^N - 1, encode I on N bits
      2. +
      3. Else, encode 2^N - 1 on N bits and do the following steps:
          +
        1. Set I to (I - (2^N - 1)) and Q to 1
        2. +
        3. While Q > 0
            +
          1. Compute Q and R, quotient and remainder of I divided by 2^7
          2. +
          3. If Q is strictly greater than 0, write one 1 bit; otherwise, write one 0 bit
          4. +
          5. Encode R on the next 7 bits
          6. +
          7. I = Q
          8. +
          +
        4. +
        +
      4. +
      + +
      + +
      +HeaderSetCompressor.integer = function writeInteger(I, N) {
      +  var limit = Math.pow(2,N) - 1;
      +  if (I < limit) {
      +    return [new Buffer([I])];
      +  }
      +
      +  var bytes = [];
      +  if (N !== 0) {
      +    bytes.push(limit);
      +  }
      +  I -= limit;
      +
      +  var Q = 1, R;
      +  while (Q > 0) {
      +    Q = Math.floor(I / 128);
      +    R = I % 128;
      +
      +    if (Q > 0) {
      +      R += 128;
      +    }
      +    bytes.push(R);
      +
      +    I = Q;
      +  }
      +
      +  return [new Buffer(bytes)];
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      The inverse algorithm:

      +
        +
      1. Set I to the number coded on the lower N bits of the first byte
      2. +
      3. If I is smaller than 2^N - 1 then return I
      4. +
      5. Else the number is encoded on more than one byte, so do the following steps:
          +
        1. Set M to 0
        2. +
        3. While returning with I
            +
          1. Let B be the next byte (the first byte if N is 0)
          2. +
          3. Read out the lower 7 bits of B and multiply it with 2^M
          4. +
          5. Increase I with this number
          6. +
          7. Increase M by 7
          8. +
          9. Return I if the most significant bit of B is 0
          10. +
          +
        4. +
        +
      6. +
      + +
      + +
      +HeaderSetDecompressor.integer = function readInteger(buffer, N) {
      +  var limit = Math.pow(2,N) - 1;
      +
      +  var I = buffer[buffer.cursor] & limit;
      +  if (N !== 0) {
      +    buffer.cursor += 1;
      +  }
      +
      +  if (I === limit) {
      +    var M = 0;
      +    do {
      +      I += (buffer[buffer.cursor] & 127) << M;
      +      M += 7;
      +      buffer.cursor += 1;
      +    } while (buffer[buffer.cursor - 1] & 128);
      +  }
      +
      +  return I;
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      Huffman Encoding

      + +
      + +
      +function HuffmanTable(table) {
      +  function createTree(codes, position) {
      +    if (codes.length === 1) {
      +      return [table.indexOf(codes[0])];
      +    }
      +
      +    else {
      +      position = position || 0;
      +      var zero = [];
      +      var one = [];
      +      for (var i = 0; i < codes.length; i++) {
      +        var string = codes[i];
      +        if (string[position] === '0') {
      +          zero.push(string);
      +        } else {
      +          one.push(string);
      +        }
      +      }
      +      return [createTree(zero, position + 1), createTree(one, position + 1)];
      +    }
      +  }
      +
      +  this.tree = createTree(table);
      +
      +  this.codes = table.map(function(bits) {
      +    return parseInt(bits, 2);
      +  });
      +  this.lengths = table.map(function(bits) {
      +    return bits.length;
      +  });
      +}
      +
      +HuffmanTable.prototype.encode = function encode(buffer) {
      +  var result = [];
      +  var space = 8;
      +
      +  function add(data) {
      +    if (space === 8) {
      +      result.push(data);
      +    } else {
      +      result[result.length - 1] |= data;
      +    }
      +  }
      +
      +  for (var i = 0; i < buffer.length; i++) {
      +    var byte = buffer[i];
      +    var code = this.codes[byte];
      +    var length = this.lengths[byte];
      +
      +    while (length !== 0) {
      +      if (space >= length) {
      +        add(code << (space - length));
      +        code = 0;
      +        space -= length;
      +        length = 0;
      +      } else {
      +        var shift = length - space;
      +        var msb = code >> shift;
      +        add(msb);
      +        code -= msb << shift;
      +        length -= space;
      +        space = 0;
      +      }
      +
      +      if (space === 0) {
      +        space = 8;
      +      }
      +    }
      +  }
      +
      +  if (space !== 8) {
      +    add(this.codes[256] >> (this.lengths[256] - space));
      +  }
      +
      +  return new Buffer(result);
      +};
      +
      +HuffmanTable.prototype.decode = function decode(buffer) {
      +  var result = [];
      +  var subtree = this.tree;
      +
      +  for (var i = 0; i < buffer.length; i++) {
      +    var byte = buffer[i];
      +
      +    for (var j = 0; j < 8; j++) {
      +      var bit = (byte & 128) ? 1 : 0;
      +      byte = byte << 1;
      +
      +      subtree = subtree[bit];
      +      if (subtree.length === 1) {
      +        result.push(subtree[0]);
      +        subtree = this.tree;
      +      }
      +    }
      +  }
      +
      +  return new Buffer(result);
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      The initializer arrays for the Huffman tables are generated with feeding the tables from the +spec to this sed command:

      +
      sed -e "s/^.* [|]//g" -e "s/|//g" -e "s/ .*//g" -e "s/^/  '/g" -e "s/$/',/g"
      +
      +
      + +
      +HuffmanTable.huffmanTable = new HuffmanTable([
      +  '1111111111000',
      +  '11111111111111111011000',
      +  '1111111111111111111111100010',
      +  '1111111111111111111111100011',
      +  '1111111111111111111111100100',
      +  '1111111111111111111111100101',
      +  '1111111111111111111111100110',
      +  '1111111111111111111111100111',
      +  '1111111111111111111111101000',
      +  '111111111111111111101010',
      +  '111111111111111111111111111100',
      +  '1111111111111111111111101001',
      +  '1111111111111111111111101010',
      +  '111111111111111111111111111101',
      +  '1111111111111111111111101011',
      +  '1111111111111111111111101100',
      +  '1111111111111111111111101101',
      +  '1111111111111111111111101110',
      +  '1111111111111111111111101111',
      +  '1111111111111111111111110000',
      +  '1111111111111111111111110001',
      +  '1111111111111111111111110010',
      +  '111111111111111111111111111110',
      +  '1111111111111111111111110011',
      +  '1111111111111111111111110100',
      +  '1111111111111111111111110101',
      +  '1111111111111111111111110110',
      +  '1111111111111111111111110111',
      +  '1111111111111111111111111000',
      +  '1111111111111111111111111001',
      +  '1111111111111111111111111010',
      +  '1111111111111111111111111011',
      +  '010100',
      +  '1111111000',
      +  '1111111001',
      +  '111111111010',
      +  '1111111111001',
      +  '010101',
      +  '11111000',
      +  '11111111010',
      +  '1111111010',
      +  '1111111011',
      +  '11111001',
      +  '11111111011',
      +  '11111010',
      +  '010110',
      +  '010111',
      +  '011000',
      +  '00000',
      +  '00001',
      +  '00010',
      +  '011001',
      +  '011010',
      +  '011011',
      +  '011100',
      +  '011101',
      +  '011110',
      +  '011111',
      +  '1011100',
      +  '11111011',
      +  '111111111111100',
      +  '100000',
      +  '111111111011',
      +  '1111111100',
      +  '1111111111010',
      +  '100001',
      +  '1011101',
      +  '1011110',
      +  '1011111',
      +  '1100000',
      +  '1100001',
      +  '1100010',
      +  '1100011',
      +  '1100100',
      +  '1100101',
      +  '1100110',
      +  '1100111',
      +  '1101000',
      +  '1101001',
      +  '1101010',
      +  '1101011',
      +  '1101100',
      +  '1101101',
      +  '1101110',
      +  '1101111',
      +  '1110000',
      +  '1110001',
      +  '1110010',
      +  '11111100',
      +  '1110011',
      +  '11111101',
      +  '1111111111011',
      +  '1111111111111110000',
      +  '1111111111100',
      +  '11111111111100',
      +  '100010',
      +  '111111111111101',
      +  '00011',
      +  '100011',
      +  '00100',
      +  '100100',
      +  '00101',
      +  '100101',
      +  '100110',
      +  '100111',
      +  '00110',
      +  '1110100',
      +  '1110101',
      +  '101000',
      +  '101001',
      +  '101010',
      +  '00111',
      +  '101011',
      +  '1110110',
      +  '101100',
      +  '01000',
      +  '01001',
      +  '101101',
      +  '1110111',
      +  '1111000',
      +  '1111001',
      +  '1111010',
      +  '1111011',
      +  '111111111111110',
      +  '11111111100',
      +  '11111111111101',
      +  '1111111111101',
      +  '1111111111111111111111111100',
      +  '11111111111111100110',
      +  '1111111111111111010010',
      +  '11111111111111100111',
      +  '11111111111111101000',
      +  '1111111111111111010011',
      +  '1111111111111111010100',
      +  '1111111111111111010101',
      +  '11111111111111111011001',
      +  '1111111111111111010110',
      +  '11111111111111111011010',
      +  '11111111111111111011011',
      +  '11111111111111111011100',
      +  '11111111111111111011101',
      +  '11111111111111111011110',
      +  '111111111111111111101011',
      +  '11111111111111111011111',
      +  '111111111111111111101100',
      +  '111111111111111111101101',
      +  '1111111111111111010111',
      +  '11111111111111111100000',
      +  '111111111111111111101110',
      +  '11111111111111111100001',
      +  '11111111111111111100010',
      +  '11111111111111111100011',
      +  '11111111111111111100100',
      +  '111111111111111011100',
      +  '1111111111111111011000',
      +  '11111111111111111100101',
      +  '1111111111111111011001',
      +  '11111111111111111100110',
      +  '11111111111111111100111',
      +  '111111111111111111101111',
      +  '1111111111111111011010',
      +  '111111111111111011101',
      +  '11111111111111101001',
      +  '1111111111111111011011',
      +  '1111111111111111011100',
      +  '11111111111111111101000',
      +  '11111111111111111101001',
      +  '111111111111111011110',
      +  '11111111111111111101010',
      +  '1111111111111111011101',
      +  '1111111111111111011110',
      +  '111111111111111111110000',
      +  '111111111111111011111',
      +  '1111111111111111011111',
      +  '11111111111111111101011',
      +  '11111111111111111101100',
      +  '111111111111111100000',
      +  '111111111111111100001',
      +  '1111111111111111100000',
      +  '111111111111111100010',
      +  '11111111111111111101101',
      +  '1111111111111111100001',
      +  '11111111111111111101110',
      +  '11111111111111111101111',
      +  '11111111111111101010',
      +  '1111111111111111100010',
      +  '1111111111111111100011',
      +  '1111111111111111100100',
      +  '11111111111111111110000',
      +  '1111111111111111100101',
      +  '1111111111111111100110',
      +  '11111111111111111110001',
      +  '11111111111111111111100000',
      +  '11111111111111111111100001',
      +  '11111111111111101011',
      +  '1111111111111110001',
      +  '1111111111111111100111',
      +  '11111111111111111110010',
      +  '1111111111111111101000',
      +  '1111111111111111111101100',
      +  '11111111111111111111100010',
      +  '11111111111111111111100011',
      +  '11111111111111111111100100',
      +  '111111111111111111111011110',
      +  '111111111111111111111011111',
      +  '11111111111111111111100101',
      +  '111111111111111111110001',
      +  '1111111111111111111101101',
      +  '1111111111111110010',
      +  '111111111111111100011',
      +  '11111111111111111111100110',
      +  '111111111111111111111100000',
      +  '111111111111111111111100001',
      +  '11111111111111111111100111',
      +  '111111111111111111111100010',
      +  '111111111111111111110010',
      +  '111111111111111100100',
      +  '111111111111111100101',
      +  '11111111111111111111101000',
      +  '11111111111111111111101001',
      +  '1111111111111111111111111101',
      +  '111111111111111111111100011',
      +  '111111111111111111111100100',
      +  '111111111111111111111100101',
      +  '11111111111111101100',
      +  '111111111111111111110011',
      +  '11111111111111101101',
      +  '111111111111111100110',
      +  '1111111111111111101001',
      +  '111111111111111100111',
      +  '111111111111111101000',
      +  '11111111111111111110011',
      +  '1111111111111111101010',
      +  '1111111111111111101011',
      +  '1111111111111111111101110',
      +  '1111111111111111111101111',
      +  '111111111111111111110100',
      +  '111111111111111111110101',
      +  '11111111111111111111101010',
      +  '11111111111111111110100',
      +  '11111111111111111111101011',
      +  '111111111111111111111100110',
      +  '11111111111111111111101100',
      +  '11111111111111111111101101',
      +  '111111111111111111111100111',
      +  '111111111111111111111101000',
      +  '111111111111111111111101001',
      +  '111111111111111111111101010',
      +  '111111111111111111111101011',
      +  '1111111111111111111111111110',
      +  '111111111111111111111101100',
      +  '111111111111111111111101101',
      +  '111111111111111111111101110',
      +  '111111111111111111111101111',
      +  '111111111111111111111110000',
      +  '11111111111111111111101110',
      +  '111111111111111111111111111111'
      +]);
      + +
    • + + +
    • +
      + +
      + +
      +

      String literal representation

      +

      Literal strings can represent header names or header values. There’s two variant of the +string encoding:

      +

      String literal with Huffman encoding:

      +
        0   1   2   3   4   5   6   7
      ++---+---+---+---+---+---+---+---+
      +| 1 |  Value Length Prefix (7)  |
      ++---+---+---+---+---+---+---+---+
      +|   Value Length (0-N bytes)    |
      ++---+---+---+---+---+---+---+---+
      +...
      ++---+---+---+---+---+---+---+---+
      +| Huffman Encoded Data  |Padding|
      ++---+---+---+---+---+---+---+---+
      +

      String literal without Huffman encoding:

      +
        0   1   2   3   4   5   6   7
      ++---+---+---+---+---+---+---+---+
      +| 0 |  Value Length Prefix (7)  |
      ++---+---+---+---+---+---+---+---+
      +|   Value Length (0-N bytes)    |
      ++---+---+---+---+---+---+---+---+
      +...
      ++---+---+---+---+---+---+---+---+
      +|  Field Bytes Without Encoding |
      ++---+---+---+---+---+---+---+---+
      +
      +
      + +
      +HeaderSetCompressor.string = function writeString(str) {
      +  str = new Buffer(str, 'utf8');
      +
      +  var huffman = HuffmanTable.huffmanTable.encode(str);
      +  if (huffman.length < str.length) {
      +    var length = HeaderSetCompressor.integer(huffman.length, 7);
      +    length[0][0] |= 128;
      +    return length.concat(huffman);
      +  }
      +
      +  else {
      +    length = HeaderSetCompressor.integer(str.length, 7);
      +    return length.concat(str);
      +  }
      +};
      +
      +HeaderSetDecompressor.string = function readString(buffer) {
      +  var huffman = buffer[buffer.cursor] & 128;
      +  var length = HeaderSetDecompressor.integer(buffer, 7);
      +  var encoded = buffer.slice(buffer.cursor, buffer.cursor + length);
      +  buffer.cursor += length;
      +  return (huffman ? HuffmanTable.huffmanTable.decode(encoded) : encoded).toString('utf8');
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      Header represenations

      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      The JavaScript object representation is described near the +HeaderSetDecompressor.prototype._execute() method definition.

      +

      All binary header representations start with a prefix signaling the representation type and +an index represented using prefix coded integers:

      +
        0   1   2   3   4   5   6   7
      ++---+---+---+---+---+---+---+---+
      +| 1 |        Index (7+)         |  Indexed Representation
      ++---+---------------------------+
      +
      +  0   1   2   3   4   5   6   7
      ++---+---+---+---+---+---+---+---+
      +| 0 | 1 |      Index (6+)       |
      ++---+---+---+-------------------+  Literal w/ Indexing
      +|       Value Length (8+)       |
      ++-------------------------------+  w/ Indexed Name
      +| Value String (Length octets)  |
      ++-------------------------------+
      +
      +  0   1   2   3   4   5   6   7
      ++---+---+---+---+---+---+---+---+
      +| 0 | 1 |           0           |
      ++---+---+---+-------------------+
      +|       Name Length (8+)        |
      ++-------------------------------+  Literal w/ Indexing
      +|  Name String (Length octets)  |
      ++-------------------------------+  w/ New Name
      +|       Value Length (8+)       |
      ++-------------------------------+
      +| Value String (Length octets)  |
      ++-------------------------------+
      +
      +  0   1   2   3   4   5   6   7
      ++---+---+---+---+---+---+---+---+
      +| 0 | 0 | 0 | 0 |  Index (4+)   |
      ++---+---+---+-------------------+  Literal w/o Incremental Indexing
      +|       Value Length (8+)       |
      ++-------------------------------+  w/ Indexed Name
      +| Value String (Length octets)  |
      ++-------------------------------+
      +
      +  0   1   2   3   4   5   6   7
      ++---+---+---+---+---+---+---+---+
      +| 0 | 0 | 0 | 0 |       0       |
      ++---+---+---+-------------------+
      +|       Name Length (8+)        |
      ++-------------------------------+  Literal w/o Incremental Indexing
      +|  Name String (Length octets)  |
      ++-------------------------------+  w/ New Name
      +|       Value Length (8+)       |
      ++-------------------------------+
      +| Value String (Length octets)  |
      ++-------------------------------+
      +
      +  0   1   2   3   4   5   6   7
      ++---+---+---+---+---+---+---+---+
      +| 0 | 0 | 0 | 1 |  Index (4+)   |
      ++---+---+---+-------------------+  Literal never indexed
      +|       Value Length (8+)       |
      ++-------------------------------+  w/ Indexed Name
      +| Value String (Length octets)  |
      ++-------------------------------+
      +
      +  0   1   2   3   4   5   6   7
      ++---+---+---+---+---+---+---+---+
      +| 0 | 0 | 0 | 1 |       0       |
      ++---+---+---+-------------------+
      +|       Name Length (8+)        |
      ++-------------------------------+  Literal never indexed
      +|  Name String (Length octets)  |
      ++-------------------------------+  w/ New Name
      +|       Value Length (8+)       |
      ++-------------------------------+
      +| Value String (Length octets)  |
      ++-------------------------------+
      +

      The Indexed Representation consists of the 1-bit prefix and the Index that is represented as +a 7-bit prefix coded integer and nothing else.

      +

      After the first bits, all literal representations specify the header name, either as a +pointer to the Header Table (Index) or a string literal. When the string literal representation +is used, the Index is set to 0 and the string literal starts at the second byte.

      +

      For all literal representations, the specification of the header value comes next. It is +always represented as a string.

      + +
      + +
      +var representations = {
      +  indexed             : { prefix: 7, pattern: 0x80 },
      +  literalIncremental  : { prefix: 6, pattern: 0x40 },
      +  contextUpdate       : { prefix: 0, pattern: 0x20 },
      +  literalNeverIndexed : { prefix: 4, pattern: 0x10 },
      +  literal             : { prefix: 4, pattern: 0x00 }
      +};
      +
      +HeaderSetCompressor.header = function writeHeader(header) {
      +  var representation, buffers = [];
      +
      +  if (header.contextUpdate) {
      +    representation = representations.contextUpdate;
      +  } else if (typeof header.value === 'number') {
      +    representation = representations.indexed;
      +  } else if (header.index) {
      +    representation = representations.literalIncremental;
      +  } else if (header.mustNeverIndex) {
      +    representation = representations.literalNeverIndexed;
      +  } else {
      +    representation = representations.literal;
      +  }
      +
      +  if (representation === representations.contextUpdate) {
      +    buffers.push(HeaderSetCompressor.integer(header.newMaxSize, 5));
      +  }
      +
      +  else if (representation === representations.indexed) {
      +    buffers.push(HeaderSetCompressor.integer(header.value + 1, representation.prefix));
      +  }
      +
      +  else {
      +    if (typeof header.name === 'number') {
      +      buffers.push(HeaderSetCompressor.integer(header.name + 1, representation.prefix));
      +    } else {
      +      buffers.push(HeaderSetCompressor.integer(0, representation.prefix));
      +      buffers.push(HeaderSetCompressor.string(header.name));
      +    }
      +    buffers.push(HeaderSetCompressor.string(header.value));
      +  }
      +
      +  buffers[0][0][0] |= representation.pattern;
      +
      +  return Array.prototype.concat.apply([], buffers); // array of arrays of buffers -> array of buffers
      +};
      +
      +HeaderSetDecompressor.header = function readHeader(buffer) {
      +  var representation, header = {};
      +
      +  var firstByte = buffer[buffer.cursor];
      +  if (firstByte & 0x80) {
      +    representation = representations.indexed;
      +  } else if (firstByte & 0x40) {
      +    representation = representations.literalIncremental;
      +  } else if (firstByte & 0x20) {
      +    representation = representations.contextUpdate;
      +  } else if (firstByte & 0x10) {
      +    representation = representations.literalNeverIndexed;
      +  } else {
      +    representation = representations.literal;
      +  }
      +
      +  header.value = header.name = -1;
      +  header.index = false;
      +  header.contextUpdate = false;
      +  header.newMaxSize = 0;
      +  header.mustNeverIndex = false;
      +
      +  if (representation === representations.contextUpdate) {
      +    header.contextUpdate = true;
      +    header.newMaxSize = HeaderSetDecompressor.integer(buffer, 5);
      +  }
      +
      +  else if (representation === representations.indexed) {
      +    header.value = header.name = HeaderSetDecompressor.integer(buffer, representation.prefix) - 1;
      +  }
      +
      +  else {
      +    header.name = HeaderSetDecompressor.integer(buffer, representation.prefix) - 1;
      +    if (header.name === -1) {
      +      header.name = HeaderSetDecompressor.string(buffer);
      +    }
      +    header.value = HeaderSetDecompressor.string(buffer);
      +    header.index = (representation === representations.literalIncremental);
      +    header.mustNeverIndex = (representation === representations.literalNeverIndexed);
      +  }
      +
      +  return header;
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      Integration with HTTP/2

      + +
      + +
    • + + +
    • +
      + +
      + +
      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      This section describes the interaction between the compressor/decompressor and the rest of the +HTTP/2 implementation. The Compressor and the Decompressor makes up a layer between the +framer and the connection handling component. They let most +frames pass through, except HEADERS and PUSH_PROMISE frames. They convert the frames between +these two representations:

      +
      {                                   {
      + type: 'HEADERS',                    type: 'HEADERS',
      + flags: {},                          flags: {},
      + stream: 1,               <===>      stream: 1,
      + headers: {                          data: Buffer
      +  N1: 'V1',                         }
      +  N2: ['V1', 'V2', ...],
      +  // ...
      + }
      +}
      +

      There are possibly several binary frame that belong to a single non-binary frame.

      + +
      + +
      +var MAX_HTTP_PAYLOAD_SIZE = 16384;
      + +
    • + + +
    • +
      + +
      + +
      +

      The Compressor class

      + +
      + +
    • + + +
    • +
      + +
      + +
      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      The Compressor transform stream is basically stateless.

      + +
      + +
      util.inherits(Compressor, TransformStream);
      +function Compressor(log, type) {
      +  TransformStream.call(this, { objectMode: true });
      +
      +  this._log = log.child({ component: 'compressor' });
      +
      +  assert((type === 'REQUEST') || (type === 'RESPONSE'));
      +  this._table = new HeaderTable(this._log);
      +}
      + +
    • + + +
    • +
      + +
      + +
      +

      Changing the header table size

      + +
      + +
      Compressor.prototype.setTableSizeLimit = function setTableSizeLimit(size) {
      +  this._table.setSizeLimit(size);
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      compress takes a header set, and compresses it using a new HeaderSetCompressor stream +instance. This means that from now on, the advantages of streaming header encoding are lost, +but the API becomes simpler.

      + +
      + +
      Compressor.prototype.compress = function compress(headers) {
      +  var compressor = new HeaderSetCompressor(this._log, this._table);
      +  var colonHeaders = [];
      +  var nonColonHeaders = [];
      + +
    • + + +
    • +
      + +
      + +
      +

      To ensure we send colon headers first

      + +
      + +
        for (var name in headers) {
      +    if (name.trim()[0] === ':') {
      +      colonHeaders.push(name);
      +    } else {
      +      nonColonHeaders.push(name);
      +    }
      +  }
      +
      +  function compressHeader(name) {
      +    var value = headers[name];
      +    name = String(name).toLowerCase();
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • To allow for better compression efficiency, the Cookie header field MAY be split into +separate header fields, each with one or more cookie-pairs.
      • +
      + +
      + +
          if (name == 'cookie') {
      +      if (!(value instanceof Array)) {
      +        value = [value];
      +      }
      +      value = Array.prototype.concat.apply([], value.map(function(cookie) {
      +        return String(cookie).split(';').map(trim);
      +      }));
      +    }
      +
      +    if (value instanceof Array) {
      +      for (var i = 0; i < value.length; i++) {
      +        compressor.write([name, String(value[i])]);
      +      }
      +    } else {
      +      compressor.write([name, String(value)]);
      +    }
      +  }
      +
      +  colonHeaders.forEach(compressHeader);
      +  nonColonHeaders.forEach(compressHeader);
      +
      +  compressor.end();
      +
      +  var chunk, chunks = [];
      +  while (chunk = compressor.read()) {
      +    chunks.push(chunk);
      +  }
      +  return concat(chunks);
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      When a frame arrives

      + +
      + +
      Compressor.prototype._transform = function _transform(frame, encoding, done) {
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • and it is a HEADERS or PUSH_PROMISE frame
          +
        • it generates a header block using the compress method
        • +
        • cuts the header block into chunks that are not larger than MAX_HTTP_PAYLOAD_SIZE
        • +
        • for each chunk, it pushes out a chunk frame that is identical to the original, except +the data property which holds the given chunk, the type of the frame which is always +CONTINUATION except for the first frame, and the END_HEADERS/END_PUSH_STREAM flag that +marks the last frame and the END_STREAM flag which is always false before the end
        • +
        +
      • +
      + +
      + +
        if (frame.type === 'HEADERS' || frame.type === 'PUSH_PROMISE') {
      +    var buffer = this.compress(frame.headers);
      + +
    • + + +
    • +
      + +
      + +
      +

      This will result in CONTINUATIONs from a PUSH_PROMISE being 4 bytes shorter than they could +be, but that’s not the end of the world, and it prevents us from going over MAX_HTTP_PAYLOAD_SIZE +on the initial PUSH_PROMISE frame.

      + +
      + +
          var adjustment = frame.type === 'PUSH_PROMISE' ? 4 : 0;
      +    var chunks = cut(buffer, MAX_HTTP_PAYLOAD_SIZE - adjustment);
      +
      +    for (var i = 0; i < chunks.length; i++) {
      +      var chunkFrame;
      +      var first = (i === 0);
      +      var last = (i === chunks.length - 1);
      +
      +      if (first) {
      +        chunkFrame = util._extend({}, frame);
      +        chunkFrame.flags = util._extend({}, frame.flags);
      +        chunkFrame.flags['END_' + frame.type] = last;
      +      } else {
      +        chunkFrame = {
      +          type: 'CONTINUATION',
      +          flags: { END_HEADERS: last },
      +          stream: frame.stream
      +        };
      +      }
      +      chunkFrame.data = chunks[i];
      +
      +      this.push(chunkFrame);
      +    }
      +  }
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • otherwise, the frame is forwarded without taking any action
      • +
      + +
      + +
        else {
      +    this.push(frame);
      +  }
      +
      +  done();
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      The Decompressor class

      + +
      + +
    • + + +
    • +
      + +
      + +
      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      The Decompressor is a stateful transform stream, since it has to collect multiple frames first, +and the decoding comes after unifying the payload of those frames.

      +

      If there’s a frame in progress, this._inProgress is true. The frames are collected in +this._frames, and the type of the frame and the stream identifier is stored in this._type +and this._stream respectively.

      + +
      + +
      util.inherits(Decompressor, TransformStream);
      +function Decompressor(log, type) {
      +  TransformStream.call(this, { objectMode: true });
      +
      +  this._log = log.child({ component: 'compressor' });
      +
      +  assert((type === 'REQUEST') || (type === 'RESPONSE'));
      +  this._table = new HeaderTable(this._log);
      +
      +  this._inProgress = false;
      +  this._base = undefined;
      +}
      + +
    • + + +
    • +
      + +
      + +
      +

      Changing the header table size

      + +
      + +
      Decompressor.prototype.setTableSizeLimit = function setTableSizeLimit(size) {
      +  this._table.setSizeLimit(size);
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      decompress takes a full header block, and decompresses it using a new HeaderSetDecompressor +stream instance. This means that from now on, the advantages of streaming header decoding are +lost, but the API becomes simpler.

      + +
      + +
      Decompressor.prototype.decompress = function decompress(block) {
      +  var decompressor = new HeaderSetDecompressor(this._log, this._table);
      +  decompressor.end(block);
      +
      +  var seenNonColonHeader = false;
      +  var headers = {};
      +  var pair;
      +  while (pair = decompressor.read()) {
      +    var name = pair[0];
      +    var value = pair[1];
      +    var isColonHeader = (name.trim()[0] === ':');
      +    if (seenNonColonHeader && isColonHeader) {
      +        this.emit('error', 'PROTOCOL_ERROR');
      +        return headers;
      +    }
      +    seenNonColonHeader = !isColonHeader;
      +    if (name in headers) {
      +      if (headers[name] instanceof Array) {
      +        headers[name].push(value);
      +      } else {
      +        headers[name] = [headers[name], value];
      +      }
      +    } else {
      +      headers[name] = value;
      +    }
      +  }
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • If there are multiple Cookie header fields after decompression, these MUST be concatenated +into a single octet string using the two octet delimiter of 0x3B, 0x20 (the ASCII +string “; “).
      • +
      + +
      + +
        if (('cookie' in headers) && (headers['cookie'] instanceof Array)) {
      +    headers['cookie'] = headers['cookie'].join('; ');
      +  }
      +
      +  return headers;
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      When a frame arrives

      + +
      + +
      Decompressor.prototype._transform = function _transform(frame, encoding, done) {
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • and the collection process is already _inProgress, the frame is simply stored, except if +it’s an illegal frame
      • +
      + +
      + +
        if (this._inProgress) {
      +    if ((frame.type !== 'CONTINUATION') || (frame.stream !== this._base.stream)) {
      +      this._log.error('A series of HEADER frames were not continuous');
      +      this.emit('error', 'PROTOCOL_ERROR');
      +      return;
      +    }
      +    this._frames.push(frame);
      +  }
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • and the collection process is not _inProgress, but the new frame’s type is HEADERS or +PUSH_PROMISE, a new collection process begins
      • +
      + +
      + +
        else if ((frame.type === 'HEADERS') || (frame.type === 'PUSH_PROMISE')) {
      +    this._inProgress = true;
      +    this._base = util._extend({}, frame);
      +    this._frames = [frame];
      +  }
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • otherwise, the frame is forwarded without taking any action
      • +
      + +
      + +
        else {
      +    this.push(frame);
      +  }
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • When the frame signals that it’s the last in the series, the header block chunks are +concatenated, the headers are decompressed, and a new frame gets pushed out with the +decompressed headers.
      • +
      + +
      + +
        if (this._inProgress && (frame.flags.END_HEADERS || frame.flags.END_PUSH_PROMISE)) {
      +    var buffer = concat(this._frames.map(function(frame) {
      +      return frame.data;
      +    }));
      +    try {
      +      var headers = this.decompress(buffer);
      +    } catch(error) {
      +      this._log.error({ err: error }, 'Header decompression error');
      +      this.emit('error', 'COMPRESSION_ERROR');
      +      return;
      +    }
      +    this.push(util._extend(this._base, { headers: headers }));
      +    this._inProgress = false;
      +  }
      +
      +  done();
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      Helper functions

      + +
      + +
    • + + +
    • +
      + +
      + +
      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      Concatenate an array of buffers into a new buffer

      + +
      + +
      function concat(buffers) {
      +  var size = 0;
      +  for (var i = 0; i < buffers.length; i++) {
      +    size += buffers[i].length;
      +  }
      +
      +  var concatenated = new Buffer(size);
      +  for (var cursor = 0, j = 0; j < buffers.length; cursor += buffers[j].length, j++) {
      +    buffers[j].copy(concatenated, cursor);
      +  }
      +
      +  return concatenated;
      +}
      + +
    • + + +
    • +
      + +
      + +
      +

      Cut buffer into chunks not larger than size

      + +
      + +
      function cut(buffer, size) {
      +  var chunks = [];
      +  var cursor = 0;
      +  do {
      +    var chunkSize = Math.min(size, buffer.length - cursor);
      +    chunks.push(buffer.slice(cursor, cursor + chunkSize));
      +    cursor += chunkSize;
      +  } while(cursor < buffer.length);
      +  return chunks;
      +}
      +
      +function trim(string) {
      +  return string.trim();
      +}
      + +
    • + +
    +
    + + diff --git a/doc/protocol/connection.html b/doc/protocol/connection.html new file mode 100644 index 00000000..39a4a78a --- /dev/null +++ b/doc/protocol/connection.html @@ -0,0 +1,1759 @@ + + + + + The Connection class + + + + + +
    +
    + + + +
      + + + +
    • +
      + +
      + +
      + +
      + +
      var assert = require('assert');
      + +
    • + + +
    • +
      + +
      + +
      +

      The Connection class

      + +
      + +
    • + + +
    • +
      + +
      + +
      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      The Connection class manages HTTP/2 connections. Each instance corresponds to one transport +stream (TCP stream). It operates by sending and receiving frames and is implemented as a +Flow subclass.

      + +
      + +
      +var Flow = require('./flow').Flow;
      +
      +exports.Connection = Connection;
      + +
    • + + +
    • +
      + +
      + +
      +

      Public API

      + +
      + +
    • + + +
    • +
      + +
      + +
      + +
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • new Connection(log, firstStreamId, settings): create a new Connection

        +
      • +
      • Event: ‘error’ (type): signals a connection level error made by the other end

        +
      • +
      • Event: ‘peerError’ (type): signals the receipt of a GOAWAY frame that contains an error +code other than NO_ERROR

        +
      • +
      • Event: ‘stream’ (stream): signals that there’s an incoming stream

        +
      • +
      • createStream(): stream: initiate a new stream

        +
      • +
      • set(settings, callback): change the value of one or more settings according to the +key-value pairs of settings. The callback is called after the peer acknowledged the changes.

        +
      • +
      • ping([callback]): send a ping and call callback when the answer arrives

        +
      • +
      • close([error]): close the stream with an error code

        +
      • +
      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      Constructor

      + +
      + +
    • + + +
    • +
      + +
      + +
      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      The main aspects of managing the connection are:

      + +
      + +
      function Connection(log, firstStreamId, settings) {
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • initializing the base class
      • +
      + +
      + +
        Flow.call(this, 0);
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • logging: every method uses the common logger object
      • +
      + +
      + +
        this._log = log.child({ component: 'connection' });
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • stream management
      • +
      + +
      + +
        this._initializeStreamManagement(firstStreamId);
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • lifecycle management
      • +
      + +
      + +
        this._initializeLifecycleManagement();
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • flow control
      • +
      + +
      + +
        this._initializeFlowControl();
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • settings management
      • +
      + +
      + +
        this._initializeSettingsManagement(settings);
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • multiplexing
      • +
      + +
      + +
        this._initializeMultiplexing();
      +}
      +Connection.prototype = Object.create(Flow.prototype, { constructor: { value: Connection } });
      + +
    • + + +
    • +
      + +
      + +
      +

      Overview

      + +
      + +
    • + + +
    • +
      + +
      + +
      + +
      + +
    • + + +
    • +
      + +
      + +
      +
               |    ^             |    ^
      +         v    |             v    |
      +    +--------------+   +--------------+
      ++---|   stream1    |---|   stream2    |----      ....      ---+
      +|   | +----------+ |   | +----------+ |                       |
      +|   | | stream1. | |   | | stream2. | |                       |
      +|   +-| upstream |-+   +-| upstream |-+                       |
      +|     +----------+       +----------+                         |
      +|       |     ^             |     ^                           |
      +|       v     |             v     |                           |
      +|       +-----+-------------+-----+--------      ....         |
      +|       ^     |             |     |                           |
      +|       |     v             |     |                           |
      +|   +--------------+        |     |                           |
      +|   |   stream0    |        |     |                           |
      +|   |  connection  |        |     |                           |
      +|   |  management  |     multiplexing                         |
      +|   +--------------+     flow control                         |
      +|                           |     ^                           |
      +|                   _read() |     | _write()                  |
      +|                           v     |                           |
      +|                +------------+ +-----------+                 |
      +|                |output queue| |input queue|                 |
      ++----------------+------------+-+-----------+-----------------+
      +                            |     ^
      +                     read() |     | write()
      +                            v     |
      +
      +
      + +
    • + + +
    • +
      + +
      + +
      +

      Stream management

      + +
      + +
    • + + +
    • +
      + +
      + +
      + +
      + +
      +var Stream  = require('./stream').Stream;
      + +
    • + + +
    • +
      + +
      + +
      +

      Initialization:

      + +
      + +
      Connection.prototype._initializeStreamManagement = function _initializeStreamManagement(firstStreamId) {
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • streams are stored in two data structures:
          +
        • _streamIds is an id -> stream map of the streams that are allowed to receive frames.
        • +
        • _streamPriorities is a priority -> [stream] map of stream that allowed to send frames.
        • +
        +
      • +
      + +
      + +
        this._streamIds = [];
      +  this._streamPriorities = [];
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • The next outbound stream ID and the last inbound stream id
      • +
      + +
      + +
        this._nextStreamId = firstStreamId;
      +  this._lastIncomingStream = 0;
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • Calling _writeControlFrame when there’s an incoming stream with 0 as stream ID
      • +
      + +
      + +
        this._streamIds[0] = { upstream: { write: this._writeControlFrame.bind(this) } };
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • By default, the number of concurrent outbound streams is not limited. The _streamLimit can +be set by the SETTINGS_MAX_CONCURRENT_STREAMS setting.
      • +
      + +
      + +
        this._streamSlotsFree = Infinity;
      +  this._streamLimit = Infinity;
      +  this.on('RECEIVING_SETTINGS_MAX_CONCURRENT_STREAMS', this._updateStreamLimit);
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      _writeControlFrame is called when there’s an incoming frame in the _control stream. It +broadcasts the message by creating an event on it.

      + +
      + +
      Connection.prototype._writeControlFrame = function _writeControlFrame(frame) {
      +  if ((frame.type === 'SETTINGS') || (frame.type === 'PING') ||
      +      (frame.type === 'GOAWAY') || (frame.type === 'WINDOW_UPDATE') ||
      +      (frame.type === 'ALTSVC')) {
      +    this._log.debug({ frame: frame }, 'Receiving connection level frame');
      +    this.emit(frame.type, frame);
      +  } else {
      +    this._log.error({ frame: frame }, 'Invalid connection level frame');
      +    this.emit('error', 'PROTOCOL_ERROR');
      +  }
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      Methods to manage the stream slot pool:

      + +
      + +
      Connection.prototype._updateStreamLimit = function _updateStreamLimit(newStreamLimit) {
      +  var wakeup = (this._streamSlotsFree === 0) && (newStreamLimit > this._streamLimit);
      +  this._streamSlotsFree += newStreamLimit - this._streamLimit;
      +  this._streamLimit = newStreamLimit;
      +  if (wakeup) {
      +    this.emit('wakeup');
      +  }
      +};
      +
      +Connection.prototype._changeStreamCount = function _changeStreamCount(change) {
      +  if (change) {
      +    this._log.trace({ free: this._streamSlotsFree, change: change },
      +                    'Changing active stream count.');
      +    var wakeup = (this._streamSlotsFree === 0) && (change < 0);
      +    this._streamSlotsFree -= change;
      +    if (wakeup) {
      +      this.emit('wakeup');
      +    }
      +  }
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      Creating a new inbound or outbound stream with the given id (which is undefined in case of +an outbound stream) consists of three steps:

      +
        +
      1. var stream = new Stream(this._log, this);
      2. +
      3. this._allocateId(stream, id);
      4. +
      5. this._allocatePriority(stream);
      6. +
      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      Allocating an ID to a stream

      + +
      + +
      Connection.prototype._allocateId = function _allocateId(stream, id) {
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • initiated stream without definite ID
      • +
      + +
      + +
        if (id === undefined) {
      +    id = this._nextStreamId;
      +    this._nextStreamId += 2;
      +  }
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • incoming stream with a legitim ID (larger than any previous and different parity than ours)
      • +
      + +
      + +
        else if ((id > this._lastIncomingStream) && ((id - this._nextStreamId) % 2 !== 0)) {
      +    this._lastIncomingStream = id;
      +  }
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • incoming stream with invalid ID
      • +
      + +
      + +
        else {
      +    this._log.error({ stream_id: id, lastIncomingStream: this._lastIncomingStream },
      +                    'Invalid incoming stream ID.');
      +    this.emit('error', 'PROTOCOL_ERROR');
      +    return undefined;
      +  }
      +
      +  assert(!(id in this._streamIds));
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • adding to this._streamIds
      • +
      + +
      + +
        this._log.trace({ s: stream, stream_id: id }, 'Allocating ID for stream.');
      +  this._streamIds[id] = stream;
      +  stream.id = id;
      +  this.emit('new_stream', stream, id);
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • forwarding connection errors from streams
      • +
      + +
      + +
        stream.on('connectionError', this.emit.bind(this, 'error'));
      +
      +  return id;
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      Allocating a priority to a stream, and managing priority changes

      + +
      + +
      Connection.prototype._allocatePriority = function _allocatePriority(stream) {
      +  this._log.trace({ s: stream }, 'Allocating priority for stream.');
      +  this._insert(stream, stream._priority);
      +  stream.on('priority', this._reprioritize.bind(this, stream));
      +  stream.upstream.on('readable', this.emit.bind(this, 'wakeup'));
      +  this.emit('wakeup');
      +};
      +
      +Connection.prototype._insert = function _insert(stream, priority) {
      +  if (priority in this._streamPriorities) {
      +    this._streamPriorities[priority].push(stream);
      +  } else {
      +    this._streamPriorities[priority] = [stream];
      +  }
      +};
      +
      +Connection.prototype._reprioritize = function _reprioritize(stream, priority) {
      +  var bucket = this._streamPriorities[stream._priority];
      +  var index = bucket.indexOf(stream);
      +  assert(index !== -1);
      +  bucket.splice(index, 1);
      +  if (bucket.length === 0) {
      +    delete this._streamPriorities[stream._priority];
      +  }
      +
      +  this._insert(stream, priority);
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      Creating an inbound stream with the given ID. It is called when there’s an incoming frame to +a previously nonexistent stream.

      + +
      + +
      Connection.prototype._createIncomingStream = function _createIncomingStream(id) {
      +  this._log.debug({ stream_id: id }, 'New incoming stream.');
      +
      +  var stream = new Stream(this._log, this);
      +  this._allocateId(stream, id);
      +  this._allocatePriority(stream);
      +  this.emit('stream', stream, id);
      +
      +  return stream;
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      Creating an outbound stream

      + +
      + +
      Connection.prototype.createStream = function createStream() {
      +  this._log.trace('Creating new outbound stream.');
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • Receiving is enabled immediately, and an ID gets assigned to the stream
      • +
      + +
      + +
        var stream = new Stream(this._log, this);
      +  this._allocatePriority(stream);
      +
      +  return stream;
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      Multiplexing

      + +
      + +
    • + + +
    • +
      + +
      + +
      + +
      + +
      +Connection.prototype._initializeMultiplexing = function _initializeMultiplexing() {
      +  this.on('window_update', this.emit.bind(this, 'wakeup'));
      +  this._sendScheduled = false;
      +  this._firstFrameReceived = false;
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      The _send method is a virtual method of the Flow class that has to be implemented +by child classes. It reads frames from streams and pushes them to the output buffer.

      + +
      + +
      Connection.prototype._send = function _send(immediate) {
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • Do not do anything if the connection is already closed
      • +
      + +
      + +
        if (this._closed) {
      +    return;
      +  }
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • Collapsing multiple calls in a turn into a single deferred call
      • +
      + +
      + +
        if (immediate) {
      +    this._sendScheduled = false;
      +  } else {
      +    if (!this._sendScheduled) {
      +      this._sendScheduled = true;
      +      setImmediate(this._send.bind(this, true));
      +    }
      +    return;
      +  }
      +
      +  this._log.trace('Starting forwarding frames from streams.');
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • Looping through priority buckets in priority order.
      • +
      + +
      + +
      priority_loop:
      +  for (var priority in this._streamPriorities) {
      +    var bucket = this._streamPriorities[priority];
      +    var nextBucket = [];
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • Forwarding frames from buckets with round-robin scheduling.
          +
        1. pulling out frame
        2. +
        3. if there’s no frame, skip this stream
        4. +
        5. if forwarding this frame would make streamCount greater than streamLimit, skip +this stream
        6. +
        7. adding stream to the bucket of the next round
        8. +
        9. assigning an ID to the frame (allocating an ID to the stream if there isn’t already)
        10. +
        11. if forwarding a PUSH_PROMISE, allocate ID to the promised stream
        12. +
        13. forwarding the frame, changing streamCount as appropriate
        14. +
        15. stepping to the next stream if there’s still more frame needed in the output buffer
        16. +
        17. switching to the bucket of the next round
        18. +
        +
      • +
      + +
      + +
          while (bucket.length > 0) {
      +      for (var index = 0; index < bucket.length; index++) {
      +        var stream = bucket[index];
      +        var frame = stream.upstream.read((this._window > 0) ? this._window : -1);
      +
      +        if (!frame) {
      +          continue;
      +        } else if (frame.count_change > this._streamSlotsFree) {
      +          stream.upstream.unshift(frame);
      +          continue;
      +        }
      +
      +        nextBucket.push(stream);
      +
      +        if (frame.stream === undefined) {
      +          frame.stream = stream.id || this._allocateId(stream);
      +        }
      +
      +        if (frame.type === 'PUSH_PROMISE') {
      +          this._allocatePriority(frame.promised_stream);
      +          frame.promised_stream = this._allocateId(frame.promised_stream);
      +        }
      +
      +        this._log.trace({ s: stream, frame: frame }, 'Forwarding outgoing frame');
      +        var moreNeeded = this.push(frame);
      +        this._changeStreamCount(frame.count_change);
      +
      +        assert(moreNeeded !== null); // The frame shouldn't be unforwarded
      +        if (moreNeeded === false) {
      +          break priority_loop;
      +        }
      +      }
      +
      +      bucket = nextBucket;
      +      nextBucket = [];
      +    }
      +  }
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • if we couldn’t forward any frame, then sleep until window update, or some other wakeup event
      • +
      + +
      + +
        if (moreNeeded === undefined) {
      +    this.once('wakeup', this._send.bind(this));
      +  }
      +
      +  this._log.trace({ moreNeeded: moreNeeded }, 'Stopping forwarding frames from streams.');
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      The _receive method is another virtual method of the Flow class that has to be +implemented by child classes. It forwards the given frame to the appropriate stream:

      + +
      + +
      Connection.prototype._receive = function _receive(frame, done) {
      +  this._log.trace({ frame: frame }, 'Forwarding incoming frame');
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • first frame needs to be checked by the _onFirstFrameReceived method
      • +
      + +
      + +
        if (!this._firstFrameReceived) {
      +    this._firstFrameReceived = true;
      +    this._onFirstFrameReceived(frame);
      +  }
      + +
    • + + +
    • +
      + +
      + +
      +

      Do some sanity checking here before we create a stream

      + +
      + +
        if ((frame.type == 'SETTINGS' ||
      +       frame.type == 'PING' ||
      +       frame.type == 'GOAWAY') &&
      +      frame.stream != 0) {
      + +
    • + + +
    • +
      + +
      + +
      +

      Got connection-level frame on a stream - EEP!

      + +
      + +
          this.close('PROTOCOL_ERROR');
      +    return;
      +  } else if ((frame.type == 'DATA' ||
      +              frame.type == 'HEADERS' ||
      +              frame.type == 'PRIORITY' ||
      +              frame.type == 'RST_STREAM' ||
      +              frame.type == 'PUSH_PROMISE' ||
      +              frame.type == 'CONTINUATION') &&
      +             frame.stream == 0) {
      + +
    • + + +
    • +
      + +
      + +
      +

      Got stream-level frame on connection - EEP!

      + +
      + +
          this.close('PROTOCOL_ERROR');
      +    return;
      +  }
      + +
    • + + +
    • +
      + +
      + +
      +

      WINDOW_UPDATE can be on either stream or connection

      + +
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • gets the appropriate stream from the stream registry
      • +
      + +
      + +
        var stream = this._streamIds[frame.stream];
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • or creates one if it’s not in this.streams
      • +
      + +
      + +
        if (!stream) {
      +    stream = this._createIncomingStream(frame.stream);
      +  }
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • in case of PUSH_PROMISE, replaces the promised stream id with a new incoming stream
      • +
      + +
      + +
        if (frame.type === 'PUSH_PROMISE') {
      +    frame.promised_stream = this._createIncomingStream(frame.promised_stream);
      +  }
      +
      +  frame.count_change = this._changeStreamCount.bind(this);
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • and writes it to the stream‘s upstream
      • +
      + +
      + +
        stream.upstream.write(frame);
      +
      +  done();
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      Settings management

      + +
      + +
    • + + +
    • +
      + +
      + +
      + +
      + +
      +var defaultSettings = {
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      Settings management initialization:

      + +
      + +
      Connection.prototype._initializeSettingsManagement = function _initializeSettingsManagement(settings) {
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • Setting up the callback queue for setting acknowledgements
      • +
      + +
      + +
        this._settingsAckCallbacks = [];
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • Sending the initial settings.
      • +
      + +
      + +
        this._log.debug({ settings: settings },
      +                  'Sending the first SETTINGS frame as part of the connection header.');
      +  this.set(settings || defaultSettings);
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • Forwarding SETTINGS frames to the _receiveSettings method
      • +
      + +
      + +
        this.on('SETTINGS', this._receiveSettings);
      +  this.on('RECEIVING_SETTINGS_MAX_FRAME_SIZE', this._sanityCheckMaxFrameSize);
      +};
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • Checking that the first frame the other endpoint sends is SETTINGS
      • +
      + +
      + +
      Connection.prototype._onFirstFrameReceived = function _onFirstFrameReceived(frame) {
      +  if ((frame.stream === 0) && (frame.type === 'SETTINGS')) {
      +    this._log.debug('Receiving the first SETTINGS frame as part of the connection header.');
      +  } else {
      +    this._log.fatal({ frame: frame }, 'Invalid connection header: first frame is not SETTINGS.');
      +    this.emit('error', 'PROTOCOL_ERROR');
      +  }
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      Handling of incoming SETTINGS frames.

      + +
      + +
      Connection.prototype._receiveSettings = function _receiveSettings(frame) {
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • If it’s an ACK, call the appropriate callback
      • +
      + +
      + +
        if (frame.flags.ACK) {
      +    var callback = this._settingsAckCallbacks.shift();
      +    if (callback) {
      +      callback();
      +    }
      +  }
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • If it’s a setting change request, then send an ACK and change the appropriate settings
      • +
      + +
      + +
        else {
      +    if (!this._closed) {
      +      this.push({
      +        type: 'SETTINGS',
      +        flags: { ACK: true },
      +        stream: 0,
      +        settings: {}
      +      });
      +    }
      +    for (var name in frame.settings) {
      +      this.emit('RECEIVING_' + name, frame.settings[name]);
      +    }
      +  }
      +};
      +
      +Connection.prototype._sanityCheckMaxFrameSize = function _sanityCheckMaxFrameSize(value) {
      +  if ((value < 0x4000) || (value >= 0x01000000)) {
      +    this._log.fatal('Received invalid value for max frame size: ' + value);
      +    this.emit('error');
      +  }
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      Changing one or more settings value and sending out a SETTINGS frame

      + +
      + +
      Connection.prototype.set = function set(settings, callback) {
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • Calling the callback and emitting event when the change is acknowledges
      • +
      + +
      + +
        var self = this;
      +  this._settingsAckCallbacks.push(function() {
      +    for (var name in settings) {
      +      self.emit('ACKNOWLEDGED_' + name, settings[name]);
      +    }
      +    if (callback) {
      +      callback();
      +    }
      +  });
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • Sending out the SETTINGS frame
      • +
      + +
      + +
        this.push({
      +    type: 'SETTINGS',
      +    flags: { ACK: false },
      +    stream: 0,
      +    settings: settings
      +  });
      +  for (var name in settings) {
      +    this.emit('SENDING_' + name, settings[name]);
      +  }
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      Lifecycle management

      + +
      + +
    • + + +
    • +
      + +
      + +
      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      The main responsibilities of lifecycle management code:

      +
        +
      • keeping the connection alive by
          +
        • sending PINGs when the connection is idle
        • +
        • answering PINGs
        • +
        +
      • +
      • ending the connection
      • +
      + +
      + +
      +Connection.prototype._initializeLifecycleManagement = function _initializeLifecycleManagement() {
      +  this._pings = {};
      +  this.on('PING', this._receivePing);
      +  this.on('GOAWAY', this._receiveGoaway);
      +  this._closed = false;
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      Generating a string of length 16 with random hexadecimal digits

      + +
      + +
      Connection.prototype._generatePingId = function _generatePingId() {
      +  do {
      +    var id = '';
      +    for (var i = 0; i < 16; i++) {
      +      id += Math.floor(Math.random()*16).toString(16);
      +    }
      +  } while(id in this._pings);
      +  return id;
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      Sending a ping and calling callback when the answer arrives

      + +
      + +
      Connection.prototype.ping = function ping(callback) {
      +  var id = this._generatePingId();
      +  var data = new Buffer(id, 'hex');
      +  this._pings[id] = callback;
      +
      +  this._log.debug({ data: data }, 'Sending PING.');
      +  this.push({
      +    type: 'PING',
      +    flags: {
      +      ACK: false
      +    },
      +    stream: 0,
      +    data: data
      +  });
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      Answering pings

      + +
      + +
      Connection.prototype._receivePing = function _receivePing(frame) {
      +  if (frame.flags.ACK) {
      +    var id = frame.data.toString('hex');
      +    if (id in this._pings) {
      +      this._log.debug({ data: frame.data }, 'Receiving answer for a PING.');
      +      var callback = this._pings[id];
      +      if (callback) {
      +        callback();
      +      }
      +      delete this._pings[id];
      +    } else {
      +      this._log.warn({ data: frame.data }, 'Unsolicited PING answer.');
      +    }
      +
      +  } else {
      +    this._log.debug({ data: frame.data }, 'Answering PING.');
      +    this.push({
      +      type: 'PING',
      +      flags: {
      +        ACK: true
      +      },
      +      stream: 0,
      +      data: frame.data
      +    });
      +  }
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      Terminating the connection

      + +
      + +
      Connection.prototype.close = function close(error) {
      +  if (this._closed) {
      +    this._log.warn('Trying to close an already closed connection');
      +    return;
      +  }
      +
      +  this._log.debug({ error: error }, 'Closing the connection');
      +  this.push({
      +    type: 'GOAWAY',
      +    flags: {},
      +    stream: 0,
      +    last_stream: this._lastIncomingStream,
      +    error: error || 'NO_ERROR'
      +  });
      +  this.push(null);
      +  this._closed = true;
      +};
      +
      +Connection.prototype._receiveGoaway = function _receiveGoaway(frame) {
      +  this._log.debug({ error: frame.error }, 'Other end closed the connection');
      +  this.push(null);
      +  this._closed = true;
      +  if (frame.error !== 'NO_ERROR') {
      +    this.emit('peerError', frame.error);
      +  }
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      Flow control

      + +
      + +
    • + + +
    • +
      + +
      + +
      + +
      + +
      +Connection.prototype._initializeFlowControl = function _initializeFlowControl() {
      + +
    • + + +
    • +
      + +
      + +
      +

      Handling of initial window size of individual streams.

      + +
      + +
        this._initialStreamWindowSize = INITIAL_STREAM_WINDOW_SIZE;
      +  this.on('new_stream', function(stream) {
      +    stream.upstream.setInitialWindow(this._initialStreamWindowSize);
      +  });
      +  this.on('RECEIVING_SETTINGS_INITIAL_WINDOW_SIZE', this._setInitialStreamWindowSize);
      +  this._streamIds[0].upstream.setInitialWindow = function noop() {};
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      The initial connection flow control window is 65535 bytes.

      + +
      + +
      var INITIAL_STREAM_WINDOW_SIZE = 65535;
      + +
    • + + +
    • +
      + +
      + +
      +

      A SETTINGS frame can alter the initial flow control window size for all current streams. When the +value of SETTINGS_INITIAL_WINDOW_SIZE changes, a receiver MUST adjust the window size of all +stream by calling the setInitialStreamWindowSize method. The window size has to be modified by +the difference between the new value and the old value.

      + +
      + +
      Connection.prototype._setInitialStreamWindowSize = function _setInitialStreamWindowSize(size) {
      +  if ((this._initialStreamWindowSize === Infinity) && (size !== Infinity)) {
      +    this._log.error('Trying to manipulate initial flow control window size after flow control was turned off.');
      +    this.emit('error', 'FLOW_CONTROL_ERROR');
      +  } else {
      +    this._log.debug({ size: size }, 'Changing stream initial window size.');
      +    this._initialStreamWindowSize = size;
      +    this._streamIds.forEach(function(stream) {
      +      stream.upstream.setInitialWindow(size);
      +    });
      +  }
      +};
      + +
    • + +
    +
    + + diff --git a/doc/protocol/endpoint.html b/doc/protocol/endpoint.html new file mode 100644 index 00000000..e9ca8bd8 --- /dev/null +++ b/doc/protocol/endpoint.html @@ -0,0 +1,718 @@ + + + + + The Endpoint class + + + + + +
    +
    + + + +
      + + + +
    • +
      + +
      + +
      + +
      + +
      var assert = require('assert');
      +
      +var Serializer   = require('./framer').Serializer;
      +var Deserializer = require('./framer').Deserializer;
      +var Compressor   = require('./compressor').Compressor;
      +var Decompressor = require('./compressor').Decompressor;
      +var Connection   = require('./connection').Connection;
      +var Duplex       = require('stream').Duplex;
      +var Transform    = require('stream').Transform;
      +
      +exports.Endpoint = Endpoint;
      + +
    • + + +
    • +
      + +
      + +
      +

      The Endpoint class

      + +
      + +
    • + + +
    • +
      + +
      + +
      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      Public API

      + +
      + +
    • + + +
    • +
      + +
      + +
      + +
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • new Endpoint(log, role, settings, filters): create a new Endpoint.

        +
          +
        • log: bunyan logger of the parent
        • +
        • role: ‘CLIENT’ or ‘SERVER’
        • +
        • settings: initial HTTP/2 settings
        • +
        • filters: a map of functions that filter the traffic between components (for debugging or +intentional failure injection).

          +

          Filter functions get three arguments:

          +
            +
          1. frame: the current frame
          2. +
          3. forward(frame): function that can be used to forward a frame to the next component
          4. +
          5. done(): callback to signal the end of the filter process
          6. +
          +

          Valid filter names and their position in the stack:

          +
            +
          • beforeSerialization: after compression, before serialization
          • +
          • beforeCompression: after multiplexing, before compression
          • +
          • afterDeserialization: after deserialization, before decompression
          • +
          • afterDecompression: after decompression, before multiplexing
          • +
          +
        • +
        +
      • +
      • Event: ‘stream’ (Stream): ‘stream’ event forwarded from the underlying Connection

        +
      • +
      • Event: ‘error’ (type): signals an error

        +
      • +
      • createStream(): Stream: initiate a new stream (forwarded to the underlying Connection)

        +
      • +
      • close([error]): close the connection with an error code

        +
      • +
      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      Constructor

      + +
      + +
    • + + +
    • +
      + +
      + +
      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      The process of initialization:

      + +
      + +
      function Endpoint(log, role, settings, filters) {
      +  Duplex.call(this);
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • Initializing logging infrastructure
      • +
      + +
      + +
        this._log = log.child({ component: 'endpoint', e: this });
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • First part of the handshake process: sending and receiving the client connection header +prelude.
      • +
      + +
      + +
        assert((role === 'CLIENT') || role === 'SERVER');
      +  if (role === 'CLIENT') {
      +    this._writePrelude();
      +  } else {
      +    this._readPrelude();
      +  }
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • Initialization of component. This includes the second part of the handshake process: +sending the first SETTINGS frame. This is done by the connection class right after +initialization.
      • +
      + +
      + +
        this._initializeDataFlow(role, settings, filters || {});
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • Initialization of management code.
      • +
      + +
      + +
        this._initializeManagement();
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • Initializing error handling.
      • +
      + +
      + +
        this._initializeErrorHandling();
      +}
      +Endpoint.prototype = Object.create(Duplex.prototype, { constructor: { value: Endpoint } });
      + +
    • + + +
    • +
      + +
      + +
      +

      Handshake

      + +
      + +
    • + + +
    • +
      + +
      + +
      + +
      + +
      +var CLIENT_PRELUDE = new Buffer('PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n');
      + +
    • + + +
    • +
      + +
      + +
      +

      Writing the client header is simple and synchronous.

      + +
      + +
      Endpoint.prototype._writePrelude = function _writePrelude() {
      +  this._log.debug('Sending the client connection header prelude.');
      +  this.push(CLIENT_PRELUDE);
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      The asynchronous process of reading the client header:

      + +
      + +
      Endpoint.prototype._readPrelude = function _readPrelude() {
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • progress in the header is tracker using a cursor
      • +
      + +
      + +
        var cursor = 0;
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • _write is temporarily replaced by the comparator function
      • +
      + +
      + +
        this._write = function _temporalWrite(chunk, encoding, done) {
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • which compares the stored header with the current chunk byte by byte and emits the +‘error’ event if there’s a byte that doesn’t match
      • +
      + +
      + +
          var offset = cursor;
      +    while(cursor < CLIENT_PRELUDE.length && (cursor - offset) < chunk.length) {
      +      if (CLIENT_PRELUDE[cursor] !== chunk[cursor - offset]) {
      +        this._log.fatal({ cursor: cursor, offset: offset, chunk: chunk },
      +                        'Client connection header prelude does not match.');
      +        this._error('handshake', 'PROTOCOL_ERROR');
      +        return;
      +      }
      +      cursor += 1;
      +    }
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • if the whole header is over, and there were no error then restore the original _write +and call it with the remaining part of the current chunk
      • +
      + +
      + +
          if (cursor === CLIENT_PRELUDE.length) {
      +      this._log.debug('Successfully received the client connection header prelude.');
      +      delete this._write;
      +      chunk = chunk.slice(cursor - offset);
      +      this._write(chunk, encoding, done);
      +    }
      +  };
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      Data flow

      + +
      + +
    • + + +
    • +
      + +
      + +
      + +
      + +
    • + + +
    • +
      + +
      + +
      +
      +---------------------------------------------+
      +|                                             |
      +|   +-------------------------------------+   |
      +|   | +---------+ +---------+ +---------+ |   |
      +|   | | stream1 | | stream2 | |   ...   | |   |
      +|   | +---------+ +---------+ +---------+ |   |
      +|   |             connection              |   |
      +|   +-------------------------------------+   |
      +|             |                 ^             |
      +|        pipe |                 | pipe        |
      +|             v                 |             |
      +|   +------------------+------------------+   |
      +|   |    compressor    |   decompressor   |   |
      +|   +------------------+------------------+   |
      +|             |                 ^             |
      +|        pipe |                 | pipe        |
      +|             v                 |             |
      +|   +------------------+------------------+   |
      +|   |    serializer    |   deserializer   |   |
      +|   +------------------+------------------+   |
      +|             |                 ^             |
      +|     _read() |                 | _write()    |
      +|             v                 |             |
      +|      +------------+     +-----------+       |
      +|      |output queue|     |input queue|       |
      ++------+------------+-----+-----------+-------+
      +              |                 ^
      +       read() |                 | write()
      +              v                 |
      +
      +
      + +
      +function createTransformStream(filter) {
      +  var transform = new Transform({ objectMode: true });
      +  var push = transform.push.bind(transform);
      +  transform._transform = function(frame, encoding, done) {
      +    filter(frame, push, done);
      +  };
      +  return transform;
      +}
      +
      +function pipeAndFilter(stream1, stream2, filter) {
      +  if (filter) {
      +    stream1.pipe(createTransformStream(filter)).pipe(stream2);
      +  } else {
      +    stream1.pipe(stream2);
      +  }
      +}
      +
      +Endpoint.prototype._initializeDataFlow = function _initializeDataFlow(role, settings, filters) {
      +  var firstStreamId, compressorRole, decompressorRole;
      +  if (role === 'CLIENT') {
      +    firstStreamId = 1;
      +    compressorRole = 'REQUEST';
      +    decompressorRole = 'RESPONSE';
      +  } else {
      +    firstStreamId = 2;
      +    compressorRole = 'RESPONSE';
      +    decompressorRole = 'REQUEST';
      +  }
      +
      +  this._serializer   = new Serializer(this._log);
      +  this._deserializer = new Deserializer(this._log);
      +  this._compressor   = new Compressor(this._log, compressorRole);
      +  this._decompressor = new Decompressor(this._log, decompressorRole);
      +  this._connection   = new Connection(this._log, firstStreamId, settings);
      +
      +  pipeAndFilter(this._connection, this._compressor, filters.beforeCompression);
      +  pipeAndFilter(this._compressor, this._serializer, filters.beforeSerialization);
      +  pipeAndFilter(this._deserializer, this._decompressor, filters.afterDeserialization);
      +  pipeAndFilter(this._decompressor, this._connection, filters.afterDecompression);
      +
      +  this._connection.on('ACKNOWLEDGED_SETTINGS_HEADER_TABLE_SIZE',
      +                      this._decompressor.setTableSizeLimit.bind(this._decompressor));
      +  this._connection.on('RECEIVING_SETTINGS_HEADER_TABLE_SIZE',
      +                      this._compressor.setTableSizeLimit.bind(this._compressor));
      +};
      +
      +var noread = {};
      +Endpoint.prototype._read = function _read() {
      +  this._readableState.sync = true;
      +  var moreNeeded = noread, chunk;
      +  while (moreNeeded && (chunk = this._serializer.read())) {
      +    moreNeeded = this.push(chunk);
      +  }
      +  if (moreNeeded === noread) {
      +    this._serializer.once('readable', this._read.bind(this));
      +  }
      +  this._readableState.sync = false;
      +};
      +
      +Endpoint.prototype._write = function _write(chunk, encoding, done) {
      +  this._deserializer.write(chunk, encoding, done);
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      Management

      + +
      + +
    • + + +
    • +
      + +
      + +
      + +
      + +
      +Endpoint.prototype._initializeManagement = function _initializeManagement() {
      +  this._connection.on('stream', this.emit.bind(this, 'stream'));
      +};
      +
      +Endpoint.prototype.createStream = function createStream() {
      +  return this._connection.createStream();
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      Error handling

      + +
      + +
    • + + +
    • +
      + +
      + +
      + +
      + +
      +Endpoint.prototype._initializeErrorHandling = function _initializeErrorHandling() {
      +  this._serializer.on('error', this._error.bind(this, 'serializer'));
      +  this._deserializer.on('error', this._error.bind(this, 'deserializer'));
      +  this._compressor.on('error', this._error.bind(this, 'compressor'));
      +  this._decompressor.on('error', this._error.bind(this, 'decompressor'));
      +  this._connection.on('error', this._error.bind(this, 'connection'));
      +
      +  this._connection.on('peerError', this.emit.bind(this, 'peerError'));
      +};
      +
      +Endpoint.prototype._error = function _error(component, error) {
      +  this._log.fatal({ source: component, message: error }, 'Fatal error, closing connection');
      +  this.close(error);
      +  setImmediate(this.emit.bind(this, 'error', error));
      +};
      +
      +Endpoint.prototype.close = function close(error) {
      +  this._connection.close(error);
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      Bunyan serializers

      + +
      + +
    • + + +
    • +
      + +
      + +
      + +
      + +
      +exports.serializers = {};
      +
      +var nextId = 0;
      +exports.serializers.e = function(endpoint) {
      +  if (!('id' in endpoint)) {
      +    endpoint.id = nextId;
      +    nextId += 1;
      +  }
      +  return endpoint.id;
      +};
      + +
    • + +
    +
    + + diff --git a/doc/protocol/flow.html b/doc/protocol/flow.html new file mode 100644 index 00000000..18aa5624 --- /dev/null +++ b/doc/protocol/flow.html @@ -0,0 +1,889 @@ + + + + + The Flow class + + + + + +
    +
    + + + +
      + + + +
    • +
      + +
      + +
      + +
      + +
      var assert = require('assert');
      + +
    • + + +
    • +
      + +
      + +
      +

      The Flow class

      + +
      + +
    • + + +
    • +
      + +
      + +
      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      Flow is a Duplex stream subclass which implements HTTP/2 flow control. It is designed to be +subclassed by Connection and the upstream component of Stream.

      + +
      + +
      +var Duplex  = require('stream').Duplex;
      +
      +exports.Flow = Flow;
      + +
    • + + +
    • +
      + +
      + +
      +

      Public API

      + +
      + +
    • + + +
    • +
      + +
      + +
      + +
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • Event: ‘error’ (type): signals an error

        +
      • +
      • setInitialWindow(size): the initial flow control window size can be changed any time +(as described in the standard) using this method

        +
      • +
      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      API for child classes

      + +
      + +
    • + + +
    • +
      + +
      + +
      + +
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • new Flow([flowControlId]): creating a new flow that will listen for WINDOW_UPDATES frames +with the given flowControlId (or every update frame if not given)

        +
      • +
      • _send(): called when more frames should be pushed. The child class is expected to override +this (instead of the _read method of the Duplex class).

        +
      • +
      • _receive(frame, readyCallback): called when there’s an incoming frame. The child class is +expected to override this (instead of the _write method of the Duplex class).

        +
      • +
      • push(frame): bool: schedules frame for sending.

        +

        Returns true if it needs more frames in the output queue, false if the output queue is +full, and null if did not push the frame into the output queue (instead, it pushed it into +the flow control queue).

        +
      • +
      • read(limit): frame: like the regular read, but the ‘flow control size’ (0 for non-DATA +frames, length of the payload for DATA frames) of the returned frame will be under limit. +Small exception: pass -1 as limit if the max. flow control size is 0. read(0) means the +same thing as in the original API.

        +
      • +
      • getLastQueuedFrame(): frame: returns the last frame in output buffers

        +
      • +
      • _log: the Flow class uses the _log object of the parent

        +
      • +
      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      Constructor

      + +
      + +
    • + + +
    • +
      + +
      + +
      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      When a HTTP/2.0 connection is first established, new streams are created with an initial flow +control window size of 65535 bytes.

      + +
      + +
      var INITIAL_WINDOW_SIZE = 65535;
      + +
    • + + +
    • +
      + +
      + +
      +

      flowControlId is needed if only specific WINDOW_UPDATEs should be watched.

      + +
      + +
      function Flow(flowControlId) {
      +  Duplex.call(this, { objectMode: true });
      +
      +  this._window = this._initialWindow = INITIAL_WINDOW_SIZE;
      +  this._flowControlId = flowControlId;
      +  this._queue = [];
      +  this._ended = false;
      +  this._received = 0;
      +  this._blocked = false;
      +}
      +Flow.prototype = Object.create(Duplex.prototype, { constructor: { value: Flow } });
      + +
    • + + +
    • +
      + +
      + +
      +

      Incoming frames

      + +
      + +
    • + + +
    • +
      + +
      + +
      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      _receive is called when there’s an incoming frame.

      + +
      + +
      Flow.prototype._receive = function _receive(frame, callback) {
      +  throw new Error('The _receive(frame, callback) method has to be overridden by the child class!');
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      _receive is called by _write which in turn is called by Duplex when someone write()s +to the flow. It emits the ‘receiving’ event and notifies the window size tracking code if the +incoming frame is a WINDOW_UPDATE.

      + +
      + +
      Flow.prototype._write = function _write(frame, encoding, callback) {
      +  var sentToUs = (this._flowControlId === undefined) || (frame.stream === this._flowControlId);
      +
      +  if (sentToUs && (frame.flags.END_STREAM || (frame.type === 'RST_STREAM'))) {
      +    this._ended = true;
      +  }
      +
      +  if ((frame.type === 'DATA') && (frame.data.length > 0)) {
      +    this._receive(frame, function() {
      +      this._received += frame.data.length;
      +      if (!this._restoreWindowTimer) {
      +        this._restoreWindowTimer = setImmediate(this._restoreWindow.bind(this));
      +      }
      +      callback();
      +    }.bind(this));
      +  }
      +
      +  else {
      +    this._receive(frame, callback);
      +  }
      +
      +  if (sentToUs && (frame.type === 'WINDOW_UPDATE')) {
      +    this._updateWindow(frame);
      +  }
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      _restoreWindow basically acknowledges the DATA frames received since it’s last call. It sends +a WINDOW_UPDATE that restores the flow control window of the remote end. +TODO: push this directly into the output queue. No need to wait for DATA frames in the queue.

      + +
      + +
      Flow.prototype._restoreWindow = function _restoreWindow() {
      +  delete this._restoreWindowTimer;
      +  if (!this._ended && (this._received > 0)) {
      +    this.push({
      +      type: 'WINDOW_UPDATE',
      +      flags: {},
      +      stream: this._flowControlId,
      +      window_size: this._received
      +    });
      +    this._received = 0;
      +  }
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      Outgoing frames - sending procedure

      + +
      + +
    • + + +
    • +
      + +
      + +
      + +
      + +
    • + + +
    • +
      + +
      + +
      +
                                          flow
      +           +-------------------------------------------------+
      +           |                                                 |
      +           +--------+           +---------+                  |
      +   read()  | output |  _read()  | flow    |  _send()         |
      +<----------|        |<----------| control |<-------------    |
      +           | buffer |           | buffer  |                  |
      +           +--------+           +---------+                  |
      +           | input  |                                        |
      +---------->|        |----------------------------------->    |
      +  write()  | buffer |  _write()              _receive()      |
      +           +--------+                                        |
      +           |                                                 |
      +           +-------------------------------------------------+
      +
      +
      + +
    • + + +
    • +
      + +
      + +
      +

      _send is called when more frames should be pushed to the output buffer.

      + +
      + +
      Flow.prototype._send = function _send() {
      +  throw new Error('The _send() method has to be overridden by the child class!');
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      _send is called by _read which is in turn called by Duplex when it wants to have more +items in the output queue.

      + +
      + +
      Flow.prototype._read = function _read() {
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • if the flow control queue is empty, then let the user push more frames
      • +
      + +
      + +
        if (this._queue.length === 0) {
      +    this._send();
      +  }
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • if there are items in the flow control queue, then let’s put them into the output queue (to +the extent it is possible with respect to the window size and output queue feedback)
      • +
      + +
      + +
        else if (this._window > 0) {
      +    this._blocked = false;
      +    this._readableState.sync = true; // to avoid reentrant calls
      +    do {
      +      var moreNeeded = this._push(this._queue[0]);
      +      if (moreNeeded !== null) {
      +        this._queue.shift();
      +      }
      +    } while (moreNeeded && (this._queue.length > 0));
      +    this._readableState.sync = false;
      +
      +    assert((moreNeeded == false) ||                              // * output queue is full
      +           (this._queue.length === 0) ||                         // * flow control queue is empty
      +           (!this._window && (this._queue[0].type === 'DATA'))); // * waiting for window update
      +  }
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • otherwise, come back when the flow control window is positive
      • +
      + +
      + +
        else if (!this._blocked) {
      +    this._parentPush({
      +      type: 'BLOCKED',
      +      flags: {},
      +      stream: this._flowControlId
      +    });
      +    this.once('window_update', this._read);
      +    this._blocked = true;
      +  }
      +};
      +
      +var MAX_PAYLOAD_SIZE = 4096; // Must not be greater than MAX_HTTP_PAYLOAD_SIZE which is 16383
      + +
    • + + +
    • +
      + +
      + +
      +

      read(limit) is like the read of the Readable class, but it guarantess that the ‘flow control +size’ (0 for non-DATA frames, length of the payload for DATA frames) of the returned frame will +be under limit.

      + +
      + +
      Flow.prototype.read = function read(limit) {
      +  if (limit === 0) {
      +    return Duplex.prototype.read.call(this, 0);
      +  } else if (limit === -1) {
      +    limit = 0;
      +  } else if ((limit === undefined) || (limit > MAX_PAYLOAD_SIZE)) {
      +    limit = MAX_PAYLOAD_SIZE;
      +  }
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • Looking at the first frame in the queue without pulling it out if possible.
      • +
      + +
      + +
        var frame = this._readableState.buffer[0];
      +  if (!frame && !this._readableState.ended) {
      +    this._read();
      +    frame = this._readableState.buffer[0];
      +  }
      +
      +  if (frame && (frame.type === 'DATA')) {
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • If the frame is DATA, then there’s two special cases:
          +
        • if the limit is 0, we shouldn’t return anything
        • +
        • if the size of the frame is larger than limit, then the frame should be split
        • +
        +
      • +
      + +
      + +
          if (limit === 0) {
      +      return Duplex.prototype.read.call(this, 0);
      +    }
      +
      +    else if (frame.data.length > limit) {
      +      this._log.trace({ frame: frame, size: frame.data.length, forwardable: limit },
      +        'Splitting out forwardable part of a DATA frame.');
      +      this.unshift({
      +        type: 'DATA',
      +        flags: {},
      +        stream: frame.stream,
      +        data: frame.data.slice(0, limit)
      +      });
      +      frame.data = frame.data.slice(limit);
      +    }
      +  }
      +
      +  return Duplex.prototype.read.call(this);
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      _parentPush pushes the given frame into the output queue

      + +
      + +
      Flow.prototype._parentPush = function _parentPush(frame) {
      +  this._log.trace({ frame: frame }, 'Pushing frame into the output queue');
      +
      +  if (frame && (frame.type === 'DATA') && (this._window !== Infinity)) {
      +    this._log.trace({ window: this._window, by: frame.data.length },
      +                    'Decreasing flow control window size.');
      +    this._window -= frame.data.length;
      +    assert(this._window >= 0);
      +  }
      +
      +  return Duplex.prototype.push.call(this, frame);
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      _push(frame) pushes frame into the output queue and decreases the flow control window size. +It is capable of splitting DATA frames into smaller parts, if the window size is not enough to +push the whole frame. The return value is similar to push except that it returns null if it +did not push the whole frame to the output queue (but maybe it did push part of the frame).

      + +
      + +
      Flow.prototype._push = function _push(frame) {
      +  var data = frame && (frame.type === 'DATA') && frame.data;
      +
      +  if (!data || (data.length <= this._window)) {
      +    return this._parentPush(frame);
      +  }
      +
      +  else if (this._window <= 0) {
      +    return null;
      +  }
      +
      +  else {
      +    this._log.trace({ frame: frame, size: frame.data.length, forwardable: this._window },
      +                    'Splitting out forwardable part of a DATA frame.');
      +    frame.data = data.slice(this._window);
      +    this._parentPush({
      +      type: 'DATA',
      +      flags: {},
      +      stream: frame.stream,
      +      data: data.slice(0, this._window)
      +    });
      +    return null;
      +  }
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      Push frame into the flow control queue, or if it’s empty, then directly into the output queue

      + +
      + +
      Flow.prototype.push = function push(frame) {
      +  if (frame === null) {
      +    this._log.debug('Enqueueing outgoing End Of Stream');
      +  } else {
      +    this._log.debug({ frame: frame }, 'Enqueueing outgoing frame');
      +  }
      +
      +  var moreNeeded = null;
      +  if (this._queue.length === 0) {
      +    moreNeeded = this._push(frame);
      +  }
      +
      +  if (moreNeeded === null) {
      +    this._queue.push(frame);
      +  }
      +
      +  return moreNeeded;
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      getLastQueuedFrame returns the last frame in output buffers. This is primarily used by the +Stream class to mark the last frame with END_STREAM flag.

      + +
      + +
      Flow.prototype.getLastQueuedFrame = function getLastQueuedFrame() {
      +  var readableQueue = this._readableState.buffer;
      +  return this._queue[this._queue.length - 1] || readableQueue[readableQueue.length - 1];
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      Outgoing frames - managing the window size

      + +
      + +
    • + + +
    • +
      + +
      + +
      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      Flow control window size is manipulated using the _increaseWindow method.

      +
        +
      • Invoking it with Infinite means turning off flow control. Flow control cannot be enabled +again once disabled. Any attempt to re-enable flow control MUST be rejected with a +FLOW_CONTROL_ERROR error code.
      • +
      • A sender MUST NOT allow a flow control window to exceed 2^31 - 1 bytes. The action taken +depends on it being a stream or the connection itself.
      • +
      + +
      + +
      +var WINDOW_SIZE_LIMIT = Math.pow(2, 31) - 1;
      +
      +Flow.prototype._increaseWindow = function _increaseWindow(size) {
      +  if ((this._window === Infinity) && (size !== Infinity)) {
      +    this._log.error('Trying to increase flow control window after flow control was turned off.');
      +    this.emit('error', 'FLOW_CONTROL_ERROR');
      +  } else {
      +    this._log.trace({ window: this._window, by: size }, 'Increasing flow control window size.');
      +    this._window += size;
      +    if ((this._window !== Infinity) && (this._window > WINDOW_SIZE_LIMIT)) {
      +      this._log.error('Flow control window grew too large.');
      +      this.emit('error', 'FLOW_CONTROL_ERROR');
      +    } else {
      +      if (size != 0) {
      +        this.emit('window_update');
      +      }
      +    }
      +  }
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      The _updateWindow method gets called every time there’s an incoming WINDOW_UPDATE frame. It +modifies the flow control window:

      +
        +
      • Flow control can be disabled for an individual stream by sending a WINDOW_UPDATE with the +END_FLOW_CONTROL flag set. The payload of a WINDOW_UPDATE frame that has the END_FLOW_CONTROL +flag set is ignored.
      • +
      • A sender that receives a WINDOW_UPDATE frame updates the corresponding window by the amount +specified in the frame.
      • +
      + +
      + +
      Flow.prototype._updateWindow = function _updateWindow(frame) {
      +  this._increaseWindow(frame.flags.END_FLOW_CONTROL ? Infinity : frame.window_size);
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      A SETTINGS frame can alter the initial flow control window size for all current streams. When the +value of SETTINGS_INITIAL_WINDOW_SIZE changes, a receiver MUST adjust the size of all stream by +calling the setInitialWindow method. The window size has to be modified by the difference +between the new value and the old value.

      + +
      + +
      Flow.prototype.setInitialWindow = function setInitialWindow(initialWindow) {
      +  this._increaseWindow(initialWindow - this._initialWindow);
      +  this._initialWindow = initialWindow;
      +};
      + +
    • + +
    +
    + + diff --git a/doc/protocol/framer.html b/doc/protocol/framer.html new file mode 100644 index 00000000..773b267d --- /dev/null +++ b/doc/protocol/framer.html @@ -0,0 +1,2196 @@ + + + + + framer.js + + + + + +
    +
    + + + +
      + +
    • +
      +

      framer.js

      +
      +
    • + + + +
    • +
      + +
      + +
      +

      The framer consists of two Transform Stream subclasses that operate in object mode: +the Serializer and the Deserializer

      + +
      + +
      var assert = require('assert');
      +
      +var Transform = require('stream').Transform;
      +
      +exports.Serializer = Serializer;
      +exports.Deserializer = Deserializer;
      +
      +var logData = Boolean(process.env.HTTP2_LOG_DATA);
      +
      +var MAX_PAYLOAD_SIZE = 16384;
      +var WINDOW_UPDATE_PAYLOAD_SIZE = 4;
      + +
    • + + +
    • +
      + +
      + +
      +

      Serializer

      + +
      + +
    • + + +
    • +
      + +
      + +
      +
      Frame Objects
      +* * * * * * * --+---------------------------
      +                |                          |
      +                v                          v           Buffers
      + [] -----> Payload Ser. --[buffers]--> Header Ser. --> * * * *
      +empty      adds payload                adds header
      +array        buffers                     buffer
      +
      +
      + +
      +function Serializer(log) {
      +  this._log = log.child({ component: 'serializer' });
      +  Transform.call(this, { objectMode: true });
      +}
      +Serializer.prototype = Object.create(Transform.prototype, { constructor: { value: Serializer } });
      + +
    • + + +
    • +
      + +
      + +
      +

      When there’s an incoming frame object, it first generates the frame type specific part of the +frame (payload), and then then adds the header part which holds fields that are common to all +frame types (like the length of the payload).

      + +
      + +
      Serializer.prototype._transform = function _transform(frame, encoding, done) {
      +  this._log.trace({ frame: frame }, 'Outgoing frame');
      +
      +  assert(frame.type in Serializer, 'Unknown frame type: ' + frame.type);
      +
      +  var buffers = [];
      +  Serializer[frame.type](frame, buffers);
      +  var length = Serializer.commonHeader(frame, buffers);
      +
      +  assert(length <= MAX_PAYLOAD_SIZE, 'Frame too large!');
      +
      +  for (var i = 0; i < buffers.length; i++) {
      +    if (logData) {
      +      this._log.trace({ data: buffers[i] }, 'Outgoing data');
      +    }
      +    this.push(buffers[i]);
      +  }
      +
      +  done();
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      Deserializer

      + +
      + +
    • + + +
    • +
      + +
      + +
      +
      Buffers
      +* * * * --------+-------------------------
      +                |                        |
      +                v                        v           Frame Objects
      + {} -----> Header Des. --{frame}--> Payload Des. --> * * * * * * *
      +empty      adds parsed              adds parsed
      +object  header properties        payload properties
      +
      +
      + +
      +function Deserializer(log, role) {
      +  this._role = role;
      +  this._log = log.child({ component: 'deserializer' });
      +  Transform.call(this, { objectMode: true });
      +  this._next(COMMON_HEADER_SIZE);
      +}
      +Deserializer.prototype = Object.create(Transform.prototype, { constructor: { value: Deserializer } });
      + +
    • + + +
    • +
      + +
      + +
      +

      The Deserializer is stateful, and it’s two main alternating states are: waiting for header and +waiting for payload. The state is stored in the boolean property _waitingForHeader.

      +

      When entering a new state, a _buffer is created that will hold the accumulated data (header or +payload). The _cursor is used to track the progress.

      + +
      + +
      Deserializer.prototype._next = function(size) {
      +  this._cursor = 0;
      +  this._buffer = new Buffer(size);
      +  this._waitingForHeader = !this._waitingForHeader;
      +  if (this._waitingForHeader) {
      +    this._frame = {};
      +  }
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      Parsing an incoming buffer is an iterative process because it can hold multiple frames if it’s +large enough. A cursor is used to track the progress in parsing the incoming chunk.

      + +
      + +
      Deserializer.prototype._transform = function _transform(chunk, encoding, done) {
      +  var cursor = 0;
      +
      +  if (logData) {
      +    this._log.trace({ data: chunk }, 'Incoming data');
      +  }
      +
      +  while(cursor < chunk.length) {
      + +
    • + + +
    • +
      + +
      + +
      +

      The content of an incoming buffer is first copied to _buffer. If it can’t hold the full +chunk, then only a part of it is copied.

      + +
      + +
          var toCopy = Math.min(chunk.length - cursor, this._buffer.length - this._cursor);
      +    chunk.copy(this._buffer, this._cursor, cursor, cursor + toCopy);
      +    this._cursor += toCopy;
      +    cursor += toCopy;
      + +
    • + + +
    • +
      + +
      + +
      +

      When _buffer is full, it’s content gets parsed either as header or payload depending on +the actual state.

      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      If it’s header then the parsed data is stored in a temporary variable and then the +deserializer waits for the specified length payload.

      + +
      + +
          if ((this._cursor === this._buffer.length) && this._waitingForHeader) {
      +      var payloadSize = Deserializer.commonHeader(this._buffer, this._frame);
      +      if (payloadSize <= MAX_PAYLOAD_SIZE) {
      +        this._next(payloadSize);
      +      } else {
      +        this.emit('error', 'FRAME_SIZE_ERROR');
      +        return;
      +      }
      +    }
      + +
    • + + +
    • +
      + +
      + +
      +

      If it’s payload then the the frame object is finalized and then gets pushed out. +Unknown frame types are ignored.

      +

      Note: If we just finished the parsing of a header and the payload length is 0, this branch +will also run.

      + +
      + +
          if ((this._cursor === this._buffer.length) && !this._waitingForHeader) {
      +      if (this._frame.type) {
      +        var error = Deserializer[this._frame.type](this._buffer, this._frame, this._role);
      +        if (error) {
      +          this._log.error('Incoming frame parsing error: ' + error);
      +          this.emit('error', error);
      +        } else {
      +          this._log.trace({ frame: this._frame }, 'Incoming frame');
      +          this.push(this._frame);
      +        }
      +      } else {
      +        this._log.error('Unknown type incoming frame');
      + +
    • + + +
    • +
      + +
      + +
      +

      Ignore it other than logging

      + +
      + +
            }
      +      this._next(COMMON_HEADER_SIZE);
      +    }
      +  }
      +
      +  done();
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      Frame Header

      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      HTTP/2 frames share a common base format consisting of a 9-byte header followed by 0 to 2^24 - 1 +bytes of data.

      +

      Additional size limits can be set by specific application uses. HTTP limits the frame size to +16,384 octets by default, though this can be increased by a receiver.

      +
       0                   1                   2                   3
      + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      +|                 Length (24)                   |
      ++---------------+---------------+---------------+
      +|   Type (8)    |   Flags (8)   |
      ++-+-----------------------------+---------------+---------------+
      +|R|                 Stream Identifier (31)                      |
      ++-+-------------------------------------------------------------+
      +|                     Frame Data (0...)                       ...
      ++---------------------------------------------------------------+
      +

      The fields of the frame header are defined as:

      +
        +
      • Length: +The length of the frame data expressed as an unsigned 24-bit integer. The 9 bytes of the frame +header are not included in this value.

        +
      • +
      • Type: +The 8-bit type of the frame. The frame type determines how the remainder of the frame header +and data are interpreted. Implementations MUST ignore unsupported and unrecognized frame types.

        +
      • +
      • Flags: +An 8-bit field reserved for frame-type specific boolean flags.

        +

        Flags are assigned semantics specific to the indicated frame type. Flags that have no defined +semantics for a particular frame type MUST be ignored, and MUST be left unset (0) when sending.

        +
      • +
      • R: +A reserved 1-bit field. The semantics of this bit are undefined and the bit MUST remain unset +(0) when sending and MUST be ignored when receiving.

        +
      • +
      • Stream Identifier: +A 31-bit stream identifier. The value 0 is reserved for frames that are associated with the +connection as a whole as opposed to an individual stream.

        +
      • +
      +

      The structure and content of the remaining frame data is dependent entirely on the frame type.

      + +
      + +
      +var COMMON_HEADER_SIZE = 9;
      +
      +var frameTypes = [];
      +
      +var frameFlags = {};
      +
      +var genericAttributes = ['type', 'flags', 'stream'];
      +
      +var typeSpecificAttributes = {};
      +
      +Serializer.commonHeader = function writeCommonHeader(frame, buffers) {
      +  var headerBuffer = new Buffer(COMMON_HEADER_SIZE);
      +
      +  var size = 0;
      +  for (var i = 0; i < buffers.length; i++) {
      +    size += buffers[i].length;
      +  }
      +  headerBuffer.writeUInt8(0, 0);
      +  headerBuffer.writeUInt16BE(size, 1);
      +
      +  var typeId = frameTypes.indexOf(frame.type);  // If we are here then the type is valid for sure
      +  headerBuffer.writeUInt8(typeId, 3);
      +
      +  var flagByte = 0;
      +  for (var flag in frame.flags) {
      +    var position = frameFlags[frame.type].indexOf(flag);
      +    assert(position !== -1, 'Unknown flag for frame type ' + frame.type + ': ' + flag);
      +    if (frame.flags[flag]) {
      +      flagByte |= (1 << position);
      +    }
      +  }
      +  headerBuffer.writeUInt8(flagByte, 4);
      +
      +  assert((0 <= frame.stream) && (frame.stream < 0x7fffffff), frame.stream);
      +  headerBuffer.writeUInt32BE(frame.stream || 0, 5);
      +
      +  buffers.unshift(headerBuffer);
      +
      +  return size;
      +};
      +
      +Deserializer.commonHeader = function readCommonHeader(buffer, frame) {
      +  if (buffer.length < 9) {
      +    return 'FRAME_SIZE_ERROR';
      +  }
      +
      +  var totallyWastedByte = buffer.readUInt8(0);
      +  var length = buffer.readUInt16BE(1);
      + +
    • + + +
    • +
      + +
      + +
      +

      We do this just for sanity checking later on, to make sure no one sent us a +frame that’s super large.

      + +
      + +
        length += totallyWastedByte << 16;
      +
      +  frame.type = frameTypes[buffer.readUInt8(3)];
      +  if (!frame.type) {
      + +
    • + + +
    • +
      + +
      + +
      +

      We are required to ignore unknown frame types

      + +
      + +
          return length;
      +  }
      +
      +  frame.flags = {};
      +  var flagByte = buffer.readUInt8(4);
      +  var definedFlags = frameFlags[frame.type];
      +  for (var i = 0; i < definedFlags.length; i++) {
      +    frame.flags[definedFlags[i]] = Boolean(flagByte & (1 << i));
      +  }
      +
      +  frame.stream = buffer.readUInt32BE(5) & 0x7fffffff;
      +
      +  return length;
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      Frame types

      + +
      + +
    • + + +
    • +
      + +
      + +
      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      Every frame type is registered in the following places:

      +
        +
      • frameTypes: a register of frame type codes (used by commonHeader())
      • +
      • frameFlags: a register of valid flags for frame types (used by commonHeader())
      • +
      • typeSpecificAttributes: a register of frame specific frame object attributes (used by +logging code and also serves as documentation for frame objects)
      • +
      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      DATA Frames

      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      DATA frames (type=0x0) convey arbitrary, variable-length sequences of octets associated with a +stream.

      +

      The DATA frame defines the following flags:

      +
        +
      • END_STREAM (0x1): +Bit 1 being set indicates that this frame is the last that the endpoint will send for the +identified stream.
      • +
      • PADDED (0x08): +Bit 4 being set indicates that the Pad Length field is present.
      • +
      + +
      + +
      +frameTypes[0x0] = 'DATA';
      +
      +frameFlags.DATA = ['END_STREAM', 'RESERVED2', 'RESERVED4', 'PADDED'];
      +
      +typeSpecificAttributes.DATA = ['data'];
      +
      +Serializer.DATA = function writeData(frame, buffers) {
      +  buffers.push(frame.data);
      +};
      +
      +Deserializer.DATA = function readData(buffer, frame) {
      +  var dataOffset = 0;
      +  var paddingLength = 0;
      +  if (frame.flags.PADDED) {
      +    if (buffer.length < 1) {
      + +
    • + + +
    • +
      + +
      + +
      +

      We must have at least one byte for padding control, but we don’t. Bad peer!

      + +
      + +
            return 'FRAME_SIZE_ERROR';
      +    }
      +    paddingLength = (buffer.readUInt8(dataOffset) & 0xff);
      +    dataOffset = 1;
      +  }
      +
      +  if (paddingLength) {
      +    if (paddingLength >= (buffer.length - 1)) {
      + +
    • + + +
    • +
      + +
      + +
      +

      We don’t have enough room for the padding advertised - bad peer!

      + +
      + +
            return 'FRAME_SIZE_ERROR';
      +    }
      +    frame.data = buffer.slice(dataOffset, -1 * paddingLength);
      +  } else {
      +    frame.data = buffer.slice(dataOffset);
      +  }
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      HEADERS

      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      The HEADERS frame (type=0x1) allows the sender to create a stream.

      +

      The HEADERS frame defines the following flags:

      +
        +
      • END_STREAM (0x1): +Bit 1 being set indicates that this frame is the last that the endpoint will send for the +identified stream.
      • +
      • END_HEADERS (0x4): +The END_HEADERS bit indicates that this frame contains the entire payload necessary to provide +a complete set of headers.
      • +
      • PADDED (0x08): +Bit 4 being set indicates that the Pad Length field is present.
      • +
      • PRIORITY (0x20): +Bit 6 being set indicates that the Exlusive Flag (E), Stream Dependency, and Weight fields are +present.
      • +
      + +
      + +
      +frameTypes[0x1] = 'HEADERS';
      +
      +frameFlags.HEADERS = ['END_STREAM', 'RESERVED2', 'END_HEADERS', 'PADDED', 'RESERVED5', 'PRIORITY'];
      +
      +typeSpecificAttributes.HEADERS = ['priorityDependency', 'priorityWeight', 'exclusiveDependency', 'headers', 'data'];
      + +
    • + + +
    • +
      + +
      + +
      +
       0                   1                   2                   3
      + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      +|Pad Length? (8)|
      ++-+-------------+---------------+-------------------------------+
      +|E|                 Stream Dependency? (31)                     |
      ++-+-------------+-----------------------------------------------+
      +|  Weight? (8)  |
      ++-+-------------+-----------------------------------------------+
      +|                   Header Block Fragment (*)                 ...
      ++---------------------------------------------------------------+
      +|                           Padding (*)                       ...
      ++---------------------------------------------------------------+
      +

      The payload of a HEADERS frame contains a Headers Block

      + +
      + +
      +Serializer.HEADERS = function writeHeadersPriority(frame, buffers) {
      +  if (frame.flags.PRIORITY) {
      +    var buffer = new Buffer(5);
      +    assert((0 <= frame.priorityDependency) && (frame.priorityDependency <= 0x7fffffff), frame.priorityDependency);
      +    buffer.writeUInt32BE(frame.priorityDependency, 0);
      +    if (frame.exclusiveDependency) {
      +      buffer[0] |= 0x80;
      +    }
      +    assert((0 <= frame.priorityWeight) && (frame.priorityWeight <= 0xff), frame.priorityWeight);
      +    buffer.writeUInt8(frame.priorityWeight, 4);
      +    buffers.push(buffer);
      +  }
      +  buffers.push(frame.data);
      +};
      +
      +Deserializer.HEADERS = function readHeadersPriority(buffer, frame) {
      +  var minFrameLength = 0;
      +  if (frame.flags.PADDED) {
      +    minFrameLength += 1;
      +  }
      +  if (frame.flags.PRIORITY) {
      +    minFrameLength += 5;
      +  }
      +  if (buffer.length < minFrameLength) {
      + +
    • + + +
    • +
      + +
      + +
      +

      Peer didn’t send enough data - bad peer!

      + +
      + +
          return 'FRAME_SIZE_ERROR';
      +  }
      +
      +  var dataOffset = 0;
      +  var paddingLength = 0;
      +  if (frame.flags.PADDED) {
      +    paddingLength = (buffer.readUInt8(dataOffset) & 0xff);
      +    dataOffset = 1;
      +  }
      +
      +  if (frame.flags.PRIORITY) {
      +    var dependencyData = new Buffer(4);
      +    buffer.copy(dependencyData, 0, dataOffset, dataOffset + 4);
      +    dataOffset += 4;
      +    frame.exclusiveDependency = !!(dependencyData[0] & 0x80);
      +    dependencyData[0] &= 0x7f;
      +    frame.priorityDependency = dependencyData.readUInt32BE(0);
      +    frame.priorityWeight = buffer.readUInt8(dataOffset);
      +    dataOffset += 1;
      +  }
      +
      +  if (paddingLength) {
      +    if ((buffer.length - dataOffset) < paddingLength) {
      + +
    • + + +
    • +
      + +
      + +
      +

      Not enough data left to satisfy the advertised padding - bad peer!

      + +
      + +
            return 'FRAME_SIZE_ERROR';
      +    }
      +    frame.data = buffer.slice(dataOffset, -1 * paddingLength);
      +  } else {
      +    frame.data = buffer.slice(dataOffset);
      +  }
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      PRIORITY

      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      The PRIORITY frame (type=0x2) specifies the sender-advised priority of a stream.

      +

      The PRIORITY frame does not define any flags.

      + +
      + +
      +frameTypes[0x2] = 'PRIORITY';
      +
      +frameFlags.PRIORITY = [];
      +
      +typeSpecificAttributes.PRIORITY = ['priorityDependency', 'priorityWeight', 'exclusiveDependency'];
      + +
    • + + +
    • +
      + +
      + +
      +
       0                   1                   2                   3
      + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      +|E|                 Stream Dependency? (31)                     |
      ++-+-------------+-----------------------------------------------+
      +|  Weight? (8)  |
      ++-+-------------+
      +

      The payload of a PRIORITY frame contains an exclusive bit, a 31-bit dependency, and an 8-bit weight

      + +
      + +
      +Serializer.PRIORITY = function writePriority(frame, buffers) {
      +  var buffer = new Buffer(5);
      +  assert((0 <= frame.priorityDependency) && (frame.priorityDependency <= 0x7fffffff), frame.priorityDependency);
      +  buffer.writeUInt32BE(frame.priorityDependency, 0);
      +  if (frame.exclusiveDependency) {
      +    buffer[0] |= 0x80;
      +  }
      +  assert((0 <= frame.priorityWeight) && (frame.priorityWeight <= 0xff), frame.priorityWeight);
      +  buffer.writeUInt8(frame.priorityWeight, 4);
      +
      +  buffers.push(buffer);
      +};
      +
      +Deserializer.PRIORITY = function readPriority(buffer, frame) {
      +  if (buffer.length < 5) {
      + +
    • + + +
    • +
      + +
      + +
      +

      PRIORITY frames are 5 bytes long. Bad peer!

      + +
      + +
          return 'FRAME_SIZE_ERROR';
      +  }
      +  var dependencyData = new Buffer(4);
      +  buffer.copy(dependencyData, 0, 0, 4);
      +  frame.exclusiveDependency = !!(dependencyData[0] & 0x80);
      +  dependencyData[0] &= 0x7f;
      +  frame.priorityDependency = dependencyData.readUInt32BE(0);
      +  frame.priorityWeight = buffer.readUInt8(4);
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      RST_STREAM

      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      The RST_STREAM frame (type=0x3) allows for abnormal termination of a stream.

      +

      No type-flags are defined.

      + +
      + +
      +frameTypes[0x3] = 'RST_STREAM';
      +
      +frameFlags.RST_STREAM = [];
      +
      +typeSpecificAttributes.RST_STREAM = ['error'];
      + +
    • + + +
    • +
      + +
      + +
      +
       0                   1                   2                   3
      + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      +|                         Error Code (32)                       |
      ++---------------------------------------------------------------+
      +

      The RST_STREAM frame contains a single unsigned, 32-bit integer identifying the error +code (see Error Codes). The error code indicates why the stream is being terminated.

      + +
      + +
      +Serializer.RST_STREAM = function writeRstStream(frame, buffers) {
      +  var buffer = new Buffer(4);
      +  var code = errorCodes.indexOf(frame.error);
      +  assert((0 <= code) && (code <= 0xffffffff), code);
      +  buffer.writeUInt32BE(code, 0);
      +  buffers.push(buffer);
      +};
      +
      +Deserializer.RST_STREAM = function readRstStream(buffer, frame) {
      +  if (buffer.length < 4) {
      + +
    • + + +
    • +
      + +
      + +
      +

      RST_STREAM is 4 bytes long. Bad peer!

      + +
      + +
          return 'FRAME_SIZE_ERROR';
      +  }
      +  frame.error = errorCodes[buffer.readUInt32BE(0)];
      +  if (!frame.error) {
      + +
    • + + +
    • +
      + +
      + +
      +

      Unknown error codes are considered equivalent to INTERNAL_ERROR

      + +
      + +
          frame.error = 'INTERNAL_ERROR';
      +  }
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      SETTINGS

      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      The SETTINGS frame (type=0x4) conveys configuration parameters that affect how endpoints +communicate.

      +

      The SETTINGS frame defines the following flag:

      + +
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • ACK (0x1): +Bit 1 being set indicates that this frame acknowledges receipt and application of the peer’s +SETTINGS frame.
      • +
      + +
      + +
      frameTypes[0x4] = 'SETTINGS';
      +
      +frameFlags.SETTINGS = ['ACK'];
      +
      +typeSpecificAttributes.SETTINGS = ['settings'];
      + +
    • + + +
    • +
      + +
      + +
      +

      The payload of a SETTINGS frame consists of zero or more settings. Each setting consists of a +16-bit identifier, and an unsigned 32-bit value.

      +
       0                   1                   2                   3
      + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      +|         Identifier(16)          |        Value (32)           |
      ++-----------------+---------------------------------------------+
      +...Value                          |
      ++---------------------------------+
      +

      Each setting in a SETTINGS frame replaces the existing value for that setting. Settings are +processed in the order in which they appear, and a receiver of a SETTINGS frame does not need to +maintain any state other than the current value of settings. Therefore, the value of a setting +is the last value that is seen by a receiver. This permits the inclusion of the same settings +multiple times in the same SETTINGS frame, though doing so does nothing other than waste +connection capacity.

      + +
      + +
      +Serializer.SETTINGS = function writeSettings(frame, buffers) {
      +  var settings = [], settingsLeft = Object.keys(frame.settings);
      +  definedSettings.forEach(function(setting, id) {
      +    if (setting.name in frame.settings) {
      +      settingsLeft.splice(settingsLeft.indexOf(setting.name), 1);
      +      var value = frame.settings[setting.name];
      +      settings.push({ id: id, value: setting.flag ? Boolean(value) : value });
      +    }
      +  });
      +  assert(settingsLeft.length === 0, 'Unknown settings: ' + settingsLeft.join(', '));
      +
      +  var buffer = new Buffer(settings.length * 6);
      +  for (var i = 0; i < settings.length; i++) {
      +    buffer.writeUInt16BE(settings[i].id & 0xffff, i*6);
      +    buffer.writeUInt32BE(settings[i].value, i*6 + 2);
      +  }
      +
      +  buffers.push(buffer);
      +};
      +
      +Deserializer.SETTINGS = function readSettings(buffer, frame, role) {
      +  frame.settings = {};
      + +
    • + + +
    • +
      + +
      + +
      +

      Receipt of a SETTINGS frame with the ACK flag set and a length +field value other than 0 MUST be treated as a connection error +(Section 5.4.1) of type FRAME_SIZE_ERROR.

      + +
      + +
        if(frame.flags.ACK && buffer.length != 0) {
      +    return 'FRAME_SIZE_ERROR';
      +  }
      +
      +  if (buffer.length % 6 !== 0) {
      +    return 'PROTOCOL_ERROR';
      +  }
      +  for (var i = 0; i < buffer.length / 6; i++) {
      +    var id = buffer.readUInt16BE(i*6) & 0xffff;
      +    var setting = definedSettings[id];
      +    if (setting) {
      +      if (role == 'CLIENT' && setting.name == 'SETTINGS_ENABLE_PUSH') {
      +        return 'SETTINGS frame on client got SETTINGS_ENABLE_PUSH';
      +      }
      +      var value = buffer.readUInt32BE(i*6 + 2);
      +      frame.settings[setting.name] = setting.flag ? Boolean(value & 0x1) : value;
      +    }
      +  }
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      The following settings are defined:

      + +
      + +
      var definedSettings = [];
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • SETTINGS_HEADER_TABLE_SIZE (1): +Allows the sender to inform the remote endpoint of the size of the header compression table +used to decode header blocks.
      • +
      + +
      + +
      definedSettings[1] = { name: 'SETTINGS_HEADER_TABLE_SIZE', flag: false };
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • SETTINGS_ENABLE_PUSH (2): +This setting can be use to disable server push. An endpoint MUST NOT send a PUSH_PROMISE frame +if it receives this setting set to a value of 0. The default value is 1, which indicates that +push is permitted.
      • +
      + +
      + +
      definedSettings[2] = { name: 'SETTINGS_ENABLE_PUSH', flag: true };
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • SETTINGS_MAX_CONCURRENT_STREAMS (3): +indicates the maximum number of concurrent streams that the sender will allow.
      • +
      + +
      + +
      definedSettings[3] = { name: 'SETTINGS_MAX_CONCURRENT_STREAMS', flag: false };
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • SETTINGS_INITIAL_WINDOW_SIZE (4): +indicates the sender’s initial stream window size (in bytes) for new streams.
      • +
      + +
      + +
      definedSettings[4] = { name: 'SETTINGS_INITIAL_WINDOW_SIZE', flag: false };
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • SETTINGS_MAX_FRAME_SIZE (5): +indicates the maximum size of a frame the receiver will allow.
      • +
      + +
      + +
      definedSettings[5] = { name: 'SETTINGS_MAX_FRAME_SIZE', flag: false };
      + +
    • + + +
    • +
      + +
      + +
      +

      PUSH_PROMISE

      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      The PUSH_PROMISE frame (type=0x5) is used to notify the peer endpoint in advance of streams the +sender intends to initiate.

      +

      The PUSH_PROMISE frame defines the following flags:

      +
        +
      • END_PUSH_PROMISE (0x4): +The END_PUSH_PROMISE bit indicates that this frame contains the entire payload necessary to +provide a complete set of headers.
      • +
      + +
      + +
      +frameTypes[0x5] = 'PUSH_PROMISE';
      +
      +frameFlags.PUSH_PROMISE = ['RESERVED1', 'RESERVED2', 'END_PUSH_PROMISE', 'PADDED'];
      +
      +typeSpecificAttributes.PUSH_PROMISE = ['promised_stream', 'headers', 'data'];
      + +
    • + + +
    • +
      + +
      + +
      +
       0                   1                   2                   3
      + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      +|Pad Length? (8)|
      ++-+-------------+-----------------------------------------------+
      +|X|                Promised-Stream-ID (31)                      |
      ++-+-------------------------------------------------------------+
      +|                 Header Block Fragment (*)                   ...
      ++---------------------------------------------------------------+
      +|                         Padding (*)                         ...
      ++---------------------------------------------------------------+
      +

      The PUSH_PROMISE frame includes the unsigned 31-bit identifier of +the stream the endpoint plans to create along with a minimal set of headers that provide +additional context for the stream.

      + +
      + +
      +Serializer.PUSH_PROMISE = function writePushPromise(frame, buffers) {
      +  var buffer = new Buffer(4);
      +
      +  var promised_stream = frame.promised_stream;
      +  assert((0 <= promised_stream) && (promised_stream <= 0x7fffffff), promised_stream);
      +  buffer.writeUInt32BE(promised_stream, 0);
      +
      +  buffers.push(buffer);
      +  buffers.push(frame.data);
      +};
      +
      +Deserializer.PUSH_PROMISE = function readPushPromise(buffer, frame) {
      +  if (buffer.length < 4) {
      +    return 'FRAME_SIZE_ERROR';
      +  }
      +  var dataOffset = 0;
      +  var paddingLength = 0;
      +  if (frame.flags.PADDED) {
      +    if (buffer.length < 5) {
      +      return 'FRAME_SIZE_ERROR';
      +    }
      +    paddingLength = (buffer.readUInt8(dataOffset) & 0xff);
      +    dataOffset = 1;
      +  }
      +  frame.promised_stream = buffer.readUInt32BE(dataOffset) & 0x7fffffff;
      +  dataOffset += 4;
      +  if (paddingLength) {
      +    if ((buffer.length - dataOffset) < paddingLength) {
      +      return 'FRAME_SIZE_ERROR';
      +    }
      +    frame.data = buffer.slice(dataOffset, -1 * paddingLength);
      +  } else {
      +    frame.data = buffer.slice(dataOffset);
      +  }
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      PING

      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      The PING frame (type=0x6) is a mechanism for measuring a minimal round-trip time from the +sender, as well as determining whether an idle connection is still functional.

      +

      The PING frame defines one type-specific flag:

      +
        +
      • ACK (0x1): +Bit 1 being set indicates that this PING frame is a PING response.
      • +
      + +
      + +
      +frameTypes[0x6] = 'PING';
      +
      +frameFlags.PING = ['ACK'];
      +
      +typeSpecificAttributes.PING = ['data'];
      + +
    • + + +
    • +
      + +
      + +
      +

      In addition to the frame header, PING frames MUST contain 8 additional octets of opaque data.

      + +
      + +
      +Serializer.PING = function writePing(frame, buffers) {
      +  buffers.push(frame.data);
      +};
      +
      +Deserializer.PING = function readPing(buffer, frame) {
      +  if (buffer.length !== 8) {
      +    return 'FRAME_SIZE_ERROR';
      +  }
      +  frame.data = buffer;
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      GOAWAY

      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      The GOAWAY frame (type=0x7) informs the remote peer to stop creating streams on this connection.

      +

      The GOAWAY frame does not define any flags.

      + +
      + +
      +frameTypes[0x7] = 'GOAWAY';
      +
      +frameFlags.GOAWAY = [];
      +
      +typeSpecificAttributes.GOAWAY = ['last_stream', 'error'];
      + +
    • + + +
    • +
      + +
      + +
      +
       0                   1                   2                   3
      + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      +|X|                  Last-Stream-ID (31)                        |
      ++-+-------------------------------------------------------------+
      +|                      Error Code (32)                          |
      ++---------------------------------------------------------------+
      +

      The last stream identifier in the GOAWAY frame contains the highest numbered stream identifier +for which the sender of the GOAWAY frame has received frames on and might have taken some action +on.

      +

      The GOAWAY frame also contains a 32-bit error code (see Error Codes) that contains the reason for +closing the connection.

      + +
      + +
      +Serializer.GOAWAY = function writeGoaway(frame, buffers) {
      +  var buffer = new Buffer(8);
      +
      +  var last_stream = frame.last_stream;
      +  assert((0 <= last_stream) && (last_stream <= 0x7fffffff), last_stream);
      +  buffer.writeUInt32BE(last_stream, 0);
      +
      +  var code = errorCodes.indexOf(frame.error);
      +  assert((0 <= code) && (code <= 0xffffffff), code);
      +  buffer.writeUInt32BE(code, 4);
      +
      +  buffers.push(buffer);
      +};
      +
      +Deserializer.GOAWAY = function readGoaway(buffer, frame) {
      +  if (buffer.length !== 8) {
      + +
    • + + +
    • +
      + +
      + +
      +

      GOAWAY must have 8 bytes

      + +
      + +
          return 'FRAME_SIZE_ERROR';
      +  }
      +  frame.last_stream = buffer.readUInt32BE(0) & 0x7fffffff;
      +  frame.error = errorCodes[buffer.readUInt32BE(4)];
      +  if (!frame.error) {
      + +
    • + + +
    • +
      + +
      + +
      +

      Unknown error types are to be considered equivalent to INTERNAL ERROR

      + +
      + +
          frame.error = 'INTERNAL_ERROR';
      +  }
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      WINDOW_UPDATE

      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      The WINDOW_UPDATE frame (type=0x8) is used to implement flow control.

      +

      The WINDOW_UPDATE frame does not define any flags.

      + +
      + +
      +frameTypes[0x8] = 'WINDOW_UPDATE';
      +
      +frameFlags.WINDOW_UPDATE = [];
      +
      +typeSpecificAttributes.WINDOW_UPDATE = ['window_size'];
      + +
    • + + +
    • +
      + +
      + +
      +

      The payload of a WINDOW_UPDATE frame is a 32-bit value indicating the additional number of bytes +that the sender can transmit in addition to the existing flow control window. The legal range +for this field is 1 to 2^31 - 1 (0x7fffffff) bytes; the most significant bit of this value is +reserved.

      + +
      + +
      +Serializer.WINDOW_UPDATE = function writeWindowUpdate(frame, buffers) {
      +  var buffer = new Buffer(4);
      +
      +  var window_size = frame.window_size;
      +  assert((0 < window_size) && (window_size <= 0x7fffffff), window_size);
      +  buffer.writeUInt32BE(window_size, 0);
      +
      +  buffers.push(buffer);
      +};
      +
      +Deserializer.WINDOW_UPDATE = function readWindowUpdate(buffer, frame) {
      +  if (buffer.length !== WINDOW_UPDATE_PAYLOAD_SIZE) {
      +    return 'FRAME_SIZE_ERROR';
      +  }
      +  frame.window_size = buffer.readUInt32BE(0) & 0x7fffffff;
      +  if (frame.window_size === 0) {
      +    return 'PROTOCOL_ERROR';
      +  }
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      CONTINUATION

      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      The CONTINUATION frame (type=0x9) is used to continue a sequence of header block fragments.

      +

      The CONTINUATION frame defines the following flag:

      +
        +
      • END_HEADERS (0x4): +The END_HEADERS bit indicates that this frame ends the sequence of header block fragments +necessary to provide a complete set of headers.
      • +
      + +
      + +
      +frameTypes[0x9] = 'CONTINUATION';
      +
      +frameFlags.CONTINUATION = ['RESERVED1', 'RESERVED2', 'END_HEADERS'];
      +
      +typeSpecificAttributes.CONTINUATION = ['headers', 'data'];
      +
      +Serializer.CONTINUATION = function writeContinuation(frame, buffers) {
      +  buffers.push(frame.data);
      +};
      +
      +Deserializer.CONTINUATION = function readContinuation(buffer, frame) {
      +  frame.data = buffer;
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      ALTSVC

      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      The ALTSVC frame (type=0xA) advertises the availability of an alternative service to the client.

      +

      The ALTSVC frame does not define any flags.

      + +
      + +
      +frameTypes[0xA] = 'ALTSVC';
      +
      +frameFlags.ALTSVC = [];
      + +
    • + + +
    • +
      + +
      + +
      +
      0                   1                   2                   3
      +0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +

      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Origin-Len (16) | Origin? () … + +——————————-+—————-+————–+ + | Alt-Svc-Field-Value () … + +—————————————————————+

      +

      The ALTSVC frame contains the following fields:

      +

      Origin-Len: An unsigned, 16-bit integer indicating the length, in + octets, of the Origin field.

      +

      Origin: An OPTIONAL sequence of characters containing ASCII + serialisation of an origin (RFC6454, + Section 6.2) that the alternate service is applicable to.

      +

      Alt-Svc-Field-Value: A sequence of octets (length determined by + subtracting the length of all preceding fields from the frame + length) containing a value identical to the Alt-Svc field value + defined in (Section 3)[https://tools.ietf.org/html/rfc7838#section-3] + (ABNF production “Alt-Svc”).

      + +
      + +
      +typeSpecificAttributes.ALTSVC = ['maxAge', 'port', 'protocolID', 'host',
      +                                 'origin'];
      +
      +function istchar(c) {
      +  return ('!#$&\'*+-.^_`|~1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.indexOf(c) > -1);
      +}
      +
      +function hexencode(s) {
      +  var t = '';
      +  for (var i = 0; i < s.length; i++) {
      +    if (!istchar(s[i])) {
      +      t += '%';
      +      t += new Buffer(s[i]).toString('hex');
      +    } else {
      +      t += s[i];
      +    }
      +  }
      +  return t;
      +}
      +
      +Serializer.ALTSVC = function writeAltSvc(frame, buffers) {
      +  var buffer = new Buffer(2);
      +  buffer.writeUInt16BE(frame.origin.length, 0);
      +  buffers.push(buffer);
      +  buffers.push(new Buffer(frame.origin, 'ascii'));
      +
      +  var fieldValue = hexencode(frame.protocolID) + '="' + frame.host + ':' + frame.port + '"';
      +  if (frame.maxAge !== 86400) { // 86400 is the default
      +    fieldValue += "; ma=" + frame.maxAge;
      +  }
      +
      +  buffers.push(new Buffer(fieldValue, 'ascii'));
      +};
      +
      +function stripquotes(s) {
      +  var start = 0;
      +  var end = s.length;
      +  while ((start < end) && (s[start] === '"')) {
      +    start++;
      +  }
      +  while ((end > start) && (s[end - 1] === '"')) {
      +    end--;
      +  }
      +  if (start >= end) {
      +    return "";
      +  }
      +  return s.substring(start, end);
      +}
      +
      +function splitNameValue(nvpair) {
      +  var eq = -1;
      +  var inQuotes = false;
      +
      +  for (var i = 0; i < nvpair.length; i++) {
      +    if (nvpair[i] === '"') {
      +      inQuotes = !inQuotes;
      +      continue;
      +    }
      +    if (inQuotes) {
      +      continue;
      +    }
      +    if (nvpair[i] === '=') {
      +      eq = i;
      +      break;
      +    }
      +  }
      +
      +  if (eq === -1) {
      +    return {'name': nvpair, 'value': null};
      +  }
      +
      +  var name = stripquotes(nvpair.substring(0, eq).trim());
      +  var value = stripquotes(nvpair.substring(eq + 1).trim());
      +  return {'name': name, 'value': value};
      +}
      +
      +function splitHeaderParameters(hv) {
      +  return parseHeaderValue(hv, ';', splitNameValue);
      +}
      +
      +function parseHeaderValue(hv, separator, callback) {
      +  var start = 0;
      +  var inQuotes = false;
      +  var values = [];
      +
      +  for (var i = 0; i < hv.length; i++) {
      +    if (hv[i] === '"') {
      +      inQuotes = !inQuotes;
      +      continue;
      +    }
      +    if (inQuotes) {
      + +
    • + + +
    • +
      + +
      + +
      +

      Just skip this

      + +
      + +
            continue;
      +    }
      +    if (hv[i] === separator) {
      +      var newValue = hv.substring(start, i).trim();
      +      if (newValue.length > 0) {
      +        newValue = callback(newValue);
      +        values.push(newValue);
      +      }
      +      start = i + 1;
      +    }
      +  }
      +
      +  var newValue = hv.substring(start).trim();
      +  if (newValue.length > 0) {
      +    newValue = callback(newValue);
      +    values.push(newValue);
      +  }
      +
      +  return values;
      +}
      +
      +function rsplit(s, delim, count) {
      +  var nsplits = 0;
      +  var end = s.length;
      +  var rval = [];
      +  for (var i = s.length - 1; i >= 0; i--) {
      +    if (s[i] === delim) {
      +      var t = s.substring(i + 1, end);
      +      end = i;
      +      rval.unshift(t);
      +      nsplits++;
      +      if (nsplits === count) {
      +        break;
      +      }
      +    }
      +  }
      +  if (end !== 0) {
      +    rval.unshift(s.substring(0, end));
      +  }
      +  return rval;
      +}
      +
      +function ishex(c) {
      +  return ('0123456789ABCDEFabcdef'.indexOf(c) > -1);
      +}
      +
      +function unescape(s) {
      +  var i = 0;
      +  var t = '';
      +  while (i < s.length) {
      +    if (s[i] != '%' || !ishex(s[i + 1]) || !ishex(s[i + 2])) {
      +      t += s[i];
      +    } else {
      +      ++i;
      +      var hexvalue = '';
      +      if (i < s.length) {
      +        hexvalue += s[i];
      +        ++i;
      +      }
      +      if (i < s.length) {
      +        hexvalue += s[i];
      +      }
      +      if (hexvalue.length > 0) {
      +        t += new Buffer(hexvalue, 'hex').toString();
      +      } else {
      +        t += '%';
      +      }
      +    }
      +
      +    ++i;
      +  }
      +  return t;
      +}
      +
      +Deserializer.ALTSVC = function readAltSvc(buffer, frame) {
      +  if (buffer.length < 2) {
      +    return 'FRAME_SIZE_ERROR';
      +  }
      +  var originLength = buffer.readUInt16BE(0);
      +  if ((buffer.length - 2) < originLength) {
      +    return 'FRAME_SIZE_ERROR';
      +  }
      +  frame.origin = buffer.toString('ascii', 2, 2 + originLength);
      +  var fieldValue = buffer.toString('ascii', 2 + originLength);
      +  var values = parseHeaderValue(fieldValue, ',', splitHeaderParameters);
      +  if (values.length > 1) {
      + +
    • + + +
    • +
      + +
      + +
      +

      TODO - warn that we only use one here

      + +
      + +
        }
      +  if (values.length === 0) {
      + +
    • + + +
    • +
      + +
      + +
      +

      Well that’s a malformed frame. Just ignore it.

      + +
      + +
          return;
      +  }
      +
      +  var chosenAltSvc = values[0];
      +  frame.maxAge = 86400; // Default
      +  for (var i = 0; i < chosenAltSvc.length; i++) {
      +    if (i === 0) {
      + +
    • + + +
    • +
      + +
      + +
      +

      This corresponds to the protocolID=”:“ item

      + +
      + +
            frame.protocolID = unescape(chosenAltSvc[i].name);
      +      var hostport = rsplit(chosenAltSvc[i].value, ':', 1);
      +      frame.host = hostport[0];
      +      frame.port = parseInt(hostport[1], 10);
      +    } else if (chosenAltSvc[i].name == 'ma') {
      +      frame.maxAge = parseInt(chosenAltSvc[i].value, 10);
      +    }
      + +
    • + + +
    • +
      + +
      + +
      +

      Otherwise, we just ignore this

      + +
      + +
        }
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      BLOCKED

      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      The BLOCKED frame (type=0xB) indicates that the sender is unable to send data +due to a closed flow control window.

      +

      The BLOCKED frame does not define any flags and contains no payload.

      + +
      + +
      +frameTypes[0xB] = 'BLOCKED';
      +
      +frameFlags.BLOCKED = [];
      +
      +typeSpecificAttributes.BLOCKED = [];
      +
      +Serializer.BLOCKED = function writeBlocked(frame, buffers) {
      +};
      +
      +Deserializer.BLOCKED = function readBlocked(buffer, frame) {
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      Error Codes

      + +
      + +
    • + + +
    • +
      + +
      + +
      + +
      + +
      +var errorCodes = [
      +  'NO_ERROR',
      +  'PROTOCOL_ERROR',
      +  'INTERNAL_ERROR',
      +  'FLOW_CONTROL_ERROR',
      +  'SETTINGS_TIMEOUT',
      +  'STREAM_CLOSED',
      +  'FRAME_SIZE_ERROR',
      +  'REFUSED_STREAM',
      +  'CANCEL',
      +  'COMPRESSION_ERROR',
      +  'CONNECT_ERROR',
      +  'ENHANCE_YOUR_CALM',
      +  'INADEQUATE_SECURITY',
      +  'HTTP_1_1_REQUIRED'
      +];
      + +
    • + + +
    • +
      + +
      + +
      +

      Logging

      + +
      + +
    • + + +
    • +
      + +
      + +
      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      Bunyan serializers to improve logging output +for debug messages emitted in this component.

      + +
      + +
      exports.serializers = {};
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • frame serializer: it transforms data attributes from Buffers to hex strings and filters out +flags that are not present.
      • +
      + +
      + +
      var frameCounter = 0;
      +exports.serializers.frame = function(frame) {
      +  if (!frame) {
      +    return null;
      +  }
      +
      +  if ('id' in frame) {
      +    return frame.id;
      +  }
      +
      +  frame.id = frameCounter;
      +  frameCounter += 1;
      +
      +  var logEntry = { id: frame.id };
      +  genericAttributes.concat(typeSpecificAttributes[frame.type]).forEach(function(name) {
      +    logEntry[name] = frame[name];
      +  });
      +
      +  if (frame.data instanceof Buffer) {
      +    if (logEntry.data.length > 50) {
      +      logEntry.data = frame.data.slice(0, 47).toString('hex') + '...';
      +    } else {
      +      logEntry.data = frame.data.toString('hex');
      +    }
      +
      +    if (!('length' in logEntry)) {
      +      logEntry.length = frame.data.length;
      +    }
      +  }
      +
      +  if (frame.promised_stream instanceof Object) {
      +    logEntry.promised_stream = 'stream-' + frame.promised_stream.id;
      +  }
      +
      +  logEntry.flags = Object.keys(frame.flags || {}).filter(function(name) {
      +    return frame.flags[name] === true;
      +  });
      +
      +  return logEntry;
      +};
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • data serializer: it simply transforms a buffer to a hex string.
      • +
      + +
      + +
      exports.serializers.data = function(data) {
      +  return data.toString('hex');
      +};
      + +
    • + +
    +
    + + diff --git a/doc/protocol/index.html b/doc/protocol/index.html new file mode 100644 index 00000000..5d61ce48 --- /dev/null +++ b/doc/protocol/index.html @@ -0,0 +1,170 @@ + + + + + index.js + + + + + +
    +
    + + + +
      + +
    • +
      +

      index.js

      +
      +
    • + + + +
    • +
      + +
      + +
      +

      This is an implementation of the HTTP/2 +framing layer for node.js.

      +

      The main building blocks are node.js streams that are connected through pipes.

      +

      The main components are:

      +
        +
      • Endpoint: represents an HTTP/2 endpoint (client or server). It’s +responsible for the the first part of the handshake process (sending/receiving the +connection header) and manages other components (framer, compressor, +connection, streams) that make up a client or server.

        +
      • +
      • Connection: multiplexes the active HTTP/2 streams, manages connection +lifecycle and settings, and responsible for enforcing the connection level limits (flow +control, initiated stream limit)

        +
      • +
      • Stream: implementation of the HTTP/2 stream concept. +Implements the stream state machine defined by the standard, provides +management methods and events for using the stream (sending/receiving headers, data, etc.), +and enforces stream level constraints (flow control, sending only legal frames).

        +
      • +
      • Flow: implements flow control for Connection and Stream as parent class.

        +
      • +
      • Compressor and Decompressor: compression and decompression of HEADER and +PUSH_PROMISE frames

        +
      • +
      • Serializer and Deserializer: the lowest layer in the stack that transforms +between the binary and the JavaScript object representation of HTTP/2 frames

        +
      • +
      + +
      + +
      +exports.VERSION = 'h2';
      +
      +exports.Endpoint = require('./endpoint').Endpoint;
      +
      +/* Bunyan serializers exported by submodules that are worth adding when creating a logger. */
      +exports.serializers = {};
      +var modules = ['./framer', './compressor', './flow', './connection', './stream', './endpoint'];
      +modules.map(require).forEach(function(module) {
      +  for (var name in module.serializers) {
      +    exports.serializers[name] = module.serializers[name];
      +  }
      +});
      +
      +/*
      +              Stream API            Endpoint API
      +              Stream data
      +
      +             |            ^        |            ^
      +             |            |        |            |
      +             |            |        |            |
      + +-----------|------------|---------------------------------------+
      + |           |            |   Endpoint                            |
      + |           |            |                                       |
      + |   +-------|------------|-----------------------------------+   |
      + |   |       |            |  Connection                       |   |
      + |   |       v            |                                   |   |
      + |   |  +-----------------------+  +--------------------      |   |
      + |   |  |        Stream         |  |         Stream      ...  |   |
      + |   |  +-----------------------+  +--------------------      |   |
      + |   |       |            ^              |            ^       |   |
      + |   |       v            |              v            |       |   |
      + |   |       +------------+--+--------+--+------------+- ...  |   |
      + |   |                       |        ^                       |   |
      + |   |                       |        |                       |   |
      + |   +-----------------------|--------|-----------------------+   |
      + |                           |        |                           |
      + |                           v        |                           |
      + |   +--------------------------+  +--------------------------+   |
      + |   |        Compressor        |  |       Decompressor       |   |
      + |   +--------------------------+  +--------------------------+   |
      + |                           |        ^                           |
      + |                           v        |                           |
      + |   +--------------------------+  +--------------------------+   |
      + |   |        Serializer        |  |       Deserializer       |   |
      + |   +--------------------------+  +--------------------------+   |
      + |                           |        ^                           |
      + +---------------------------|--------|---------------------------+
      +                             |        |
      +                             v        |
      +
      +                              Raw data
      +
      +*/
      + +
    • + +
    +
    + + diff --git a/doc/protocol/stream.html b/doc/protocol/stream.html new file mode 100644 index 00000000..69c6f813 --- /dev/null +++ b/doc/protocol/stream.html @@ -0,0 +1,1485 @@ + + + + + The Stream class + + + + + +
    +
    + + + +
      + + + +
    • +
      + +
      + +
      + +
      + +
      var assert = require('assert');
      + +
    • + + +
    • +
      + +
      + +
      +

      The Stream class

      + +
      + +
    • + + +
    • +
      + +
      + +
      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      Stream is a Duplex stream +subclass that implements the HTTP/2 Stream +concept. It has two ‘sides’: one that is used by the user to send/receive data (the stream +object itself) and one that is used by a Connection to read/write frames to/from the other peer +(stream.upstream).

      + +
      + +
      +var Duplex = require('stream').Duplex;
      +
      +exports.Stream = Stream;
      + +
    • + + +
    • +
      + +
      + +
      +

      Public API

      + +
      + +
    • + + +
    • +
      + +
      + +
      + +
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • new Stream(log, connection): create a new Stream

        +
      • +
      • Event: ‘headers’ (headers): signals incoming headers

        +
      • +
      • Event: ‘promise’ (stream, headers): signals an incoming push promise

        +
      • +
      • Event: ‘priority’ (priority): signals a priority change. priority is a number between 0 + (highest priority) and 2^31-1 (lowest priority). Default value is 2^30.

        +
      • +
      • Event: ‘error’ (type): signals an error

        +
      • +
      • headers(headers): send headers

        +
      • +
      • promise(headers): Stream: promise a stream

        +
      • +
      • priority(priority): set the priority of the stream. Priority can be changed by the peer +too, but once it is set locally, it can not be changed remotely.

        +
      • +
      • reset(error): reset the stream with an error code

        +
      • +
      • upstream: a Flow that is used by the parent connection to write/read frames +that are to be sent/arrived to/from the peer and are related to this stream.

        +
      • +
      +

      Headers are always in the regular node.js header format.

      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      Constructor

      + +
      + +
    • + + +
    • +
      + +
      + +
      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      The main aspects of managing the stream are:

      + +
      + +
      function Stream(log, connection) {
      +  Duplex.call(this);
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • logging
      • +
      + +
      + +
        this._log = log.child({ component: 'stream', s: this });
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • receiving and sending stream management commands
      • +
      + +
      + +
        this._initializeManagement();
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • sending and receiving frames to/from the upstream connection
      • +
      + +
      + +
        this._initializeDataFlow();
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • maintaining the state of the stream (idle, open, closed, etc.) and error detection
      • +
      + +
      + +
        this._initializeState();
      +
      +  this.connection = connection;
      +}
      +
      +Stream.prototype = Object.create(Duplex.prototype, { constructor: { value: Stream } });
      + +
    • + + +
    • +
      + +
      + +
      +

      Managing the stream

      + +
      + +
    • + + +
    • +
      + +
      + +
      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      the default stream priority is 2^30

      + +
      + +
      var DEFAULT_PRIORITY = Math.pow(2, 30);
      +var MAX_PRIORITY = Math.pow(2, 31) - 1;
      + +
    • + + +
    • +
      + +
      + +
      +

      PUSH_PROMISE and HEADERS are forwarded to the user through events.

      + +
      + +
      Stream.prototype._initializeManagement = function _initializeManagement() {
      +  this._resetSent = false;
      +  this._priority = DEFAULT_PRIORITY;
      +  this._letPeerPrioritize = true;
      +};
      +
      +Stream.prototype.promise = function promise(headers) {
      +  var stream = new Stream(this._log, this.connection);
      +  stream._priority = Math.min(this._priority + 1, MAX_PRIORITY);
      +  this._pushUpstream({
      +    type: 'PUSH_PROMISE',
      +    flags: {},
      +    stream: this.id,
      +    promised_stream: stream,
      +    headers: headers
      +  });
      +  return stream;
      +};
      +
      +Stream.prototype._onPromise = function _onPromise(frame) {
      +  this.emit('promise', frame.promised_stream, frame.headers);
      +};
      +
      +Stream.prototype.headers = function headers(headers) {
      +  this._pushUpstream({
      +    type: 'HEADERS',
      +    flags: {},
      +    stream: this.id,
      +    headers: headers
      +  });
      +};
      +
      +Stream.prototype._onHeaders = function _onHeaders(frame) {
      +  if (frame.priority !== undefined) {
      +    this.priority(frame.priority, true);
      +  }
      +  this.emit('headers', frame.headers);
      +};
      +
      +Stream.prototype.priority = function priority(priority, peer) {
      +  if ((peer && this._letPeerPrioritize) || !peer) {
      +    if (!peer) {
      +      this._letPeerPrioritize = false;
      +
      +      var lastFrame = this.upstream.getLastQueuedFrame();
      +      if (lastFrame && ((lastFrame.type === 'HEADERS') || (lastFrame.type === 'PRIORITY'))) {
      +        lastFrame.priority = priority;
      +      } else {
      +        this._pushUpstream({
      +          type: 'PRIORITY',
      +          flags: {},
      +          stream: this.id,
      +          priority: priority
      +        });
      +      }
      +    }
      +
      +    this._log.debug({ priority: priority }, 'Changing priority');
      +    this.emit('priority', priority);
      +    this._priority = priority;
      +  }
      +};
      +
      +Stream.prototype._onPriority = function _onPriority(frame) {
      +  this.priority(frame.priority, true);
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      Resetting the stream. Normally, an endpoint SHOULD NOT send more than one RST_STREAM frame for +any stream.

      + +
      + +
      Stream.prototype.reset = function reset(error) {
      +  if (!this._resetSent) {
      +    this._resetSent = true;
      +    this._pushUpstream({
      +      type: 'RST_STREAM',
      +      flags: {},
      +      stream: this.id,
      +      error: error
      +    });
      +  }
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      Specify an alternate service for the origin of this stream

      + +
      + +
      Stream.prototype.altsvc = function altsvc(host, port, protocolID, maxAge, origin) {
      +    var stream;
      +    if (origin) {
      +        stream = 0;
      +    } else {
      +        stream = this.id;
      +    }
      +    this._pushUpstream({
      +        type: 'ALTSVC',
      +        flags: {},
      +        stream: stream,
      +        host: host,
      +        port: port,
      +        protocolID: protocolID,
      +        origin: origin,
      +        maxAge: maxAge
      +    });
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      Data flow

      + +
      + +
    • + + +
    • +
      + +
      + +
      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      The incoming and the generated outgoing frames are received/transmitted on the this.upstream +Flow. The Connection object instantiating the stream will read +and write frames to/from it. The stream itself is a regular Duplex stream, and is used by +the user to write or read the body of the request.

      + +
      + +
    • + + +
    • +
      + +
      + +
      +
      upstream side                  stream                  user side
      +
      +               +------------------------------------+
      +               |                                    |
      +               +------------------+                 |
      +               |     upstream     |                 |
      +               |                  |                 |
      +               +--+               |              +--|
      +       read()  |  |  _send()      |    _write()  |  |  write(buf)
      +<--------------|B |<--------------|--------------| B|<------------
      +               |  |               |              |  |
      +       frames  +--+               |              +--|  buffers
      +               |  |               |              |  |
      +-------------->|B |---------------|------------->| B|------------>
      + write(frame)  |  |  _receive()   |     _read()  |  |  read()
      +               +--+               |              +--|
      +               |                  |                 |
      +               |                  |                 |
      +               +------------------+                 |
      +               |                                    |
      +               +------------------------------------+
      +
      +B: input or output buffer
      +
      +
      + +
      +var Flow = require('./flow').Flow;
      +
      +Stream.prototype._initializeDataFlow = function _initializeDataFlow() {
      +  this.id = undefined;
      +
      +  this._ended = false;
      +
      +  this.upstream = new Flow();
      +  this.upstream._log = this._log;
      +  this.upstream._send = this._send.bind(this);
      +  this.upstream._receive = this._receive.bind(this);
      +  this.upstream.write = this._writeUpstream.bind(this);
      +  this.upstream.on('error', this.emit.bind(this, 'error'));
      +
      +  this.on('finish', this._finishing);
      +};
      +
      +Stream.prototype._pushUpstream = function _pushUpstream(frame) {
      +  this.upstream.push(frame);
      +  this._transition(true, frame);
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      Overriding the upstream’s write allows us to act immediately instead of waiting for the input +queue to empty. This is important in case of control frames.

      + +
      + +
      Stream.prototype._writeUpstream = function _writeUpstream(frame) {
      +  this._log.debug({ frame: frame }, 'Receiving frame');
      +
      +  var moreNeeded = Flow.prototype.write.call(this.upstream, frame);
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • Transition to a new state if that’s the effect of receiving the frame
      • +
      + +
      + +
        this._transition(false, frame);
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • If it’s a control frame. Call the appropriate handler method.
      • +
      + +
      + +
        if (frame.type === 'HEADERS') {
      +    if (this._processedHeaders && !frame.flags['END_STREAM']) {
      +      this.emit('error', 'PROTOCOL_ERROR');
      +    }
      +    this._processedHeaders = true;
      +    this._onHeaders(frame);
      +  } else if (frame.type === 'PUSH_PROMISE') {
      +    this._onPromise(frame);
      +  } else if (frame.type === 'PRIORITY') {
      +    this._onPriority(frame);
      +  } else if (frame.type === 'ALTSVC') {
      + +
    • + + +
    • +
      + +
      + +
      +

      TODO

      + +
      + +
        } else if (frame.type === 'BLOCKED') {
      + +
    • + + +
    • +
      + +
      + +
      +

      TODO

      + +
      + +
        }
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • If it’s an invalid stream level frame, emit error
      • +
      + +
      + +
        else if ((frame.type !== 'DATA') &&
      +           (frame.type !== 'WINDOW_UPDATE') &&
      +           (frame.type !== 'RST_STREAM')) {
      +    this._log.error({ frame: frame }, 'Invalid stream level frame');
      +    this.emit('error', 'PROTOCOL_ERROR');
      +  }
      +
      +  return moreNeeded;
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      The _receive method (= upstream._receive) gets called when there’s an incoming frame.

      + +
      + +
      Stream.prototype._receive = function _receive(frame, ready) {
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • If it’s a DATA frame, then push the payload into the output buffer on the other side. +Call ready when the other side is ready to receive more.
      • +
      + +
      + +
        if (!this._ended && (frame.type === 'DATA')) {
      +    var moreNeeded = this.push(frame.data);
      +    if (!moreNeeded) {
      +      this._receiveMore = ready;
      +    }
      +  }
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • Any frame may signal the end of the stream with the END_STREAM flag
      • +
      + +
      + +
        if (!this._ended && (frame.flags.END_STREAM || (frame.type === 'RST_STREAM'))) {
      +    this.push(null);
      +    this._ended = true;
      +  }
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • Postpone calling ready if push() returned a falsy value
      • +
      + +
      + +
        if (this._receiveMore !== ready) {
      +    ready();
      +  }
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      The _read method is called when the user side is ready to receive more data. If there’s a +pending write on the upstream, then call its pending ready callback to receive more frames.

      + +
      + +
      Stream.prototype._read = function _read() {
      +  if (this._receiveMore) {
      +    var receiveMore = this._receiveMore;
      +    delete this._receiveMore;
      +    receiveMore();
      +  }
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      The write method gets called when there’s a write request from the user.

      + +
      + +
      Stream.prototype._write = function _write(buffer, encoding, ready) {
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • Chunking is done by the upstream Flow.
      • +
      + +
      + +
        var moreNeeded = this._pushUpstream({
      +    type: 'DATA',
      +    flags: {},
      +    stream: this.id,
      +    data: buffer
      +  });
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • Call ready when upstream is ready to receive more frames.
      • +
      + +
      + +
        if (moreNeeded) {
      +    ready();
      +  } else {
      +    this._sendMore = ready;
      +  }
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      The _send (= upstream._send) method is called when upstream is ready to receive more frames. +If there’s a pending write on the user side, then call its pending ready callback to receive more +writes.

      + +
      + +
      Stream.prototype._send = function _send() {
      +  if (this._sendMore) {
      +    var sendMore = this._sendMore;
      +    delete this._sendMore;
      +    sendMore();
      +  }
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      When the stream is finishing (the user calls end() on it), then we have to set the END_STREAM +flag on the last frame. If there’s no frame in the queue, or if it doesn’t support this flag, +then we create a 0 length DATA frame. We could do this all the time, but putting the flag on an +existing frame is a nice optimization.

      + +
      + +
      var emptyBuffer = new Buffer(0);
      +Stream.prototype._finishing = function _finishing() {
      +  var endFrame = {
      +    type: 'DATA',
      +    flags: { END_STREAM: true },
      +    stream: this.id,
      +    data: emptyBuffer
      +  };
      +  var lastFrame = this.upstream.getLastQueuedFrame();
      +  if (lastFrame && ((lastFrame.type === 'DATA') || (lastFrame.type === 'HEADERS'))) {
      +    this._log.debug({ frame: lastFrame }, 'Marking last frame with END_STREAM flag.');
      +    lastFrame.flags.END_STREAM = true;
      +    this._transition(true, endFrame);
      +  } else {
      +    this._pushUpstream(endFrame);
      +  }
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      Stream States

      + +
      + +
    • + + +
    • +
      + +
      + +
      +
                            +--------+
      +                PP    |        |    PP
      +             ,--------|  idle  |--------.
      +            /         |        |         \
      +           v          +--------+          v
      +    +----------+          |           +----------+
      +    |          |          | H         |          |
      +,---| reserved |          |           | reserved |---.
      +|   | (local)  |          v           | (remote) |   |
      +|   +----------+      +--------+      +----------+   |
      +|      |          ES  |        |  ES          |      |
      +|      | H    ,-------|  open  |-------.      | H    |
      +|      |     /        |        |        \     |      |
      +|      v    v         +--------+         v    v      |
      +|   +----------+          |           +----------+   |
      +|   |   half   |          |           |   half   |   |
      +|   |  closed  |          | R         |  closed  |   |
      +|   | (remote) |          |           | (local)  |   |
      +|   +----------+          |           +----------+   |
      +|        |                v                 |        |
      +|        |  ES / R    +--------+  ES / R    |        |
      +|        `----------->|        |<-----------'        |
      +|  R                  | closed |                  R  |
      +`-------------------->|        |<--------------------'
      +                      +--------+
      +
      +
      + +
    • + + +
    • +
      + +
      + +
      +

      Streams begin in the IDLE state and transitions happen when there’s an incoming or outgoing frame

      + +
      + +
      Stream.prototype._initializeState = function _initializeState() {
      +  this.state = 'IDLE';
      +  this._initiated = undefined;
      +  this._closedByUs = undefined;
      +  this._closedWithRst = undefined;
      +  this._processedHeaders = false;
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      Only _setState should change this.state directly. It also logs the state change and notifies +interested parties using the ‘state’ event.

      + +
      + +
      Stream.prototype._setState = function transition(state) {
      +  assert(this.state !== state);
      +  this._log.debug({ from: this.state, to: state }, 'State transition');
      +  this.state = state;
      +  this.emit('state', state);
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      A state is ‘active’ if the stream in that state counts towards the concurrency limit. Streams +that are in the “open” state, or either of the “half closed” states count toward this limit.

      + +
      + +
      function activeState(state) {
      +  return ((state === 'HALF_CLOSED_LOCAL') || (state === 'HALF_CLOSED_REMOTE') || (state === 'OPEN'));
      +}
      + +
    • + + +
    • +
      + +
      + +
      +

      _transition is called every time there’s an incoming or outgoing frame. It manages state +transitions, and detects stream errors. A stream error is always caused by a frame that is not +allowed in the current state.

      + +
      + +
      Stream.prototype._transition = function transition(sending, frame) {
      +  var receiving = !sending;
      +  var connectionError;
      +  var streamError;
      +
      +  var DATA = false, HEADERS = false, PRIORITY = false, ALTSVC = false, BLOCKED = false;
      +  var RST_STREAM = false, PUSH_PROMISE = false, WINDOW_UPDATE = false;
      +  switch(frame.type) {
      +    case 'DATA'         : DATA          = true; break;
      +    case 'HEADERS'      : HEADERS       = true; break;
      +    case 'PRIORITY'     : PRIORITY      = true; break;
      +    case 'RST_STREAM'   : RST_STREAM    = true; break;
      +    case 'PUSH_PROMISE' : PUSH_PROMISE  = true; break;
      +    case 'WINDOW_UPDATE': WINDOW_UPDATE = true; break;
      +    case 'ALTSVC'       : ALTSVC        = true; break;
      +    case 'BLOCKED'      : BLOCKED       = true; break;
      +  }
      +
      +  var previousState = this.state;
      +
      +  switch (this.state) {
      + +
    • + + +
    • +
      + +
      + +
      +

      All streams start in the idle state. In this state, no frames have been exchanged.

      +
        +
      • Sending or receiving a HEADERS frame causes the stream to become “open”.
      • +
      +

      When the HEADERS frame contains the END_STREAM flags, then two state transitions happen.

      + +
      + +
          case 'IDLE':
      +      if (HEADERS) {
      +        this._setState('OPEN');
      +        if (frame.flags.END_STREAM) {
      +          this._setState(sending ? 'HALF_CLOSED_LOCAL' : 'HALF_CLOSED_REMOTE');
      +        }
      +        this._initiated = sending;
      +      } else if (sending && RST_STREAM) {
      +        this._setState('CLOSED');
      +      } else if (PRIORITY) {
      +        /* No state change */
      +      } else {
      +        connectionError = 'PROTOCOL_ERROR';
      +      }
      +      break;
      + +
    • + + +
    • +
      + +
      + +
      +

      A stream in the reserved (local) state is one that has been promised by sending a +PUSH_PROMISE frame.

      +
        +
      • The endpoint can send a HEADERS frame. This causes the stream to open in a “half closed +(remote)” state.
      • +
      • Either endpoint can send a RST_STREAM frame to cause the stream to become “closed”. This +releases the stream reservation.
      • +
      • An endpoint may receive PRIORITY frame in this state.
      • +
      • An endpoint MUST NOT send any other type of frame in this state.
      • +
      + +
      + +
          case 'RESERVED_LOCAL':
      +      if (sending && HEADERS) {
      +        this._setState('HALF_CLOSED_REMOTE');
      +      } else if (RST_STREAM) {
      +        this._setState('CLOSED');
      +      } else if (PRIORITY) {
      +        /* No state change */
      +      } else {
      +        connectionError = 'PROTOCOL_ERROR';
      +      }
      +      break;
      + +
    • + + +
    • +
      + +
      + +
      +

      A stream in the reserved (remote) state has been reserved by a remote peer.

      +
        +
      • Either endpoint can send a RST_STREAM frame to cause the stream to become “closed”. This +releases the stream reservation.
      • +
      • Receiving a HEADERS frame causes the stream to transition to “half closed (local)”.
      • +
      • An endpoint MAY send PRIORITY frames in this state to reprioritize the stream.
      • +
      • Receiving any other type of frame MUST be treated as a stream error of type PROTOCOL_ERROR.
      • +
      + +
      + +
          case 'RESERVED_REMOTE':
      +      if (RST_STREAM) {
      +        this._setState('CLOSED');
      +      } else if (receiving && HEADERS) {
      +        this._setState('HALF_CLOSED_LOCAL');
      +      } else if (BLOCKED || PRIORITY) {
      +        /* No state change */
      +      } else {
      +        connectionError = 'PROTOCOL_ERROR';
      +      }
      +      break;
      + +
    • + + +
    • +
      + +
      + +
      +

      The open state is where both peers can send frames. In this state, sending peers observe +advertised stream level flow control limits.

      +
        +
      • From this state either endpoint can send a frame with a END_STREAM flag set, which causes +the stream to transition into one of the “half closed” states: an endpoint sending a +END_STREAM flag causes the stream state to become “half closed (local)”; an endpoint +receiving a END_STREAM flag causes the stream state to become “half closed (remote)”.
      • +
      • Either endpoint can send a RST_STREAM frame from this state, causing it to transition +immediately to “closed”.
      • +
      + +
      + +
          case 'OPEN':
      +      if (frame.flags.END_STREAM) {
      +        this._setState(sending ? 'HALF_CLOSED_LOCAL' : 'HALF_CLOSED_REMOTE');
      +      } else if (RST_STREAM) {
      +        this._setState('CLOSED');
      +      } else {
      +        /* No state change */
      +      }
      +      break;
      + +
    • + + +
    • +
      + +
      + +
      +

      A stream that is half closed (local) cannot be used for sending frames.

      +
        +
      • A stream transitions from this state to “closed” when a frame that contains a END_STREAM +flag is received, or when either peer sends a RST_STREAM frame.
      • +
      • An endpoint MAY send or receive PRIORITY frames in this state to reprioritize the stream.
      • +
      • WINDOW_UPDATE can be sent by a peer that has sent a frame bearing the END_STREAM flag.
      • +
      + +
      + +
          case 'HALF_CLOSED_LOCAL':
      +      if (RST_STREAM || (receiving && frame.flags.END_STREAM)) {
      +        this._setState('CLOSED');
      +      } else if (BLOCKED || ALTSVC || receiving || PRIORITY || (sending && WINDOW_UPDATE)) {
      +        /* No state change */
      +      } else {
      +        connectionError = 'PROTOCOL_ERROR';
      +      }
      +      break;
      + +
    • + + +
    • +
      + +
      + +
      +

      A stream that is half closed (remote) is no longer being used by the peer to send frames. +In this state, an endpoint is no longer obligated to maintain a receiver flow control window +if it performs flow control.

      +
        +
      • If an endpoint receives additional frames for a stream that is in this state it MUST +respond with a stream error of type STREAM_CLOSED.
      • +
      • A stream can transition from this state to “closed” by sending a frame that contains a +END_STREAM flag, or when either peer sends a RST_STREAM frame.
      • +
      • An endpoint MAY send or receive PRIORITY frames in this state to reprioritize the stream.
      • +
      • A receiver MAY receive a WINDOW_UPDATE frame on a “half closed (remote)” stream.
      • +
      + +
      + +
          case 'HALF_CLOSED_REMOTE':
      +      if (RST_STREAM || (sending && frame.flags.END_STREAM)) {
      +        this._setState('CLOSED');
      +      } else if (BLOCKED || ALTSVC || sending || PRIORITY || (receiving && WINDOW_UPDATE)) {
      +        /* No state change */
      +      } else {
      +        connectionError = 'PROTOCOL_ERROR';
      +      }
      +      break;
      + +
    • + + +
    • +
      + +
      + +
      +

      The closed state is the terminal state.

      +
        +
      • An endpoint MUST NOT send frames on a closed stream. An endpoint that receives a frame +after receiving a RST_STREAM or a frame containing a END_STREAM flag on that stream MUST +treat that as a stream error of type STREAM_CLOSED.
      • +
      • WINDOW_UPDATE, PRIORITY or RST_STREAM frames can be received in this state for a short +period after a frame containing an END_STREAM flag is sent. Until the remote peer receives +and processes the frame bearing the END_STREAM flag, it might send either frame type. +Endpoints MUST ignore WINDOW_UPDATE frames received in this state, though endpoints MAY +choose to treat WINDOW_UPDATE frames that arrive a significant time after sending +END_STREAM as a connection error of type PROTOCOL_ERROR.
      • +
      • If this state is reached as a result of sending a RST_STREAM frame, the peer that receives +the RST_STREAM might have already sent - or enqueued for sending - frames on the stream +that cannot be withdrawn. An endpoint that sends a RST_STREAM frame MUST ignore frames that +it receives on closed streams after it has sent a RST_STREAM frame. An endpoint MAY choose +to limit the period over which it ignores frames and treat frames that arrive after this +time as being in error.
      • +
      • An endpoint might receive a PUSH_PROMISE frame after it sends RST_STREAM. PUSH_PROMISE +causes a stream to become “reserved”. If promised streams are not desired, a RST_STREAM +can be used to close any of those streams.
      • +
      + +
      + +
          case 'CLOSED':
      +      if (PRIORITY || (sending && RST_STREAM) ||
      +          (receiving && WINDOW_UPDATE) ||
      +          (receiving && this._closedByUs &&
      +           (this._closedWithRst || RST_STREAM || ALTSVC))) {
      +        /* No state change */
      +      } else {
      +        streamError = 'STREAM_CLOSED';
      +      }
      +      break;
      +  }
      + +
    • + + +
    • +
      + +
      + +
      +

      Noting that the connection was closed by the other endpoint. It may be important in edge cases. +For example, when the peer tries to cancel a promised stream, but we already sent every data +on it, then the stream is in CLOSED state, yet we want to ignore the incoming RST_STREAM.

      + +
      + +
        if ((this.state === 'CLOSED') && (previousState !== 'CLOSED')) {
      +    this._closedByUs = sending;
      +    this._closedWithRst = RST_STREAM;
      +  }
      + +
    • + + +
    • +
      + +
      + +
      +

      Sending/receiving a PUSH_PROMISE

      +
        +
      • Sending a PUSH_PROMISE frame marks the associated stream for later use. The stream state +for the reserved stream transitions to “reserved (local)”.
      • +
      • Receiving a PUSH_PROMISE frame marks the associated stream as reserved by the remote peer. +The state of the stream becomes “reserved (remote)”.
      • +
      + +
      + +
        if (PUSH_PROMISE && !connectionError && !streamError) {
      +    /* This assertion must hold, because _transition is called immediately when a frame is written
      +       to the stream. If it would be called when a frame gets out of the input queue, the state
      +       of the reserved could have been changed by then. */
      +    assert(frame.promised_stream.state === 'IDLE', frame.promised_stream.state);
      +    frame.promised_stream._setState(sending ? 'RESERVED_LOCAL' : 'RESERVED_REMOTE');
      +    frame.promised_stream._initiated = sending;
      +  }
      + +
    • + + +
    • +
      + +
      + +
      +

      Signaling how sending/receiving this frame changes the active stream count (-1, 0 or +1)

      + +
      + +
        if (this._initiated) {
      +    var change = (activeState(this.state) - activeState(previousState));
      +    if (sending) {
      +      frame.count_change = change;
      +    } else {
      +      frame.count_change(change);
      +    }
      +  } else if (sending) {
      +    frame.count_change = 0;
      +  }
      + +
    • + + +
    • +
      + +
      + +
      +

      Common error handling.

      + +
      + +
        if (connectionError || streamError) {
      +    var info = {
      +      error: connectionError,
      +      frame: frame,
      +      state: this.state,
      +      closedByUs: this._closedByUs,
      +      closedWithRst: this._closedWithRst
      +    };
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • When sending something invalid, throwing an exception, since it is probably a bug.
      • +
      + +
      + +
          if (sending) {
      +      this._log.error(info, 'Sending illegal frame.');
      +      return this.emit('error', new Error('Sending illegal frame (' + frame.type + ') in ' + this.state + ' state.'));
      +    }
      + +
    • + + +
    • +
      + +
      + +
      +
        +
      • In case of a serious problem, emitting and error and letting someone else handle it +(e.g. closing the connection)
      • +
      • When receiving something invalid, sending an RST_STREAM using the reset method. +This will automatically cause a transition to the CLOSED state.
      • +
      + +
      + +
          else {
      +      this._log.error(info, 'Received illegal frame.');
      +      if (connectionError) {
      +        this.emit('connectionError', connectionError);
      +      } else {
      +        this.reset(streamError);
      +        this.emit('error', streamError);
      +      }
      +    }
      +  }
      +};
      + +
    • + + +
    • +
      + +
      + +
      +

      Bunyan serializers

      + +
      + +
    • + + +
    • +
      + +
      + +
      + +
      + +
      +exports.serializers = {};
      +
      +var nextId = 0;
      +exports.serializers.s = function(stream) {
      +  if (!('_id' in stream)) {
      +    stream._id = nextId;
      +    nextId += 1;
      +  }
      +  return stream._id;
      +};
      + +
    • + +
    +
    + + diff --git a/doc/root.jst b/doc/root.jst new file mode 100644 index 00000000..e1d8c9d0 --- /dev/null +++ b/doc/root.jst @@ -0,0 +1,59 @@ + + + + + <%= title %> + + + + + +
    +
    + <% if (sources.length > 1) { %> + + <% } %> +
      + <% if (!hasTitle) { %> +
    • +
      +

      <%= title %>

      +
      +
    • + <% } %> + <% for (var i=0, l=sections.length; i + <% var section = sections[i]; %> +
    • +
      + <% heading = section.docsHtml.match(/^\s*<(h\d)>/) %> +
      + +
      + <%= section.docsHtml %> +
      + <% if (section.codeText.replace(/\s/gm, '') != '') { %> +
      <%= section.codeHtml %>
      + <% } %> +
    • + <% } %> +
    +
    + + From 2aa61a9f520fa2806f65a72474feef2199caa6de Mon Sep 17 00:00:00 2001 From: Nicholas Hurley Date: Mon, 1 Aug 2016 10:06:52 -0700 Subject: [PATCH 20/20] Put css where protocol pages can find it --- doc/protocol/docco.css | 511 ++++++++++++++++++ doc/protocol/public/fonts/aller-bold.eot | Bin 0 -> 29804 bytes doc/protocol/public/fonts/aller-bold.ttf | Bin 0 -> 66836 bytes doc/protocol/public/fonts/aller-bold.woff | Bin 0 -> 33244 bytes doc/protocol/public/fonts/aller-light.eot | Bin 0 -> 29509 bytes doc/protocol/public/fonts/aller-light.ttf | Bin 0 -> 68620 bytes doc/protocol/public/fonts/aller-light.woff | Bin 0 -> 33124 bytes doc/protocol/public/fonts/novecento-bold.eot | Bin 0 -> 18190 bytes doc/protocol/public/fonts/novecento-bold.ttf | Bin 0 -> 48136 bytes doc/protocol/public/fonts/novecento-bold.woff | Bin 0 -> 20576 bytes doc/protocol/public/stylesheets/normalize.css | 375 +++++++++++++ 11 files changed, 886 insertions(+) create mode 100644 doc/protocol/docco.css create mode 100755 doc/protocol/public/fonts/aller-bold.eot create mode 100755 doc/protocol/public/fonts/aller-bold.ttf create mode 100755 doc/protocol/public/fonts/aller-bold.woff create mode 100755 doc/protocol/public/fonts/aller-light.eot create mode 100755 doc/protocol/public/fonts/aller-light.ttf create mode 100755 doc/protocol/public/fonts/aller-light.woff create mode 100755 doc/protocol/public/fonts/novecento-bold.eot create mode 100755 doc/protocol/public/fonts/novecento-bold.ttf create mode 100755 doc/protocol/public/fonts/novecento-bold.woff create mode 100644 doc/protocol/public/stylesheets/normalize.css diff --git a/doc/protocol/docco.css b/doc/protocol/docco.css new file mode 100644 index 00000000..8910977e --- /dev/null +++ b/doc/protocol/docco.css @@ -0,0 +1,511 @@ +/*-------------- node-http2 customizations --------------------*/ + +ul.sections > li > div.annotation { + min-width: 35em !important; + max-width: 35em !important; +} + +#background { + width: 35em !important; +} + +/*--------------------- Typography ----------------------------*/ + +@font-face { + font-family: 'aller-light'; + src: url('public/fonts/aller-light.eot'); + src: url('public/fonts/aller-light.eot?#iefix') format('embedded-opentype'), + url('public/fonts/aller-light.woff') format('woff'), + url('public/fonts/aller-light.ttf') format('truetype'); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: 'aller-bold'; + src: url('public/fonts/aller-bold.eot'); + src: url('public/fonts/aller-bold.eot?#iefix') format('embedded-opentype'), + url('public/fonts/aller-bold.woff') format('woff'), + url('public/fonts/aller-bold.ttf') format('truetype'); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: 'novecento-bold'; + src: url('public/fonts/novecento-bold.eot'); + src: url('public/fonts/novecento-bold.eot?#iefix') format('embedded-opentype'), + url('public/fonts/novecento-bold.woff') format('woff'), + url('public/fonts/novecento-bold.ttf') format('truetype'); + font-weight: normal; + font-style: normal; +} + +/*--------------------- Layout ----------------------------*/ +html { height: 100%; } +body { + font-family: "aller-light"; + font-size: 14px; + line-height: 18px; + color: #30404f; + margin: 0; padding: 0; + height:100%; +} +#container { min-height: 100%; } + +a { + color: #000; +} + +b, strong { + font-weight: normal; + font-family: "aller-bold"; +} + +p, ul, ol { + margin: 15px 0 0px; +} + +h1, h2, h3, h4, h5, h6 { + color: #112233; + line-height: 1em; + font-weight: normal; + font-family: "novecento-bold"; + text-transform: uppercase; + margin: 30px 0 15px 0; +} + +h1 { + margin-top: 40px; +} + +hr { + border: 0; + background: 1px solid #ddd; + height: 1px; + margin: 20px 0; +} + +pre, tt, code { + font-size: 12px; line-height: 16px; + font-family: Menlo, Monaco, Consolas, "Lucida Console", monospace; + margin: 0; padding: 0; +} + .annotation pre { + display: block; + margin: 0; + padding: 7px 10px; + background: #fcfcfc; + -moz-box-shadow: inset 0 0 10px rgba(0,0,0,0.1); + -webkit-box-shadow: inset 0 0 10px rgba(0,0,0,0.1); + box-shadow: inset 0 0 10px rgba(0,0,0,0.1); + overflow-x: auto; + } + .annotation pre code { + border: 0; + padding: 0; + background: transparent; + } + + +blockquote { + border-left: 5px solid #ccc; + margin: 0; + padding: 1px 0 1px 1em; +} + .sections blockquote p { + font-family: Menlo, Consolas, Monaco, monospace; + font-size: 12px; line-height: 16px; + color: #999; + margin: 10px 0 0; + white-space: pre-wrap; + } + +ul.sections { + list-style: none; + padding:0 0 5px 0;; + margin:0; +} + +/* + Force border-box so that % widths fit the parent + container without overlap because of margin/padding. + + More Info : http://www.quirksmode.org/css/box.html +*/ +ul.sections > li > div { + -moz-box-sizing: border-box; /* firefox */ + -ms-box-sizing: border-box; /* ie */ + -webkit-box-sizing: border-box; /* webkit */ + -khtml-box-sizing: border-box; /* konqueror */ + box-sizing: border-box; /* css3 */ +} + + +/*---------------------- Jump Page -----------------------------*/ +#jump_to, #jump_page { + margin: 0; + background: white; + -webkit-box-shadow: 0 0 25px #777; -moz-box-shadow: 0 0 25px #777; + -webkit-border-bottom-left-radius: 5px; -moz-border-radius-bottomleft: 5px; + font: 16px Arial; + cursor: pointer; + text-align: right; + list-style: none; +} + +#jump_to a { + text-decoration: none; +} + +#jump_to a.large { + display: none; +} +#jump_to a.small { + font-size: 22px; + font-weight: bold; + color: #676767; +} + +#jump_to, #jump_wrapper { + position: fixed; + right: 0; top: 0; + padding: 10px 15px; + margin:0; +} + +#jump_wrapper { + display: none; + padding:0; +} + +#jump_to:hover #jump_wrapper { + display: block; +} + +#jump_page { + padding: 5px 0 3px; + margin: 0 0 25px 25px; +} + +#jump_page .source { + display: block; + padding: 15px; + text-decoration: none; + border-top: 1px solid #eee; +} + +#jump_page .source:hover { + background: #f5f5ff; +} + +#jump_page .source:first-child { +} + +/*---------------------- Low resolutions (> 320px) ---------------------*/ +@media only screen and (min-width: 320px) { + .pilwrap { display: none; } + + ul.sections > li > div { + display: block; + padding:5px 10px 0 10px; + } + + ul.sections > li > div.annotation ul, ul.sections > li > div.annotation ol { + padding-left: 30px; + } + + ul.sections > li > div.content { + background: #f5f5ff; + overflow-x:auto; + -webkit-box-shadow: inset 0 0 5px #e5e5ee; + box-shadow: inset 0 0 5px #e5e5ee; + border: 1px solid #dedede; + margin:5px 10px 5px 10px; + padding-bottom: 5px; + } + + ul.sections > li > div.annotation pre { + margin: 7px 0 7px; + padding-left: 15px; + } + + ul.sections > li > div.annotation p tt, .annotation code { + background: #f8f8ff; + border: 1px solid #dedede; + font-size: 12px; + padding: 0 0.2em; + } +} + +/*---------------------- (> 481px) ---------------------*/ +@media only screen and (min-width: 481px) { + #container { + position: relative; + } + body { + background-color: #F5F5FF; + font-size: 15px; + line-height: 21px; + } + pre, tt, code { + line-height: 18px; + } + p, ul, ol { + margin: 0 0 15px; + } + + + #jump_to { + padding: 5px 10px; + } + #jump_wrapper { + padding: 0; + } + #jump_to, #jump_page { + font: 10px Arial; + text-transform: uppercase; + } + #jump_page .source { + padding: 5px 10px; + } + #jump_to a.large { + display: inline-block; + } + #jump_to a.small { + display: none; + } + + + + #background { + position: absolute; + top: 0; bottom: 0; + width: 350px; + background: #fff; + border-right: 1px solid #e5e5ee; + z-index: -1; + } + + ul.sections > li > div.annotation ul, ul.sections > li > div.annotation ol { + padding-left: 40px; + } + + ul.sections > li { + white-space: nowrap; + } + + ul.sections > li > div { + display: inline-block; + } + + ul.sections > li > div.annotation { + max-width: 350px; + min-width: 350px; + min-height: 5px; + padding: 13px; + overflow-x: hidden; + white-space: normal; + vertical-align: top; + text-align: left; + } + ul.sections > li > div.annotation pre { + margin: 15px 0 15px; + padding-left: 15px; + } + + ul.sections > li > div.content { + padding: 13px; + vertical-align: top; + background: #f5f5ff; + border: none; + -webkit-box-shadow: none; + box-shadow: none; + } + + .pilwrap { + position: relative; + display: inline; + } + + .pilcrow { + font: 12px Arial; + text-decoration: none; + color: #454545; + position: absolute; + top: 3px; left: -20px; + padding: 1px 2px; + opacity: 0; + -webkit-transition: opacity 0.2s linear; + } + .for-h1 .pilcrow { + top: 47px; + } + .for-h2 .pilcrow, .for-h3 .pilcrow, .for-h4 .pilcrow { + top: 35px; + } + + ul.sections > li > div.annotation:hover .pilcrow { + opacity: 1; + } +} + +/*---------------------- (> 1025px) ---------------------*/ +@media only screen and (min-width: 1025px) { + + body { + font-size: 16px; + line-height: 24px; + } + + #background { + width: 525px; + } + ul.sections > li > div.annotation { + max-width: 525px; + min-width: 525px; + padding: 10px 25px 1px 50px; + } + ul.sections > li > div.content { + padding: 9px 15px 16px 25px; + } +} + +/*---------------------- Syntax Highlighting -----------------------------*/ + +td.linenos { background-color: #f0f0f0; padding-right: 10px; } +span.lineno { background-color: #f0f0f0; padding: 0 5px 0 5px; } +/* + +github.com style (c) Vasily Polovnyov + +*/ + +pre code { + display: block; padding: 0.5em; + color: #000; + background: #f8f8ff +} + +pre .comment, +pre .template_comment, +pre .diff .header, +pre .javadoc { + color: #408080; + font-style: italic +} + +pre .keyword, +pre .assignment, +pre .literal, +pre .css .rule .keyword, +pre .winutils, +pre .javascript .title, +pre .lisp .title, +pre .subst { + color: #954121; + /*font-weight: bold*/ +} + +pre .number, +pre .hexcolor { + color: #40a070 +} + +pre .string, +pre .tag .value, +pre .phpdoc, +pre .tex .formula { + color: #219161; +} + +pre .title, +pre .id { + color: #19469D; +} +pre .params { + color: #00F; +} + +pre .javascript .title, +pre .lisp .title, +pre .subst { + font-weight: normal +} + +pre .class .title, +pre .haskell .label, +pre .tex .command { + color: #458; + font-weight: bold +} + +pre .tag, +pre .tag .title, +pre .rules .property, +pre .django .tag .keyword { + color: #000080; + font-weight: normal +} + +pre .attribute, +pre .variable, +pre .instancevar, +pre .lisp .body { + color: #008080 +} + +pre .regexp { + color: #B68 +} + +pre .class { + color: #458; + font-weight: bold +} + +pre .symbol, +pre .ruby .symbol .string, +pre .ruby .symbol .keyword, +pre .ruby .symbol .keymethods, +pre .lisp .keyword, +pre .tex .special, +pre .input_number { + color: #990073 +} + +pre .builtin, +pre .constructor, +pre .built_in, +pre .lisp .title { + color: #0086b3 +} + +pre .preprocessor, +pre .pi, +pre .doctype, +pre .shebang, +pre .cdata { + color: #999; + font-weight: bold +} + +pre .deletion { + background: #fdd +} + +pre .addition { + background: #dfd +} + +pre .diff .change { + background: #0086b3 +} + +pre .chunk { + color: #aaa +} + +pre .tex .formula { + opacity: 0.5; +} diff --git a/doc/protocol/public/fonts/aller-bold.eot b/doc/protocol/public/fonts/aller-bold.eot new file mode 100755 index 0000000000000000000000000000000000000000..1b32532a8e40e483069482c3650c3ef22ef16bdd GIT binary patch literal 29804 zcmY&@&9#*05O2Wf3O6&{l`N9;sEFWEQ|kiJb?E9uH zKcsz;<0Y$*{jlPJ$wEu>d-#1KYaZ1J-g-eLblP0#nef-ebZ%+9VZ;jqngPxn@-p5r z(RiQUigh*~b1&6Rh=)7NmO{(+Dm+dpO!TR z+dX(>T9!WF8i6XCkd1{PA)2CIy-36RgX1Wh+)Qw{sB3gfoHm4h0Ejm9P3wS?yV=E4@hbq51|Hw71Wo@2x{d@##YLx4NXpq$ zS&}#sC8@+IlC5Wk`Uq)D4gI+`NLolYmrAo?mcB-y5uqICI2A)G$~b*T;)-362>yKR zxV#m7S%il_)!677yZW(`nbHyX)6!SHUH*>hLdBIjxPjkrsXOlWPW_wkyL|4d`vsI7Jy|X8|ns1!r5O4RP2hhks>}87U`PTdL3uQqK7eD#Cm1LWpKOK-4?W)BQ1tpjPxb>2r{{ z50}AeXjC54Zu&|if^B`(P(m#B5!hiy6hH;GA2H7MbO=mB_;o>1%FchGmZTGzJ;hZD z@W(PmS*T*x&+-JzohnbPPk4kj*0>O>taCsI4(_NKG4H7FlQI^lS!ET zTdV$?6;#zuwyO_cZK~ywtPOlM{W}mXlP-VHX)3!1Jw?$49Sms@j(i2#!SX%fFvL_AAEC&; z&%B3QmKD4=uMNdD5n7%kth8w+i_WVPH2+y^zWJ`<@CSx0AH!979>34=1Kg+EVI2uMF;QO=6U%xKFE7O{ACtGYYBx_iYm8g zbx3Ifo_3%hmr%(*+Lq$Pf9f)|Co@%XGpr*zx;6EwvZH9oU>SUyYc7G-G_1buRU(V< z>&mUcPPMW&4uTh^u1aa^6bq(ui(0>xyrhc$K`3K$I4ED7hJSxdNLKB5`F}M_K6~f*UT^)ImraY3YvuNVgr+UCMbE#GOMVI#O{Au zn+bL#U2j{~*&d2m{8ktHX6OnmxSTnp>BRTU(ED)Hf+F#J*+Jx8F0CC zDuqLo9fpDVfBIZ;#EBZ8SZ z!k9Th%pw|ME<8D(cZzu7;g&y=!>=h@dt{E#oh^uBf3v_S{q7%yXIdBRD+1@FiFqdO;nWn=Xq8z#@UFF43u=!)OtzeHt`=W57 zg2kh-yMmEX)0m{F%V1W6PT!NFToeNk*4N<7vm)7*TnSa+BKV9Gq+s~5oQ~9&lXBf;NRKPPYAs?GPL|e zuak$~{JE7xZ0fhtyR#7?BZyNU(LcUQZBcwG`iL~7GN2Qwy+FMnR8khx{Bb#kJgFUV z%ndpteB+QlH;pf4QC(%kqt0$ppzi?PhHgEhdfoZ==^Fb?yz?jIosmiRPh(3a-AB*g z-%Xa^9;BH63Co_qh`fm*@MkNr$e45ARlQwS(P;ZR`Qov*e|=VUmlXbJc517lKPD3j4z*Y-zRb3S-;VG$uw5azQRG@yto-F&G`<25<_mDc{)itq^C2d_;#$I%ctohQwxZ z*+atcnAStKh%-XGRF{6#A*4f+s^r7PnHkWBRMV!zK5LRMREfD2b7Mows<;tDlf@VL zENwyBN+9_q6xMN9>MhdwerVBje0!_GL_>2MJ&r<@B8Rwn2qucG;sQ<_l?4(7-91HI zGB!37KXl<>W05N{WVlWB5RUZ_Sy(cESS~9?TlPS%FvUhEmQQhN(k4KvX3NW&zpqkX zMjXdtCQVaW;ugR*XkR>|Bg+|>;)dcJ&4PmFGFWAqe2r^vP$T{FBIvy%J6<_f`WzSK z59oj=!u-mtalc}#VvO~Bsi1-W@`exNTg5UW=A>#KMOcdMVAJ*eap%nVE;YL1isQXx zlzpsovY>Oif8a@@@M$aNnb7E4@yL+AnZ-EAG|F~5u73&MT&f0-@}vwB5|dQ;lrUHoZ`fb#DWUm3LV0QOG&b2sMewW#%nJKA2Nj+tU+>2<%+OF zEcJ{~Zp!F3)a+icVnP{;W!mEtbAg|!7bn&LS{6lfNG3q$qK*EDD_ZwC5U5*NNE&qN zySDj;>4s2?*^kh}pRQ(Y5NKwmNBUVJF>S}i^;XO(TdEUeV)30V35Pd!;EQ(aD6WC} z#xI^dd!0-;5L^gh5)du-7W!+BaDwZW=!us=r^PbVu3&^4xlF9>2TTL4C~{ui%wtr+ z3))XtEh=?~hV--0lM>=AedXm}9WfyNAn`W1ry{g^K)wyoUJtqy>?!GAPvqJGKG`8O zSDW|bJhfn9-Viv;awkp>RF zo5I{?k-Dmd7J=O;wuPp;Ckmg(!pDZ@_g;8H{5zW5V)YlW?jUHuG*x_ZU^2J4h}SHf z?V43ogzavxNv6pN+$39bYU?_cApVtQWg=wg)fI9Pnc6GR6ci=@D~QhrCM5`12*BQh zyZ}i72zziufJ&rnjxTcU7K0rdrjX`TEAbH`#~BQuOqnn}ZR(9NlhOQ6Fc1@PHzcWzVd5m<2v6WQGb3(;>olCQ`eACD z1e0<>dEMmXMd1jTtAk-GN65LRbP|gm&v3zM4T>CZb`|xYM&UGZrcrxL&!pVJ`f|dV z4=4LQm~vP*vY~B77<4`UZ~R@_4~D3>IZ2RCM7JZD1pdA#xh@bhadgy17-Ax;3=Z3q zRp5KR6yT?t#&E%T9*$CCOaYBE=3~&tA4AfkyT0aW4h`gk45q~Jo*CAHxY3u-r8&)s zQO0_zv>@^Uc_VHc!ochd{>4LAM~-(Tn&nPs&IPr$8ApywQ!DF3-t0)izp3vzL2UGI z4;gcoOX2kB5u8T>h7>jX2=G_)nHs_iLFR4dANyvo&?Lgzr z4vb|WvniaU=UKOJ&UJj8KET(}QQ48ne~aqJ-x+N42!&r4 zc!Lt;sj%1hqAPIJUXGoSVwvby3$coM->CaDgLBfQsk$OZh+5j;9T65S&L$KGU#>AY7xD(q; ziDG0WE?)$+l?cOS_{KGwunolwr$Pg*_p!QCD>(RqTcfyw=2(?*Z>C?8CC+s1$|5%FwcFO1o6Z-wqT{TxAgolvQ3La&7H4HpRt~lgXmUC zSb&gMp1YSFNO6}wYZEZ*i9#rH<9U}jkaASRHiyDmrFqub#`=y){6DvA z&*59Et1Qp@@mA@(HW;P}@&?0Bxrk)arHP2k^A#b+yU%Us8FeOns_kJ8mfWZ)mONU< ztFw4KyXeDNa-t8_H*1$N(d&CnA{a?IKjBx=UX4S_n%szhJiFsePWi0qAe)*zn?x5V z*pNK78R3n35t8pM%|%7Q1L-!$7FerQL1q!ek8sZF45r@bZK?9nmVt(+M)m_NYh0Q5 z<3X+7s)cWe-!h8%ROFzLlOo3?Zrxi$d{|w>xgSd=mqsw70ky{rGOiS?Z5NKq;BTF(>gM>s{3&K8NzbtyS~ zTgGj}`hMJ2K7-?;LKDRqjeJVpH;7z(?x}^3fGH~|2?{HA*Q!Cjr~L5|_oR9CwG?sx z20xrx7w}Kni%I4Fj#^XQ5xlv5a^YH!S=Hr^AdMD!Eru}0dBkG&r1uv}dze8Fr7_N& zzce)4o{(7XPJ>nG{G48sNzFLBVnh;|YQH%iH-ZT~?Y*kqJZ{o)>KF{hx_7SlAe@Yl znftTbzOS{k>-BRwaM@lfS|po9&oo^@G_FPRjG!_n zdT)=i*fj;Ct7N?|O&DRK%ZfvvgiK>vX2Mk)+i-Sg`(RF7DaFv96892aEC~d3H>G_& zF!2zA?ndm5Ao_z1=VXWTW_Dlp6ccf+l7fD52&9qAp$tYhiS4u9#6h9R($eH`8gL+& zwPQ8S&Cpkw@IfB0k%Z3ViZq7Gj-rEkc&kt09q@7)8EMR3K{{(7l|=t{gc$MfZ-z^3 zqcl5g>i8H9tg@rSe-kCWYW=jefGD_3cMS+)OBPm;LP5kNr6bgxR1k5yZx%|SQ=ye) z8KWu|NkU?%AGJ|H>(8+6VuFWRfdba|v6bP8GgZT&HD zkiDTlc|o>qDO(WAN#s0ZR4H@uy%;5DS6UuqQqc|+=VI`q)DDL7hGjbU0$z|cMr54M zSJAXj{PtTL$h_UWOMn?FZ!(Y7945*c8q5gq&2EBnv{Vsg*1$uSwM@+%i|0yZath@H zK1?M#Zow+`hL~lat07u%t`GUH{9c{s6umpN>r3AgsSOx1>`ZVg5At-=Tk`|;;&Kdv zFa#;8_Z^ooez(V;Y>SB{3^9^=AE}C^7psTtb&+7(m1===br&mh{}x4dm!bz7sH)s( z#0%JyY>Y*>x&1kfeGOn66hHV^B<=A7m>4v4Kr?hC$EFus!(b=j%52b4V(&66`h>qt z|0c}>4g*N{Bmu;g7Mo%~0O(ZBesJ3C)`}d1RDwANPxJXyQk%mnvE;KjZR?(!)590z z$4Y|-9ohQ3!_>Sj^SJFiQ3bzy6YwP(HmK7_Io0&a^@Ql87DzHdR9SbWrp9#Kzq(Vv zhUwH9(bjtntY&+r{C;T)Y?H+S4{A+rJYaF^%Va6=sh&^ zf>ZskR8*fz0U2hPFF(3zg29TQ#?7N3tLwGb{P4)#Q=hZ<_xr!yGL)BI*6Z%m`_3LJQmNn7 z1z071eff#fT1(7?e(oWOv-%SA2gj*tZ1JiTSMGpkM;P9writgHRcU)8yRoNi_nPkZ z8-vs49%(-imCyL6YoPMc5!Xkj3y64TBm0zl2WB|nddD2AC4dK1!Sp`3yXf(TY8|BG zrpY!aWHRI;i1$z=F$hpKgA-RhBXJpl3ixvVED>7eS;9ercrZ3)DYFBGBjZD$2!4c{ z;+JK|RwSsBFjtW!@`wYxC+3|=vf=K2d005&rjp24blBl3UL}7-mzYNdLq_M)vZiXR z;%0u)E8MUB5myh5eW$ew{nk{+MXhd47{1b~@11`NiOTx7QLkdX-wY{77gq1IgsmCu zysOOX!TGU`hYX9$3;CgV(p)j97&EJ^i8LL3xY%bL2tU-O1rpolC( zcfHWIVb6jlh>B4(OKWbpHLzXpS`KMtWsaVbM}CewaIKV1c^LdC&X^ry5C(CiQ3p}a za$dV7YZa^{%F-c68PILFIqt3(rzmF~i?&iTwB2cQ_~m#d3nU|gCBJ`P!xnbMIa#J? z?psUbuJfoDr&mUKrC=NY@E@Q{4;1sdXcx)vtlvBn`;x(Sv;plZC8-uIhnU&5`OiMn zyk?9AQ-oS5jx&>0WBziO*mUm12U1r}f>qoz>OOMlW8m8Yn4~9TtG9Oezo$WEvH$J2 zW9#JsTVgwuzg(0ENZS*0wv+=+;=6||rF`X#{Y!D`+_(7CkgI*!rgB}ftFLJM%0nZN zS@4Fx7rlu__{(Ye`kkY49)yfIKB`5}`Ydh8>H*AB=xWVq-(%DCU!%+FoIROq3oY;>8v4PL7p?p28=oy%f8+I@ULou?>z*riz6660UW^8yI7$(@sXhWkJiJ6k zXjjr<4QCI)$SUIu$D-tCLBY|$?BfNy!YQ6F-$V|qS@vFWk1KVBVfVbtUpg+eo~-P% z0Z#M{O$xblySE%uzFU*~PT@dYQc%K`r~k!Hs{ReS%Bmdt^N3%(JmkQIf^$lxBzPM* z_|lD0kXXL3;=Xv<#6U9$$rPg>@=s=za4n#Arh}UuO0j$NHz?rG!?w57qyJcUg)`qr z$jDHbvcmU`K+S~4Nt@}AK+y_n=`Z}!D1Fk7c66*v69NZaq_q$7xLTy&nag2tpC}rY ze~ikF=Z6PJ=m@HuedjCjiZMtVPLfku@hoayszL_6{!lwAwGu$DN8)12AwiGoDUL(q zI+elK!l%nqft}Mm^&m1su!>Kzgk{_h@c->LediD-{Dm~<+3G+3tfTeD~J69>aX*!vvLuO3wyj4 zC}mt#e0dkAe(FT>w3TPZvJ8$SVKHsF7gUd|dHGI_ySh}g>0nsZlvr1Bbp`Qi<09s9 zF#_{rop?jBVdC}K7>fR`wGr{3mxY&aBn*aWa6i4j$9*;E%&42yUG8 z)7}Y~x#Ph~N-gPbX-*#PWsq3v);v7KEIqJ=pu#L=`DV)c{Jwd>eQzme+oniH#i(>j z#%!$)DtSbj`MVJ((Z+zIgpeNi&#y5T!6K#s*X>)OC~BSDf_h#uPohFv$7p!Y5Dc3T2Gjf zk{nkMq4rDHB16Uk`mBQ1VD-hUpH|{sn)!veAX^ckG!h#Jrp=%p?&gVDf{ebjm|{@t zRI#3rSupvTeISUasQM`Su7Je#`LRJ84&P-had8x zD%uq4&lE*ZE(AM+({7<(B?bIhEZsLkPo=WyCMs-<=!%!4&h*J1DE$Q=ctvJY&JT|v ze|Ki(|GMZ$4|4Z%Q#DM)X9~Wzrfqavyt3fy7b#&Sd18HyvR+UkCJOrjqy8*-BW$J3Az%dqj3?f;t&Iqoi;g$qjoP=R$Y86BT0v;}`{P1g$NGJ2t3VkFw9bW%t|o&8jK!;dQxu5%6Ho1A^u}{d z)k_(o>xT|}DLoW$KmpF>Qmg07bvaS&wn=7d@CU0ynib9GOL!);vzOrp=>lrVY3tSc zvXp)62Cec&mJwKbZZ4-g9)5(|WDD-{wc-!{)kgk}smhW*7pym0(s+s^I=>Q)p5)<> z6pQKDAJUe=%V<57DLmFW1dUtjkayuZ22~yjs|%HiTi~bU0ltByI{unmE9vOR=7gpl|s%2J$n2VEtdX_ zHe|NI+>)Vqa_fa+?HSILQsB4E#5^nN?0gg@+s=LB*K5cdN#i&c7P|MVaDpGYp7{rV z4?#Ccj>SH&W4eZ#PRs3(Wog1-%~CTLMM%T7?U_4j;GHzH3h^PvhRIHNSmHZ*p?%v= zHsmiH`IZ?$rcZPi6>X@iL!lz@ctboblNqir%kU_WYv|lJIG=hJMV%_lnpixO5k?3`28XqKo#`R__C)M|5p zDCYhJuL*Er>Igr~lW>UJl4@Uy2(6S*0P=P)cTW%-M*N~x=jJl&k4c<#d%`xjUTcQp zBIf!RIY`Ph7u)y;xKbQvsC3*Cmf=hC-r%uzl?LsI+)>mO746tb>?yFMrXclVFNmHj^iYafGD*Pp4iJ~w`il!BdK71;# zq;fK(%WRv%t&0n!NL2EA$KQ6fBipI{YQ-B;z+aia`6!5JNMX^9zge zsBbq3(A3&ag(NSOTMLqlFfP&JQy>)?^H%CtTgwZ$s)iK3S6QeG44`)ejcy1^?Ewz@Yq{bhr;@ZSZK<=6$ zTpMrtU6uU6MI@PsHkC;TfR(2fK}RHuY?Q$s)4wX#DtL)C6@h!CV-Q)nKv` zC^Otl2ip4vDb53~!MG5%O?u%MXCuCu;X0=wQ}~n;slg?^-pUfyC)w=;{e^{n7BK3b zTY~$!!s!(ad01Jr*nNsw7B&nSBuU?rd`oc+mNdt!)-DCWdfs3hP*U+!zMoPn>M9Y& z*P`_x{zR^dt=5cR@xc9w!QQ5#BjpB{s%(#wn4(2GZWYt{W`j#7ea^$;^|rc_Cjt^Z z9bw2W1Pj~GogNGh18MFSWjgYq44~VEfMjkRjIJYTB?i9v{N#Ve>QQ(3l9dAXWf~1V z9_N}|LpEe866m6N*CrD7%nUb!^cFX*wQLN3b{XOZBAs#umC)kQy4{ka7ZyB1Shdn$Uj0iQi{N#Odq$4`)rA0U6 zK$^~0r0k`(nb>5MhT?$eP!;sVDX$jkF5Zm<3Z9??Pj~(GpDq7Hn!}vFgT<#+0ttRu zc46drp<9%VOEp_et2e&m0vl(=h5hvB}_{&8vj?q zk}*61P98?rhtJx#EZ&2WPDCq(S>Ct&?P$BTAwUg*jWiMVH}?%C|3>)p;T8+_p6jYM zI5-Z(j2|c0=0~pXeQskrQtnK2(V`*M5N|01GcqO)uq47VkTg^+6?@RsM=l3yChEm8 zw06Dz3b!_=S!*#XrUIDGZ7<3v1@)5vlSYFpGrx`+>RK?Ge8zx$#dti)fkC3wAbUc` z2T7THbt-+1X$m3rIriElu-N@FL6VFXGI^CCE~TgzqYX|!q(Q=h9E{V+K$ zYn^a)r7y`eVe{#c$_XK?WiYk^VWO{f=b|t+H?S!!sfAdjW2PGlrGMP}htaZu`sYg% zn##&S%lXYOMlWL8w0m5;2|B!7VYD=!E)axi$Es&(3Ll*MW-cpSp}kqz0|ZWc2@^|w zH5*I}9)6R<3DI9ey{JoCpLXCVA&*@>WwwR^%;O7|6Hhwv14_HpQSa6uP6iAq3l!I% zxa?WHQC`svArd)Cxr0Zr;%>x0Hk-~OBB=?kmcjd=junch5Ejp}hqUe}|6~!b@20sW zGTQ+F;}Zn7rDDFuKtpxDfWYa8Jh+a305l^|1?G^!eaBStoD(1Fx`teSL^4a(6fWDL zO@wl=zkL`_*8;f*XujI?(gHX+K#Ud?<;7`cmt^DMo*dPBc<`Gyk)=ghYxj(-IS$#< z2)RA}tW|6%Tj%iSS#=C+$&t1m3XXD?OW|xSc}8(8qr6EzLGCf1ebeM9Qyvd&dVt2y zx)Hf|prE^j?=L9XIolj_BVGjqJHOtU6ovjTFJoqvKs^lfV=8+d+@LSl9z-x#t+K|J z(5^VpyfvUo^^>$Q8vcKWv8BAwG%nL{`rxoH!Pn`D#Hqx?-$0FE>+C1i8k zpie{xc`Y)2Ipe%zcH8Tn1P=b&w9_PLxOhikQ34Q_G8Lk(?wb9r z^wxEjZ{JVw6W0h4gR9|IkDhA!B{u}WD@z#I@x?j{$tP)(!1Y8u7d=%|K;@L&LA@gF zgo_}eE@q$FGH*ZMEHzeKF-i1%s2BVDGqM2r|Y0<+`o|;z|aXM)IGtQlO3X2lt%f7@SO< z$2vO_vyn;quWXBfq6sv;FLT8t;&wxia$?Jz6%9r1JAxDnS=%Em)JIvLqYSl*3HG?7 zTi9(ThCQYb5Z4e@q6HU)oZpEN4aKbQ=t#xmegv}vk4c*Tt-I0oOwcr6NtdN;{*07F zf`$Q}>@gO!gL43j)>$%1qXTwU0`G!VBV$i39&OG2z2u_a6}o|&j#a4tv<4u zPV6T#jTD=S09*Rn;vv!Ngr{sn{DDL0NQMmYUC3nEgSCIA8F&_R{rqT)P4w`guzQ-s z@T8t0Qx+~~9^mA)G(^6G-ElykS9PWxesJS?km7egF*Nz0oNs~ff@JK2qY5F$hI19` z0P~-u(nQctG)1CKCsABC?F8l|;{K*)7I_Mo1UE=#a(7IhGR0%Z|0L~s`zNRC-Ii?} z(B1XtYQxK~X&^|IEsX1aalV*H;sEIfGFXa`A8E*&iFul3mI-!m#+_!f`w&OPOS+QiEwZ(iJf`mNeN!`G^tSyB6@s_I^1~>Z!FrhHvYo<^zfu! z56@(v+^gs1ra0If2S3{RgVxD)ainmI{oXCMNU28Wk&QileAPSMZ3T486+cFHLRq;A zIIVq5fsC;h@)2wBGoPl~VAKQK1E$71k#LAkJJ~B3(R|# zH->YBsXj&kQN%34Qnc-7OjTs`jJ&M{5-VxTv|qlZ(+z;oKS8@EnkEs5=$Ba$bPTSg zKNDhatYCiEid@k$U;b%HWEmh6tA^y*ibU6TUHoG*QFH4AA25c|^f)+pNA*qN+l3|) z%`#O{bc{N?oR|xW`J=n3T#;!G!HQ6?{f(U0Aj*6cH5=#TolL687(Y5*7pRxkPrgry z{mAMPJ~R3E{@Og*QXXgMpN1+*$Di3BB~x5KZmvFu=MKbo z2C*IK0M?lp);wQA--Au)Bi8+oJoSpPKBH|j(PD&)nqbsS-}gU;p%?FP-@w!m$|^Ai z(9kCcH>vc*HiHa%PR1k`JB%amd>9Jit)%y!&HYi`%P`3>T8E|y%_GqTJ3sA)4b3$X zv1?g-GvnIGR*?0+mPOtCm8BIVEXwO3N-t&}?PeDF*STG~P7N^RQeu$oTOXoDi3kUc zr#g-xe6r&-m>Jr*!v+F3yzfJ!h9*U7DZb}F*|+GpL2mU4ElFYZS$yg!xT6W%7dx@l z1{UPZwS)A%tk(`WY<{C%(&GztaLA6$U_Lfo`n(^snIiBfZxs9+c<$_eF&la6P!`5ySqCC~X_SqXmPJc!N;f-=rT{Eju66;QNJ8EJ(%P>k$xpcn@roAAte~^wxrjDiZE9S7?K?cYyl)Ts=hz%O88mDxUL{7Sw-HerYeW8-McIcz(7uP^} z=*`U`J5}u*ELX#PrWlQfJzZd0!%ewgN3#+3>EBNX_tX zM{ydnq&FgYs?z`p);suAl7}p)g0Bhhk1)X0pdDd9Dk}kh zj@)0+hVr32IsP~UI_fbfT})YD>WH>Ly0wz1$}qOSt4&5XdDe94zWbYMgup?Cf1Ke% zh@<5`@j7TZdMn}qD%DEZfs9o9HkBd^1y5sY{jIq<*!VSRAV?T2Wk#}@$ZfYgsfuJh zxVy&Bq&9y}OD;v3zeB20cIXc>Jz6~2E9#VUX7>$DE&sF0!!X{AKYpY}0u2pbz6yeI zDD95NO(Cb)E)UA@)@^s6@jzG`^HK#zmZT~EHV;aA&_$v<@1(5{2J zM)#(9XsVgu?S5)2oWD<^%26o5M@gSGatvcbW0aDy7+#%ZGF5)p9Zhi;Ax37fA%O$|jrM zx(uHzJc0GT=-gpyckg1kysmBTCy55L+Iu0es{rrn`-}-mh@BvvBHDvHPs_oD%k^k})L z0Z9UX?vT|9ojCH!!NGP}zf`9=X=`pvRwNCZD-BoQ%33{&2rzlOIAO0uMHfs$w{Stb zVJxT6rI}SK&>VR7CR#8n`QHxiH7>G=$*uLqLAO3ew3Kvo@cM)_Njk+~=DsNRq2iYl zxwGH2Jex7GhpJ0%=Io0so-&2u>}^ZBVM0J`IR!a!<@rV=kQwygYozge5$DK&TUQNI+Ip#R$NL9^0YB zVq%No98BY50j@GWIF$3fg-~cYn($=8j@_i8%-}r7zbNV4>Z*HYdlT~5bIc z6)%HZ(w;uygC-uCHC~j!~w<1rNW#4z12&$*~r748vwP3u3I8 zg=+{&(s$Vy?51i=o9|)y#f;aLsX;Xw-#PU_>NsILPzh{cgdTuyx`OybZPzN?e1G~U z!?PDFpnwK-%Cqvt+lu@pKkxH%X*}D@f!(~A=bS{D;9Ihf z^u*shMO{py(GC}PBN{ybA4ZHpGl!ak!p8W;xnq2y=p2I0-5rXs%tM^hK-i*x`EyUH zkBjVIPgFIvEyeKNQ2d|Cao2=7>F3|CX=%UXNqg2&=vcb%*f?5C0bzN;h6XE1UmMiE zJlQ7Y>{v++!m1r8+La*~x&ws;tqKZ411E&{ziQ5#nRmy$${UkT96d7(fR3fZ`l z4=~~KD7#?^8p>GTq$S;B1CQ~kCOcds3Ro`UXts-?m-YS2Id3P1nxeX#e>{>@tBs_< z%JK_2tD@WannI^B3@9(A{i8QJ(3K)E(vQ^IPZ45w&bdf(53M4`KzmxnE@8sNLd8Ar%@n=N@d znd$+Y7!FO?VN20i4CMonCdR{KmCRo3&kN$=)nVVWyXqv#@8(DMyJ&&c9nWS2YAkl! zX(b7pDRI%y>XaP93Km-K_iHqPJw{`Um)xZ4nqZ}76CHj&X+^6BD54ZblXgkOqjg$b zxi&&duOknqUvUJ9_QJldlEG^2!~6b~k!BE@4&$fw97FvcvX(!cd(fNQN#7lw)+KS! zP@1k!5eny-TN9TYHDsAz(S?Li2WhDOanVtP3mr+{3j3c@a=V#G#_~j%gjUQ54Zmex zQl#EdotRMyMU&)WxMP7uQf`vVmarU@BO%b!fw(atPulEb<}6zYb2=}L%^fK%1{ULT z!G-Lp0WCjl8c%HXi`AlGpda9EJSC78$T% zI10jydy0o(iZ#k`Qwhkze=|+J*MtZGP*Rn|kPLNm-3&28zYFk)QeY^{@}NNGO1}BT zaa-otdz`r73Ds9GB1=*QSd4bma1vI%G06}tR^rxWxXsjsqq0my51#0J4u=%rie?1= zGxc-z^)JM1apFnh@-a8Yy`bm?tEQ^e{xRH(DgZNdI_n(Q_8H4!?E?RB+b|KujGWjq zg17wDNm(0#1Ws3G>Ah=s+u?ORu`VfORx zfS*;dNan)Z*5xNT<|JyWxUMHb3c=B}j=cCmpM-o`33h^Q(aqz#i=#Etdpz$>ayCRn z71LVu-n$c`Cl{fS{vfQWZ}!RqiU}PyQmA2W^uqV`+R%F_vt~kUC^X8ZrOcyBAY9id z3Ydk+gjOzm02xPH(Okxa=gFSi;ajWZ}8tG1Jbx&BvW?`#UI-~$-EC~ zFKn%PBBhpXV=kzr0u>X}$_$&|Jd0jv*9%uMwam&=bD9k0ij`)+Lo@~S)xll%u57q~ zzx(UP1gW~t%Rbqic__8+aM*NYahS*#TCL3AZ$a4%PeKFAaue1w?Pwx~`(V;0y$HpX zvZu=*2hHmEz=$zf3v^NF^T-a3ByAqdxB6}=1q_06$zlc+5;pcLP4tV(Akon8kE)-A zZL47yv;>YE6%cgmDS~{Dpp%o|S!v|KR=qc)Lf@uwaBy4~BZ5^D&nv*+=&J8ve*9Nq zB7I65BK8?ig=xz<8;FxWZ^9uZAkNq32q8XAiy(=C@&G+2$lI01axbkcH_J`YuQ~LW zd>W^Lvzk|Y;ChXxr-VA*h32LL*??J%rWR6vux&-uPjTg6>V+W3`9^Xf%gYOp61JA< zRhM=@Qs?9hC3OWl5Z}+)c<#75%=;(r(glSZ57iM2I&#Bkdl?zUpI@g}wK~+NSiyk` znDDP?Gcsw6@lj8nvNA(|L}7)--qS~da-!|rGy6d`THG%m1G^N)T&zhM%g;>^V_Qfrp{z$Sa_EcJBhO_L;k?wR z-&AKyR$hQ+CUb&*-qXAlkws(yp7S>m9bUZvPWU+#6&EFv z#NGs(MnS=78jCo&|;?AV?^!a8k<@_ z0O46*$Cc~oq*+aoLZ>;IG(o7$)g#Gs{hENtJ5ubw1fB@yoYre^ydoJ8KktKQUtOgpRs6FTQ^rvn9mI4a-WM;N5=U6+WoHp0yO>0 zL`7uCy|2y95fxySe2V!H%jqE~myu{$${c~;Qe2diqG6k8#u#$kD5^lI;6ySoAZcbQ2m?vw$R(HTN9{`x#fBA1J;{$#Pn4o@^ zM&c*ro<8c{b8*{!MzxglajyWv^lPIDMWcQl!mGmjFBPN@XcW>ORT|4)%<}5u&r5c_ zy7tGJfkrcE(GKd(8_-{IE=rf4o!zK$*>uQo))ecam`3joX)$lKKY>6{>=vR@D^n&h zAX^baC)wOe`D-_rca&KP)NW@-pRv}p&s&CDtxg@ zD9-m!l`lRsiFe{5c~oq0e}HQaAZdh&>xK!MLH(94I@-Negnx@XC^E_a3Pz&{gW(<# z#sYEM(|?61^(alPSw|2w7tz}PaTiocHp^@5E<9c_~|R ze@2`)04aiX=2bBeMImM^T54eahcLLGAtPZy+!JmGmb=l?3*^87i3)&tY?5Hf1pJ>M zPIR@*2vWuAe4Y`en8e{B-134=j~>*RQ_ujTn+PatIR!{?Ng3N8$qk>-DOfR#3PjJ= zK+7`6Okz?*wKVxL7ARV@6ZDv4)kYXA0^fvJLYM##&M$uE%$^Aadjv9gO|VlGNJ6<jQsM`|wND_qgF*uCkOG_90A>qul=b~(1{<-jts=tj4VjRG9k#Z)cERg%04E` zzacuOXWVO$u*a+EIgq>)U2SAfYW+^v-9~677Gu~DDVGo8joQ>zZfPKRi%}{Nrl>A6 z-wL4O|A{#)*CV}GBojew>t@!&99NYw9}tsMaPbGkA4o8H_Qh`bg}}?;y2Vl%$H+Xf z!vn7P6b?r%Zlo#)B!fhUsV9i)felf+U78y7`czDZ6s6M)FW^C_zt||y)%uVtp9MUo zC+J)PeFy+(dT=!T%Z`|7s{R6_x0z@VH(EF)zh&?()Et9hrQ|6fnG{=8#_-;0^P++= z_*Rj%z<7~FuJ+LCz4i(9vGMs!zy@b1Nv9A%V&`Ogi|S2KXk%xR95 zD}aXt6}PN&kpR;aMQI&0WY%gCFrZ}gB>22Bk@Wy2Jb=XJP+h&)01|2M!W0_B@?*^6 ziVj!;Y4q9fnGP@p4GccBBL=!I1Q)738X6iD2j&xxms1Ih#nVFso8dbTLJJ8njJ5d! z4XDQoiNFI8UQa9;t0+K*SSH>=R4_!@tVHxli5?0*1Eg8XupuywDsRDDJ=eIDDiQ*K zuIQHk@_a(4ecVI{U-E&@g1+&HMpK~|Jj_x;t14i1IKHOpis>T}adYxoKLDUq#72WU z2K;CWhovlY!v@%D@Q7uPp<9{`5ZD6>2@x^eOwLXSKogn*fEf}wf=#|?WG?cP|30GC z`DIk!?4MCHfxr0iYemHsOqG`;jUlB29wE38Xqxcp5g78Yu>z0BGV*_w{uUhjIv=Zm z5Bc1U$umtg1-AieU|&oBvw|T9D;4@uR)jQrX^g)et<*0Y%;}^2I>9l3|l)5TKRdzC>wAi#sV0!7Xk(71u(rK zq<2}G!0C7{#sGof-;IggQcmcV8wG#l@ZUR{YnaVi#w@rza}_mkR8i{IWW6Cpr9_0r zwn_9*B{GiV<9!oz{R@m-0Nk`K9G8aPj0?FxuPJ0;b2nW1r(6li;FBE@$SdB z)MV3B2Wtlrcghi;K3fJwyuT4P!C@P=QErw3G**(QKp}|~B9jSSaEk223+0ZpyxR*S zc*~Zs;7g;VK(;|uN1GgCB|uj-qv*_DbzOy2?#vSyCc@P)Gr&*6uYBp<@AKySe^CCD zX;M0ARH257>5^-G5le_J+wR4=LeEIU>(t3o?C7zbHRi(Evhq#*sp}?{ixT2j=|&Zs z>*!EHGl9GwqEFT%>$D+~bX4s;= zXf^fFbf6WGV?;|s;C@0iK&P@!Wu>`{6vm43VZKnrtJohE)J)Q|Y`Ra2JjZK97&!Kq z8nCD|aX-Gth~V~>5IDh5D_~;`s=!l)jQTV|Kr_YZH^#?S9CjB&N71$T5KV8sUj$sD zJ2n&G_Hr)n>Nm%88KHI^6O1gJjB99C(<4FF%q2islt8o0aLU!7_Eec*WpLu+b0#C5 z6=JUl!GZpdYu3vga8^1qJ-kkDP#}YydxB~=LtEk{YW^r(a@MY+J;kZ%20U!fLITI; z1Wjr`C*`X~G8+R*VR%v!3b2gL!p+Hs6LMfvIJK3}HBHWd!~(pDLvnCY4H=p>k>m}= zwK(hN?J#SowbvF#q5gCi%d`AmU))c=Ml^-w2HTzm@(~eML*l5)d~ayR4=gYqzW3Lu zd1O8?JN5q?mL3`WgS04921SU(-eCVB_ic6#=;bWvFOZK8<%MJ(Oz<9;v|AO^i%J$< zK|tLrBMQ^JV4aoK-gcqnL+nW}ad(g;F(Y!RQ0S|;c}H+^*>$zwXlbxdy)TXI7F+!V z6di!L1j_swH}ENOT;Q@ic=RV+5nJ)b7Msck>eeCnv#I5zej*C{y`sb@ zK^iF-@x+KT3qzXFq=AZ)gCdElu=v3lnF|)^CEUg))TpUUSv6D=^Oy+lnRI)3F8bz= zrZcjGSxbUkC#o`?3LJ8(P@y*mW&=L^z=As@JwLjT7Xf}T4nyny3aU>8F)MbeFe1_6 z2$+Yw72j$hQS%DIVPR5-!rh||-&BXf!gcR$7%)KtxIhU;$8uXAq#KDJ1pU3Sjo>yo z@aF=<5MZNFad1Q9WE{aaUVb?~hOx)H!+}p4=`R?FKac~&38)?B=vXf#afE=30H^?m zw_c#!SaTu)(B>|v+YmwaTp*=_-TP-WBH;-*>O)mS7YhqRxlXpKwcsiQu{X`D$ynMh z;lpw{u3Evl#Xc;#?tB0r=PNN&@q`Pj^BL_@FUkUlG3;!r{t&l_6>g8ba}6*Kh;%&( zkkA1rtbZPh6{C|72z2j-(x>_tJ-0|yr>mLv=#?aX7KCa;1Hdx#yHUF^-poL%02~`v zCs+-cl@(g?J*d(cWQxT!MgyL=TDn2JnLRR>2_c%o9_x65zqHQgo(`w-g9%TRRTV0> z=^lkTSBQ{wxvw75=1whWdBT<-pz?JnoWVhHdo9oaL&wf2cjO{LE-OcR63Sr;oeyb& zRm1IB&_PHrggxW{Wm4P0MHuOg=ykr7(z6Ouf+W(za!`d-(nY34Vacx{r~rGw#)0D3 zbzZPNu(AyjTMVVxJ&z(F-6SI$@$w!~!q$9iX%vFbBWrbDB}g`%000010|8(FCHpNi z?wb~jL51DT)^Iq?f}u=k2(0}P9T`Lss)%tQ8$|2^77dX(++?BqY%txvcG*zTM80hS zGMX!ermOB7zK8-<8J|8xCxsY_#m9JR(*xC+ji}*TL8dxwW~8o7s*BboSeVvDq;792 zFiMqzX$+}y##gKk2Z*8?Dk0$hS4Ror;gxRAvFPhPPPoBm&Y#rAJ-r?oa9Xr~SG2{K zs)jeOF=D{9>9)*q>Ab7F5B-PBh({tB518u$qrE&VRkHOT1>EDc-qI6y-qH-#lSi&P zyiU*hDjx=*Lm<-;nh>HgZwL%=9|*_Cj+9VEM1>L?;O!A1LD0_f zTqP3xk_&gC&`N+|-$Y>&>m9gEfdId-9`bF7Q~a=TOJw8rC+*m-2(6Pe7fSgoej0T8 zLXfP_I60H~%f)Ok0&mmb6%NL(MmRG6rv@=KO&WRa$dZPB8muux$1ZrHNJojx8PjY{ zvwDna>)%qX=t)$lQ&_7|1NETnI@+12jlc&@(k3E!qbZxa^bim-K=>+2+6t1Kz+$+( zzQ{TGS#-*q@I?!fG<;-YqXvPXim0nVJ%9?WJCZro4|oupx_^j>@lz=nnYC(dSlp%< zT8V#Vj>MdVXwPyFo~p45E(&Yj{*f!=`|<6TD!kE z!KzSveZ@CE7&2ZQuD98Oblh1OJ)-8OqtaI@=)J98*D8p4_-Y!Mhv`_+W$jAz=oUj! z`x-bGWO)YH!jBQi72;3FstF{}Bc1V!c02p_U2&`)pG4%lJNVWXIEk6vKsFi;#$R4s zA;DZ0omi6iQ6LwtTsWR&U?i>3onUiWd|zbd5tXwjPHUapIZpH~NaE_Df`*v+v_h@Q zl@I!%41LRB?)*xMai;n4VQDKo@6@O0>@5D~zDrctJ*oZXJ zflhjPG_lZJw$F~b2^v0^YfCBs795%zCjn4qi69xi)uWXAe;iJ#=rPL73F(4Qtww3j zI;ZQb)j@*9Qn(oyr>c2>A0wdj$v?naxb=Zh{N{35;$EXw5`{X(x?X)Uyf&04;Uk3w z6@i5;RW~qEmjTCp6gG4eCp1MgH68udR0z9p;rWo>b^;|BhcGdKo0fog$1zK)mR_+m z_@0^84!zVSU%TC(4!iX|A~ib`YY7(m=fFI18y z6XQ&g%s%`5>!MNk3iYG#Na~!Rh*V#dm`{ZSZdIMbdf&*nN&A4f|UZi@}KEpU^Tva zm5H{g;y&;!HK8D4!_0uH^_(Zv?X(Or$^s(^&*}rn(Ta_aEHMB}7U$~((Wu|3SFh0y z7!y|Y27NTdI&zE&WIuNt$y^l+jEEq?UWyckYHwCpe~lctYYW7zN0C5Q!)D9K{3IJ( z!5})z{8KF^KuLv(JEm#LK$sUZ)pLRl7; zpiOc|nEkR;)IBAr-D`1U$EH=hay=y+A~3oUr)f+9tl4iWrWKg*w4WJDz8Ii(StwjA zne8Jf%jH%Xv#*-`TK*+$87F7(yT8d?W*8RotZ3{8wf(Ty% zB7_VuTLjJ@L60<-mpzIa;9JW(4EKQvT*Y-WWYa~l0D_%Z;9+hI>A%-<5-t%o&xW$5 z^&fpnt-vf{^to@xeTi~7c52#WGUHdZ>27%gJjnG3VmCJTp;{9_VZ^XQ~-j z9uNMN!}?Ud&iz?!)A^mjT?M}N*N0V6ky z+)G(SW6QrD0mxuK7~N-uCgB`V0$kq6Y}*4JA)yVVcS$s!p;buBq7$UiYYpdcfIkSY zRNhbC1A9=vFho-Wz5ju52aoAn&a0xiz$-fJEZ`06elH=^%21JQ!*af(Pfd={2^cDp>QG%?!N!lQoZ<9lo zP@!Uc1&{ppFc+9AT}omP(a%yx3L-U!TJy11ost6*QZ(Xpl3!$>3F4~=Nu8WdJV90X za1xHjgg^ij55TZ@=L%OTK1k}d-CzBRYO zfEZI6FQkDF<}_H-4gpdgvUg(P!!Hn-^b?pQEP7xGS)K}MuS1HwKlw~6Cizh}_>&mJ zQ0h>CR7dBfB+MNk&`W6x5e)qb?oFLQq$oI24p=n7IF@dfb#%`~#OLJGsS45nt*?a&Xg$U|IDwcX8z(_ND7WwHJTQrSE1AUu#H=D}qh zFxV~FAn`B3v3S{e8qgpy1lq)1yA~$qT78TOZwGKWwt>s7zM6ow@S>xF&TI&A%6Twyde(1eCHTA229391(D zrzEvmum?Rr= zR!erIn6XW!=%G%@uO6)}dYcxV`w4IgG^tTzC!am_X9x#cnn|9$>8c@Ur${f3fWQ~i z06X~z?zx0)KUDy?pOS=l`18Wh&>)GDf=xEQCpRTZ2sA8=#@o#H*>@IZP~vnBFULqm zBZNDkrGpq^IVD)iL`WPrrjm!?#Qb;|sTWKkuj0Le6#V|IP1c5M$_GpLv-&smzNmE3~Vh;k)^B62XrfL%I^_4?&A{`vD2Lde- zj0Xz=bnzHAN^JmoAHvqNtdIbQ081C(&*3OcmP%DTUQ?t!rpovXzh$ciOk`^fb3`}Gb9p$hutI4aFEl$$ZSyzVoMq@ zKGGN(V)(O0+G4R=exw;@PVXp@6{DdG^)C+-Pi#rS(?XOEH2|K%hk39a=FkPxmzHZC zOMS9cmLXHDW3Hc=kUb!Yx76pMlUoSL!Z#)32gDVg!dGK$bRT|R#+;6=pOcWcbzzF` zWx4za#CvCF#dAg>DQZzQ5b3I7lfe>v7>b^N8{vq~wPJbvLBhQSkwkzIh_B-S1xp33 z@{?VgaGb{x0m}#kDNj`h$k6ZBolxOyXbr4c^WY?X+P5uCEXR?{Izm?yhbv39vxxiI zFz9muaoNm#7;x=Bb0WGXeh!gBZ8MQRH9*pEtFBPNn^jM=2Oj2mE=y6ZPXKcnanX+N zNq?<^r%`Q%vLmQyX{1N_nY*{_iy+H~jYq#tww*fv5Y2@pLR03L1VkHO|G}T)4Ih}l zxDlUI-vTE;9}JI>vsA<&GP%0ZI772!qw$39zD0?nqtCjxm(7H`U zouc5f%l_NzF@Ls$BLIYCe_bAUb^e~dO=gaZ9bF`t(qp1iPxj!xvN|NTFeqgplMI=! zG#}E=wP6WuN58JUaslElwt>i1#hdG0bTg}lnOq)i$<>DIg21*w?tryz#ix|$C<;5vV+4`V}>Z_MUXJJ(kJKF;;_RMf|Mj%2_(b>jj`n^qVT{_Vd}j4;mSBZi`Upq zYdJjfpj;Yo|I1%si)SciVISv5fbUhH*CoRy?xYwI&jbt@XWbBB7F3Q{!&?UBtXe(8 zLL=)n8WA4{zYqOZn*NMGq@k3VpDQj&0RtoRfxv>vg2J8~oTV>pt0oPDDUoV7^P$iP zn}|E$!8snds;3bxlohQs4Qe#!z8=HmvLUMEB74t2)pY z1mVm?mwmRbq>=OeVXy-9d;7SgNNv z3jrdic-t&VUFz0z!$_j_ffB2MA{L}P(3lne@9$%LwA938_rU32P2!SqA z8}Wnl5<8=lvP3{CQojB)e}IeE+Xxz~g`Qpm>;wKySOike4uZmcz|1n7728{6_LB(EK|MY&ejNI4M;<*@9(KytQ6pGdJw1#^cN`yG-N#MvlD?Y zOMu5Q7v>200G3cw9T7yT1}d*tEw?lba^(~P=W#_PfVnO!+ss!sNL2-LD=@TpxTP>w z;t=p0>Z!o;1Jk#MnZd!51*w4sWVwGx4n9i(foY*rCL68`;i>mq=stF=j@~cVIF9)6 zU6cYC6Rpr26ft=32!^(J|4CAOr{&56e|ACGeJ!k_hHtf3h8sq@e+94VjV@OIz0rIq>Mxb>rHJeFYt5{NZTg7uP^K7IPDneQxq%QG z9$J$KEPx7?;-2~)w75t05sU)U^UUo7Mbemq2IRB_*39G1nO?325Y_O7P>4mRRJ&+{ zWrM2i(b~)_M?h$xc2WQnR+>g{n-oCA8&hjCN^orx6`p95DY5sU21{>KdxTGpIaVK~ z&o|m~>x9IpS<)Me`aZB8hyySN0@x(Yh3Q|+9H7Ze0{T7uKo|ig(hcEk_wXo_g(w$~ zWpk;jO%dFN1ibF^lgl56SQ3W7y2-Gi!37i7l5tWvRf~InWS4|7LVs8zMKVkp&mbh% z*qXDC)RPrqD!7JV{C#&1Zk>Uuk|4(9#K&)1+_4=dL~LCCgW5Pw)2R&Ou|9~WUreV_ zA+^%oej>HH|9wbYPJme9zMJKnK&k6vJuqlZ@CLN*) ziuVj{qFXVVjIZ1XelEv~rGZ^iXVG9vA$tuapcckr&E80XYCZ1pT~kN|6t)){fKGJ& zJnEJoxh-))VIWWp)>^f{Vfd@%cMFp6jck9C%jcvV&~`!UG5b@*6jf4TrrL$vBGQi{ zOWM$QJ^!qml^#Kf_%o#Gb=@|B6dp{us{2>N-_q~jFzhxfV{v2*ciVb4m#v#rUg!az z-+JQAS2@SOseoG0s~z9|f&mI9K?D|KqZ5<`!lu|0!8Ei`0~m{WR4;%`SgBh+2aEuh z)GJ;@8&+cmend~!lcTAFdID3_NCQg4nk}^RB&BnWfqL^+DJ3IZ|Jp-0=?_o=_?bW@ zZru|$VjGBvnVt}zeN8Fl2_}8oyTsOB!T`3&*jSSFs2YBkLHWrzdD*d*w6Jc5D6Y^V z3eQl6(r@e8*f(^h+w(A0xa&qS*i)fM1c);B6xweDH&QlsZ!ivtzrwZC=Qx%HInoD# ztG9*Vx{~AsP6yK0%pjlE!mxllPsb;9Sh9J~Wd^QRaZsakR20t5FiV*HW-XR3%{VtB z#c+tz?Q4>H&<+)1DG4jjYkc@=yAPt$+1NBs;8?W(zZ{?6j!J23s((*#i)eZ^Ob+}(rgveVUA50=74yxNSuUrBw-ii)~|r3 z{IKv`XWyKPV48VhfLD8u`5i4wi&{?kAxCHWk*nsY6-3Q3bhtcjN1=2StP0=TC zi2{B`vFN}?Kq4OBCKCp8Df-_5F_=hy&lYQByts3Km5_v*W|A5X>k1cl1%!X5HG5^{ z!<8+lP^?J*g6OuviPtTtgzCYH1xXJbTDM+Y;ImmD5Dx%0O}J|` zoDvC50Jb%B=z7r$G);E@r4rA@yEV|>rk&-N6CX|R%mf6O8HEnv_ZgT;On|lUjtv*{;M5gV|3u3IiS@+#nLXsN7~E30yd%q=jbA3=w7SG)iWP z_;5Wultv&Ro_4$U(hC-rD~#cQ#4;GW6s_=0Y=tS{v?282LWka0-8Rfvu*U4xV8GkT zw?ia$4j|SHbcxoGt$=}1=)d(Mbls^*Z$k%~aFt&7q*LW_NJ0@_E!;><6^vvmkt;fZ zP-~{U!@G5n+wr74T)fy+nEEf3yWTC5R}y`tN_woA^E=ApWAYg{b2bu=(g&`H!&L@| z0dtMXO4J*kLG$6nWtiLvV_VWGpl0LfctLOf%TB0+wZeR=0*FT|K`F9m7?Jz=KBaOl zMM*ml^FOZSqYviD3+L64uo2S%Zd2}$(z86~%Bd?|>UngHF*XFizlqshKVXJ+HjA6N`7c2dLJ$8-*Gxw3uFJSt3GA+a36AAJts|NxExX>LVK|>C`kGYgJD^QUXa0I#oT86CA z!e~RPeY`R{9nF5Sdf7={%>(;Uz$iIXq#{5`MO{XsLsZ!4Dclc#Kr_AMC(cdl`^rhMnLWn4R4J})>*Op;Y0DCamGR;OwYCh`8V=s^J5?kHhIaXrTeHYczQfy5 zMHle|Y0U|lS>}@)(e3ec)qr*!gX@Ex)m0Y+_G!W0CnhND>Y)^;@BRUkMvUI^Zt#fg z2UhggOejiR?D-%CrFA0w4ki-pXQa7DxFvN$)+uGcFt1I(PRX0uq)XD^Dx(7&qzp(X z06{OmJ024sq-GStw+ao==ZBg6;d&618pal3ouOy39)cBHP$r0phD1s$TpuE{OD+%2 zi+DJyavch%p3u3X@<(>lz}y;Ca5ypj=D2c{sP}_%N>!0o9L*ZhAVDd6DB!>mfqu>O zf>U$eIL+vk=-MYhbKd@_+{aX|Z?=LYSzGE>YFJ=1$%;r+{9Yz5je3Dix*eQBvp(> z)u}R)3L}6>!?TxoY6(4&WEN;TnQDxxYDBI%|Kd4@e_(_ zj#+N`k~1=js60KzoDQJ00&zpy2?DfQVkcJeM0>9dYVb=>y^5 zfkV=FSMMAi45zd@J+zMH_k)NaCs-bi;iLiZx1F7el`$RgMT`^DA>2};!YJ?JJB{F> zrSbg`w)LUT=@YE_Q(oNTv3HD8R(JmLGp@0b5N>OMPoYVULa7A&9u!b^oAV+@Pt(UU z5Qg9c@ah`&kr-M78pBKtTr2PgF`eK4Iezt3gXtRt!IzT1| zrO!#{Jb!gu(^T{bam&rfV3+F}6in3V(&FF5d>o0;_f_q(-H*konZW5pN?j7& zafp-+`?N0{ryI7@!bzM65T9gx-D|EOu)`@zNP-M$u1`rFsqH-JoFHNxvv7K;CxWG^ zEj)9;ML7(*W^9DNT2P1!Z6zotcIFOEbxbxJO`Gl{*n!eSvWLPqOen>3u_SS8FDX0c zvaFHEFx0A+wNcl8j0k`j4ug|>ai(iUN2l;7A7eBHf&~$S_>yki4F*l{n?ObN>MgWr ztKeioj2sqr%)J;0kYfk%MU8pRWTAR!Wsd2un(k&94(*wcs{IAm8^O(*83ZgE&dx;&c^0Dq!wP2RR9cuMgT#g z_u_56(BvgIea1~%>CNmd`oDC^-i{&-Ngvv)k}9(6Go1z`RMg-tS7pOXE$8%;E|H5D zrF!Zh6nwUc&d~cgjVFUEb30lkOc2cJybuxGVofdQcB%hC#NVjKIL}jNao|a}bNdMf zObxmoOy58sEg|r&!IL2D&Ft-ik6v+_qzE`DlYO9212<#`aRcxK-&#OPlZ0zDkU~hc zCSQth^%s*m2071vqnYBB_L=1;etdGpd4hSX9uSflfd<9Gk_gfS2_!a@5j5_+ zi|-%)0wK6+yvW)4DE-KI!3inI4TwkF87B-7lA14372_ZBv4mPsVg_)N^R013`TDm@ zw*CRIX%Vo%Lcl->oQ46vaV}Wm%%;l)ib-c;!Snco*H!RQ4wqzD_q}4~Ou3|%TkVj9zNto4Cxkqp;fl$k_q>#AyDCojM>#}&I zPC*7r?z|FD9wknis*uVs2vT^13eqv3urYcyP%mG>AZm>5svEaTr7L`rW&d-=#}(0) z+zR@;S}&>gDuhTfD!xv3SVCdZki2pAPyEF#=ObCkbfE^mO;3Z2aoK}fP)15ZagjX) zZgm@#R|-GSNm0QXBQCgonwZFfxnZrxk z!+4T1+O|~Rfqc`IkDP%vpnfFh7!Oe{WJHF&gONH2ktxB8;nKQxY00fDzDP{uayt_u z3F`Vo2dasPz7vP>C=5}2$QGg>A$DGn*k~Okr)nYdf>6j(A7U(A7;< z@okAyu};Jw&=Lf57y=#fGC|CYwYUx)?!XEk;W+_c`qWk|!T-acDRkmpfWzEWrZT`1niE#_z`>+FxU)139~toe^0l#9-L*O_R5GaG+@4hzfzpH8Lav0eGf# zwWLh^^rzDVGGbO%-aiq5+Q#Bol!iPU;d>K|Q{vr0JP@R=<}#=Z0a#`5A^A1%11B!u z_gG-ni&41g-b`Jf$GT*)Gee zXQhTiB~Kw?3xil9w1OR7rJXWGU?j;R(K)(u4&@N0%i~a+3T@qq0NxGtVYfmNyM!IF zhPc~6s=_l292}hq9Z7#RBuMsHQcp6i!^5bMuPWPt^3kTkD>(oQQB#(^n*tJ93NE0r z8*}|fyuBq&<9RM!65+Yd|Hiii5rYNLUNNmtff@9eviOwfBigL~72X&#t2V(t^ryUd z1}IX@ppMPp)>M;Z0bxvOy(~QG>Qx{XnU@<|8g0ecs`lds?~%M?i^BFio*hkM8!Ga| zm+iuVD2MCcI(2fK#n0^X&oX1G?8t3JlAN$EmBVkGF*$9VstEtfWnMj8WwX9?3Yr&g zQ0nY~dOECul+h;)f(Buoed3G^A{2TC!S(=`$;X=%61AY7Cy|{4LF5%(@Q#0${aLix zNQ4Y=^4WHPY-lyH5EZsd3ED#<2X}f5I2eV&%Wy1>tk5DT`5^Gc!-0%x0tnz0UY-U+ zD)aM?l3vI1!vW!xBf3KdP)B4hsuAA-1MBmCTc2eY!1sQB=`nTO7;z%IOh4-MAgClj zBgh+`onK?gf^OzL1z{WooRhrifR$dAwt0h~+YPBg(nh~dX1GyoEkHl!VBEycc|hv> zLugblnKb4lg~GVhcwF5Ju*iZOl~CO*XFvKRvO-K7aDRbf@qD5cwSY@8Vs`DMWlJRY zK}gDoyv2_5^%$7WVhzm5Z)?%fL#t$!sONTXw#o!Z4p`{Q-uf9VCJaFWpL)0+J95dL F>VRGqwvGS* literal 0 HcmV?d00001 diff --git a/doc/protocol/public/fonts/aller-bold.ttf b/doc/protocol/public/fonts/aller-bold.ttf new file mode 100755 index 0000000000000000000000000000000000000000..dc4cc9c27a59ab14fbb7444c6ab35c5b33a034f6 GIT binary patch literal 66836 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%0AAIIsziQtyhPht7#*LdNqb{-ye3^( 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ⅆA*wV|2E?UgaO-298Xthc^!eoT=hLnT61q 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 literal 0 HcmV?d00001 diff --git a/doc/protocol/public/fonts/aller-bold.woff b/doc/protocol/public/fonts/aller-bold.woff new file mode 100755 index 0000000000000000000000000000000000000000..fa16fd0aba81582de121d833c7bc50e8f1b1b981 GIT binary patch literal 33244 zcmY&;V{|4>v~~Q%P9}CHwrx*r+qP|M;)!kBwr$&Xa`WEr{`snVSM}Lz*Qu&iU8}oK zwX3YCC=f8vPx9XYLis6x!BPL8{U7)LCs9!)=^sJK4~z33bnL^h#e_vff4G4kTjB>Q z01WV5F*#X9ARrJ#ARy#YARrDK3U}&2F-2uTARyF^AMFef5GXrKKZl5{A{`?T5PH;4 zJ@p^xrMTI58(Qnz{ctBgy09PYWzPsw8oD?U00CkA@IXI$AVySicrz0_Q|lkD;73#Y z)0VMf16{GHzT=MuOYKJk`F}t(wQ@K4;q-ujbc=w1nsOckA z01#sKL;i5wKQ_S+NDv$$^3ANB+eXRbkE&&Jt1ja_++W3e2Z)}r4x&)kUzH~cVM<*a4-yeU#mp?ua0Z}vwb`Hir zb^ZVR=zhivRF7QGHt1?>@Y84ig&!N@KU6`;^Zb2i=JsE<5@>Pfd8+ZmqO82#7DvuBSCKU3Yp;UAuN&bqb*) z6`DnvjJyqqUAIPZ^VZvBd2e%`5!`v#y*k2NA7ngT;(u1gDqgYi`8;diaeR^a(tKqJ zS+mEgW0o(c4Do+mE^TZtmkf!jteNx3PFTns_!*aiw$<`qs5H zS8jYAP668Boougp8%?YxT|MC+wwjWc@U-6@bc?RDx>VnNO?&V#Fkg;)7k09GeYITe zHl+|{W z&av0|T((!r*A>=>nkTJ2_14p@ziWBwKhw(@RWG~FO!u=hN2GE7xtWPA$7HzpSRC(j zeH%M$A803jGr!(zzq@XBo)=QsT3DRLln$?;UhNah*zI} zuP)j4M>NlWeze8zS#^S~yZOb^Fi&OwHBasmnRj#T__D#eHu$)DK85->dH)EtCUTv- z*$`T_&o#YcQ|}bU*BVg!?-~DL+C1$U|GE4Nq?>lJ@QkjW`t@LXH#31Trc4)POb^t$ zh&oaP7ChV9AbeIOnLXC+pIB|+;BM^&QOfW=-jXAmRKjp$sQZ&nGPCx0LawgiC?kw1 z`7m*2A@}BlLXM_d1oxfLL={J}OVeiNg0$}la(?J37+>K)LJpsy#H?sSv_nm zqIXOePz5hsJNztUcHv6Zbe%Kh7gfzt-UkbHl0O=?T5re~gQ#Wt^$k)on0Nf3KRiR! z?~vIRjOft+G61i&k&>d@n@^knwCC$78qIi!Qey`)yP^VvC>!JjwVo+xJ4Q|9{pa)j z2^cW|qqS!QR8&ImZyrKz!6|_hgqyLyD!kjFzbcZOdJh#uhk;WB-Z2-94*boXpDM5$ zslRH%S4h|RGwQ+}KMlfy0Y43tRs_ER%Jyavn_j#(^0*ls^&RuMdrU0Zr|Aj=TK9o3 z0A1sbuat&V>ze|<7|!zH&hhS}E3Cb_c16z(_GQ@oFDWoL?#^kzBA)i7!hVxp21GxT z6OR-+`|-;8_2D~I;9d`RwfnlB9&qX}fA^p4R2e;zco5m3;$>6SFY%;3i=qCd6_tO> zNO#|kJ(-&yVNU3Qv?<>@dI#Qh-t?uu`~@Bb2deDLoL7lNZ7H4~*Qz|yc6aj@F{LaF zR=~Y&irrm$l&gQ}6Nz=JN1@)HYAc*3(FsK=!Y7av?zhPaD7E?xgBZTi=sa*TNQDmb z#pY6g>*a%WGV@9b@H?ZPy6C!&QR=W8Hg!|XCAoaY2YziPR|%+9o8C#v!WXSo&8nEK z-lUCDIH+y-#`av64d^4-jm!>*X0MsM%&%eJ$Zj!U-$peAsc|!s>m=qHwK*-_GGCQ% z?w)rQd44-_AOL{9rKSzwNw#}W@#2NWo9#b+Oys3gk>$6jt;Pf6=~>eZ;G6E5W(vvn zyt&6|z%`umm~jcg)RV_&e{Xk=E?QkTP3;dH(ds)q8-(#vsqg1@&>qcZYQR$yfzL3w z-MN=|@q&I?`p}Y_>ciqtBSx@9C309)J!R;Mr6+{@ZItT?-1f`K1lgvbH=2k@5F0~5 zSlBF(rRkF|!kyOemj080N6@#=h5Giy2YRx4_gHPA|2l;3E2vicMt6asSbmzC0Wbin z6s_3nn+&_TYylAlZl%@}0v^y7Sp@Iogp|qcCW5RJAD~*0>kQE)A1Ollp4KMyak~R0 z;U>5?;;HT?h~6>X2japruFl+R$``c6wXzkU0D6tM=F}0=lxsR|Opoq_!oLjMM(gzC zXM>!+Y{6PsJWx+P!@@EFyh$=64YJ8SLj&|*hH*l<>B6r#YaOv_mHQ51QtE4bGH7VqYwqaVp7OmUmuH^~5 zp7l7!(YbR9e9u0LPxkIzBEd$|3cFwXW#Wx)<51t@?{u}kruO(nGNn&eT8{7wFL0?H z*gyTWnNZ;o4&E_J^fz29vDa?`UBY45t9iFfwyDF^eXcSuUlk9KDySDl!;N+#x20)& z)(}{Hz&diz7_bU$&7Gez@>k;I{SGtvii(Y9WGr8-A??&{rGqKRl3PWn*4QQFgr`fT-I8OS1FLk(1)GJ$P9- zYfV1xg_#)5dLa9DEc-S>m)nk1`xD^y5$+~}@J-eOMWtaSi*;S#=4$_23a!{HpJa*c zA`5aw+e*n$x-vwf#??ECyS-gKNN^jqWx5^w$?v#JNtaGZARd43RY z@x*8DKivKEqnk2^8V{O9$2$h^zm41QW4_Vyu@=c}V%teIB5nyFvU58U5Zt4J?>HC< z03m2SaU@uCP@%QnIC%O36xdS`p|;*27Ck}y)EQg)T(SVDKHx?7qF#S$_8A!Xk`^5> zK*SDzv%lwT*sXU@CqBDlS5M}RVO6e4MG}w%tUkD5{cTPMQ7DY}x1XiO3|I7$*H1`ZSP&Cnu87S5z ze?BOr6No<^alKRT6V%F9@TK+&FVuRm-aD+-Hr)EL{yT_Obs6O^6*`QqB~Z_6lTV$H z&gZ)ony##m`*_?&byZa-6-Jt7(Ry`iqkcgKHF9_u?W#od==zztkYsx^OxrV+Ie%Jp z=E(CbHAZU)4pz|5x|wT>qxtEaZDJB8#qNL@!H&*>I=^nxmq#rg(?2_WC~v9zEpmHq zbPhv&F81oa`PrWuZA0n{I*rSQZ+|kUiI_@T0b zztRk87{%}z#rPP9fmS#nFG3LMSOe~GJm&FB!Lh_0ahYM)ETy`-7*o*iEhA?=L#eGxmZ+Af`y`zoWjzz zw25oi7!G7T{wv05v~0T_6k0Dq z=LcH$atnR5Yy}KuK#5qY6qUeGhIjeq+LL|AalKE)>wgSO zz}Y@>;mnYg*G2)Ou{Og9@wqo6I~k@iLkIDRbMh
    re(KfHTN)fQ?}h8El;!*$r8B(ru<`g+9CstT*?lQsgOK5AZf*7c+sv$Fm=FZBz!B4rRM_f3y2Pd|{9 zZRxni_GlUp#{I6w*P8&e<1~ZG#Ttpp1vx*DTb=zXU?0yw2^ooEsV`gmM*9(}s;bf` z3jbgkmvD*i+Lw=Bli0Oc4+VQkP8DxwIX(v$n0yQ55W0qdS!MgY-qh z;|weoB_u;n@nLFOEFPy0!qmwphWWCJU8rItk_5;c9z0r=K~kalcNfbro4>HnbH8x*eQg$9 z;oemSH{jebv)RKehuQHYMPw=#Va2prx?7@_?^golp)c6gR$I~yt(2ruSjvc791@=H z+_^*>wX$*J?K?+QJn`=5lru3Wxj2EHjN#WH<_#g{H607Fuyie}E}%|b2l#UDWjO4- zK|BK$N`5J2qT!Ncl@YC5$m8DePE)PAzS6D#-XA|8kaH2P+0ABvYz zRn(TXMY?hJgqDy^uuPJRYjFmvwfZTS9P)>>F#k$dM@*`vq-jtqZAvNIz`7?r9l7u* zjl%4@wmR^B{;Iyl=GoFDE;~2;n#PPj21(M~N90!gcn0K_Sx>2jR+_#?Mgr418G;u- zLRYK}lj6oi!Ve3DCJOT@o*ON|+p2euH>gEB&yJErYx7e)&{G()u!2jMoh&0hSnSRe!P8imjMGoPham#O>e!Q&erWVb7mmkfO#i#Ga+S8!qjOc!psSl`aI{ zu+xoPGho575WygjtTr;An9GrZB_?B8P5WLg<{7+*y>S~JPo>W6LSKUUFJTHr`9h)O zP3%)KB;=e9h1dw4gi>^bS{%Bbz75u-qFSrmV;Q`b% zV*7L=DY7GRM*q%SMzJ{)Va&$<{K~9IY>bqLirBtZgM$Mp)Aurld(@Ak*)Yt`1RZZS zu4AR1lpq!cHyIo+i5^Fsej?hJyeIB*o}1C+){+eaD}YeaNZvP*rUyIy@*%j(VR@Qp zZv!hz`O{Ik_G>i9(7LKThc-S|{YRHYmJEP1@<&@-W&-ZYtfc? ze90%U_5vSjqM0?n9*`NflR$4L-z^?t_{aWJs_BRWA9L1y)wa8D>r1|AtFX@J<$c<| zK}TDd8~ZI-QAxOi>ww1i+vh2PaS0}P`mkrMv@W$SiQt#mN4YWzrBL`IcfW_k&!e|B z{0mU7v+@&2{E1ZsCrC*t>0=E0USs0Y7@->rBJUcsZ9C0jwa*$L4pImRYy63vr9dj8 z_zm7Geww#AE*W{%az`xOKEx~DP_y;|6>#dC<&H^0&++fr=aY{Pe&tVsY>Ssm1%D?q z+syWQA3S+V_#R}K9C7IswLhapDgKmBw{V{sqiZF7-|G0_1-SURnMTSh=+#Vt$W!4+sKps;)gB^;f9aRgN6zeCyO)f3zOKJ)nOlayRd$o+$2_M zM)fWZbsXYe zzxIf=dyMKRM(A9+$3&*P#7|ot!{{zLtLr*seiHk1H>QeEo6Hqt{9&lvNUcgc4*9gC zeg8#!ph@huW~gT(VY1fWGuG3`8M&D1?=O!h$fRo|ZfKyVr)RLEX96rw4TFKP1fVAu zX5#mc%&#U61OdIaMQ>{GHHU@07*1P2#lZL-c%b%I9RY*_9Kr<1_ymsSfA1B;9~UNm zdYBNR5Qr_H2MhtP)UW`*2KYdbxIs{(TgC;34^vo^3O&vtCoz910bv120T}@a0cio< zUP(e7{ph?o(2#BF@9)6LUGOu_9t<$$$sB?lf?NVnWoszaNl2y1m+$lM;ctXbx|i$w z=kIM*gcv^d2fgn=Zv+>K2MoLanS6W_zghQI1rmjYrj%aim zj8^9ksZ^^q>RmqD;IP?jH|wm2pLp7zuMEj0B_=yGYikJJCDhS{hN(jgAVMA-YR(-j zFjOuq{!D?^I$B!Fzu~*_%M;KzBedz=S^s888*FFfbC(BhWig z7tk)yHZUI09MCXOGmtPi(tqn*TfSXJQvh)j4gu7EV1Z%^^P09vGkBUl?w!8Z#%iKs*D2@RzukATJ>@lVw;QGZ$CA<5U`x)L49(>#60m z;xS2F-zLN)>!*x(V?EGw!TEV~R6`&@!^-4g%=!Hb1|nnjFP8<-A&)Hu0;V*VzeYpx z*X##$$omKWJr_m;^ZdgCC)6n+*inYPRNyt{WZO8xTfpM30X=;|YSA7oUy;IBGxM>< zcuiycY)2py((5QQzoMlzSo+rj;o`kLs#M%~Q7vm~YTXwJN^kI}ld@vt#LHT*c3u66 zULfV9KVYR_#T^z89^p6YTr=^H>MQl%Sgx?29g1n0firwu%M{&YY5hKCpE-@!uvG; zU%$iKSl>*@hN~4}?vzGncm@?n51;joyYYy2mDZ_9L08){i;_8t$#@4Uvdu=0*yyme&r-L)D&>+NT^0{HtI2*GWwp%cLk z`!I=)n+Yr0$esE;n{>R6dfZT51=XFJqK;_1$!gFAM+B+r+@sSROTkbO63$$_lUdra ze$`7oxrn*&FTZ)R@hWr1ChPU4ztmh3mS_`uHWFSEb8w z3v;w?Kj^_{x(~&YIid1CtGnBA>mE-YmPK5CqTvbUZ^)cHE~9ifk2~)9i?Z-h!}mtw zGQFL|C{{=1;JQ1mD&KZu@vYCo1?bVFW-kmSLk#6CRtio_rhnVh6 zm*k>?%o#f6^v}mJqcBWGNL`&kc;o>MELuS!gnS;YWKmef@i7Uudurvp;#D z^P4+0X&0g2!}qQ6(ds%(>DaiH*q9i2oLQ@2&r7ED+}Vp$Hy<6D$NpEB>E7v-Iqe}1 z@)Xb*Ku(%@!B{&8GnY|uT!qC$kTfiN&_+CRK^K^ zUR+qsxLIb$+a4j^joz(7?O>R8bPHwc$G7kstol{BFeoS}%hG>_@_Tg2YgUV%Qa0M4 zSH(lXWu`Yk(|sxU`jlk(4iat}J4?FL;gzP0)=aPPuY}AAZ=6*R=O$pfsLS_Nri0Eo z?LemGGK8<-ogd~p-B?l7(oRLnXK6?F+8LhXKOxFXU?Zj2wR045}vAYT0-DoI?LG9!?h`Av~hsuxCajuo#%HuLO0}q z_k^sk8;4Efp_7>2Nws{gvm(P1jX_n(Sew~P8Ro8Q`1Vc9jX~QT>9?l2e77U-1-|q( z`(S;=4GN1ekJK>)Kjra%CbWF~3r0D=P>Zo?HtEo@n3d3A(0QpPnXnnj@ihAv>;ATE zdxgH_+RPgA&aFFw`wy1y+ld|(It}1zvyLTwB?SYQsJQ#((yZ=O{QEk~?I>VhI*V@_ z>Z<*E?|c#>kc|SO?K7H1{<}$)Yvw&9i%u)}i`|riPB#sdl8sizVqzWXfa^Q;D9B!u6 z1Ld0vS@$K=1irmrL75taEZnH5Az%tH7n!DLd&E~!R+q_I~6Q&0nq-_^Nw>? z`}Nz)`Qc(=`?Hsar~UPT*W5oQkl)^t_jLW(3a##RFLp<4%U;;yv3zZGiL1{iFE4Dj zw;B8GUl%u~F8G`eyPa$E+`jG!#oupO*K!{h4@pvMQfq9b=j~jh@z^V*M|d7hq;iKANRWedjFY*0&bnIi&TN=EM9S(99?=ojgrn6NODAIT z4Fzo0a9OnhZm{r;TxX4|!*NaFNKcb7 z^OZR|l0f)1O|M}T8@u6-6a-$^l5WT2)8c2m%PkMrv(fh%SAMHP*TfY{Id^pB*7N~+ zEQ3%i;nD6jw7lad%V6=3_Cc{UOj@|){UWo{v=5p@eVHc^OXM3&l6gD{#sEabk6 zBYu18J^1ACO@aDN@AD{mq}Z@gt(mQGmdiFH9GiyzdP_ty1)mdHWG6?ueA$OioU}JD zwvnd3PE{`-w)hBkH@Z(3)#h}K$hd2f4w;f-ndm3mx;RlSeznyQ%WVz+Nj+agA`C(3~lE>(|n5Qju zi`aLZc;xnr6O^{1K3vSmfwe)*EZfN!b*RIhTMJdUd$wOpshxUfM&xUw_JdN?njhs>H+;Pr^yPpct?{cH z)VoKpM@1DQ-6EU?GV)Pc$)S>olcRz%@vW&G+*KMxR}3y4MlG}wMV=uX2^5M{RJP*S z18G*T)d6A%#@)hbkbOtW^rqieEUtsZ@b$lL^Oq-1H9kyi*P*iTPA;V$XU((dcwU>4(01GRH7M#bCCstIy^3SCiwH<+)BkSrxcTV2cK`kF>hdzw_r*09Xv;TP253u`+)Ow4Eoqst zUxfeuPeiTI$gnTia>l6XU-}NA!5gs`D+oDGZ6Q4mQa#n0u=_F3bi|iL$}yS4M+_(q359!Xy0ui8q+@Dp>RLB^fg*ds*!iucM zK!d>tx0AP*9nWOQ)ip~)X(}Ie44w4(88?fY1erQzhtLmn>(S-9UyN;9$zd0(D4vrO$RGI`w3D;tSPA7RdCQ~w8RPaa=3*6` zSdg65Y3FXjH?)HnboLUlfLy|(X*@B6(FhcA@?Ba-`dhP~NY=*I`nXH);A6p=47sf675X-{)ooK% zdr9d!?GFsq<*kchYDM*a*5T;kEz8VFFQEp9rd-V{$&U*@+SE`2YewnFSc*>306hy5 z`-?>M$BSZVLotZ2jVqgddaTreJL@ zL7W;z3OhbRS)NpS8@cvkM`bY}``w~xu&!9?%wR%%!) zU$eM^ zN=q4@;cC6k8-M~$sU*8ujYUm_P{$G5M_=hg zJgT?;E@77U?@di#_rOvqqvl+51uP5f8{1z8+#sX@Vy`$!&jf%^4K!miwU;owz9yCa ze+w1~oK*bI#dx;*jKpj`#=1gTAG1)O>oeF*L_h0V-C zd521cQCabs|KJt-jHlLZ3o2Q;%+mUHt$X7o?45>Zx)j%&J}-|$U1LI;V4Xj1Kc}}C zA1{`Fn}1JCZF+t=Sy=emc{p7x(PVFQr12(j)mV=ZW_5V)ohYd;FU*GH`l7g0th?wr zJ?m~^L2tgD@T_00yq=bR>Rbc=W?{H=k(G`5BSU#>ex7uBp>xw35hKBpXSI7&Ac}-0 ztpP4zQEEdG0nX7>q3S#iV@IfKSeNtbKEs&C-YywS4>3DV6I2g&qCR?8 z4fl?8t2i8+Wn5@=X|$S`O+?Y@l7^46>nS~VsZESGj!8X_SkqHrS=0>a;T(pk*@~wm zO<0>!hg`?4>E*&xciD4ZkiGOogXBbV>Hr}i;1X1%zY!U>H^PsQJMOzmj;UeRZWxb- znbNg}2>f={t(KqRH;hV+kD#8LwE@-kj3jaTkxX>x|aB(GxaBS&%>u6Ep79&5@EIu5_Gi)ft zzh{%~OLKAJT5#Z%8CU|2D9>XxK(M%{L3O9>^*Y6$P-#<}D#<;>woEDZrvC#<7o zt>MM$n|<~sWPagg?yG&=d{ba@!-%oH~dC5*cc$1SFny(zGWIX4$0AqGCllT5IG>Og#pATO59 z3NUekvjMvCjs$t^UMV)T*M01NTK`~p<>!%T{SExss9+!mIs+UBSuzV^$;sN}1XlsW zuz;v!EVg|Rl~%O$2uVyrNm%~wU5)VBioug8RY;@iO>|bD^<->vHz2xuM_}Y~X^tuY zcn+@r-UGOT0Z@1*ZMM7b(VXorfg{HY-bbICz1=nIp4797n@@RaXR}6Wv?_yRHy?NL zX_SF>1a6hJbv*sC@`g&e3oG1MxKeCE3RA=g0}#R-esM1#tIa{HV)K9V2_!_+Bm@Ub zgQdfR;)h5>BG>*t3~JC5oc-*|?mQORWRp}+Y&fmhF!X0c z)$G!?w4AHDI>VHUP*Af4XZ!gBD2F0i0~&%14YJ&4OR&*{xMEXKZFNuV{X|bv86|pC zphu{@8Jsx~RhCHGz5?Fw+|pXnTX!R(5sjG1J*a7}_%s=%;j+$~vt&lK_7FoF!;XY;%!_67_lO6P02Y|Qsv zpeG&L_pmPC4PVRyYm3mjuvGnE&8zy_V>yi>3xr3Op{Fg6;DK@bT~;!Pl|k-V3AxdC z1f6mjt!Q}~xSD~mWqsm|JdFRmfBe73bOt$tvjTSHKUp7GbXNs4I?>TSJgF$49PvKR zUd+w<6>5B0>M4cKbDC3Tx;+|@2g=-+bX}uN0w!cbF93p}?R;;P3vT{FLb|DC!zkOm zBS;E|s7$H~=mlbqa{7&G(t{R)oazX1+C*wSeULq@@DF8vW03xK7(pz}?I1#FdMQyv z?;NO;riAn~2EsvV1+=Q(4#@8@{mx2|9>D1eQSvfRoX_4&7CvtFO)(!j>UEp3-rEG% zd$UjR&Xh-h=CFbPMaK|B*YfmYtPk#>F_?zGK0I**+`nE*W&kR zUD4F7bE&Mb^|u9*m}g=}fGGUE%})P*PpC;*$`~6FLIoBY1r~$nT|#gMA#y_wPQ}T3 zCe*0el;Wa`R>>04sT4sRYK@t~so~il9c5+nyfQA^srif2QpNQZ{?C!CXu8Z|S<`DQ zd#Ja}Z|}3wy~7W(v}W14Dg5io=jShpIrDbG$zQLWrh71*KF3+AW?W}ew^S(&`Z-CV zEf5^Fz@;qaO5rR7jnYADScre3p*kBY6a`bYR0B)tBQf%O!K7xA27prggxyo@@crLz z!;hclLQeq^&1ih}LLU7IkXGIwSG&9I-3+@^tQNZT7?FV8Z_q)2#kOffZzmo1LywfF zNQko62ZLOVZlG?HeBw@G+?YmAf+(ePdTYRz_-u}<2T4l|I}uFmp=c}m$&v`c@^Dao za%EothL%!4xG`ntXq6J8Bq<>s1pMP}s!81OFWOnt8ffO;mtBE(LECRV+gqzPwoJ;a zVao!9y&*3C?BFw1>Y4;r$28V*gMjgH1@Z)IsyX1JmcJ1jaw>(pn&SO^{a)tXN67Dr zamG~6Oi8w)c&mP5O(s!_O(A7^!O(A#l;mln5Lp+j6QkBQC-i}xn2nPqAvX0|m1IyD zOME3~VBtzsmPLEalNfmuWiD584fhkt2`*h<5s1yEVxp{diwNra)W(h7IHhr&*WZaalDYf z%Bwya=C)P8e<$agQFPxYLip-h(z=+1kBU~P~DfkV$vdao3Wr-NL0du z&@u1}(Igk1$qQMt&dB#7S)w|8_CB-6m~s;XrvAV*N5Up< zcra-yqP0-uGqf+e&yOPbwg4QGu(nQ$B;VgJxC)Z5hb(wi3JV}eyTp^tMui9lZsVM} zl9leu7fuvJsFXttzoK+kcAjl-UKtz2eU)*n(SHx@(Y~46E8J|M>Nn8o7oIsF`!IGJ ze5p^Ltp*Q(01)0pbZ@wGO&iZ(>~t041MAv*FputVYH4Et?Pc0TUf?5m@pv@wpo_H=Me+0qx8C z5v`HmR}hL~g2yoF6?qBiQZVYtps@FQ9sYEyqZ~QyF<7~GO@~fYv)KfSi4&zx`KOxX z#$pl2JF`Kk`K^v7f(*Nuon~~*^2bW9w&|x+6;h7{hT*-zzvcr2gPNcwF_W6+?-RMt z;9p2CU2Y^)%HpwEvEVXGc5J{Q{HQ=+^;FBNq}4h>GLtPEOSWV*MHUwYiFhh6 z@`38|G22$5*;`kw*5Y|?+if%7Hp8Q_Wk0SKO1HB{7y+j`Z}G#C-#KmRoqV)9obGim zrylW0*@ZH#fyw$Zfo=%d$8AOYsrGq4Fc`t4XfrXOYwLAhMNNjEX@r%d^oF$ z%sE9WVr_h!*0Y)mroj|2tNFLlSE!Hb1_Sk<)mWb%r-OS=q56IcbNS=G(naI0v{g-Y z+3}Shr;+^|n%Qac7kY0&@YY+Z2|)@w##0kQXiOZdrg`NcqZQoIL+UKp%)>>Wt!hva z)<^OtXGP_&458kmm^wk_Tr$w6wisn&jg*uf)F?co(UTQHSsErOR(R6M%@-WasIn=N zqckP{x6FHcGmr}ida*nA-`&gzI7je3uEO2UIx@^!7&!`}Pq=CA@67sK5sv3^`I3?Z z3}(YY(ySNtoyHB5w<#pPleus=QC*>2bw#?S!*;Nt!Btp0-ezX`TR(5L?T3H%uW$lT8qC~At>p(~539a;#r-fW^Du3BW# zZC$SuK*mjOPFn&Ly~ApGFGTRiyGoX@u7J}zO1;7N^t3AVmrBgk>jD$4X@UhW5bO2i zfSPxN$Rdp;W%C@WGmNq@N~EUIe75oj#4No$oSZBwN#l^bus?SLf5~KZ*wIhm%s#|j z+CB06m|U)Sw(2t>WD_Vp&E;RZ9&h^P-8(C%mssKr{P(4w zPrq9@z%_yxd!Z%vHj5Un!L8&{X-gW36)81;WKu6e^qxC>W0G{PCOMQP;Mdnxv#$*2 zz!_Im!hMC7;=8}f-n0dI>rglvNLSHTsR|@{nte*xm7sxkkQtzon>gIM(V%K;LS7x!~DntP@%&6k4pKQgRUjiS`@cG6gIj8~VUOq0v1 z)_}UEm(1uB3|E$kjNrsp;|0!KmwDIpm^@+=?nzzBxx~I0`XW$BJ+aa>QJmH9uuNmm z&nSk0YSgBqqqQj2Bxbes2HNhE=Dv?DP5%XBYv{|{)}m(mbvG#8(V8yHgw>Iu4k0?V zMN-NI27~4mC%j8d&)w=z|78v3riak$QH4+A39^>YpNOE*^IF zzgzszfDr5;r~Ot_o!AnMB+Y)tb zwu+m%7_@I2-pFu%zZ(Mw(nw3K0^~BcTy4Oul`4gKx=x}DliIadBhwrd`n;w|J%5l0 za9W*6bD<@GZBbDUh2CIMu3cRBm`A2b2Ta=R1QG^cu1V)m2`*^U!(CokYDuCzCYO<( zOwkDf-}nX=j(J<^Y*NU4su&q(GB=%s&FA1i&9NsPRlWKt;<|q%c-7|{^YJnh)6G{C z!y5dy+|JzzZ`#MeBV<|}69uj1-6FdaSX*f>yC3`Qyo)5(!)8ByrREB1s%K7Ij!n4o zL_SbyemM=i-lVWz(t);ox%ams{4ZtL`ocoYZm#BoUhml}JF5hniIq zT43;a84wg5#gH-uuUaK2^=2GRF7$?C8CNzJjGyNW^dWjeWWH)4xR=aV3tzR6<#9M86tz79ZD)0> z+}HIL8O`G*thbxqjU~dW?+}1lMIvx7~amiXc1J+cTmhC=Tgg@)IiR>91j`=3ySi zJmC)C!E7!*o+(F&nuc{}2fa53{k84jcM+>)0NUfqb~0OB(vj#?@|S%ZgmvD?X^+

    --;%!xicfmyja<$TBiy<`hyi+5Kjrt(7u8CBJ@Nu>xGkPYM3`O(c-t5aNr`eaTq zQ#~W5_n(=+o@JJCtT@6{#c=2rbE&9gh4=YAgavU8>uzYH+G75t9v0cZg>mE&C=$Xm z^1Fn@8Rb#pEF0(=_%xVLMI#KiLBTg=FYjMKp^v*nOA;SJ5vV^b zWpxzePU?N=v&?E_3C|p$F;P&Hjq*ctNi~)x<8D$nqJ@mbXB$_(gjxtt-{Ru*?>^yg zlrspat8QKag5j*LL&Kk$e2KQxcQuom{-qh+d;6x@^NfXQIe7H6a{$4RB@=z{W+HRF z@+I8-U8RY5mCcx%;Mwi`eo&(aU3B_pdN@f&d$IjJU^=jOY{T)80^!R10#R&fZ3i>- z*g6_+*W+&|c>+mI{Mq+ry{p&NMTr2lcB zA`~Cvl&Xh23`=A-j7T_!TCy=o# z*Pbx(;hmAD4>I37@&LD5V<~KskG;DljlXMj)7L<1i=o!8%gcn+6J8mjS~?TSVdi(B5)HoS^FGBhZbHwhDKuRAZ1u5Ij?p>THKO}Gz500)%3%AbMy66KXUPND z2usbMP;$o`f(Qiy%638~G@|-|mNg7&=EUH6g&=0G)rS>xHF}D1ume*j3G0?22sOh% z^6(wM9ZJOb{8R}+Ji=wa@xSXeo|Wz_Z&O$?3piZ;=`7l+zkE36e$6!Y-Ep0mD`wK{ zKK%}yq66j4ll|OjpUvc(JNsmF-!SCm(c|1sU3W~>t)|&Z>CiTMEYhpeMX@8r_G94l zI{iLsZSDy7%azo{6?fwa&+*@f?G4HU1@OD(`>~Xja8ATNSUehIF7O-EDwA?J%huJI zR2dN}gGu6JY{g+>jvATKOh(5XvZDHmkqtW%vzc#$X9=zZ;6c8?j$KD%T;I<#F|FRH8d+D2eXw< zzFf+GfCWhJ5E984Ad*z+{upI&6+|?!nUVu9)uOI1eE-bt3G{?9Wjq&St-$@YGzgB^ z8}iaZkMrEeqtb)Ay@LQ@!Q;JKbX=GHx%(Pi$vyqYPd03uv+X9qBl>Gsu$4CxNT)$Q zTh7t}J{SdA>Z0IaDM;iuq$IvT=GmH4ivj*B)RDyCSk$=-ii=jG#rxy3+4+{6W8Muj ztu5l`zw7@2b3ly0>P3N{+p=sGB`lYNbzmQHsiy5CDkB=We_qoUZ z?#y33cIFJwcyH0fZU-6#DoWi+y8VF z9?oFUF_u_%Yxm?g_NF#{{lY!MI){G*!p?kr{#K$y2Fan>zf1o1;Wdzyrjp4$!zymoPW-056(LpcR|z_;M{=#os2t z-_4|IK=jVEh`+4}aH?uy*{w=b?c$!Oio_KUt63?v8y|h>U+&xc^kyHdE#qT^4V^pA z9-pK||KK)6;-a_V=vV0Zne*S=(olD~mb7ZW&FbR^e)RS6J?lVinNRB3@0IpMHAYs1 zm2Fb+LB3X%YzZIG7YjC$A0tu)q)@0+vSnP4mnJ5obemFgE!OV&x*F{*8d9(}bt}u-x*CNsA8YK}e`isz zVg>BizNA4NjiPTPr>?kCCQj0aHKbUj=G)cEi7KLzUJC|$O)che)#ie+uBlZdr>HFX zdY4ZraEpp?n#{8ri)$6WT4#~!D+=7Cfml>}#VWBn;K$1H_89A_AKW+K9!&UqVh8sg z`pMbR6Qiux5x#q1IJY+Xxx}Z^t*L!ad?x(yjTvuzPt4U|a0Oe!t4%)dp+hJBzR?}q z8?*6)Tm^*ik(*yyC%Q4E=sWQ*XQd;?ZZXr+7t@gc7v z?f)9m{@*G}-ix?>CovIHT;{#X2>{vLKvF4LQ(dY%(2K{y%;i=mdIn%Iq zES`;GEiL`V%#IiCpP=WMZk}IwZG2bCWz_WX{53~cOF5sb zCYzv2?-MyQp)1w6OZDP%k=qa+_XNg-OFt7f`8}i2;+_6axIMWR){Dii`Tx+=aU5&- z@Ezn8pR%efV?z{^bq}i?D9~S&YxLwm0VR8^N|)6tv(yMEZ<+L!Z3657gw$Y7tPG}8 z$gowk-zJWD0u#d9mj~B-hSn56=Ug|jvoEnF#DMnpdYoY~U=kehMn}NJ3I+z4Hmy0q zGlt9W=C&ss#u|fBAO7P2SIv3S$%9O(rzs8z{41;gIHE(1PFO2NO_3RPu{&0-R%&dr zo-r#$t2kXc-s7N4b<{ZhcJU50V@=vnY@lBx1=Yu#nxH4q=!&|X^A|h`w=3c%_2(xw zPA*4vQ|l?IQ3&Z#7Vl;fdrt2BUV3Un58?6a#S`=#mxf%#L6y67aKwbZ)TLupjst=o zzCJuOynbZe2p0a~9|7!{A!JmD7z-E1Ry+-pi$Zr+x%qPvz-5v7`qWbl_XNQVv^s*SGcqgPIa+V?9jwXHV|@E;6WI;pq2v zp4^jQ66!fS=A`Bs&0Ca;a;4Ftf;a#)VItx6t;m714B$i+; zu7h?4j%^bsCpSkz8@mEAQ{et>;-@xGhQcE;Us5v_9%=A6U1DHcI6PSIaXH1nX0;Eh zI6+?^XBM2)1f}>lE?VG~-f%-?*@zQ+<%knAsE2vQ5hvJi$Fue2!bQ2u8&B@J%DqBM zN1N0QuNz!nH<}yO993>+H}W*iXFqJ#{5zR%g0g($3d35oUdX{ejpyOiF%4kq1-&}3 zLD|u8K%U|t$7>{Qq|l}eY%oN~zDCkWPlNO>kCmWngYwF1zT{vc8*WcU`V@x~0_qA>OJD}-rvvx=7 z_VAM8y2Gx0i|2o0+;abS$+=;QozcEP^;7p!`6&9*pk|KjEX#G=Tmf7YUlWwvQMr#r zJ0&Ohbr*4aUJ6E}29wl|g_myNL^n7@!(6_-8v$3ls2Yt*uRR(Vhf^E?(d-w!`?x&2k z*7`;_Dg3VT;G625l-rAMT4Tn3Io|S=mNOVFR;7DCj@!U~0O<}?eKcL2T?foT{`paZ zfQxjgcS6l0M~@{_54b+I_Mz?j?!N6oal(E7FfBCQ2hi=<_WyQh`>{lp4mGdc7z}0C zHp62_aO2u$I(KY(|AE^cOk_O|B@z#LHgz4_bucv(K8nAdOy2Jrr~f9jsYeicHibfC z_&5f7<^rr!&=w$P`K*H3v3}`{76Qs>4r>H)hdEk^D9@`S`N(Qiq=+6O0uv!gjrXFo zDnc6HEs?y-i!ZzERXAcO?{(obZyP)lBP7>xd6hl-rF-*UvRUn|QywyFFwJ-fAqNW_#TeTSa^v^!q3C*m@8~L zhCj{4e;~tQ28hbg=K9qKr%RPindU?bh zQXlCF_}DR?XWwC-1ha=r^t*>4$FPBI$EhLeUG+3_2O=fX`GdMSOlrt$72VXLC1Y)M zEg3>na4EN4CdrGhV4x0*m{#H#8jN4RT>oN|au_9MlGdD+la>#pp0m&X>fraEBVlcw zNlKrU9p(?D`m@xx9rbHs$)5DOQVgQ6xZq2*(Fs+F-k z?VyMWWfLtys=0U|s#+by)0DvDO-`*4>P!z2N7*w3%8|xXtxp?lO;md{h58Y)NS%w_ z_vC;RAU@J;A7ADX9iaaVh6_YZ03nKN|#%e!~KT>Q5)XNs48xclVTH~!`5 z(YGHN8++vKqeuVc8)I|PTaIlR-jX!g!s)=~sU72DU)1JE-rlqAfm@=?JCD=Of1KI- z6Bke|WAQyEwAAPbYnuMnG zjxnF#0mvjNQ*{QanMo*R&nflN~|kP#|8<}d}8xXHYp#TPJvDfQKq z_tLy=d0uk|jsaP?pJ&d)LmobCtoOfe*2q#D%uwIFmJO!G!fJArPm^$)jza_;0T;7z z1v?y8v}afe52Er+Tw;}3P^8o_fR$ROuv(i`5KTTB?@o}-X#jncoOYTm1%r)h5=+Mp zKhi2`rMe29tCqH^b>evGsJRZg+;(GzNe?9MNWb{Eal!MHyT8R9bw1-2dlP*|hb<6y z#%{-jS!(-v4by}H{9k!(D%uqb$JRs@d(UZhFwbaTBYP(~syyUOm8L_r^5$hy zYgm-bjqjpV4jIdZ$M&RBd&k4!@w@s{d&a_rOe~hm#bO!uk<{L?aCmHQDz$sOvvYiR zD!DP!lg#Cm^BWPq!$4X;~R6de@+~w1W=qRvu{&BFq=n6xM9wR5C@y*-Rp5>wX6`3ngtL(LbYbtw7|DsYWWbdL) z`_su-E@o-w2KS9V{GI7>FU{!bs)ak4hw0!wWB#bMKDagJa)0H})Fayje>@ogI`3mP z1D&VI=?keK>YP2J>^;zQY}Dg14&LD=<$`IRu#Qx zI)7Zel z6@%bC-*c{Zgv4O+S6r|+7s%Y1^|Sg~YUQ3q!?k)A;{@bs(G|S?i?QvoY@qmxD-%ew zFU|8DH_uk#-@C79VzZ>y2|DP&T4xJstSuGV%~4Zl5qsR zo`{>R<#{G~;Aa1NkAJvD7%aLtJ-G8XPaYC_$HUBRJpbWaEW#|e&{91zXf_t>I2==j zb66p#N|X7q4r)N@8IeqCKed_Ek5THJ;te>`7ot=8LO8NhhiNFfhSG#Da06x}7UfEt zl`XmLlTTcJY;ddHF?s6Hs76R{b2zrKrhRAb5HI^VjyV+E`tbai_Dznou4DfVeVl%Y zc@1caP#`%ROyOdK>cdA3w^}}n;b;x;X#<#OW@vo|;@e1u=aGl-6XZ+ViWcVgR2Y2B z2!*JJQ~V)M3>0IUoy=;rn^pG$%y5#RMVyDsH7bhFn`bq(CMO9-^m3iIMs+1C#kO-B zTVwNeHz$S%V(!7l+S~5$<&6BUebQIlpD6mgqfG{Vqae8S)wQ(!QATrXZpR&3#g`lf zU*gc_DLd6gN!4P(tk~$X0aXs%xhrTCBI}pVsPdI}q)JJu8GOi5`myMfoL0*%yo{|R zPn__!X)TW}9CU^3?m(k!mD?Grr+0M=V+1p9)f`mkXI8`zTRDc> zL)*SOHTAV^q0qLkO-+4uTj)PVvbpu^bJ-ErIHt^(92-;SOOEaSi+k_fd*p}`^HPBC zUMbFo_^!hRS^<_6UFM)NHPY@^FbLD;Ae`ucpxinMV z)ZZv)Q>3mamTe-@GLVks+Y%_Iwp9>)t|2}$Yb9ABLF~#}3pm>!!ReuRW3^J+MyblQ z16=J|bAOf2P~YJ8cw5>?X~!Zrk{VgU1MhLTvB%FWc@wg^nzV3SQxU4lbKHD5t4b49 zrnzEwzD}saX?-#8Jy$CW{YRCmJ14^Qg#lVWc=P@G;_p*{?%Q$l~h zoM64~V)Sbq_ceb^^gjpz>p|r0e&FrA%G+M*5tX++(L!7;@?3+D)h5Z06^Bm5OMS~2 z+6w9zRn#%Hgq5udD;quDP-m}lY)gs*BjeaJ>u`IOP49f`Dx8ihoBeQCXAF_qSU14Z z>qPDSD{wVk!Bx$gYlroZU~TwXL7(K=&jWw|7x1?od@V$NDj!Dv0&*XW7S<|^O-1q> z*CJy#j#LHnYd7NM+8*HXiZEeQ1x%1UCOHGjn~0Qfe_uq-snB7zzCpyHAyUR%ShYI3 zh8&X{w#XfERNb{3K~}5r`H zhTc%sWcH=0dTv%rZdB`)DLB=Te$QH))hRgEW?-`m6D*}aL)l3n=tHx(fk4Kyw9(7< zM`kwMzPn|3uwwj8LU8+7bv6ziD9ypa={D@PFKsANg?CrI<%-m1d z4NEpsP%p_`6`ep?AkMUqxvEPht28f8RuRgRRj?$cZJSnHVPSE=<3lcx@N9Que*Q;)_%h5Ttagl(0sjVFiU9usA(|OrCGWJ zs$OR_jC3yanYFPgp?KbxY00iID29Ie0wI|sm?e6>K<_Flg!pzTy}=T_7|vUxa)WkG zwmBl@+F`9yFsxvC5H3Oqso5;IwUc3v`Bja|}^aC5^}4^lVPV zH+$c7-{cpzI=5}%SA{|r|H!wm77VxX0$ZimUcj5T-Nv#E!+rP*9FtRC^JZ9ci0Z^s z6ie6KQC_nk7F>#R!`-QJx)v@kJ+fr!9cHW#$}R!im9;r|%|$Qni`tiLi(Yfxr-Xf* z{Mk%4;7f%D>xH}52gh<*UmzLsgkM}?>HjM<>}qnkf+ORhfd-Gu9q_IH@D{RmR$Y5e zmG?U8{%cFTT`aWtdQxeu8{4_Lg0rzR+C}QdgQ8@;D0}pCv$Y=U;*ee72zq;*gqHy3 z3}L$wGRK^dJ+)>_fi^mQq|V-9mRX3HQo=IJ>uOdLFQh8Y${f2!F&Y@Qa&!60YEZXKII~iu#g;OpJmVAwsOr(=r zoo35Ztf7W>c}NlxEjQPZ$#F~l2|D&T379teLNNCAJ9j@23(&7G_a~d9;uO6`6rJk+k2*QXQW`TDrOP9N>M9?UwV4H*rcX16<*$FE&p^1r zu|fR&lSSsS%=lKuL+|IW9w9`F#n*Wz$`r7c3i&?Hk4od7LwSBwA4M%r@R5RIVU3a| zCPcLyN=xf1r~1S}cI`?AHi%!lU^ZL6t!-=;f*rkmXawzM*+@EC6Kg=K?cpAE#8z+O z>WNezHH)fE(3KARk$ARJ z9HU3h-7|RYIabUDhVjG({X2G58GX4H-r#AD(^W?I1?Qi=a2fZaaBdXDLmTC#KJ!tN zqgwvp$x(vpfaSV+0uJ-8Mz4C%d!=bobY;+AVYJlzzg5QjtF=UDD}{S%+1hsg*R2g( zyJ2Pa#^&p-tP&rru(E~QmH~t1OXE@%xS+H)FRX1f^%vJ)8!oLaDmMZ&usabNkP)d; zUE~j1ZAVFx_Em}`oo=O*xP^wB?W>ey71v(*G7PbjaA&UpA68_>a`XT`UExWN@FY#i zAHkJXVxiTa>>I%FSr6gU)g(q@Bz&&>LsdblRrk(GkRW^KvuiEb))aypAyHln;dZdZ zK$jo#(zPLMldmDHlsVIN6z31y=v{%WZ{G0c@6~)hw?bI;TpdxFD-U0JkNzdt8c*4& zfI1tsI>AfbvD?dZGZ4WX-*h}v#6N! zH~P7Hx>{``tF*?&&po)r2D{Y{UbMUqUag#$f8_*xb{=fd0sbYcOq9#Juqa!DEiSSS z431{e;J^UuFUn0oilCkj&l_12u^v2wDB~C%NoUSG@Z1C*R$Cc%m+73ohM~N%Nbz#> z_~7Ld>6$A~1Kr2LPLS?6PH|nNob)0P7+LB?X!WlmMzOZEhFQL;ei2jhpz1B;Mo67V zS&ur-SwP2I@F<82yrLXxf-8Sik@>a2VtIKhW5&!%YW$|U;zzI6<`s4Kg9()l+=Z2J zAwyADE@`7=KQ&10q4G84>=Jko9eNNico4=?qpJx@tD?BgC;1{|U%`YMT4b2jx2sK=qlCk|aKoVy%d0gyQ~?G{TZTpyycuUzR7{BUn}s%d>6A#-Iq+Xz zGA(lA%RK$k(ut9DBl>`!X_#n?`J;;Akp|{OwCJgvAX)rIEF6n2&ayiPxmO)zUPrE) zl7>g4o0N=;9DsH%$+(uyPK&6s)ACw7>GI*sv(BbAl3?(byvZvN11JwulY`js(}71) zWV?_c$Je~q9IO z<=`<-&gA%1fd|#L3p~H?Ge1@9&^Ei;NmkV^Tz3@M(jth-t4s#FY982&mHtwqQ_6I( z=U1Ev#=cc@qw|jzS)2~GY;BDdYqOWu=2~2vjVGt}>MPb(Z^KRit;_B8sb7`VilZ;= z*Ik>hw45c*_^P$h{pI!i)e`r-;_6N+OQN?gf~C^hyu_y0;Hhh}wvN);q8dEvC;6hX z3p{pRJ$mdIS?X$@d{bMey3{WGRyI|Po#v-&>s+3Imdpk-;A}8Tj&`Ukmc2MG${zqN zcA4`*^1T_?knqZ`{+gox-8Ec)R9O`TRyi75S8KZzR>>YO8h%%}#H_|v{4xvg>T5EI zzGg+{ntY-hh$R0g<%99q;ZX zk#u88w`Ogt5hLQTj72S*?KgD7%^2K_iE=;qQS7yeHIuKR>xdGsQP#6-u&DD{Zrq0u0&1H6ya#55u?(d3s#T{{^ z*FpN6vDI0JOFIAacfFxd?A?Ejh8%6yci%Pn9S*VKXFrbx9e(sJse&UzFrb%@MhkC*QS! z(!vSVSgvnH#Nz~|2Cq=CYui_0#Y`fzB`CSWU3zhqdDcw%Blw!uBI}J6;#m7Dv^27P)T-Ex$v+y3Ba= z8WHYBxN=odfKvAUkv}=YpO4{g-Blb)h=piZX45D-Yd<*aRiVCtLE@~(O1zqFCFhhn z^_5(kUEg4Vn>}!|N0irtv;H`|(1U{}JT-|MQv5$Cy}vHwp1sjL|D!qi=8dKONNLe!ZC#^>#IWm*RMaflO$txMTi|;N28(1ngv<@tO0tO$0W1g$&L5{Eo_L#xLMXe!>Lq zJongRKiVC57oO6WSjO3V>!$2&y-p3gICJ&5_IFet^`}(67gt8cSqLl{Y{lZZw-i}U z67)1_A|9>EFgI(giY%6>jPOuplIpOG)uzWGSmYdDKfE`Tghe)Ci;B_w6x+}&tcnv6 z3cbJucS4Gr^Hp`t%66K0jit2uI$IN4nr%@rG?&HmUMefd(2;w7dU^lJ>0n|oAr6lX zb^10R-<|z@AM0_7<3egs93CAOy9Q!LArag>o*5X?yiugxgF6rRkKesH7Yc-fV&=~A z=}`X`6--o*tS|79qh-Agvbp|JFFbk zsJYR}hXWN89k<`$5JdKWmL@;WKd^Kj;&NVn@xOvsdEga>lbHEwWK~OhP~nx_>QDRu z+^T31y zc;JWPCShC{A9HQ=jUBsD=KWKV<=CnZd77&_d|0oWe|#k#z5zV!p*B)~rSdSX>YKDW zD#y{CsYCSw*PKYYVF_Eagsr{6)?O3xvc%R+z}8;XT)UBvL*{Rjp``v;Tw!ZIAVx@i zYC~EXE)W29%zMS|MB>H_c*TR&H_Ymf3wyHu^}`$dLSN9kx?0$q^=}v%Y4vvp-QlNh z)VvRc`t2@9T~L?^hLU!d-5&7WH1DkBJFD{jIpF(RYCZKS>M@n`eb?mhPz8taL|12Y z;*Yl=aB2nMAxy1g4C0<)fW6j5} z^g3)nkgH5ll+xy>>$I(_A_?Ujnd-IWAsk`p_a<&cV&%5$rBbS#LwOz9T>8@X?O(!w zfl7JY77qmC`0si`IJJBK{@uI3@P+xcm5jd>OD1Eno@6Nwa>HyAc)f`lr%tK8m+`3F z4tySnEu*4Ee?b?xD}Z!kwjgj({g?RFs=?7&&$HEs)J++_fsR@-tjfjeJR5Jou_+xAK$+F z)MwY~*o8Yz9UT5*+R@C6J~^?ykRE>Wvy+eP9iUCYo&iT{(qXd#W{rbTm<)ZC9iP~~ z3xskw=jEDEC^iR?N^degK&H@U9Q*DfQ)oS&P%t2thBY@-2d5KWmP@=u{%{JmWY;`ask{#}$1b-D1I~D*Rw+__1VN(g#xRi0VL4+ix&w?cNq&Fx;0Sy4}47 znBE>H?IBlBO#aAO$(08T{8#nFc4)3MNcm{4xqSX0Qa+l{APmOXXj z>iGm?<*|h~ZQH(5K>a53iph8R1gK8xwu*_xUZ%vy4*X&|Wo$9|V!E&>1(mVIK{B>D zh=(CDsW1eAK{YlOzOXKhqJOOF11~McJUJQ`_XfZ_gCQFV;?ornC&P5-i7Ch z7FDjl71qC_V*Tyq^)DaW9A0T`b3`56T!8fxB)iCfmNEm{kpbcj4R5Z*wKp`#nXSaM z*PZH2zgapwRa*Zmu>LS0fJ*tdl-J({>yIewkEoL_qRRTCWc^WGKhC%?L>2kBEm?k7 zdHF3`a-{$I@?Qy|ezYEZbp>oX`BD0y>0Am*7hY9;3#;WFZa)l!%FqlbfEyIJ!(*ywt! z-?tJtI<4}aHm^{Bx~4o%u7HXbc7jltjVsO|V6Hqw<|*S@!g@UGWGQ`{OWue=vZJ~> z$=3jxaK>IlGMVt3BMjvD7@0h3;}^e`teR{{8`Y`Mno3VpIWYP53ZL_h#WBf?U!+j{ z?c#J~W#%(;3TWhk#!c$XXY5fa4}K;z>MzPH(8yNIbtVLodO83t)|@x0;x;j4jN$S* z&J`Y`VtRA1(l0ET+Z-sLp=7SS1~mRP_yMfrjaJmh2*6R?o|k-qGk)Viy$MHW8py09 zQraWk3>G?pU%))8tEpv`mSMX(k4>|ZO;?g0Ucq{Ui%Vc%TxzFRs0#jSuKXj=eum7` zXr;QTyOg;z`3BW>D?KgIuEb(bi+@#!m}XLxnlH+Y0DSqz<|REXQlqI*uPm`%ob{1c zI{~BNsjlWygNx)dj!#%zgzIPs{ z!zO3W?2c^@I5x(<~y**#x5GCMFH%+I=Slqoi#`~q`9V=bKk6@jxHHnlXJ@#OQ1uu4aX9M^}g#YseYJ16f5wnZv22h14pP(O)W>&<|E*kLE)8>~V`mB#rlo zr8eGH#CR>_ZS)sxTt<7{sUEh?*>p`pNX5^z6(74*1hBAu6(a27>Awmoc4?Yei6NWu zB_Qo%PL*^Xqgpdx?7u0jWE_FqBvi&Q@~r`jJ=V^|KvFb`b2 zU2cUbp+RFhPl8KG5xg6@q}z@GMBoz00=uzG;FL`-Ai^42+jSZ|rWu#NV|jQ?E5Ku# zJCn&uF zrqm!_ktYZ?#t4WQxk)1`Ls^Cjl97l9$>ckX=2R%2^bv537{?PsT&#Fny>fN1;HvV= z^a=+)SZ>`ur+JPJmC1Tnc=M;_YJmULM&NvzHJqiMr+&x@Ist1(1gRcMt`&0@a_AJ; zXY`A5K+JjZ4U9WBUIv~`yBTFP5}=PuD23>v+MA>3`gt?E+ibr2q?xwgKAPUQFP+}2 zeFB>bCQw;=n%vmS-k08Y$0)iej1|nQ-+@|pM8(v2Nu#9};64HfDkcp8;Zl4KRQ2R#KMI1NkFMXOjEG+UA$ z58;lTdAvVl54&Q4!~K2G!RL<)HQ^d>#JYEA6CE-b>7DVJqx*J7Cywt^yHN~_oK8PK z{_0Wa%&|_6W4M#!Z+$DeQ=nfMcy4JZ^4t?!H(;%g4>=!N8|qOuF;m0<-pFW_%s>Mk zDn|njC(3wyU;w36vc-{cH(`#vTENBTiNTdd;Gz+#5rh}7gXPJ>r;8TAO2pyZcZzl5 zitXC{@7V=snk|m3yP+AQMr&)7MhpxrF|4(kVRX@wSAhlHS-jj;GL5}2zuFaSdlT8# z1zK=<+X5xFiREnT&i7d-?z0@SZhbp34|P((xWKB$m0R-48+k{WwXUM6-z{C~V9XMG z7m&RYH3l5*%X#YMZZX&1xoKoGOxTTR!Vb2?`}*;Oy`{(tgw4Tc0PZ9uRN@#p20v{? z9vVkCLO!zRjyV)J+H=briLUnQRQETAmMQP8Lu-Y}RCM8|YvxE~2oF0NC$Jh$s7&l4 zQ-+ScFHgq~*jWpZVoS-gwCq3x(0e1~?8TYk+KJkk627Iiu(lUSnN)oh-3L@78bj0M zT#gddEoMwO;YZ6h5->P>0*@2v4nZyN_|CGF+y`fRH_6Yj^T1VQNqHC?xqztw9`iJ_k?vGR}n$I3k z-;cW4Me>RW#U3HXwX!N&yPI9i*<3-W5z zi{RQwM;i*xpbqtm+ky8pE||wUlCsT#ImBcuIXIuk`j$H!4ZVX8MYszuK=*Dx|LOVo ze3T6>KP&yNZ(wAo9{swV9?U&8z9$^sGxpR473XUW#C7Vb&CXsl+m_T^ zjei^EYVA}nm7;!3n1kh}7#2bFNH|#o0CW%f+Arl2&NlE-LS^egK8m1}En){&Q4nc^ zgOGMR31|_M_TY_On-23IT`-tDO@b4{E9^CyS|a$2S$-8b9|6>B^-$u@+NlU|&M3Mb zwGdldkTYCS(k^{{SxDn`q?$c7bkC)GPW*D9KYQ@t&yQ{3xoh_r?mw9Z)^BFp6L-wN zJUH~s-RNJ2=+L2~#}6Gke)JIY7X5W@dfU$ZB-7h9HMOi%9SD4Ra_7#X&2mJ2mqf6T zz`IevyX~?Aaux%GJJE7j zp`=hvL*bz+J8a#-a>X*LlqZ&|PW}4d``_!I&^gYG|JSpet5zj4W%G|Pn>h+~F@+wH z8XD>!7#yIqXBgK03j|Pa1 zkd?p6e`Ekwa!#hO+6HA;cnenBuvk80vJ|hk`E}PmF<@DrlJ?D#*vT0S?V~S4tFi_?U3jrzC^R$m@!$WpteFPVOd28Y*U%D_Baw~eJh-V?JEUP{pBJ%sW_?bp zft1<(YY2q=ud=lZWLd0s#fg4&*%co$>_vzYtJCG{Dyto(Mh9IbR_KO`p;Od52C_#e zw*5SnaWMFOLavV3ZX&i<=qa$rM&2)E-7XvY4S?KMQE?YMQMDKIzZN{C4cWxaV3vO@}3>q;qKTUYsh$_yv_QQnKG>6mb}uV>ID zp|B&j%UxqVMQVasz&xXFN~0UrmCy}W=94cWkVnrNK+k#(KP#v`3&m(opMMnJ3T=>%%>O-aQM z5Qut$FNmQX;|4k*fc#brzj7?7wrjFHt_HeDu%{#$3JGmV(~}JIq>(mV@XkE;<|&oq z=*ZRwAMw-ALdLi>#Lx@)Vmff<^w#5>3GLDR+oyNCUotZOxZsRyOt2e0IS<;|xSyo-W-` zLi9%Kyiw1!NBDI%=1BP3ovg_5Jh$|1`V@R#{XMT|jr7l!KIYJNp5~VBG_raam+;~! z#z94eiaLT0xc>YtbYDRGsgt^Yp#AA#RpZ?sBjpuu42$wLNl;}m@+hs0h;rLynUj=e zz^6!=wq{J@3%%8BR{|gugq8x>%?Fx+am9#_<|}p!)~sboQOW3#Et)RX3RNn-OOtuX zLplVGe|Bt6KCu56+d08M_RZnYL@LBE^W&o<<4cbMgY~mK$G+r?24Z{99_aH5BgaI) z(;7-AItf(c>dWvq7$@^SvRAhU*}Fl*u*khJrBih*C0 z8zrJI>gkNdlwodB>FI~luW3=}m}r!fuA1+dL=Vx&L_-a1A)%Hny?M1LNtDEla0?M1ASrVkd{*_=DLxexQdp+1k>H zVAUvG5sUgIGHl)&M*WXvmF{JcbV&!01(OMW0(IHBZOK&{e}Q@^mwq?RJDP7(y{YrK7j1 zrQ} z^DEUM004N}V_;-pU;yH27ma!2`E9;3$a64&z}e)uRv7(%`adQPA@*9JIt~UVkSG8v zWeU{*004N}V_;-pU_bu%76SuE+W+bQD>#H0fFda16#$}&2Pb&iZIeG}Q&AMgzubH7 zd!a+<5QO@#mM93~l%eR7rS)GSkr+zo5JbYW1nXeirIH4b5<)0%2v}=_A{|7KQi>Gm zP(++csfdLRA{oRR72_T<6Q1N_q=nz?;Z6617QF{Lhk^Thp+F#GYyQ% zCPu>^ZaYVj4{gI!pIhh#uJNp{Zs3yogMvz7Mh~Kgd&A@v87FDdXKRp2@_^hVIh(Jh zaFOffcK(vyMK;`ptT}?H?4TyQD42OXk_3E-z&BZp8V|l2Vt-c=mtTy#@SO@uJoC*K zzw@#kzv8KQxFQwAO%7#q7Ew2cKGTge@}2b;kyLN_jud)rlspMTsKFOGkEFaoRc|6A zugNsB`W#|X#(*rNswNOu6V19@Mp4b7?1tIj3Rz_C8Y*08bU%ArLRxp@gw#-!5p+5C z5RpOj$}pnryI)UJ%QbwoQE#D#@(0>eiyf;ixlWGR9M*Wq-h8JuVr$dth1jbdJtgROv1YWGN-Zs}(_d{?NkPN(_51r71xwaP{$Obja{PW=; z_8+s+deI5J2s~qSr*O+X%^dcm_xRrdvw9tHi@<(VCC*5LBwFAnBll3?nVo|+g68iq zQJkZF@R9~+jw}|V_;y= zfx-@k8%z>RN0@t9%vh3Gma)8I4Psr!`h!h{Esm{$?Gn2fdjb134g-#PoFbfdoENy< zxaM(-a9eTba8Ke9;d#Srz`KQyi!Y9E9p4B382&~4#{^^qQUs<5d=Rt}oFMo`s7&aF zaFXyM;V&XqB1=TRh#HAzh%OR6BE}+SBo-ysB=%1{O?;n(l0=WhE6Hn8Mp7%JO{7bt zcgZ-&ERp#pTOs>Q&O`2myq0{4{2B!vg*1f|iY$s%igT2NlokNt59K@+0hL9nTB zCTcU(z0}XB|IyIXh|-kObkdxq`9~{2Ym3$$Z6EDv+Gli>bW(Ko=)BXNqvxY9rawdf zlYy7P5kn`#Z$?E%SB$HSUzmiMJTRSSddp10ti+tjyvahqqR!%tWu29X)iJ9d)@{}w zY+`KQ*v_(jXBT7l!M@Ew#$lghl~a&2m-7vmDwkibRc>rBy>)h{n6nL_DuJV%c z>hb3BUgQ(xv&dJ=cbXrIUyZ+(|FQsyfG2?!K?*^~f_?=%;eZjrdBH8g%YsjYNQC5s z>_fO%xDyb*ir5ozBGMu9LR4FH002%un@0cv0002$0A2tE00000 z00IC300ICO000310jU50004N}ZH_@o!$25?znE02%TS8Txj;*%f=G517cQEuh3-1eo-al_14>;$Am?$|T5@USASn9|zccjJ%6E?;p zE~t%9HGef8<9IVpHGen$V9J;ACmG)?dD5zAxZxn$aZ9PYm8vPkB@e8mcg)F^`~Qa% zRdST!eWBcp>z>bb&ikOBc?{_eugqWfpLaIc!*xwu*JUVwExlzQ{&aK$t-3whq=sSK9yqO2%FfE$m?@2RX)3iD3ut*vNjdijCb8 z%QkNDUgBusI6wKpFAj5(``qOe3s}frs(45>_jtfl9`Tqbe2jeW1uuXXJFFa$m~`I q6yXA@F-u0Z~1!1poleYR}~W literal 0 HcmV?d00001 diff --git a/doc/protocol/public/fonts/aller-light.eot b/doc/protocol/public/fonts/aller-light.eot new file mode 100755 index 0000000000000000000000000000000000000000..40bd654b5fe63501ae64d5673b5aa45051a69e65 GIT binary patch literal 29509 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�y6>nTFX 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 literal 0 HcmV?d00001 diff --git a/doc/protocol/public/fonts/novecento-bold.eot b/doc/protocol/public/fonts/novecento-bold.eot new file mode 100755 index 0000000000000000000000000000000000000000..98a9a7fbabb1083aca5143bc306e228886ff2eeb GIT binary patch literal 18190 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 F001ed(;ol; literal 0 HcmV?d00001 diff --git a/doc/protocol/public/stylesheets/normalize.css b/doc/protocol/public/stylesheets/normalize.css new file mode 100644 index 00000000..73abb76f --- /dev/null +++ b/doc/protocol/public/stylesheets/normalize.css @@ -0,0 +1,375 @@ +/*! normalize.css v2.0.1 | MIT License | git.io/normalize */ + +/* ========================================================================== + HTML5 display definitions + ========================================================================== */ + +/* + * Corrects `block` display not defined in IE 8/9. + */ + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +nav, +section, +summary { + display: block; +} + +/* + * Corrects `inline-block` display not defined in IE 8/9. + */ + +audio, +canvas, +video { + display: inline-block; +} + +/* + * Prevents modern browsers from displaying `audio` without controls. + * Remove excess height in iOS 5 devices. + */ + +audio:not([controls]) { + display: none; + height: 0; +} + +/* + * Addresses styling for `hidden` attribute not present in IE 8/9. + */ + +[hidden] { + display: none; +} + +/* ========================================================================== + Base + ========================================================================== */ + +/* + * 1. Sets default font family to sans-serif. + * 2. Prevents iOS text size adjust after orientation change, without disabling + * user zoom. + */ + +html { + font-family: sans-serif; /* 1 */ + -webkit-text-size-adjust: 100%; /* 2 */ + -ms-text-size-adjust: 100%; /* 2 */ +} + +/* + * Removes default margin. + */ + +body { + margin: 0; +} + +/* ========================================================================== + Links + ========================================================================== */ + +/* + * Addresses `outline` inconsistency between Chrome and other browsers. + */ + +a:focus { + outline: thin dotted; +} + +/* + * Improves readability when focused and also mouse hovered in all browsers. + */ + +a:active, +a:hover { + outline: 0; +} + +/* ========================================================================== + Typography + ========================================================================== */ + +/* + * Addresses `h1` font sizes within `section` and `article` in Firefox 4+, + * Safari 5, and Chrome. + */ + +h1 { + font-size: 2em; +} + +/* + * Addresses styling not present in IE 8/9, Safari 5, and Chrome. + */ + +abbr[title] { + border-bottom: 1px dotted; +} + +/* + * Addresses style set to `bolder` in Firefox 4+, Safari 5, and Chrome. + */ + +b, +strong { + font-weight: bold; +} + +/* + * Addresses styling not present in Safari 5 and Chrome. + */ + +dfn { + font-style: italic; +} + +/* + * Addresses styling not present in IE 8/9. + */ + +mark { + background: #ff0; + color: #000; +} + + +/* + * Corrects font family set oddly in Safari 5 and Chrome. + */ + +code, +kbd, +pre, +samp { + font-family: monospace, serif; + font-size: 1em; +} + +/* + * Improves readability of pre-formatted text in all browsers. + */ + +pre { + white-space: pre; + white-space: pre-wrap; + word-wrap: break-word; +} + +/* + * Sets consistent quote types. + */ + +q { + quotes: "\201C" "\201D" "\2018" "\2019"; +} + +/* + * Addresses inconsistent and variable font size in all browsers. + */ + +small { + font-size: 80%; +} + +/* + * Prevents `sub` and `sup` affecting `line-height` in all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +/* ========================================================================== + Embedded content + ========================================================================== */ + +/* + * Removes border when inside `a` element in IE 8/9. + */ + +img { + border: 0; +} + +/* + * Corrects overflow displayed oddly in IE 9. + */ + +svg:not(:root) { + overflow: hidden; +} + +/* ========================================================================== + Figures + ========================================================================== */ + +/* + * Addresses margin not present in IE 8/9 and Safari 5. + */ + +figure { + margin: 0; +} + +/* ========================================================================== + Forms + ========================================================================== */ + +/* + * Define consistent border, margin, and padding. + */ + +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} + +/* + * 1. Corrects color not being inherited in IE 8/9. + * 2. Remove padding so people aren't caught out if they zero out fieldsets. + */ + +legend { + border: 0; /* 1 */ + padding: 0; /* 2 */ +} + +/* + * 1. Corrects font family not being inherited in all browsers. + * 2. Corrects font size not being inherited in all browsers. + * 3. Addresses margins set differently in Firefox 4+, Safari 5, and Chrome + */ + +button, +input, +select, +textarea { + font-family: inherit; /* 1 */ + font-size: 100%; /* 2 */ + margin: 0; /* 3 */ +} + +/* + * Addresses Firefox 4+ setting `line-height` on `input` using `!important` in + * the UA stylesheet. + */ + +button, +input { + line-height: normal; +} + +/* + * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` + * and `video` controls. + * 2. Corrects inability to style clickable `input` types in iOS. + * 3. Improves usability and consistency of cursor style between image-type + * `input` and others. + */ + +button, +html input[type="button"], /* 1 */ +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; /* 2 */ + cursor: pointer; /* 3 */ +} + +/* + * Re-set default cursor for disabled elements. + */ + +button[disabled], +input[disabled] { + cursor: default; +} + +/* + * 1. Addresses box sizing set to `content-box` in IE 8/9. + * 2. Removes excess padding in IE 8/9. + */ + +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/* + * 1. Addresses `appearance` set to `searchfield` in Safari 5 and Chrome. + * 2. Addresses `box-sizing` set to `border-box` in Safari 5 and Chrome + * (include `-moz` to future-proof). + */ + +input[type="search"] { + -webkit-appearance: textfield; /* 1 */ + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; /* 2 */ + box-sizing: content-box; +} + +/* + * Removes inner padding and search cancel button in Safari 5 and Chrome + * on OS X. + */ + +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/* + * Removes inner padding and border in Firefox 4+. + */ + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +/* + * 1. Removes default vertical scrollbar in IE 8/9. + * 2. Improves readability and alignment in all browsers. + */ + +textarea { + overflow: auto; /* 1 */ + vertical-align: top; /* 2 */ +} + +/* ========================================================================== + Tables + ========================================================================== */ + +/* + * Remove most spacing between table cells. + */ + +table { + border-collapse: collapse; + border-spacing: 0; +} \ No newline at end of file