Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@apache-arrow/esnext-cjs

Package Overview
Dependencies
Maintainers
2
Versions
45
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@apache-arrow/esnext-cjs - npm Package Compare versions

Comparing version 0.2.0 to 0.3.0

bin/arrow2csv.d.ts

168

Arrow.d.ts

@@ -1,13 +0,155 @@

import { Table } from './vector/table';
import { Vector } from './vector/vector';
import { Utf8Vector } from './vector/utf8';
import { DictionaryVector } from './vector/dictionary';
import { StructVector, StructRow } from './vector/struct';
import { readVectors, readVectorsAsync } from './reader/arrow';
import { ListVector, BinaryVector, FixedSizeListVector } from './vector/list';
import { BoolVector, Int8Vector, Int16Vector, Int32Vector, Int64Vector, Uint8Vector, Uint16Vector, Uint32Vector, Uint64Vector, Float16Vector, Float32Vector, Float64Vector, Date32Vector, Date64Vector, Time32Vector, Time64Vector, DecimalVector, TimestampVector } from './vector/numeric';
export { Table, Vector, StructRow };
export { readVectors, readVectorsAsync };
export { NumericVectorConstructor } from './vector/numeric';
export { List, TypedArray, TypedArrayConstructor } from './vector/types';
export { BoolVector, ListVector, Utf8Vector, Int8Vector, Int16Vector, Int32Vector, Int64Vector, Uint8Vector, Uint16Vector, Uint32Vector, Uint64Vector, Date32Vector, Date64Vector, Time32Vector, Time64Vector, BinaryVector, StructVector, Float16Vector, Float32Vector, Float64Vector, DecimalVector, TimestampVector, DictionaryVector, FixedSizeListVector };
import * as type_ from './type';
import * as data_ from './data';
import * as vector_ from './vector';
import * as util_ from './util/int';
import * as visitor_ from './visitor';
import * as view_ from './vector/view';
import * as predicate_ from './predicate';
import { Vector } from './vector';
import { RecordBatch } from './recordbatch';
import { Schema, Field, Type } from './type';
import { Table, DataFrame, NextFunc, BindFunc, CountByResult } from './table';
import { read, readAsync } from './ipc/reader/arrow';
export import View = vector_.View;
export import VectorLike = vector_.VectorLike;
export import TypedArray = type_.TypedArray;
export import IntBitWidth = type_.IntBitWidth;
export import TimeBitWidth = type_.TimeBitWidth;
export import TypedArrayConstructor = type_.TypedArrayConstructor;
export { read, readAsync };
export { Table, DataFrame, NextFunc, BindFunc, CountByResult };
export { Field, Schema, RecordBatch, Vector, Type };
export declare namespace util {
export import Uint64 = util_.Uint64;
export import Int64 = util_.Int64;
export import Int128 = util_.Int128;
}
export declare namespace data {
export import BaseData = data_.BaseData;
export import FlatData = data_.FlatData;
export import BoolData = data_.BoolData;
export import FlatListData = data_.FlatListData;
export import DictionaryData = data_.DictionaryData;
export import NestedData = data_.NestedData;
export import ListData = data_.ListData;
export import UnionData = data_.UnionData;
export import SparseUnionData = data_.SparseUnionData;
export import DenseUnionData = data_.DenseUnionData;
export import ChunkedData = data_.ChunkedData;
}
export declare namespace enum_ {
export import Type = type_.ArrowType;
export import DateUnit = type_.DateUnit;
export import TimeUnit = type_.TimeUnit;
export import Precision = type_.Precision;
export import UnionMode = type_.UnionMode;
export import VectorType = type_.VectorType;
export import IntervalUnit = type_.IntervalUnit;
export import MessageHeader = type_.MessageHeader;
export import MetadataVersion = type_.MetadataVersion;
}
export declare namespace type {
export import Schema = type_.Schema;
export import Field = type_.Field;
export import Null = type_.Null;
export import Int = type_.Int;
export import Int8 = type_.Int8;
export import Int16 = type_.Int16;
export import Int32 = type_.Int32;
export import Int64 = type_.Int64;
export import Uint8 = type_.Uint8;
export import Uint16 = type_.Uint16;
export import Uint32 = type_.Uint32;
export import Uint64 = type_.Uint64;
export import Float = type_.Float;
export import Float16 = type_.Float16;
export import Float32 = type_.Float32;
export import Float64 = type_.Float64;
export import Binary = type_.Binary;
export import Utf8 = type_.Utf8;
export import Bool = type_.Bool;
export import Decimal = type_.Decimal;
export import Date_ = type_.Date_;
export import Time = type_.Time;
export import Timestamp = type_.Timestamp;
export import Interval = type_.Interval;
export import List = type_.List;
export import Struct = type_.Struct;
export import Union = type_.Union;
export import DenseUnion = type_.DenseUnion;
export import SparseUnion = type_.SparseUnion;
export import FixedSizeBinary = type_.FixedSizeBinary;
export import FixedSizeList = type_.FixedSizeList;
export import Map_ = type_.Map_;
export import Dictionary = type_.Dictionary;
}
export declare namespace vector {
export import Vector = vector_.Vector;
export import NullVector = vector_.NullVector;
export import BoolVector = vector_.BoolVector;
export import IntVector = vector_.IntVector;
export import FloatVector = vector_.FloatVector;
export import DateVector = vector_.DateVector;
export import DecimalVector = vector_.DecimalVector;
export import TimeVector = vector_.TimeVector;
export import TimestampVector = vector_.TimestampVector;
export import IntervalVector = vector_.IntervalVector;
export import BinaryVector = vector_.BinaryVector;
export import FixedSizeBinaryVector = vector_.FixedSizeBinaryVector;
export import Utf8Vector = vector_.Utf8Vector;
export import ListVector = vector_.ListVector;
export import FixedSizeListVector = vector_.FixedSizeListVector;
export import MapVector = vector_.MapVector;
export import StructVector = vector_.StructVector;
export import UnionVector = vector_.UnionVector;
export import DictionaryVector = vector_.DictionaryVector;
}
export declare namespace visitor {
export import TypeVisitor = visitor_.TypeVisitor;
export import VectorVisitor = visitor_.VectorVisitor;
}
export declare namespace view {
export import ChunkedView = view_.ChunkedView;
export import DictionaryView = view_.DictionaryView;
export import ListView = view_.ListView;
export import FixedSizeListView = view_.FixedSizeListView;
export import BinaryView = view_.BinaryView;
export import Utf8View = view_.Utf8View;
export import UnionView = view_.UnionView;
export import DenseUnionView = view_.DenseUnionView;
export import NestedView = view_.NestedView;
export import StructView = view_.StructView;
export import MapView = view_.MapView;
export import FlatView = view_.FlatView;
export import NullView = view_.NullView;
export import BoolView = view_.BoolView;
export import ValidityView = view_.ValidityView;
export import PrimitiveView = view_.PrimitiveView;
export import FixedSizeView = view_.FixedSizeView;
export import Float16View = view_.Float16View;
export import DateDayView = view_.DateDayView;
export import DateMillisecondView = view_.DateMillisecondView;
export import TimestampDayView = view_.TimestampDayView;
export import TimestampSecondView = view_.TimestampSecondView;
export import TimestampMillisecondView = view_.TimestampMillisecondView;
export import TimestampMicrosecondView = view_.TimestampMicrosecondView;
export import TimestampNanosecondView = view_.TimestampNanosecondView;
export import IntervalYearMonthView = view_.IntervalYearMonthView;
export import IntervalYearView = view_.IntervalYearView;
export import IntervalMonthView = view_.IntervalMonthView;
}
export declare namespace predicate {
export import col = predicate_.col;
export import lit = predicate_.lit;
export import custom = predicate_.custom;
export import Or = predicate_.Or;
export import Col = predicate_.Col;
export import And = predicate_.And;
export import GTeq = predicate_.GTeq;
export import LTeq = predicate_.LTeq;
export import Value = predicate_.Value;
export import Equals = predicate_.Equals;
export import Literal = predicate_.Literal;
export import Predicate = predicate_.Predicate;
export import PredicateFunc = predicate_.PredicateFunc;
}

317

Arrow.js

@@ -19,78 +19,255 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
const table_1 = require("./vector/table");
const type_ = require("./type");
const data_ = require("./data");
const vector_ = require("./vector");
const util_ = require("./util/int");
const visitor_ = require("./visitor");
const view_ = require("./vector/view");
const predicate_ = require("./predicate");
const vector_1 = require("./vector");
exports.Vector = vector_1.Vector;
const recordbatch_1 = require("./recordbatch");
exports.RecordBatch = recordbatch_1.RecordBatch;
const type_1 = require("./type");
exports.Schema = type_1.Schema;
exports.Field = type_1.Field;
exports.Type = type_1.Type;
const table_1 = require("./table");
exports.Table = table_1.Table;
const vector_1 = require("./vector/vector");
exports.Vector = vector_1.Vector;
const utf8_1 = require("./vector/utf8");
exports.Utf8Vector = utf8_1.Utf8Vector;
const dictionary_1 = require("./vector/dictionary");
exports.DictionaryVector = dictionary_1.DictionaryVector;
const struct_1 = require("./vector/struct");
exports.StructVector = struct_1.StructVector;
exports.StructRow = struct_1.StructRow;
const arrow_1 = require("./reader/arrow");
exports.readVectors = arrow_1.readVectors;
exports.readVectorsAsync = arrow_1.readVectorsAsync;
const list_1 = require("./vector/list");
exports.ListVector = list_1.ListVector;
exports.BinaryVector = list_1.BinaryVector;
exports.FixedSizeListVector = list_1.FixedSizeListVector;
const numeric_1 = require("./vector/numeric");
exports.BoolVector = numeric_1.BoolVector;
exports.Int8Vector = numeric_1.Int8Vector;
exports.Int16Vector = numeric_1.Int16Vector;
exports.Int32Vector = numeric_1.Int32Vector;
exports.Int64Vector = numeric_1.Int64Vector;
exports.Uint8Vector = numeric_1.Uint8Vector;
exports.Uint16Vector = numeric_1.Uint16Vector;
exports.Uint32Vector = numeric_1.Uint32Vector;
exports.Uint64Vector = numeric_1.Uint64Vector;
exports.Float16Vector = numeric_1.Float16Vector;
exports.Float32Vector = numeric_1.Float32Vector;
exports.Float64Vector = numeric_1.Float64Vector;
exports.Date32Vector = numeric_1.Date32Vector;
exports.Date64Vector = numeric_1.Date64Vector;
exports.Time32Vector = numeric_1.Time32Vector;
exports.Time64Vector = numeric_1.Time64Vector;
exports.DecimalVector = numeric_1.DecimalVector;
exports.TimestampVector = numeric_1.TimestampVector;
/* These exports are needed for the closure umd targets */
exports.CountByResult = table_1.CountByResult;
const arrow_1 = require("./ipc/reader/arrow");
exports.read = arrow_1.read;
exports.readAsync = arrow_1.readAsync;
var util;
(function (util) {
util.Uint64 = util_.Uint64;
util.Int64 = util_.Int64;
util.Int128 = util_.Int128;
})(util = exports.util || (exports.util = {}));
var data;
(function (data) {
data.BaseData = data_.BaseData;
data.FlatData = data_.FlatData;
data.BoolData = data_.BoolData;
data.FlatListData = data_.FlatListData;
data.DictionaryData = data_.DictionaryData;
data.NestedData = data_.NestedData;
data.ListData = data_.ListData;
data.UnionData = data_.UnionData;
data.SparseUnionData = data_.SparseUnionData;
data.DenseUnionData = data_.DenseUnionData;
data.ChunkedData = data_.ChunkedData;
})(data = exports.data || (exports.data = {}));
var enum_;
(function (enum_) {
enum_.Type = type_.ArrowType;
enum_.DateUnit = type_.DateUnit;
enum_.TimeUnit = type_.TimeUnit;
enum_.Precision = type_.Precision;
enum_.UnionMode = type_.UnionMode;
enum_.VectorType = type_.VectorType;
enum_.IntervalUnit = type_.IntervalUnit;
enum_.MessageHeader = type_.MessageHeader;
enum_.MetadataVersion = type_.MetadataVersion;
})(enum_ = exports.enum_ || (exports.enum_ = {}));
var type;
(function (type) {
type.Schema = type_.Schema;
type.Field = type_.Field;
type.Null = type_.Null;
type.Int = type_.Int;
type.Int8 = type_.Int8;
type.Int16 = type_.Int16;
type.Int32 = type_.Int32;
type.Int64 = type_.Int64;
type.Uint8 = type_.Uint8;
type.Uint16 = type_.Uint16;
type.Uint32 = type_.Uint32;
type.Uint64 = type_.Uint64;
type.Float = type_.Float;
type.Float16 = type_.Float16;
type.Float32 = type_.Float32;
type.Float64 = type_.Float64;
type.Binary = type_.Binary;
type.Utf8 = type_.Utf8;
type.Bool = type_.Bool;
type.Decimal = type_.Decimal;
type.Date_ = type_.Date_;
type.Time = type_.Time;
type.Timestamp = type_.Timestamp;
type.Interval = type_.Interval;
type.List = type_.List;
type.Struct = type_.Struct;
type.Union = type_.Union;
type.DenseUnion = type_.DenseUnion;
type.SparseUnion = type_.SparseUnion;
type.FixedSizeBinary = type_.FixedSizeBinary;
type.FixedSizeList = type_.FixedSizeList;
type.Map_ = type_.Map_;
type.Dictionary = type_.Dictionary;
})(type = exports.type || (exports.type = {}));
var vector;
(function (vector) {
vector.Vector = vector_.Vector;
vector.NullVector = vector_.NullVector;
vector.BoolVector = vector_.BoolVector;
vector.IntVector = vector_.IntVector;
vector.FloatVector = vector_.FloatVector;
vector.DateVector = vector_.DateVector;
vector.DecimalVector = vector_.DecimalVector;
vector.TimeVector = vector_.TimeVector;
vector.TimestampVector = vector_.TimestampVector;
vector.IntervalVector = vector_.IntervalVector;
vector.BinaryVector = vector_.BinaryVector;
vector.FixedSizeBinaryVector = vector_.FixedSizeBinaryVector;
vector.Utf8Vector = vector_.Utf8Vector;
vector.ListVector = vector_.ListVector;
vector.FixedSizeListVector = vector_.FixedSizeListVector;
vector.MapVector = vector_.MapVector;
vector.StructVector = vector_.StructVector;
vector.UnionVector = vector_.UnionVector;
vector.DictionaryVector = vector_.DictionaryVector;
})(vector = exports.vector || (exports.vector = {}));
var visitor;
(function (visitor) {
visitor.TypeVisitor = visitor_.TypeVisitor;
visitor.VectorVisitor = visitor_.VectorVisitor;
})(visitor = exports.visitor || (exports.visitor = {}));
var view;
(function (view) {
view.ChunkedView = view_.ChunkedView;
view.DictionaryView = view_.DictionaryView;
view.ListView = view_.ListView;
view.FixedSizeListView = view_.FixedSizeListView;
view.BinaryView = view_.BinaryView;
view.Utf8View = view_.Utf8View;
view.UnionView = view_.UnionView;
view.DenseUnionView = view_.DenseUnionView;
view.NestedView = view_.NestedView;
view.StructView = view_.StructView;
view.MapView = view_.MapView;
view.FlatView = view_.FlatView;
view.NullView = view_.NullView;
view.BoolView = view_.BoolView;
view.ValidityView = view_.ValidityView;
view.PrimitiveView = view_.PrimitiveView;
view.FixedSizeView = view_.FixedSizeView;
view.Float16View = view_.Float16View;
view.DateDayView = view_.DateDayView;
view.DateMillisecondView = view_.DateMillisecondView;
view.TimestampDayView = view_.TimestampDayView;
view.TimestampSecondView = view_.TimestampSecondView;
view.TimestampMillisecondView = view_.TimestampMillisecondView;
view.TimestampMicrosecondView = view_.TimestampMicrosecondView;
view.TimestampNanosecondView = view_.TimestampNanosecondView;
view.IntervalYearMonthView = view_.IntervalYearMonthView;
view.IntervalYearView = view_.IntervalYearView;
view.IntervalMonthView = view_.IntervalMonthView;
})(view = exports.view || (exports.view = {}));
var predicate;
(function (predicate) {
predicate.col = predicate_.col;
predicate.lit = predicate_.lit;
predicate.custom = predicate_.custom;
predicate.Or = predicate_.Or;
predicate.Col = predicate_.Col;
predicate.And = predicate_.And;
predicate.GTeq = predicate_.GTeq;
predicate.LTeq = predicate_.LTeq;
predicate.Value = predicate_.Value;
predicate.Equals = predicate_.Equals;
predicate.Literal = predicate_.Literal;
predicate.Predicate = predicate_.Predicate;
})(predicate = exports.predicate || (exports.predicate = {}));
/* These exports are needed for the closure and uglify umd targets */
try {
const Arrow = eval('exports');
if (typeof Arrow === 'object') {
// string indexers tell closure compiler not to rename these properties
Arrow['readVectors'] = arrow_1.readVectors;
Arrow['readVectorsAsync'] = arrow_1.readVectorsAsync;
let Arrow = eval('exports');
if (Arrow && typeof Arrow === 'object') {
// string indexers tell closure and uglify not to rename these properties
Arrow['data'] = data;
Arrow['type'] = type;
Arrow['util'] = util;
Arrow['view'] = view;
Arrow['enum_'] = enum_;
Arrow['vector'] = vector;
Arrow['visitor'] = visitor;
Arrow['predicate'] = predicate;
Arrow['read'] = arrow_1.read;
Arrow['readAsync'] = arrow_1.readAsync;
Arrow['Type'] = type_1.Type;
Arrow['Field'] = type_1.Field;
Arrow['Schema'] = type_1.Schema;
Arrow['Vector'] = vector_1.Vector;
Arrow['RecordBatch'] = recordbatch_1.RecordBatch;
Arrow['Table'] = table_1.Table;
Arrow['Vector'] = vector_1.Vector;
Arrow['StructRow'] = struct_1.StructRow;
Arrow['BoolVector'] = numeric_1.BoolVector;
Arrow['ListVector'] = list_1.ListVector;
Arrow['Utf8Vector'] = utf8_1.Utf8Vector;
Arrow['Int8Vector'] = numeric_1.Int8Vector;
Arrow['Int16Vector'] = numeric_1.Int16Vector;
Arrow['Int32Vector'] = numeric_1.Int32Vector;
Arrow['Int64Vector'] = numeric_1.Int64Vector;
Arrow['Uint8Vector'] = numeric_1.Uint8Vector;
Arrow['Uint16Vector'] = numeric_1.Uint16Vector;
Arrow['Uint32Vector'] = numeric_1.Uint32Vector;
Arrow['Uint64Vector'] = numeric_1.Uint64Vector;
Arrow['Date32Vector'] = numeric_1.Date32Vector;
Arrow['Date64Vector'] = numeric_1.Date64Vector;
Arrow['Time32Vector'] = numeric_1.Time32Vector;
Arrow['Time64Vector'] = numeric_1.Time64Vector;
Arrow['BinaryVector'] = list_1.BinaryVector;
Arrow['StructVector'] = struct_1.StructVector;
Arrow['Float16Vector'] = numeric_1.Float16Vector;
Arrow['Float32Vector'] = numeric_1.Float32Vector;
Arrow['Float64Vector'] = numeric_1.Float64Vector;
Arrow['DecimalVector'] = numeric_1.DecimalVector;
Arrow['TimestampVector'] = numeric_1.TimestampVector;
Arrow['DictionaryVector'] = dictionary_1.DictionaryVector;
Arrow['FixedSizeListVector'] = list_1.FixedSizeListVector;
Arrow['CountByResult'] = table_1.CountByResult;
}
}
catch (e) { }
/* end closure exports */
/* end umd exports */
// closure compiler erases static properties/methods:
// https://github.com/google/closure-compiler/issues/1776
// set them via string indexers to save them from the mangler
type_1.Schema['from'] = type_1.Schema.from;
table_1.Table['from'] = table_1.Table.from;
table_1.Table['fromAsync'] = table_1.Table.fromAsync;
table_1.Table['empty'] = table_1.Table.empty;
vector_1.Vector['create'] = vector_1.Vector.create;
recordbatch_1.RecordBatch['from'] = recordbatch_1.RecordBatch.from;
util_.Uint64['add'] = util_.Uint64.add;
util_.Uint64['multiply'] = util_.Uint64.multiply;
util_.Int64['add'] = util_.Int64.add;
util_.Int64['multiply'] = util_.Int64.multiply;
util_.Int64['fromString'] = util_.Int64.fromString;
util_.Int128['add'] = util_.Int128.add;
util_.Int128['multiply'] = util_.Int128.multiply;
util_.Int128['fromString'] = util_.Int128.fromString;
data_.ChunkedData['computeOffsets'] = data_.ChunkedData.computeOffsets;
type_.Type['NONE'] = type_.Type.NONE;
type_.Type['Null'] = type_.Type.Null;
type_.Type['Int'] = type_.Type.Int;
type_.Type['Float'] = type_.Type.Float;
type_.Type['Binary'] = type_.Type.Binary;
type_.Type['Utf8'] = type_.Type.Utf8;
type_.Type['Bool'] = type_.Type.Bool;
type_.Type['Decimal'] = type_.Type.Decimal;
type_.Type['Date'] = type_.Type.Date;
type_.Type['Time'] = type_.Type.Time;
type_.Type['Timestamp'] = type_.Type.Timestamp;
type_.Type['Interval'] = type_.Type.Interval;
type_.Type['List'] = type_.Type.List;
type_.Type['Struct'] = type_.Type.Struct;
type_.Type['Union'] = type_.Type.Union;
type_.Type['FixedSizeBinary'] = type_.Type.FixedSizeBinary;
type_.Type['FixedSizeList'] = type_.Type.FixedSizeList;
type_.Type['Map'] = type_.Type.Map;
type_.Type['Dictionary'] = type_.Type.Dictionary;
type_.Type['DenseUnion'] = type_.Type.DenseUnion;
type_.Type['SparseUnion'] = type_.Type.SparseUnion;
type_.DataType['isNull'] = type_.DataType.isNull;
type_.DataType['isInt'] = type_.DataType.isInt;
type_.DataType['isFloat'] = type_.DataType.isFloat;
type_.DataType['isBinary'] = type_.DataType.isBinary;
type_.DataType['isUtf8'] = type_.DataType.isUtf8;
type_.DataType['isBool'] = type_.DataType.isBool;
type_.DataType['isDecimal'] = type_.DataType.isDecimal;
type_.DataType['isDate'] = type_.DataType.isDate;
type_.DataType['isTime'] = type_.DataType.isTime;
type_.DataType['isTimestamp'] = type_.DataType.isTimestamp;
type_.DataType['isInterval'] = type_.DataType.isInterval;
type_.DataType['isList'] = type_.DataType.isList;
type_.DataType['isStruct'] = type_.DataType.isStruct;
type_.DataType['isUnion'] = type_.DataType.isUnion;
type_.DataType['isDenseUnion'] = type_.DataType.isDenseUnion;
type_.DataType['isSparseUnion'] = type_.DataType.isSparseUnion;
type_.DataType['isFixedSizeBinary'] = type_.DataType.isFixedSizeBinary;
type_.DataType['isFixedSizeList'] = type_.DataType.isFixedSizeList;
type_.DataType['isMap'] = type_.DataType.isMap;
type_.DataType['isDictionary'] = type_.DataType.isDictionary;
vector_.BoolVector['from'] = vector_.BoolVector.from;
vector_.IntVector['from'] = vector_.IntVector.from;
vector_.FloatVector['from'] = vector_.FloatVector.from;
visitor_.TypeVisitor['visitTypeInline'] = visitor_.TypeVisitor.visitTypeInline;
visitor_.VectorVisitor['visitTypeInline'] = visitor_.VectorVisitor.visitTypeInline;
//# sourceMappingURL=data:application/json;charset=utf8;base64,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Q0FBQyxHQUFHLHNCQUFZLENBQUM7UUFDckMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLHNCQUFZLENBQUM7UUFDckMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLHNCQUFZLENBQUM7UUFDckMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLHNCQUFZLENBQUM7UUFDckMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLHNCQUFZLENBQUM7UUFDckMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLHNCQUFZLENBQUM7UUFDckMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLHNCQUFZLENBQUM7UUFDckMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLG1CQUFZLENBQUM7UUFDckMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLHFCQUFZLENBQUM7UUFDckMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxHQUFHLHVCQUFhLENBQUM7UUFDdkMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxHQUFHLHVCQUFhLENBQUM7UUFDdkMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxHQUFHLHVCQUFhLENBQUM7UUFDdkMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxHQUFHLHVCQUFhLENBQUM7UUFDdkMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEdBQUcseUJBQWUsQ0FBQztRQUMzQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsR0FBRyw2QkFBZ0IsQ0FBQztRQUM3QyxLQUFLLENBQUMscUJBQXFCLENBQUMsR0FBRywwQkFBbUIsQ0FBQztJQUN2RCxDQUFDO0FBQ0wsQ0FBQztBQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBMEIsQ0FBQztBQUN4Qyx5QkFBeUIiLCJmaWxlIjoiQXJyb3cuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lXG4vLyBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGVcbi8vIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uXG4vLyByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlXG4vLyB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlXG4vLyBcIkxpY2Vuc2VcIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Vcbi8vIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbi8vXG4vLyAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuLy9cbi8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZyxcbi8vIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuXG4vLyBcIkFTIElTXCIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWVxuLy8gS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlXG4vLyBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zXG4vLyB1bmRlciB0aGUgTGljZW5zZS5cblxuaW1wb3J0IHsgVGFibGUgfSBmcm9tICcuL3ZlY3Rvci90YWJsZSc7XG5pbXBvcnQgeyBWZWN0b3IgfSBmcm9tICcuL3ZlY3Rvci92ZWN0b3InO1xuaW1wb3J0IHsgVXRmOFZlY3RvciB9IGZyb20gJy4vdmVjdG9yL3V0ZjgnO1xuaW1wb3J0IHsgRGljdGlvbmFyeVZlY3RvciB9IGZyb20gJy4vdmVjdG9yL2RpY3Rpb25hcnknO1xuaW1wb3J0IHsgU3RydWN0VmVjdG9yLCBTdHJ1Y3RSb3cgfSBmcm9tICcuL3ZlY3Rvci9zdHJ1Y3QnO1xuaW1wb3J0IHsgcmVhZFZlY3RvcnMsIHJlYWRWZWN0b3JzQXN5bmMgfSBmcm9tICcuL3JlYWRlci9hcnJvdyc7XG5pbXBvcnQgeyBMaXN0VmVjdG9yLCBCaW5hcnlWZWN0b3IsIEZpeGVkU2l6ZUxpc3RWZWN0b3IgfSBmcm9tICcuL3ZlY3Rvci9saXN0JztcblxuaW1wb3J0IHtcbiAgICBCb29sVmVjdG9yLFxuICAgIEludDhWZWN0b3IsXG4gICAgSW50MTZWZWN0b3IsXG4gICAgSW50MzJWZWN0b3IsXG4gICAgSW50NjRWZWN0b3IsXG4gICAgVWludDhWZWN0b3IsXG4gICAgVWludDE2VmVjdG9yLFxuICAgIFVpbnQzMlZlY3RvcixcbiAgICBVaW50NjRWZWN0b3IsXG4gICAgRmxvYXQxNlZlY3RvcixcbiAgICBGbG9hdDMyVmVjdG9yLFxuICAgIEZsb2F0NjRWZWN0b3IsXG4gICAgRGF0ZTMyVmVjdG9yLFxuICAgIERhdGU2NFZlY3RvcixcbiAgICBUaW1lMzJWZWN0b3IsXG4gICAgVGltZTY0VmVjdG9yLFxuICAgIERlY2ltYWxWZWN0b3IsXG4gICAgVGltZXN0YW1wVmVjdG9yLFxufSBmcm9tICcuL3ZlY3Rvci9udW1lcmljJztcblxuZXhwb3J0IHsgVGFibGUsIFZlY3RvciwgU3RydWN0Um93IH07XG5leHBvcnQgeyByZWFkVmVjdG9ycywgcmVhZFZlY3RvcnNBc3luYyB9O1xuZXhwb3J0IHsgTnVtZXJpY1ZlY3RvckNvbnN0cnVjdG9yIH0gZnJvbSAnLi92ZWN0b3IvbnVtZXJpYyc7XG5leHBvcnQgeyBMaXN0LCBUeXBlZEFycmF5LCBUeXBlZEFycmF5Q29uc3RydWN0b3IgfSBmcm9tICcuL3ZlY3Rvci90eXBlcyc7XG5leHBvcnQge1xuICAgIEJvb2xWZWN0b3IsXG4gICAgTGlzdFZlY3RvcixcbiAgICBVdGY4VmVjdG9yLFxuICAgIEludDhWZWN0b3IsXG4gICAgSW50MTZWZWN0b3IsXG4gICAgSW50MzJWZWN0b3IsXG4gICAgSW50NjRWZWN0b3IsXG4gICAgVWludDhWZWN0b3IsXG4gICAgVWludDE2VmVjdG9yLFxuICAgIFVpbnQzMlZlY3RvcixcbiAgICBVaW50NjRWZWN0b3IsXG4gICAgRGF0ZTMyVmVjdG9yLFxuICAgIERhdGU2NFZlY3RvcixcbiAgICBUaW1lMzJWZWN0b3IsXG4gICAgVGltZTY0VmVjdG9yLFxuICAgIEJpbmFyeVZlY3RvcixcbiAgICBTdHJ1Y3RWZWN0b3IsXG4gICAgRmxvYXQxNlZlY3RvcixcbiAgICBGbG9hdDMyVmVjdG9yLFxuICAgIEZsb2F0NjRWZWN0b3IsXG4gICAgRGVjaW1hbFZlY3RvcixcbiAgICBUaW1lc3RhbXBWZWN0b3IsXG4gICAgRGljdGlvbmFyeVZlY3RvcixcbiAgICBGaXhlZFNpemVMaXN0VmVjdG9yLFxufTtcblxuLyogVGhlc2UgZXhwb3J0cyBhcmUgbmVlZGVkIGZvciB0aGUgY2xvc3VyZSB1bWQgdGFyZ2V0cyAqL1xudHJ5IHtcbiAgICBjb25zdCBBcnJvdyA9IGV2YWwoJ2V4cG9ydHMnKTtcbiAgICBpZiAodHlwZW9mIEFycm93ID09PSAnb2JqZWN0Jykge1xuICAgICAgICAvLyBzdHJpbmcgaW5kZXhlcnMgdGVsbCBjbG9zdXJlIGNvbXBpbGVyIG5vdCB0byByZW5hbWUgdGhlc2UgcHJvcGVydGllc1xuICAgICAgICBBcnJvd1sncmVhZFZlY3RvcnMnXSA9IHJlYWRWZWN0b3JzO1xuICAgICAgICBBcnJvd1sncmVhZFZlY3RvcnNBc3luYyddID0gcmVhZFZlY3RvcnNBc3luYztcbiAgICAgICAgQXJyb3dbJ1RhYmxlJ10gPSBUYWJsZTtcbiAgICAgICAgQXJyb3dbJ1ZlY3RvciddID0gVmVjdG9yO1xuICAgICAgICBBcnJvd1snU3RydWN0Um93J10gPSBTdHJ1Y3RSb3c7XG4gICAgICAgIEFycm93WydCb29sVmVjdG9yJ10gPSBCb29sVmVjdG9yO1xuICAgICAgICBBcnJvd1snTGlzdFZlY3RvciddID0gTGlzdFZlY3RvcjtcbiAgICAgICAgQXJyb3dbJ1V0ZjhWZWN0b3InXSA9IFV0ZjhWZWN0b3I7XG4gICAgICAgIEFycm93WydJbnQ4VmVjdG9yJ10gPSBJbnQ4VmVjdG9yO1xuICAgICAgICBBcnJvd1snSW50MTZWZWN0b3InXSA9IEludDE2VmVjdG9yO1xuICAgICAgICBBcnJvd1snSW50MzJWZWN0b3InXSA9IEludDMyVmVjdG9yO1xuICAgICAgICBBcnJvd1snSW50NjRWZWN0b3InXSA9IEludDY0VmVjdG9yO1xuICAgICAgICBBcnJvd1snVWludDhWZWN0b3InXSA9IFVpbnQ4VmVjdG9yO1xuICAgICAgICBBcnJvd1snVWludDE2VmVjdG9yJ10gPSBVaW50MTZWZWN0b3I7XG4gICAgICAgIEFycm93WydVaW50MzJWZWN0b3InXSA9IFVpbnQzMlZlY3RvcjtcbiAgICAgICAgQXJyb3dbJ1VpbnQ2NFZlY3RvciddID0gVWludDY0VmVjdG9yO1xuICAgICAgICBBcnJvd1snRGF0ZTMyVmVjdG9yJ10gPSBEYXRlMzJWZWN0b3I7XG4gICAgICAgIEFycm93WydEYXRlNjRWZWN0b3InXSA9IERhdGU2NFZlY3RvcjtcbiAgICAgICAgQXJyb3dbJ1RpbWUzMlZlY3RvciddID0gVGltZTMyVmVjdG9yO1xuICAgICAgICBBcnJvd1snVGltZTY0VmVjdG9yJ10gPSBUaW1lNjRWZWN0b3I7XG4gICAgICAgIEFycm93WydCaW5hcnlWZWN0b3InXSA9IEJpbmFyeVZlY3RvcjtcbiAgICAgICAgQXJyb3dbJ1N0cnVjdFZlY3RvciddID0gU3RydWN0VmVjdG9yO1xuICAgICAgICBBcnJvd1snRmxvYXQxNlZlY3RvciddID0gRmxvYXQxNlZlY3RvcjtcbiAgICAgICAgQXJyb3dbJ0Zsb2F0MzJWZWN0b3InXSA9IEZsb2F0MzJWZWN0b3I7XG4gICAgICAgIEFycm93WydGbG9hdDY0VmVjdG9yJ10gPSBGbG9hdDY0VmVjdG9yO1xuICAgICAgICBBcnJvd1snRGVjaW1hbFZlY3RvciddID0gRGVjaW1hbFZlY3RvcjtcbiAgICAgICAgQXJyb3dbJ1RpbWVzdGFtcFZlY3RvciddID0gVGltZXN0YW1wVmVjdG9yO1xuICAgICAgICBBcnJvd1snRGljdGlvbmFyeVZlY3RvciddID0gRGljdGlvbmFyeVZlY3RvcjtcbiAgICAgICAgQXJyb3dbJ0ZpeGVkU2l6ZUxpc3RWZWN0b3InXSA9IEZpeGVkU2l6ZUxpc3RWZWN0b3I7XG4gICAgfVxufSBjYXRjaCAoZSkgeyAvKiBub3QgdGhlIFVNRCBidW5kbGUgKi8gfVxuLyogZW5kIGNsb3N1cmUgZXhwb3J0cyAqL1xuIl19
//# sourceMappingURL=data:application/json;charset=utf8;base64,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RyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQ3BCLFNBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO0lBQ2xCLFFBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDO0lBQ2hCLFNBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO0lBQ2xCLFVBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQ3BCLFVBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQ3BCLFVBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQ3BCLFVBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQ3BCLFdBQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQ3RCLFdBQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQ3RCLFdBQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQ3RCLFVBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQ3BCLFlBQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO0lBQ3hCLFlBQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO0lBQ3hCLFlBQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO0lBQ3hCLFdBQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQ3RCLFNBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO0lBQ2xCLFNBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO0lBQ2xCLFlBQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO0lBQ3hCLFVBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQ3BCLFNBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO0lBQ2xCLGNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDO0lBQzVCLGFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO0lBQzFCLFNBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO0lBQ2xCLFdBQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQ3RCLFVBQUssR0FB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LENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO0FBRW5ELEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7QUFDdkMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztBQUNqRCxLQUFLLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDO0FBRXJELEtBQUssQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQztBQUV0RSxLQUFLLENBQUMsSUFBWSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0FBQzdDLEtBQUssQ0FBQyxJQUFZLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7QUFDN0MsS0FBSyxDQUFDLElBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztBQUMzQyxLQUFLLENBQUMsSUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO0FBQy9DLEtBQUssQ0FBQyxJQUFZLENBQUMsUUFBUSxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7QUFDakQsS0FBSyxDQUFDLElBQVksQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztBQUM3QyxLQUFLLENBQUMsSUFBWSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0FBQzdDLEtBQUssQ0FBQyxJQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7QUFDbkQsS0FBSyxDQUFDLElBQVksQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztBQUM3QyxLQUFLLENBQUMsSUFBWSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0FBQzdDLEtBQUssQ0FBQyxJQUFZLENBQUMsV0FBVyxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7QUFDdkQsS0FBSyxDQUFDLElBQVksQ0FBQyxVQUFVLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztBQUNyRCxLQUFLLENBQUMsSUFBWSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0FBQzdDLEtBQUssQ0FBQyxJQUFZLENBQUMsUUFBUSxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7QUFDakQsS0FBSyxDQUFDLElBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztBQUMvQyxLQUFLLENBQUMsSUFBWSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUM7QUFDbkUsS0FBSyxDQUFDLElBQVksQ0FBQyxlQUFlLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztBQUMvRCxLQUFLLENBQUMsSUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO0FBQzNDLEtBQUssQ0FBQyxJQUFZLENBQUMsWUFBWSxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7QUFDekQsS0FBSyxDQUFDLElBQVksQ0FBQyxZQUFZLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztBQUN6RCxLQUFLLENBQUMsSUFBWSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO0FBRTVELEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7QUFDakQsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztBQUMvQyxLQUFLLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO0FBQ25ELEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7QUFDckQsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztBQUNqRCxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO0FBQ2pELEtBQUssQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUM7QUFDdkQsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztBQUNqRCxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO0FBQ2pELEtBQUssQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7QUFDM0QsS0FBSyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQztBQUN6RCxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO0FBQ2pELEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7QUFDckQsS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztBQUNuRCxLQUFLLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDO0FBQzdELEtBQUssQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUM7QUFDL0QsS0FBSyxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUM7QUFDdkUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDO0FBQ25FLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7QUFDL0MsS0FBSyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztBQUU3RCxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO0FBQ3JELE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7QUFDbkQsT0FBTyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztBQUV2RCxRQUFRLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUM7QUFDL0UsUUFBUSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDIiwiZmlsZSI6IkFycm93LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZVxuLy8gb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlXG4vLyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvblxuLy8gcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZVxuLy8gdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZVxuLy8gXCJMaWNlbnNlXCIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4vLyB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4vL1xuLy8gICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbi8vXG4vLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsXG4vLyBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhblxuLy8gXCJBUyBJU1wiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTllcbi8vIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZVxuLy8gc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9uc1xuLy8gdW5kZXIgdGhlIExpY2Vuc2UuXG5cbmltcG9ydCAqIGFzIHR5cGVfIGZyb20gJy4vdHlwZSc7XG5pbXBvcnQgKiBhcyBkYXRhXyBmcm9tICcuL2RhdGEnO1xuaW1wb3J0ICogYXMgdmVjdG9yXyBmcm9tICcuL3ZlY3Rvcic7XG5pbXBvcnQgKiBhcyB1dGlsXyBmcm9tICcuL3V0aWwvaW50JztcbmltcG9ydCAqIGFzIHZpc2l0b3JfIGZyb20gJy4vdmlzaXRvcic7XG5pbXBvcnQgKiBhcyB2aWV3XyBmcm9tICcuL3ZlY3Rvci92aWV3JztcbmltcG9ydCAqIGFzIHByZWRpY2F0ZV8gZnJvbSAnLi9wcmVkaWNhdGUnO1xuaW1wb3J0IHsgVmVjdG9yIH0gZnJvbSAnLi92ZWN0b3InO1xuaW1wb3J0IHsgUmVjb3JkQmF0Y2ggfSBmcm9tICcuL3JlY29yZGJhdGNoJztcbmltcG9ydCB7IFNjaGVtYSwgRmllbGQsIFR5cGUgfSBmcm9tICcuL3R5cGUnO1xuaW1wb3J0IHsgVGFibGUsIERhdGFGcmFtZSwgTmV4dEZ1bmMsIEJpbmRGdW5jLCBDb3VudEJ5UmVzdWx0IH0gZnJvbSAnLi90YWJsZSc7XG5pbXBvcnQgeyByZWFkLCByZWFkQXN5bmMgfSBmcm9tICcuL2lwYy9yZWFkZXIvYXJyb3cnO1xuXG5leHBvcnQgaW1wb3J0IFZpZXcgPSB2ZWN0b3JfLlZpZXc7XG5leHBvcnQgaW1wb3J0IFZlY3Rvckxpa2UgPSB2ZWN0b3JfLlZlY3Rvckxpa2U7XG5leHBvcnQgaW1wb3J0IFR5cGVkQXJyYXkgPSB0eXBlXy5UeXBlZEFycmF5O1xuZXhwb3J0IGltcG9ydCBJbnRCaXRXaWR0aCA9IHR5cGVfLkludEJpdFdpZHRoO1xuZXhwb3J0IGltcG9ydCBUaW1lQml0V2lkdGggPSB0eXBlXy5UaW1lQml0V2lkdGg7XG5leHBvcnQgaW1wb3J0IFR5cGVkQXJyYXlDb25zdHJ1Y3RvciA9IHR5cGVfLlR5cGVkQXJyYXlDb25zdHJ1Y3RvcjtcblxuZXhwb3J0IHsgcmVhZCwgcmVhZEFzeW5jIH07XG5leHBvcnQgeyBUYWJsZSwgRGF0YUZyYW1lLCBOZXh0RnVuYywgQmluZEZ1bmMsIENvdW50QnlSZXN1bHQgfTtcbmV4cG9ydCB7IEZpZWxkLCBTY2hlbWEsIFJlY29yZEJhdGNoLCBWZWN0b3IsIFR5cGUgfTtcblxuZXhwb3J0IG5hbWVzcGFjZSB1dGlsIHtcbiAgICBleHBvcnQgaW1wb3J0IFVpbnQ2NCA9IHV0aWxfLlVpbnQ2NDtcbiAgICBleHBvcnQgaW1wb3J0IEludDY0ID0gdXRpbF8uSW50NjQ7XG4gICAgZXhwb3J0IGltcG9ydCBJbnQxMjggPSB1dGlsXy5JbnQxMjg7XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgZGF0YSB7XG4gICAgZXhwb3J0IGltcG9ydCBCYXNlRGF0YSA9IGRhdGFfLkJhc2VEYXRhO1xuICAgIGV4cG9ydCBpbXBvcnQgRmxhdERhdGEgPSBkYXRhXy5GbGF0RGF0YTtcbiAgICBleHBvcnQgaW1wb3J0IEJvb2xEYXRhID0gZGF0YV8uQm9vbERhdGE7XG4gICAgZXhwb3J0IGltcG9ydCBGbGF0TGlzdERhdGEgPSBkYXRhXy5GbGF0TGlzdERhdGE7XG4gICAgZXhwb3J0IGltcG9ydCBEaWN0aW9uYXJ5RGF0YSA9IGRhdGFfLkRpY3Rpb25hcnlEYXRhO1xuICAgIGV4cG9ydCBpbXBvcnQgTmVzdGVkRGF0YSA9IGRhdGFfLk5lc3RlZERhdGE7XG4gICAgZXhwb3J0IGltcG9ydCBMaXN0RGF0YSA9IGRhdGFfLkxpc3REYXRhO1xuICAgIGV4cG9ydCBpbXBvcnQgVW5pb25EYXRhID0gZGF0YV8uVW5pb25EYXRhO1xuICAgIGV4cG9ydCBpbXBvcnQgU3BhcnNlVW5pb25EYXRhID0gZGF0YV8uU3BhcnNlVW5pb25EYXRhO1xuICAgIGV4cG9ydCBpbXBvcnQgRGVuc2VVbmlvbkRhdGEgPSBkYXRhXy5EZW5zZVVuaW9uRGF0YTtcbiAgICBleHBvcnQgaW1wb3J0IENodW5rZWREYXRhID0gZGF0YV8uQ2h1bmtlZERhdGE7XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgZW51bV8ge1xuICAgIGV4cG9ydCBpbXBvcnQgVHlwZSA9IHR5cGVfLkFycm93VHlwZTtcbiAgICBleHBvcnQgaW1wb3J0IERhdGVVbml0ID0gdHlwZV8uRGF0ZVVuaXQ7XG4gICAgZXhwb3J0IGltcG9ydCBUaW1lVW5pdCA9IHR5cGVfLlRpbWVVbml0O1xuICAgIGV4cG9ydCBpbXBvcnQgUHJlY2lzaW9uID0gdHlwZV8uUHJlY2lzaW9uO1xuICAgIGV4cG9ydCBpbXBvcnQgVW5pb25Nb2RlID0gdHlwZV8uVW5pb25Nb2RlO1xuICAgIGV4cG9ydCBpbXBvcnQgVmVjdG9yVHlwZSA9IHR5cGVfLlZlY3RvclR5cGU7XG4gICAgZXhwb3J0IGltcG9ydCBJbnRlcnZhbFVuaXQgPSB0eXBlXy5JbnRlcnZhbFVuaXQ7XG4gICAgZXhwb3J0IGltcG9ydCBNZXNzYWdlSGVhZGVyID0gdHlwZV8uTWVzc2FnZUhlYWRlcjtcbiAgICBleHBvcnQgaW1wb3J0IE1ldGFkYXRhVmVyc2lvbiA9IHR5cGVfLk1ldGFkYXRhVmVyc2lvbjtcbn1cblxuZXhwb3J0IG5hbWVzcGFjZSB0eXBlIHtcbiAgICBleHBvcnQgaW1wb3J0IFNjaGVtYSA9IHR5cGVfLlNjaGVtYTtcbiAgICBleHBvcnQgaW1wb3J0IEZpZWxkID0gdHlwZV8uRmllbGQ7XG4gICAgZXhwb3J0IGltcG9ydCBOdWxsID0gdHlwZV8uTnVsbDtcbiAgICBleHBvcnQgaW1wb3J0IEludCA9IHR5cGVfLkludDtcbiAgICBleHBvcnQgaW1wb3J0IEludDggPSB0eXBlXy5JbnQ4O1xuICAgIGV4cG9ydCBpbXBvcnQgSW50MTYgPSB0eXBlXy5JbnQxNjtcbiAgICBleHBvcnQgaW1wb3J0IEludDMyID0gdHlwZV8uSW50MzI7XG4gICAgZXhwb3J0IGltcG9ydCBJbnQ2NCA9IHR5cGVfLkludDY0O1xuICAgIGV4cG9ydCBpbXBvcnQgVWludDggPSB0eXBlXy5VaW50ODtcbiAgICBleHBvcnQgaW1wb3J0IFVpbnQxNiA9IHR5cGVfLlVpbnQxNjtcbiAgICBleHBvcnQgaW1wb3J0IFVpbnQzMiA9IHR5cGVfLlVpbnQzMjtcbiAgICBleHBvcnQgaW1wb3J0IFVpbnQ2NCA9IHR5cGVfLlVpbnQ2NDtcbiAgICBleHBvcnQgaW1wb3J0IEZsb2F0ID0gdHlwZV8uRmxvYXQ7XG4gICAgZXhwb3J0IGltcG9ydCBGbG9hdDE2ID0gdHlwZV8uRmxvYXQxNjtcbiAgICBleHBvcnQgaW1wb3J0IEZsb2F0MzIgPSB0eXBlXy5GbG9hdDMyO1xuICAgIGV4cG9ydCBpbXBvcnQgRmxvYXQ2NCA9IHR5cGVfLkZsb2F0NjQ7XG4gICAgZXhwb3J0IGltcG9ydCBCaW5hcnkgPSB0eXBlXy5CaW5hcnk7XG4gICAgZXhwb3J0IGltcG9ydCBVdGY4ID0gdHlwZV8uVXRmODtcbiAgICBleHBvcnQgaW1wb3J0IEJvb2wgPSB0eXBlXy5Cb29sO1xuICAgIGV4cG9ydCBpbXBvcnQgRGVjaW1hbCA9IHR5cGVfLkRlY2ltYWw7XG4gICAgZXhwb3J0IGltcG9ydCBEYXRlXyA9IHR5cGVfLkRhdGVfO1xuICAgIGV4cG9ydCBpbXBvcnQgVGltZSA9IHR5cGVfLlRpbWU7XG4gICAgZXhwb3J0IGltcG9ydCBUaW1lc3RhbXAgPSB0eXBlXy5UaW1lc3RhbXA7XG4gICAgZXhwb3J0IGltcG9ydCBJbnRlcnZhbCA9IHR5cGVfLkludGVydmFsO1xuICAgIGV4cG9ydCBpbXBvcnQgTGlzdCA9IHR5cGVfLkxpc3Q7XG4gICAgZXhwb3J0IGltcG9ydCBTdHJ1Y3QgPSB0eXBlXy5TdHJ1Y3Q7XG4gICAgZXhwb3J0IGltcG9ydCBVbmlvbiA9IHR5cGVfLlVuaW9uO1xuICAgIGV4cG9ydCBpbXBvcnQgRGVuc2VVbmlvbiA9IHR5cGVfLkRlbnNlVW5pb247XG4gICAgZXhwb3J0IGltcG9ydCBTcGFyc2VVbmlvbiA9IHR5cGVfLlNwYXJzZVVuaW9uO1xuICAgIGV4cG9ydCBpbXBvcnQgRml4ZWRTaXplQmluYXJ5ID0gdHlwZV8uRml4ZWRTaXplQmluYXJ5O1xuICAgIGV4cG9ydCBpbXBvcnQgRml4ZWRTaXplTGlzdCA9IHR5cGVfLkZpeGVkU2l6ZUxpc3Q7XG4gICAgZXhwb3J0IGltcG9ydCBNYXBfID0gdHlwZV8uTWFwXztcbiAgICBleHBvcnQgaW1wb3J0IERpY3Rpb25hcnkgPSB0eXBlXy5EaWN0aW9uYXJ5O1xufVxuXG5leHBvcnQgbmFtZXNwYWNlIHZlY3RvciB7XG4gICAgZXhwb3J0IGltcG9ydCBWZWN0b3IgPSB2ZWN0b3JfLlZlY3RvcjtcbiAgICBleHBvcnQgaW1wb3J0IE51bGxWZWN0b3IgPSB2ZWN0b3JfLk51bGxWZWN0b3I7XG4gICAgZXhwb3J0IGltcG9ydCBCb29sVmVjdG9yID0gdmVjdG9yXy5Cb29sVmVjdG9yO1xuICAgIGV4cG9ydCBpbXBvcnQgSW50VmVjdG9yID0gdmVjdG9yXy5JbnRWZWN0b3I7XG4gICAgZXhwb3J0IGltcG9ydCBGbG9hdFZlY3RvciA9IHZlY3Rvcl8uRmxvYXRWZWN0b3I7XG4gICAgZXhwb3J0IGltcG9ydCBEYXRlVmVjdG9yID0gdmVjdG9yXy5EYXRlVmVjdG9yO1xuICAgIGV4cG9ydCBpbXBvcnQgRGVjaW1hbFZlY3RvciA9IHZlY3Rvcl8uRGVjaW1hbFZlY3RvcjtcbiAgICBleHBvcnQgaW1wb3J0IFRpbWVWZWN0b3IgPSB2ZWN0b3JfLlRpbWVWZWN0b3I7XG4gICAgZXhwb3J0IGltcG9ydCBUaW1lc3RhbXBWZWN0b3IgPSB2ZWN0b3JfLlRpbWVzdGFtcFZlY3RvcjtcbiAgICBleHBvcnQgaW1wb3J0IEludGVydmFsVmVjdG9yID0gdmVjdG9yXy5JbnRlcnZhbFZlY3RvcjtcbiAgICBleHBvcnQgaW1wb3J0IEJpbmFyeVZlY3RvciA9IHZlY3Rvcl8uQmluYXJ5VmVjdG9yO1xuICAgIGV4cG9ydCBpbXBvcnQgRml4ZWRTaXplQmluYXJ5VmVjdG9yID0gdmVjdG9yXy5GaXhlZFNpemVCaW5hcnlWZWN0b3I7XG4gICAgZXhwb3J0IGltcG9ydCBVdGY4VmVjdG9yID0gdmVjdG9yXy5VdGY4VmVjdG9yO1xuICAgIGV4cG9ydCBpbXBvcnQgTGlzdFZlY3RvciA9IHZlY3Rvcl8uTGlzdFZlY3RvcjtcbiAgICBleHBvcnQgaW1wb3J0IEZpeGVkU2l6ZUxpc3RWZWN0b3IgPSB2ZWN0b3JfLkZpeGVkU2l6ZUxpc3RWZWN0b3I7XG4gICAgZXhwb3J0IGltcG9ydCBNYXBWZWN0b3IgPSB2ZWN0b3JfLk1hcFZlY3RvcjtcbiAgICBleHBvcnQgaW1wb3J0IFN0cnVjdFZlY3RvciA9IHZlY3Rvcl8uU3RydWN0VmVjdG9yO1xuICAgIGV4cG9ydCBpbXBvcnQgVW5pb25WZWN0b3IgPSB2ZWN0b3JfLlVuaW9uVmVjdG9yO1xuICAgIGV4cG9ydCBpbXBvcnQgRGljdGlvbmFyeVZlY3RvciA9IHZlY3Rvcl8uRGljdGlvbmFyeVZlY3Rvcjtcbn1cblxuZXhwb3J0IG5hbWVzcGFjZSB2aXNpdG9yIHtcbiAgICBleHBvcnQgaW1wb3J0IFR5cGVWaXNpdG9yID0gdmlzaXRvcl8uVHlwZVZpc2l0b3I7XG4gICAgZXhwb3J0IGltcG9ydCBWZWN0b3JWaXNpdG9yID0gdmlzaXRvcl8uVmVjdG9yVmlzaXRvcjtcbn1cblxuZXhwb3J0IG5hbWVzcGFjZSB2aWV3IHtcbiAgICBleHBvcnQgaW1wb3J0IENodW5rZWRWaWV3ID0gdmlld18uQ2h1bmtlZFZpZXc7XG4gICAgZXhwb3J0IGltcG9ydCBEaWN0aW9uYXJ5VmlldyA9IHZpZXdfLkRpY3Rpb25hcnlWaWV3O1xuICAgIGV4cG9ydCBpbXBvcnQgTGlzdFZpZXcgPSB2aWV3Xy5MaXN0VmlldztcbiAgICBleHBvcnQgaW1wb3J0IEZpeGVkU2l6ZUxpc3RWaWV3ID0gdmlld18uRml4ZWRTaXplTGlzdFZpZXc7XG4gICAgZXhwb3J0IGltcG9ydCBCaW5hcnlWaWV3ID0gdmlld18uQmluYXJ5VmlldztcbiAgICBleHBvcnQgaW1wb3J0IFV0ZjhWaWV3ID0gdmlld18uVXRmOFZpZXc7XG4gICAgZXhwb3J0IGltcG9ydCBVbmlvblZpZXcgPSB2aWV3Xy5VbmlvblZpZXc7XG4gICAgZXhwb3J0IGltcG9ydCBEZW5zZVVuaW9uVmlldyA9IHZpZXdfLkRlbnNlVW5pb25WaWV3O1xuICAgIGV4cG9ydCBpbXBvcnQgTmVzdGVkVmlldyA9IHZpZXdfLk5lc3RlZFZpZXc7XG4gICAgZXhwb3J0IGltcG9ydCBTdHJ1Y3RWaWV3ID0gdmlld18uU3RydWN0VmlldztcbiAgICBleHBvcnQgaW1wb3J0IE1hcFZpZXcgPSB2aWV3Xy5NYXBWaWV3O1xuICAgIGV4cG9ydCBpbXBvcnQgRmxhdFZpZXcgPSB2aWV3Xy5GbGF0VmlldztcbiAgICBleHBvcnQgaW1wb3J0IE51bGxWaWV3ID0gdmlld18uTnVsbFZpZXc7XG4gICAgZXhwb3J0IGltcG9ydCBCb29sVmlldyA9IHZpZXdfLkJvb2xWaWV3O1xuICAgIGV4cG9ydCBpbXBvcnQgVmFsaWRpdHlWaWV3ID0gdmlld18uVmFsaWRpdHlWaWV3O1xuICAgIGV4cG9ydCBpbXBvcnQgUHJpbWl0aXZlVmlldyA9IHZpZXdfLlByaW1pdGl2ZVZpZXc7XG4gICAgZXhwb3J0IGltcG9ydCBGaXhlZFNpemVWaWV3ID0gdmlld18uRml4ZWRTaXplVmlldztcbiAgICBleHBvcnQgaW1wb3J0IEZsb2F0MTZWaWV3ID0gdmlld18uRmxvYXQxNlZpZXc7XG4gICAgZXhwb3J0IGltcG9ydCBEYXRlRGF5VmlldyA9IHZpZXdfLkRhdGVEYXlWaWV3O1xuICAgIGV4cG9ydCBpbXBvcnQgRGF0ZU1pbGxpc2Vjb25kVmlldyA9IHZpZXdfLkRhdGVNaWxsaXNlY29uZFZpZXc7XG4gICAgZXhwb3J0IGltcG9ydCBUaW1lc3RhbXBEYXlWaWV3ID0gdmlld18uVGltZXN0YW1wRGF5VmlldztcbiAgICBleHBvcnQgaW1wb3J0IFRpbWVzdGFtcFNlY29uZFZpZXcgPSB2aWV3Xy5UaW1lc3RhbXBTZWNvbmRWaWV3O1xuICAgIGV4cG9ydCBpbXBvcnQgVGltZXN0YW1wTWlsbGlzZWNvbmRWaWV3ID0gdmlld18uVGltZXN0YW1wTWlsbGlzZWNvbmRWaWV3O1xuICAgIGV4cG9ydCBpbXBvcnQgVGltZXN0YW1wTWljcm9zZWNvbmRWaWV3ID0gdmlld18uVGltZXN0YW1wTWljcm9zZWNvbmRWaWV3O1xuICAgIGV4cG9ydCBpbXBvcnQgVGltZXN0YW1wTmFub3NlY29uZFZpZXcgPSB2aWV3Xy5UaW1lc3RhbXBOYW5vc2Vjb25kVmlldztcbiAgICBleHBvcnQgaW1wb3J0IEludGVydmFsWWVhck1vbnRoVmlldyA9IHZpZXdfLkludGVydmFsWWVhck1vbnRoVmlldztcbiAgICBleHBvcnQgaW1wb3J0IEludGVydmFsWWVhclZpZXcgPSB2aWV3Xy5JbnRlcnZhbFllYXJWaWV3O1xuICAgIGV4cG9ydCBpbXBvcnQgSW50ZXJ2YWxNb250aFZpZXcgPSB2aWV3Xy5JbnRlcnZhbE1vbnRoVmlldztcbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBwcmVkaWNhdGUge1xuICAgIGV4cG9ydCBpbXBvcnQgY29sID0gcHJlZGljYXRlXy5jb2w7XG4gICAgZXhwb3J0IGltcG9ydCBsaXQgPSBwcmVkaWNhdGVfLmxpdDtcbiAgICBleHBvcnQgaW1wb3J0IGN1c3RvbSA9IHByZWRpY2F0ZV8uY3VzdG9tO1xuXG4gICAgZXhwb3J0IGltcG9ydCBPciA9IHByZWRpY2F0ZV8uT3I7XG4gICAgZXhwb3J0IGltcG9ydCBDb2wgPSBwcmVkaWNhdGVfLkNvbDtcbiAgICBleHBvcnQgaW1wb3J0IEFuZCA9IHByZWRpY2F0ZV8uQW5kO1xuICAgIGV4cG9ydCBpbXBvcnQgR1RlcSA9IHByZWRpY2F0ZV8uR1RlcTtcbiAgICBleHBvcnQgaW1wb3J0IExUZXEgPSBwcmVkaWNhdGVfLkxUZXE7XG4gICAgZXhwb3J0IGltcG9ydCBWYWx1ZSA9IHByZWRpY2F0ZV8uVmFsdWU7XG4gICAgZXhwb3J0IGltcG9ydCBFcXVhbHMgPSBwcmVkaWNhdGVfLkVxdWFscztcbiAgICBleHBvcnQgaW1wb3J0IExpdGVyYWwgPSBwcmVkaWNhdGVfLkxpdGVyYWw7XG4gICAgZXhwb3J0IGltcG9ydCBQcmVkaWNhdGUgPSBwcmVkaWNhdGVfLlByZWRpY2F0ZTtcblxuICAgIGV4cG9ydCBpbXBvcnQgUHJlZGljYXRlRnVuYyA9IHByZWRpY2F0ZV8uUHJlZGljYXRlRnVuYztcbn1cblxuLyogVGhlc2UgZXhwb3J0cyBhcmUgbmVlZGVkIGZvciB0aGUgY2xvc3VyZSBhbmQgdWdsaWZ5IHVtZCB0YXJnZXRzICovXG50cnkge1xuICAgIGxldCBBcnJvdzogYW55ID0gZXZhbCgnZXhwb3J0cycpO1xuICAgIGlmIChBcnJvdyAmJiB0eXBlb2YgQXJyb3cgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIC8vIHN0cmluZyBpbmRleGVycyB0ZWxsIGNsb3N1cmUgYW5kIHVnbGlmeSBub3QgdG8gcmVuYW1lIHRoZXNlIHByb3BlcnRpZXNcbiAgICAgICAgQXJyb3dbJ2RhdGEnXSA9IGRhdGE7XG4gICAgICAgIEFycm93Wyd0eXBlJ10gPSB0eXBlO1xuICAgICAgICBBcnJvd1sndXRpbCddID0gdXRpbDtcbiAgICAgICAgQXJyb3dbJ3ZpZXcnXSA9IHZpZXc7XG4gICAgICAgIEFycm93WydlbnVtXyddID0gZW51bV87XG4gICAgICAgIEFycm93Wyd2ZWN0b3InXSA9IHZlY3RvcjtcbiAgICAgICAgQXJyb3dbJ3Zpc2l0b3InXSA9IHZpc2l0b3I7XG4gICAgICAgIEFycm93WydwcmVkaWNhdGUnXSA9IHByZWRpY2F0ZTtcblxuICAgICAgICBBcnJvd1sncmVhZCddID0gcmVhZDtcbiAgICAgICAgQXJyb3dbJ3JlYWRBc3luYyddID0gcmVhZEFzeW5jO1xuXG4gICAgICAgIEFycm93WydUeXBlJ10gPSBUeXBlO1xuICAgICAgICBBcnJvd1snRmllbGQnXSA9IEZpZWxkO1xuICAgICAgICBBcnJvd1snU2NoZW1hJ10gPSBTY2hlbWE7XG4gICAgICAgIEFycm93WydWZWN0b3InXSA9IFZlY3RvcjtcbiAgICAgICAgQXJyb3dbJ1JlY29yZEJhdGNoJ10gPSBSZWNvcmRCYXRjaDtcblxuICAgICAgICBBcnJvd1snVGFibGUnXSA9IFRhYmxlO1xuICAgICAgICBBcnJvd1snQ291bnRCeVJlc3VsdCddID0gQ291bnRCeVJlc3VsdDtcbiAgICB9XG59IGNhdGNoIChlKSB7IC8qIG5vdCB0aGUgVU1EIGJ1bmRsZSAqLyB9XG4vKiBlbmQgdW1kIGV4cG9ydHMgKi9cblxuLy8gY2xvc3VyZSBjb21waWxlciBlcmFzZXMgc3RhdGljIHByb3BlcnRpZXMvbWV0aG9kczpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvY2xvc3VyZS1jb21waWxlci9pc3N1ZXMvMTc3NlxuLy8gc2V0IHRoZW0gdmlhIHN0cmluZyBpbmRleGVycyB0byBzYXZlIHRoZW0gZnJvbSB0aGUgbWFuZ2xlclxuU2NoZW1hWydmcm9tJ10gPSBTY2hlbWEuZnJvbTtcblRhYmxlWydmcm9tJ10gPSBUYWJsZS5mcm9tO1xuVGFibGVbJ2Zyb21Bc3luYyddID0gVGFibGUuZnJvbUFzeW5jO1xuVGFibGVbJ2VtcHR5J10gPSBUYWJsZS5lbXB0eTtcblZlY3RvclsnY3JlYXRlJ10gPSBWZWN0b3IuY3JlYXRlO1xuUmVjb3JkQmF0Y2hbJ2Zyb20nXSA9IFJlY29yZEJhdGNoLmZyb207XG5cbnV0aWxfLlVpbnQ2NFsnYWRkJ10gPSB1dGlsXy5VaW50NjQuYWRkO1xudXRpbF8uVWludDY0WydtdWx0aXBseSddID0gdXRpbF8uVWludDY0Lm11bHRpcGx5O1xuXG51dGlsXy5JbnQ2NFsnYWRkJ10gPSB1dGlsXy5JbnQ2NC5hZGQ7XG51dGlsXy5JbnQ2NFsnbXVsdGlwbHknXSA9IHV0aWxfLkludDY0Lm11bHRpcGx5O1xudXRpbF8uSW50NjRbJ2Zyb21TdHJpbmcnXSA9IHV0aWxfLkludDY0LmZyb21TdHJpbmc7XG5cbnV0aWxfLkludDEyOFsnYWRkJ10gPSB1dGlsXy5JbnQxMjguYWRkO1xudXRpbF8uSW50MTI4WydtdWx0aXBseSddID0gdXRpbF8uSW50MTI4Lm11bHRpcGx5O1xudXRpbF8uSW50MTI4Wydmcm9tU3RyaW5nJ10gPSB1dGlsXy5JbnQxMjguZnJvbVN0cmluZztcblxuZGF0YV8uQ2h1bmtlZERhdGFbJ2NvbXB1dGVPZmZzZXRzJ10gPSBkYXRhXy5DaHVua2VkRGF0YS5jb21wdXRlT2Zmc2V0cztcblxuKHR5cGVfLlR5cGUgYXMgYW55KVsnTk9ORSddID0gdHlwZV8uVHlwZS5OT05FO1xuKHR5cGVfLlR5cGUgYXMgYW55KVsnTnVsbCddID0gdHlwZV8uVHlwZS5OdWxsO1xuKHR5cGVfLlR5cGUgYXMgYW55KVsnSW50J10gPSB0eXBlXy5UeXBlLkludDtcbih0eXBlXy5UeXBlIGFzIGFueSlbJ0Zsb2F0J10gPSB0eXBlXy5UeXBlLkZsb2F0O1xuKHR5cGVfLlR5cGUgYXMgYW55KVsnQmluYXJ5J10gPSB0eXBlXy5UeXBlLkJpbmFyeTtcbih0eXBlXy5UeXBlIGFzIGFueSlbJ1V0ZjgnXSA9IHR5cGVfLlR5cGUuVXRmODtcbih0eXBlXy5UeXBlIGFzIGFueSlbJ0Jvb2wnXSA9IHR5cGVfLlR5cGUuQm9vbDtcbih0eXBlXy5UeXBlIGFzIGFueSlbJ0RlY2ltYWwnXSA9IHR5cGVfLlR5cGUuRGVjaW1hbDtcbih0eXBlXy5UeXBlIGFzIGFueSlbJ0RhdGUnXSA9IHR5cGVfLlR5cGUuRGF0ZTtcbih0eXBlXy5UeXBlIGFzIGFueSlbJ1RpbWUnXSA9IHR5cGVfLlR5cGUuVGltZTtcbih0eXBlXy5UeXBlIGFzIGFueSlbJ1RpbWVzdGFtcCddID0gdHlwZV8uVHlwZS5UaW1lc3RhbXA7XG4odHlwZV8uVHlwZSBhcyBhbnkpWydJbnRlcnZhbCddID0gdHlwZV8uVHlwZS5JbnRlcnZhbDtcbih0eXBlXy5UeXBlIGFzIGFueSlbJ0xpc3QnXSA9IHR5cGVfLlR5cGUuTGlzdDtcbih0eXBlXy5UeXBlIGFzIGFueSlbJ1N0cnVjdCddID0gdHlwZV8uVHlwZS5TdHJ1Y3Q7XG4odHlwZV8uVHlwZSBhcyBhbnkpWydVbmlvbiddID0gdHlwZV8uVHlwZS5Vbmlvbjtcbih0eXBlXy5UeXBlIGFzIGFueSlbJ0ZpeGVkU2l6ZUJpbmFyeSddID0gdHlwZV8uVHlwZS5GaXhlZFNpemVCaW5hcnk7XG4odHlwZV8uVHlwZSBhcyBhbnkpWydGaXhlZFNpemVMaXN0J10gPSB0eXBlXy5UeXBlLkZpeGVkU2l6ZUxpc3Q7XG4odHlwZV8uVHlwZSBhcyBhbnkpWydNYXAnXSA9IHR5cGVfLlR5cGUuTWFwO1xuKHR5cGVfLlR5cGUgYXMgYW55KVsnRGljdGlvbmFyeSddID0gdHlwZV8uVHlwZS5EaWN0aW9uYXJ5O1xuKHR5cGVfLlR5cGUgYXMgYW55KVsnRGVuc2VVbmlvbiddID0gdHlwZV8uVHlwZS5EZW5zZVVuaW9uO1xuKHR5cGVfLlR5cGUgYXMgYW55KVsnU3BhcnNlVW5pb24nXSA9IHR5cGVfLlR5cGUuU3BhcnNlVW5pb247XG5cbnR5cGVfLkRhdGFUeXBlWydpc051bGwnXSA9IHR5cGVfLkRhdGFUeXBlLmlzTnVsbDtcbnR5cGVfLkRhdGFUeXBlWydpc0ludCddID0gdHlwZV8uRGF0YVR5cGUuaXNJbnQ7XG50eXBlXy5EYXRhVHlwZVsnaXNGbG9hdCddID0gdHlwZV8uRGF0YVR5cGUuaXNGbG9hdDtcbnR5cGVfLkRhdGFUeXBlWydpc0JpbmFyeSddID0gdHlwZV8uRGF0YVR5cGUuaXNCaW5hcnk7XG50eXBlXy5EYXRhVHlwZVsnaXNVdGY4J10gPSB0eXBlXy5EYXRhVHlwZS5pc1V0Zjg7XG50eXBlXy5EYXRhVHlwZVsnaXNCb29sJ10gPSB0eXBlXy5EYXRhVHlwZS5pc0Jvb2w7XG50eXBlXy5EYXRhVHlwZVsnaXNEZWNpbWFsJ10gPSB0eXBlXy5EYXRhVHlwZS5pc0RlY2ltYWw7XG50eXBlXy5EYXRhVHlwZVsnaXNEYXRlJ10gPSB0eXBlXy5EYXRhVHlwZS5pc0RhdGU7XG50eXBlXy5EYXRhVHlwZVsnaXNUaW1lJ10gPSB0eXBlXy5EYXRhVHlwZS5pc1RpbWU7XG50eXBlXy5EYXRhVHlwZVsnaXNUaW1lc3RhbXAnXSA9IHR5cGVfLkRhdGFUeXBlLmlzVGltZXN0YW1wO1xudHlwZV8uRGF0YVR5cGVbJ2lzSW50ZXJ2YWwnXSA9IHR5cGVfLkRhdGFUeXBlLmlzSW50ZXJ2YWw7XG50eXBlXy5EYXRhVHlwZVsnaXNMaXN0J10gPSB0eXBlXy5EYXRhVHlwZS5pc0xpc3Q7XG50eXBlXy5EYXRhVHlwZVsnaXNTdHJ1Y3QnXSA9IHR5cGVfLkRhdGFUeXBlLmlzU3RydWN0O1xudHlwZV8uRGF0YVR5cGVbJ2lzVW5pb24nXSA9IHR5cGVfLkRhdGFUeXBlLmlzVW5pb247XG50eXBlXy5EYXRhVHlwZVsnaXNEZW5zZVVuaW9uJ10gPSB0eXBlXy5EYXRhVHlwZS5pc0RlbnNlVW5pb247XG50eXBlXy5EYXRhVHlwZVsnaXNTcGFyc2VVbmlvbiddID0gdHlwZV8uRGF0YVR5cGUuaXNTcGFyc2VVbmlvbjtcbnR5cGVfLkRhdGFUeXBlWydpc0ZpeGVkU2l6ZUJpbmFyeSddID0gdHlwZV8uRGF0YVR5cGUuaXNGaXhlZFNpemVCaW5hcnk7XG50eXBlXy5EYXRhVHlwZVsnaXNGaXhlZFNpemVMaXN0J10gPSB0eXBlXy5EYXRhVHlwZS5pc0ZpeGVkU2l6ZUxpc3Q7XG50eXBlXy5EYXRhVHlwZVsnaXNNYXAnXSA9IHR5cGVfLkRhdGFUeXBlLmlzTWFwO1xudHlwZV8uRGF0YVR5cGVbJ2lzRGljdGlvbmFyeSddID0gdHlwZV8uRGF0YVR5cGUuaXNEaWN0aW9uYXJ5O1xuXG52ZWN0b3JfLkJvb2xWZWN0b3JbJ2Zyb20nXSA9IHZlY3Rvcl8uQm9vbFZlY3Rvci5mcm9tO1xudmVjdG9yXy5JbnRWZWN0b3JbJ2Zyb20nXSA9IHZlY3Rvcl8uSW50VmVjdG9yLmZyb207XG52ZWN0b3JfLkZsb2F0VmVjdG9yWydmcm9tJ10gPSB2ZWN0b3JfLkZsb2F0VmVjdG9yLmZyb207XG5cbnZpc2l0b3JfLlR5cGVWaXNpdG9yWyd2aXNpdFR5cGVJbmxpbmUnXSA9IHZpc2l0b3JfLlR5cGVWaXNpdG9yLnZpc2l0VHlwZUlubGluZTtcbnZpc2l0b3JfLlZlY3RvclZpc2l0b3JbJ3Zpc2l0VHlwZUlubGluZSddID0gdmlzaXRvcl8uVmVjdG9yVmlzaXRvci52aXNpdFR5cGVJbmxpbmU7Il19
{
"name": "@apache-arrow/esnext-cjs",
"version": "0.2.0",
"version": "0.3.0",
"main": "Arrow.js",

@@ -22,6 +22,15 @@ "types": "Arrow.d.ts",

"dependencies": {
"@types/flatbuffers": "1.6.5",
"@types/node": "9.3.0",
"@types/text-encoding-utf-8": "1.0.1",
"command-line-args": "5.0.1",
"command-line-usage": "4.1.0",
"flatbuffers": "trxcllnt/flatbuffers-esm",
"json-bignum": "0.0.3",
"text-encoding-utf-8": "^1.0.2",
"tslib": "^1.8.0"
"tslib": "1.9.0"
},
"bin": {
"arrow2csv": "bin/arrow2csv.js"
}
}
}

@@ -25,3 +25,3 @@ <!---

Arrow is a set of technologies that enable big-data systems to process and transfer data quickly.
Arrow is a set of technologies that enable big data systems to process and transfer data quickly.

@@ -36,11 +36,6 @@ ## install [apache-arrow from npm](https://www.npmjs.com/package/apache-arrow)

Apache Arrow is a columnar memory layout specification for encoding vectors and table-like containers of flat and nested data. The Arrow spec aligns columnar data in memory to minimize cache misses and take advantage of the latest SIMD (Single input multiple data) and GPU operations on modern processors.
[Apache Arrow](https://github.com/apache/arrow) is a columnar memory layout specification for encoding vectors and table-like containers of flat and nested data. The Arrow spec aligns columnar data in memory to minimize cache misses and take advantage of the latest SIMD (Single input multiple data) and GPU operations on modern processors.
Apache Arrow is the emerging standard for large in-memory columnar data ([Spark](https://spark.apache.org/), [Pandas](http://wesmckinney.com/blog/pandas-and-apache-arrow/), [Drill](https://drill.apache.org/), ...). By standardizing on a common binary interchange format, big data systems can reduce the costs and friction associated with cross-system communication.
Apache Arrow is the emerging standard for large in-memory columnar data ([Spark](https://spark.apache.org/), [Pandas](http://wesmckinney.com/blog/pandas-and-apache-arrow/), [Drill](https://drill.apache.org/), [Graphistry](https://www.graphistry.com), ...). By standardizing on a common binary interchange format, big data systems can reduce the costs and friction associated with cross-system communication.
# Related Projects
* [GoAI](http://gpuopenanalytics.com/) -- Arrow-powered GPU analytics
* [rxjs-mapd](https://github.com/graphistry/rxjs-mapd) -- A MapD Core node-driver that returns query results as Arrow columns
# Usage

@@ -188,3 +183,3 @@

```sh
npm install apache-arrow # <-- combined es5/CommonJS + UMD, es2015/ESModules + UMD, and TypeScript package
npm install apache-arrow # <-- combined es5/UMD, es2015/CommonJS/ESModules/UMD, and TypeScript package
npm install @apache-arrow/ts # standalone TypeScript package

@@ -208,2 +203,24 @@ npm install @apache-arrow/es5-cjs # standalone es5/CommonJS package

# People
Full list of broader Apache Arrow [committers](https://arrow.apache.org/committers/).
* Brian Hulette, CCRi, _contributor_
* Paul Taylor, Graphistry, Inc., _committer_
# Powered By Apache Arrow in JS
Full list of broader Apache Arrow [projects & organizations](https://github.com/apache/arrow/blob/master/site/powered_by.md).
## Open Source Projects
* [Apache Arrow](https://arrow.apache.org) -- Parent project for Powering Columnar In-Memory Analytics, including affiliated open source projects
* [rxjs-mapd](https://github.com/graphistry/rxjs-mapd) -- A MapD Core node-driver that returns query results as Arrow columns
## Companies & Organizations
* [CCRi](http://www.ccri.com/) -- Commonwealth Computer Research Inc, or CCRi, is a Central Virginia based data science and software engineering company
* [GOAI](http://gpuopenanalytics.com/) -- GPU Open Analytics Initiative standardizes on Arrow as part of creating common data frameworks that enable developers and statistical researchers to accelerate data science on GPUs
* [Graphistry, Inc.](https://www.graphistry.com/) - An end-to-end GPU accelerated visual investigation platform used by teams for security, anti-fraud, and related investigations. Graphistry uses Arrow in its NodeJS GPU backend and client libraries, and is an early contributing member to GOAI and Arrow\[JS\] working to bring these technologies to the enterprise.
# License

@@ -216,2 +233,2 @@

[3]: https://issues.apache.org/jira/browse/ARROW
[4]: https://github.com/apache/arrow
[4]: https://github.com/apache/arrow

@@ -1,15 +0,15 @@

import { Vector } from './vector';
export declare class DictionaryVector<T> extends Vector<T> {
readonly length: number;
readonly data: Vector<T>;
readonly keys: Vector<number>;
constructor(argv: {
data: Vector<T>;
keys: Vector<number>;
});
get(index: number): T | null;
getKey(index: number): number | null;
getValue(key: number): T | null;
concat(...vectors: Vector<T>[]): Vector<T>;
[Symbol.iterator](): IterableIterator<T | null>;
import { Data } from '../data';
import { View, Vector } from '../vector';
import { IterableArrayLike, DataType, Dictionary, Int } from '../type';
export declare class DictionaryView<T extends DataType> implements View<T> {
indicies: Vector<Int>;
dictionary: Vector<T>;
constructor(dictionary: Vector<T>, indicies: Vector<Int>);
clone(data: Data<Dictionary<T>>): this;
isValid(index: number): boolean;
get(index: number): T['TValue'];
set(index: number, value: T['TValue']): void;
toArray(): IterableArrayLike<T['TValue']>;
[Symbol.iterator](): IterableIterator<T['TValue']>;
indexOf(search: T['TValue']): number;
}

@@ -19,31 +19,40 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
const vector_1 = require("./vector");
const virtual_1 = require("./virtual");
class DictionaryVector extends vector_1.Vector {
constructor(argv) {
super();
this.data = argv.data;
this.keys = argv.keys;
this.length = this.keys.length;
class DictionaryView {
constructor(dictionary, indicies) {
this.indicies = indicies;
this.dictionary = dictionary;
}
clone(data) {
return new DictionaryView(data.dictionary, this.indicies.clone(data.indicies));
}
isValid(index) {
return this.indicies.isValid(index);
}
get(index) {
return this.getValue(this.getKey(index));
return this.dictionary.get(this.indicies.get(index));
}
getKey(index) {
return this.keys.get(index);
set(index, value) {
this.dictionary.set(this.indicies.get(index), value);
}
getValue(key) {
return this.data.get(key);
toArray() {
return [...this];
}
concat(...vectors) {
return new virtual_1.VirtualVector(Array, this, ...vectors);
}
*[Symbol.iterator]() {
for (let i = -1, n = this.length; ++i < n;) {
yield this.get(i);
const values = this.dictionary, indicies = this.indicies;
for (let index = -1, n = indicies.length; ++index < n;) {
yield values.get(indicies.get(index));
}
}
indexOf(search) {
// First find the dictionary key for the desired value...
const key = this.dictionary.indexOf(search);
if (key === -1) {
return key;
}
// ... then find the first occurence of that key in indicies
return this.indicies.indexOf(key);
}
}
exports.DictionaryVector = DictionaryVector;
exports.DictionaryView = DictionaryView;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInZlY3Rvci9kaWN0aW9uYXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSw2REFBNkQ7QUFDN0QsK0RBQStEO0FBQy9ELHdEQUF3RDtBQUN4RCw2REFBNkQ7QUFDN0Qsb0RBQW9EO0FBQ3BELDZEQUE2RDtBQUM3RCw2REFBNkQ7QUFDN0QsRUFBRTtBQUNGLCtDQUErQztBQUMvQyxFQUFFO0FBQ0YsNkRBQTZEO0FBQzdELDhEQUE4RDtBQUM5RCx5REFBeUQ7QUFDekQsNERBQTREO0FBQzVELDBEQUEwRDtBQUMxRCxxQkFBcUI7O0FBRXJCLHFDQUFrQztBQUNsQyx1Q0FBMEM7QUFFMUMsc0JBQWlDLFNBQVEsZUFBUztJQUk5QyxZQUFZLElBQStDO1FBQ3ZELEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ25DLENBQUM7SUFDRCxHQUFHLENBQUMsS0FBYTtRQUNiLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFFLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBQ0QsTUFBTSxDQUFDLEtBQWE7UUFDaEIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFDRCxRQUFRLENBQUMsR0FBVztRQUNoQixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUNELE1BQU0sQ0FBQyxHQUFHLE9BQW9CO1FBQzFCLE1BQU0sQ0FBQyxJQUFJLHVCQUFhLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFDRCxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUNkLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO1lBQ3pDLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0QixDQUFDO0lBQ0wsQ0FBQztDQUNKO0FBM0JELDRDQTJCQyIsImZpbGUiOiJ2ZWN0b3IvZGljdGlvbmFyeS5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmVcbi8vIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZVxuLy8gZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb25cbi8vIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGVcbi8vIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGVcbi8vIFwiTGljZW5zZVwiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuLy8gd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuLy9cbi8vICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4vL1xuLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLFxuLy8gc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW5cbi8vIFwiQVMgSVNcIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZXG4vLyBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGVcbi8vIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnNcbi8vIHVuZGVyIHRoZSBMaWNlbnNlLlxuXG5pbXBvcnQgeyBWZWN0b3IgfSBmcm9tICcuL3ZlY3Rvcic7XG5pbXBvcnQgeyBWaXJ0dWFsVmVjdG9yIH0gZnJvbSAnLi92aXJ0dWFsJztcblxuZXhwb3J0IGNsYXNzIERpY3Rpb25hcnlWZWN0b3I8VD4gZXh0ZW5kcyBWZWN0b3I8VD4ge1xuICAgIHJlYWRvbmx5IGxlbmd0aDogbnVtYmVyO1xuICAgIHJlYWRvbmx5IGRhdGE6IFZlY3RvcjxUPjtcbiAgICByZWFkb25seSBrZXlzOiBWZWN0b3I8bnVtYmVyPjtcbiAgICBjb25zdHJ1Y3Rvcihhcmd2OiB7IGRhdGE6IFZlY3RvcjxUPiwga2V5czogVmVjdG9yPG51bWJlcj4gfSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmRhdGEgPSBhcmd2LmRhdGE7XG4gICAgICAgIHRoaXMua2V5cyA9IGFyZ3Yua2V5cztcbiAgICAgICAgdGhpcy5sZW5ndGggPSB0aGlzLmtleXMubGVuZ3RoO1xuICAgIH1cbiAgICBnZXQoaW5kZXg6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRWYWx1ZSh0aGlzLmdldEtleShpbmRleCkhKTtcbiAgICB9XG4gICAgZ2V0S2V5KGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMua2V5cy5nZXQoaW5kZXgpO1xuICAgIH1cbiAgICBnZXRWYWx1ZShrZXk6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhLmdldChrZXkpO1xuICAgIH1cbiAgICBjb25jYXQoLi4udmVjdG9yczogVmVjdG9yPFQ+W10pOiBWZWN0b3I8VD4ge1xuICAgICAgICByZXR1cm4gbmV3IFZpcnR1YWxWZWN0b3IoQXJyYXksIHRoaXMsIC4uLnZlY3RvcnMpO1xuICAgIH1cbiAgICAqW1N5bWJvbC5pdGVyYXRvcl0oKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAtMSwgbiA9IHRoaXMubGVuZ3RoOyArK2kgPCBuOykge1xuICAgICAgICAgICAgeWllbGQgdGhpcy5nZXQoaSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInZlY3Rvci9kaWN0aW9uYXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSw2REFBNkQ7QUFDN0QsK0RBQStEO0FBQy9ELHdEQUF3RDtBQUN4RCw2REFBNkQ7QUFDN0Qsb0RBQW9EO0FBQ3BELDZEQUE2RDtBQUM3RCw2REFBNkQ7QUFDN0QsRUFBRTtBQUNGLCtDQUErQztBQUMvQyxFQUFFO0FBQ0YsNkRBQTZEO0FBQzdELDhEQUE4RDtBQUM5RCx5REFBeUQ7QUFDekQsNERBQTREO0FBQzVELDBEQUEwRDtBQUMxRCxxQkFBcUI7O0FBTXJCO0lBR0ksWUFBWSxVQUFxQixFQUFFLFFBQXFCO1FBQ3BELElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0lBQ2pDLENBQUM7SUFDTSxLQUFLLENBQUMsSUFBeUI7UUFDbEMsTUFBTSxDQUFDLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFTLENBQUM7SUFDM0YsQ0FBQztJQUNNLE9BQU8sQ0FBQyxLQUFhO1FBQ3hCLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBQ00sR0FBRyxDQUFDLEtBQWE7UUFDcEIsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUNNLEdBQUcsQ0FBQyxLQUFhLEVBQUUsS0FBa0I7UUFDeEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUNNLE9BQU87UUFDVixNQUFNLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFDTSxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUNyQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ3pELEdBQUcsQ0FBQyxDQUFDLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLEVBQUUsS0FBSyxHQUFHLENBQUMsR0FBRyxDQUFDO1lBQ3JELE1BQU0sTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDMUMsQ0FBQztJQUNMLENBQUM7SUFDTSxPQUFPLENBQUMsTUFBbUI7UUFDOUIseURBQXlEO1FBQ3pELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFBQyxNQUFNLENBQUMsR0FBRyxDQUFDO1FBQUMsQ0FBQztRQUUvQiw0REFBNEQ7UUFDNUQsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUksQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7Q0FDSjtBQXBDRCx3Q0FvQ0MiLCJmaWxlIjoidmVjdG9yL2RpY3Rpb25hcnkuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lXG4vLyBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGVcbi8vIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uXG4vLyByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlXG4vLyB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlXG4vLyBcIkxpY2Vuc2VcIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Vcbi8vIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbi8vXG4vLyAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuLy9cbi8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZyxcbi8vIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuXG4vLyBcIkFTIElTXCIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWVxuLy8gS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlXG4vLyBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zXG4vLyB1bmRlciB0aGUgTGljZW5zZS5cblxuaW1wb3J0IHsgRGF0YSB9IGZyb20gJy4uL2RhdGEnO1xuaW1wb3J0IHsgVmlldywgVmVjdG9yIH0gZnJvbSAnLi4vdmVjdG9yJztcbmltcG9ydCB7IEl0ZXJhYmxlQXJyYXlMaWtlLCBEYXRhVHlwZSwgRGljdGlvbmFyeSwgSW50IH0gZnJvbSAnLi4vdHlwZSc7XG5cbmV4cG9ydCBjbGFzcyBEaWN0aW9uYXJ5VmlldzxUIGV4dGVuZHMgRGF0YVR5cGU+IGltcGxlbWVudHMgVmlldzxUPiB7XG4gICAgcHVibGljIGluZGljaWVzOiBWZWN0b3I8SW50PjtcbiAgICBwdWJsaWMgZGljdGlvbmFyeTogVmVjdG9yPFQ+O1xuICAgIGNvbnN0cnVjdG9yKGRpY3Rpb25hcnk6IFZlY3RvcjxUPiwgaW5kaWNpZXM6IFZlY3RvcjxJbnQ+KSB7XG4gICAgICAgIHRoaXMuaW5kaWNpZXMgPSBpbmRpY2llcztcbiAgICAgICAgdGhpcy5kaWN0aW9uYXJ5ID0gZGljdGlvbmFyeTtcbiAgICB9XG4gICAgcHVibGljIGNsb25lKGRhdGE6IERhdGE8RGljdGlvbmFyeTxUPj4pOiB0aGlzIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEaWN0aW9uYXJ5VmlldyhkYXRhLmRpY3Rpb25hcnksIHRoaXMuaW5kaWNpZXMuY2xvbmUoZGF0YS5pbmRpY2llcykpIGFzIHRoaXM7XG4gICAgfVxuICAgIHB1YmxpYyBpc1ZhbGlkKGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5kaWNpZXMuaXNWYWxpZChpbmRleCk7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQoaW5kZXg6IG51bWJlcik6IFRbJ1RWYWx1ZSddIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGljdGlvbmFyeS5nZXQodGhpcy5pbmRpY2llcy5nZXQoaW5kZXgpKTtcbiAgICB9XG4gICAgcHVibGljIHNldChpbmRleDogbnVtYmVyLCB2YWx1ZTogVFsnVFZhbHVlJ10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaWN0aW9uYXJ5LnNldCh0aGlzLmluZGljaWVzLmdldChpbmRleCksIHZhbHVlKTtcbiAgICB9XG4gICAgcHVibGljIHRvQXJyYXkoKTogSXRlcmFibGVBcnJheUxpa2U8VFsnVFZhbHVlJ10+IHtcbiAgICAgICAgcmV0dXJuIFsuLi50aGlzXTtcbiAgICB9XG4gICAgcHVibGljICpbU3ltYm9sLml0ZXJhdG9yXSgpOiBJdGVyYWJsZUl0ZXJhdG9yPFRbJ1RWYWx1ZSddPiB7XG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMuZGljdGlvbmFyeSwgaW5kaWNpZXMgPSB0aGlzLmluZGljaWVzO1xuICAgICAgICBmb3IgKGxldCBpbmRleCA9IC0xLCBuID0gaW5kaWNpZXMubGVuZ3RoOyArK2luZGV4IDwgbjspIHtcbiAgICAgICAgICAgIHlpZWxkIHZhbHVlcy5nZXQoaW5kaWNpZXMuZ2V0KGluZGV4KSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHVibGljIGluZGV4T2Yoc2VhcmNoOiBUWydUVmFsdWUnXSkge1xuICAgICAgICAvLyBGaXJzdCBmaW5kIHRoZSBkaWN0aW9uYXJ5IGtleSBmb3IgdGhlIGRlc2lyZWQgdmFsdWUuLi5cbiAgICAgICAgY29uc3Qga2V5ID0gdGhpcy5kaWN0aW9uYXJ5LmluZGV4T2Yoc2VhcmNoKTtcbiAgICAgICAgaWYgKGtleSA9PT0gLTEpIHsgcmV0dXJuIGtleTsgfVxuXG4gICAgICAgIC8vIC4uLiB0aGVuIGZpbmQgdGhlIGZpcnN0IG9jY3VyZW5jZSBvZiB0aGF0IGtleSBpbiBpbmRpY2llc1xuICAgICAgICByZXR1cm4gdGhpcy5pbmRpY2llcy5pbmRleE9mKGtleSEpO1xuICAgIH1cbn1cbiJdfQ==

@@ -1,32 +0,43 @@

import { List } from './types';
import { Vector } from './vector';
export declare class BinaryVector extends Vector<Uint8Array> {
readonly data: Uint8Array;
readonly offsets: Int32Array;
constructor(argv: {
offsets: Int32Array;
data: Uint8Array;
});
get(index: number): Uint8Array;
concat(...vectors: Vector<Uint8Array>[]): Vector<Uint8Array>;
import { Data } from '../data';
import { View, Vector } from '../vector';
import { List, Binary, Utf8, FixedSizeList, FlatListType } from '../type';
import { ListType, DataType, IterableArrayLike } from '../type';
export declare const encodeUtf8: (input?: string | undefined) => Uint8Array;
export declare const decodeUtf8: (input?: SharedArrayBuffer | ArrayBuffer | ArrayBufferView | undefined) => string;
export declare abstract class ListViewBase<T extends (ListType | FlatListType | FixedSizeList)> implements View<T> {
length: number;
values: T['TArray'];
valueOffsets?: Int32Array;
constructor(data: Data<T>);
clone(data: Data<T>): this;
isValid(): boolean;
toArray(): IterableArrayLike<T['TValue']>;
get(index: number): T['TValue'];
set(index: number, value: T['TValue']): void;
[Symbol.iterator](): IterableIterator<T['TValue']>;
indexOf(search: T['TValue']): number;
protected abstract getList(values: T['TArray'], index: number, valueOffsets?: Int32Array): T['TValue'];
protected abstract setList(values: T['TArray'], index: number, value: T['TValue'], valueOffsets?: Int32Array): void;
}
export declare class ListVector<T> extends Vector<T[]> {
readonly offsets: Int32Array;
readonly values: Vector<T>;
constructor(argv: {
offsets: Int32Array;
values: Vector<T>;
});
get(index: number): any[];
concat(...vectors: Vector<T[]>[]): Vector<T[]>;
export declare abstract class VariableListViewBase<T extends (ListType | FlatListType)> extends ListViewBase<T> {
constructor(data: Data<T>);
}
export declare class FixedSizeListVector<T, TArray extends List<T>> extends Vector<TArray> {
readonly size: number;
readonly values: Vector<T>;
constructor(argv: {
size: number;
values: Vector<T>;
});
get(index: number): TArray;
concat(...vectors: Vector<TArray>[]): Vector<TArray>;
export declare class ListView<T extends DataType> extends VariableListViewBase<List<T>> {
constructor(data: Data<List<T>>);
protected getList(values: Vector<T>, index: number, valueOffsets: Int32Array): Vector<T>;
protected setList(values: Vector<T>, index: number, value: Vector<T>, valueOffsets: Int32Array): void;
}
export declare class FixedSizeListView<T extends DataType> extends ListViewBase<FixedSizeList<T>> {
size: number;
constructor(data: Data<FixedSizeList<T>>);
protected getList(values: Vector<T>, index: number): Vector<T>;
protected setList(values: Vector<T>, index: number, value: Vector<T>): void;
}
export declare class BinaryView extends VariableListViewBase<Binary> {
protected getList(values: Uint8Array, index: number, valueOffsets: Int32Array): Uint8Array;
protected setList(values: Uint8Array, index: number, value: Uint8Array, valueOffsets: Int32Array): void;
}
export declare class Utf8View extends VariableListViewBase<Utf8> {
protected getList(values: Uint8Array, index: number, valueOffsets: Int32Array): string;
protected setList(values: Uint8Array, index: number, value: string, valueOffsets: Int32Array): void;
}

@@ -19,53 +19,110 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
const vector_1 = require("./vector");
const virtual_1 = require("./virtual");
class BinaryVector extends vector_1.Vector {
constructor(argv) {
super();
this.data = argv.data;
this.offsets = argv.offsets;
const vector_1 = require("../vector");
const text_encoding_utf_8_1 = require("text-encoding-utf-8");
exports.encodeUtf8 = ((encoder) => encoder.encode.bind(encoder))(new text_encoding_utf_8_1.TextEncoder('utf-8'));
exports.decodeUtf8 = ((decoder) => decoder.decode.bind(decoder))(new text_encoding_utf_8_1.TextDecoder('utf-8'));
class ListViewBase {
constructor(data) {
this.length = data.length;
this.values = data.values;
}
clone(data) {
return new this.constructor(data);
}
isValid() {
return true;
}
toArray() {
return [...this];
}
get(index) {
return this.data.subarray(this.offsets[index], this.offsets[index + 1]);
return this.getList(this.values, index, this.valueOffsets);
}
concat(...vectors) {
return new virtual_1.VirtualVector(Array, this, ...vectors);
set(index, value) {
return this.setList(this.values, index, value, this.valueOffsets);
}
*[Symbol.iterator]() {
const get = this.getList, length = this.length;
const values = this.values, valueOffsets = this.valueOffsets;
for (let index = -1; ++index < length;) {
yield get(values, index, valueOffsets);
}
}
indexOf(search) {
let index = 0;
for (let value of this) {
if (value === search) {
return index;
}
++index;
}
return -1;
}
}
exports.BinaryVector = BinaryVector;
class ListVector extends vector_1.Vector {
constructor(argv) {
super();
this.values = argv.values;
this.offsets = argv.offsets;
exports.ListViewBase = ListViewBase;
class VariableListViewBase extends ListViewBase {
constructor(data) {
super(data);
this.length = data.length;
this.valueOffsets = data.valueOffsets;
}
get(index) {
const { offsets, values } = this;
const from = offsets[index];
const xs = new Array(offsets[index + 1] - from);
for (let i = -1, n = xs.length; ++i < n;) {
xs[i] = values.get(i + from);
}
exports.VariableListViewBase = VariableListViewBase;
class ListView extends VariableListViewBase {
constructor(data) {
super(data);
this.values = vector_1.createVector(data.values);
}
getList(values, index, valueOffsets) {
return values.slice(valueOffsets[index], valueOffsets[index + 1]);
}
setList(values, index, value, valueOffsets) {
let idx = -1;
let offset = valueOffsets[index];
let end = Math.min(value.length, valueOffsets[index + 1] - offset);
while (offset < end) {
values.set(offset++, value.get(++idx));
}
return xs;
}
concat(...vectors) {
return new virtual_1.VirtualVector(Array, this, ...vectors);
}
exports.ListView = ListView;
class FixedSizeListView extends ListViewBase {
constructor(data) {
super(data);
this.size = data.type.listSize;
this.values = vector_1.createVector(data.values);
}
getList(values, index) {
const size = this.size;
return values.slice(index *= size, index + size);
}
setList(values, index, value) {
let size = this.size;
for (let idx = -1, offset = index * size; ++idx < size;) {
values.set(offset + idx, value.get(++idx));
}
}
}
exports.ListVector = ListVector;
class FixedSizeListVector extends vector_1.Vector {
constructor(argv) {
super();
this.size = argv.size;
this.values = argv.values;
exports.FixedSizeListView = FixedSizeListView;
class BinaryView extends VariableListViewBase {
getList(values, index, valueOffsets) {
return values.subarray(valueOffsets[index], valueOffsets[index + 1]);
}
get(index) {
return this.values.slice(this.size * index, this.size * (index + 1));
setList(values, index, value, valueOffsets) {
const offset = valueOffsets[index];
values.set(value.subarray(0, valueOffsets[index + 1] - offset), offset);
}
concat(...vectors) {
return new virtual_1.VirtualVector(Array, this, ...vectors);
}
exports.BinaryView = BinaryView;
class Utf8View extends VariableListViewBase {
getList(values, index, valueOffsets) {
return exports.decodeUtf8(values.subarray(valueOffsets[index], valueOffsets[index + 1]));
}
setList(values, index, value, valueOffsets) {
const offset = valueOffsets[index];
values.set(exports.encodeUtf8(value).subarray(0, valueOffsets[index + 1] - offset), offset);
}
}
exports.FixedSizeListVector = FixedSizeListVector;
exports.Utf8View = Utf8View;
//# sourceMappingURL=data:application/json;charset=utf8;base64,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LENBQUMsR0FBRyxPQUF5QjtRQUMvQixNQUFNLENBQUMsSUFBSSx1QkFBYSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQztJQUN0RCxDQUFDO0NBQ0o7QUFkRCxrREFjQyIsImZpbGUiOiJ2ZWN0b3IvbGlzdC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmVcbi8vIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZVxuLy8gZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb25cbi8vIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGVcbi8vIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGVcbi8vIFwiTGljZW5zZVwiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuLy8gd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuLy9cbi8vICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4vL1xuLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLFxuLy8gc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW5cbi8vIFwiQVMgSVNcIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZXG4vLyBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGVcbi8vIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnNcbi8vIHVuZGVyIHRoZSBMaWNlbnNlLlxuXG5pbXBvcnQgeyBMaXN0IH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBWZWN0b3IgfSBmcm9tICcuL3ZlY3Rvcic7XG5pbXBvcnQgeyBWaXJ0dWFsVmVjdG9yIH0gZnJvbSAnLi92aXJ0dWFsJztcblxuZXhwb3J0IGNsYXNzIEJpbmFyeVZlY3RvciBleHRlbmRzIFZlY3RvcjxVaW50OEFycmF5PiB7XG4gICAgcmVhZG9ubHkgZGF0YTogVWludDhBcnJheTtcbiAgICByZWFkb25seSBvZmZzZXRzOiBJbnQzMkFycmF5O1xuICAgIGNvbnN0cnVjdG9yKGFyZ3Y6IHsgb2Zmc2V0czogSW50MzJBcnJheSwgZGF0YTogVWludDhBcnJheSB9KSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuZGF0YSA9IGFyZ3YuZGF0YTtcbiAgICAgICAgdGhpcy5vZmZzZXRzID0gYXJndi5vZmZzZXRzO1xuICAgIH1cbiAgICBnZXQoaW5kZXg6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhLnN1YmFycmF5KHRoaXMub2Zmc2V0c1tpbmRleF0sIHRoaXMub2Zmc2V0c1tpbmRleCArIDFdKTtcbiAgICB9XG4gICAgY29uY2F0KC4uLnZlY3RvcnM6IFZlY3RvcjxVaW50OEFycmF5PltdKTogVmVjdG9yPFVpbnQ4QXJyYXk+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBWaXJ0dWFsVmVjdG9yKEFycmF5LCB0aGlzLCAuLi52ZWN0b3JzKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMaXN0VmVjdG9yPFQ+IGV4dGVuZHMgVmVjdG9yPFRbXT4ge1xuICAgIHJlYWRvbmx5IG9mZnNldHM6IEludDMyQXJyYXk7XG4gICAgcmVhZG9ubHkgdmFsdWVzOiBWZWN0b3I8VD47XG4gICAgY29uc3RydWN0b3IoYXJndjogeyBvZmZzZXRzOiBJbnQzMkFycmF5LCB2YWx1ZXM6IFZlY3RvcjxUPiB9KSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMudmFsdWVzID0gYXJndi52YWx1ZXM7XG4gICAgICAgIHRoaXMub2Zmc2V0cyA9IGFyZ3Yub2Zmc2V0cztcbiAgICB9XG4gICAgZ2V0KGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgeyBvZmZzZXRzLCB2YWx1ZXMgfSA9IHRoaXM7XG4gICAgICAgIGNvbnN0IGZyb20gPSBvZmZzZXRzW2luZGV4XTtcbiAgICAgICAgY29uc3QgeHMgPSBuZXcgQXJyYXkob2Zmc2V0c1tpbmRleCArIDFdIC0gZnJvbSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAtMSwgbiA9IHhzLmxlbmd0aDsgKytpIDwgbjspIHtcbiAgICAgICAgICAgIHhzW2ldID0gdmFsdWVzLmdldChpICsgZnJvbSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHhzO1xuICAgIH1cbiAgICBjb25jYXQoLi4udmVjdG9yczogVmVjdG9yPFRbXT5bXSk6IFZlY3RvcjxUW10+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBWaXJ0dWFsVmVjdG9yKEFycmF5LCB0aGlzLCAuLi52ZWN0b3JzKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBGaXhlZFNpemVMaXN0VmVjdG9yPFQsIFRBcnJheSBleHRlbmRzIExpc3Q8VD4+IGV4dGVuZHMgVmVjdG9yPFRBcnJheT4ge1xuICAgIHJlYWRvbmx5IHNpemU6IG51bWJlcjtcbiAgICByZWFkb25seSB2YWx1ZXM6IFZlY3RvcjxUPjtcbiAgICBjb25zdHJ1Y3Rvcihhcmd2OiB7IHNpemU6IG51bWJlciwgdmFsdWVzOiBWZWN0b3I8VD4gfSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnNpemUgPSBhcmd2LnNpemU7XG4gICAgICAgIHRoaXMudmFsdWVzID0gYXJndi52YWx1ZXM7XG4gICAgfVxuICAgIGdldChpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlcy5zbGljZTxUQXJyYXk+KHRoaXMuc2l6ZSAqIGluZGV4LCB0aGlzLnNpemUgKiAoaW5kZXggKyAxKSk7XG4gICAgfVxuICAgIGNvbmNhdCguLi52ZWN0b3JzOiBWZWN0b3I8VEFycmF5PltdKTogVmVjdG9yPFRBcnJheT4ge1xuICAgICAgICByZXR1cm4gbmV3IFZpcnR1YWxWZWN0b3IoQXJyYXksIHRoaXMsIC4uLnZlY3RvcnMpO1xuICAgIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf8;base64,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QUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDNUUsQ0FBQztDQUNKO0FBUkQsZ0NBUUM7QUFFRCxjQUFzQixTQUFRLG9CQUEwQjtJQUMxQyxPQUFPLENBQUMsTUFBa0IsRUFBRSxLQUFhLEVBQUUsWUFBd0I7UUFDekUsTUFBTSxDQUFDLGtCQUFVLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUUsWUFBWSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUNTLE9BQU8sQ0FBQyxNQUFrQixFQUFFLEtBQWEsRUFBRSxLQUFhLEVBQUUsWUFBd0I7UUFDeEYsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25DLE1BQU0sQ0FBQyxHQUFHLENBQUMsa0JBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDeEYsQ0FBQztDQUNKO0FBUkQsNEJBUUMiLCJmaWxlIjoidmVjdG9yL2xpc3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lXG4vLyBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGVcbi8vIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uXG4vLyByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlXG4vLyB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlXG4vLyBcIkxpY2Vuc2VcIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Vcbi8vIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbi8vXG4vLyAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuLy9cbi8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZyxcbi8vIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuXG4vLyBcIkFTIElTXCIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWVxuLy8gS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlXG4vLyBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zXG4vLyB1bmRlciB0aGUgTGljZW5zZS5cblxuaW1wb3J0IHsgRGF0YSB9IGZyb20gJy4uL2RhdGEnO1xuaW1wb3J0IHsgVmlldywgVmVjdG9yLCBjcmVhdGVWZWN0b3IgfSBmcm9tICcuLi92ZWN0b3InO1xuaW1wb3J0IHsgVGV4dEVuY29kZXIsIFRleHREZWNvZGVyIH0gZnJvbSAndGV4dC1lbmNvZGluZy11dGYtOCc7XG5pbXBvcnQgeyBMaXN0LCBCaW5hcnksIFV0ZjgsIEZpeGVkU2l6ZUxpc3QsIEZsYXRMaXN0VHlwZSB9IGZyb20gJy4uL3R5cGUnO1xuaW1wb3J0IHsgTGlzdFR5cGUsIERhdGFUeXBlLCBJdGVyYWJsZUFycmF5TGlrZSB9IGZyb20gJy4uL3R5cGUnO1xuXG5leHBvcnQgY29uc3QgZW5jb2RlVXRmOCA9ICgoZW5jb2RlcikgPT5cbiAgICBlbmNvZGVyLmVuY29kZS5iaW5kKGVuY29kZXIpIGFzIChpbnB1dD86IHN0cmluZykgPT4gVWludDhBcnJheVxuKShuZXcgVGV4dEVuY29kZXIoJ3V0Zi04JykpO1xuXG5leHBvcnQgY29uc3QgZGVjb2RlVXRmOCA9ICgoZGVjb2RlcikgPT5cbiAgICBkZWNvZGVyLmRlY29kZS5iaW5kKGRlY29kZXIpIGFzIChpbnB1dD86IEFycmF5QnVmZmVyTGlrZSB8IEFycmF5QnVmZmVyVmlldykgPT4gc3RyaW5nXG4pKG5ldyBUZXh0RGVjb2RlcigndXRmLTgnKSk7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBMaXN0Vmlld0Jhc2U8VCBleHRlbmRzIChMaXN0VHlwZSB8IEZsYXRMaXN0VHlwZSB8IEZpeGVkU2l6ZUxpc3QpPiBpbXBsZW1lbnRzIFZpZXc8VD4ge1xuICAgIHB1YmxpYyBsZW5ndGg6IG51bWJlcjtcbiAgICBwdWJsaWMgdmFsdWVzOiBUWydUQXJyYXknXTtcbiAgICBwdWJsaWMgdmFsdWVPZmZzZXRzPzogSW50MzJBcnJheTtcbiAgICBjb25zdHJ1Y3RvcihkYXRhOiBEYXRhPFQ+KSB7XG4gICAgICAgIHRoaXMubGVuZ3RoID0gZGF0YS5sZW5ndGg7XG4gICAgICAgIHRoaXMudmFsdWVzID0gZGF0YS52YWx1ZXM7XG4gICAgfVxuICAgIHB1YmxpYyBjbG9uZShkYXRhOiBEYXRhPFQ+KTogdGhpcyB7XG4gICAgICAgIHJldHVybiBuZXcgKDxhbnk+IHRoaXMuY29uc3RydWN0b3IpKGRhdGEpIGFzIHRoaXM7XG4gICAgfVxuICAgIHB1YmxpYyBpc1ZhbGlkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcHVibGljIHRvQXJyYXkoKTogSXRlcmFibGVBcnJheUxpa2U8VFsnVFZhbHVlJ10+IHtcbiAgICAgICAgcmV0dXJuIFsuLi50aGlzXTtcbiAgICB9XG4gICAgcHVibGljIGdldChpbmRleDogbnVtYmVyKTogVFsnVFZhbHVlJ10ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRMaXN0KHRoaXMudmFsdWVzLCBpbmRleCwgdGhpcy52YWx1ZU9mZnNldHMpO1xuICAgIH1cbiAgICBwdWJsaWMgc2V0KGluZGV4OiBudW1iZXIsIHZhbHVlOiBUWydUVmFsdWUnXSk6IHZvaWQge1xuICAgICAgICByZXR1cm4gdGhpcy5zZXRMaXN0KHRoaXMudmFsdWVzLCBpbmRleCwgdmFsdWUsIHRoaXMudmFsdWVPZmZzZXRzKTtcbiAgICB9XG4gICAgcHVibGljICpbU3ltYm9sLml0ZXJhdG9yXSgpOiBJdGVyYWJsZUl0ZXJhdG9yPFRbJ1RWYWx1ZSddPiB7XG4gICAgICAgIGNvbnN0IGdldCA9IHRoaXMuZ2V0TGlzdCwgbGVuZ3RoID0gdGhpcy5sZW5ndGg7XG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMudmFsdWVzLCB2YWx1ZU9mZnNldHMgPSB0aGlzLnZhbHVlT2Zmc2V0cztcbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAtMTsgKytpbmRleCA8IGxlbmd0aDspIHtcbiAgICAgICAgICAgIHlpZWxkIGdldCh2YWx1ZXMsIGluZGV4LCB2YWx1ZU9mZnNldHMpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHB1YmxpYyBpbmRleE9mKHNlYXJjaDogVFsnVFZhbHVlJ10pIHtcbiAgICAgICAgbGV0IGluZGV4ID0gMDtcbiAgICAgICAgZm9yIChsZXQgdmFsdWUgb2YgdGhpcykge1xuICAgICAgICAgICAgaWYgKHZhbHVlID09PSBzZWFyY2gpIHsgcmV0dXJuIGluZGV4OyB9XG4gICAgICAgICAgICArK2luZGV4O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0TGlzdCh2YWx1ZXM6IFRbJ1RBcnJheSddLCBpbmRleDogbnVtYmVyLCB2YWx1ZU9mZnNldHM/OiBJbnQzMkFycmF5KTogVFsnVFZhbHVlJ107XG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IHNldExpc3QodmFsdWVzOiBUWydUQXJyYXknXSwgaW5kZXg6IG51bWJlciwgdmFsdWU6IFRbJ1RWYWx1ZSddLCB2YWx1ZU9mZnNldHM/OiBJbnQzMkFycmF5KTogdm9pZDtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFZhcmlhYmxlTGlzdFZpZXdCYXNlPFQgZXh0ZW5kcyAoTGlzdFR5cGUgfCBGbGF0TGlzdFR5cGUpPiBleHRlbmRzIExpc3RWaWV3QmFzZTxUPiB7XG4gICAgY29uc3RydWN0b3IoZGF0YTogRGF0YTxUPikge1xuICAgICAgICBzdXBlcihkYXRhKTtcbiAgICAgICAgdGhpcy5sZW5ndGggPSBkYXRhLmxlbmd0aDtcbiAgICAgICAgdGhpcy52YWx1ZU9mZnNldHMgPSBkYXRhLnZhbHVlT2Zmc2V0cztcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMaXN0VmlldzxUIGV4dGVuZHMgRGF0YVR5cGU+IGV4dGVuZHMgVmFyaWFibGVMaXN0Vmlld0Jhc2U8TGlzdDxUPj4ge1xuICAgIGNvbnN0cnVjdG9yKGRhdGE6IERhdGE8TGlzdDxUPj4pIHtcbiAgICAgICAgc3VwZXIoZGF0YSk7XG4gICAgICAgIHRoaXMudmFsdWVzID0gY3JlYXRlVmVjdG9yKGRhdGEudmFsdWVzKTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIGdldExpc3QodmFsdWVzOiBWZWN0b3I8VD4sIGluZGV4OiBudW1iZXIsIHZhbHVlT2Zmc2V0czogSW50MzJBcnJheSkge1xuICAgICAgICByZXR1cm4gdmFsdWVzLnNsaWNlKHZhbHVlT2Zmc2V0c1tpbmRleF0sIHZhbHVlT2Zmc2V0c1tpbmRleCArIDFdKSBhcyBWZWN0b3I8VD47XG4gICAgfVxuICAgIHByb3RlY3RlZCBzZXRMaXN0KHZhbHVlczogVmVjdG9yPFQ+LCBpbmRleDogbnVtYmVyLCB2YWx1ZTogVmVjdG9yPFQ+LCB2YWx1ZU9mZnNldHM6IEludDMyQXJyYXkpOiB2b2lkIHtcbiAgICAgICAgbGV0IGlkeCA9IC0xO1xuICAgICAgICBsZXQgb2Zmc2V0ID0gdmFsdWVPZmZzZXRzW2luZGV4XTtcbiAgICAgICAgbGV0IGVuZCA9IE1hdGgubWluKHZhbHVlLmxlbmd0aCwgdmFsdWVPZmZzZXRzW2luZGV4ICsgMV0gLSBvZmZzZXQpO1xuICAgICAgICB3aGlsZSAob2Zmc2V0IDwgZW5kKSB7XG4gICAgICAgICAgICB2YWx1ZXMuc2V0KG9mZnNldCsrLCB2YWx1ZS5nZXQoKytpZHgpKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEZpeGVkU2l6ZUxpc3RWaWV3PFQgZXh0ZW5kcyBEYXRhVHlwZT4gZXh0ZW5kcyBMaXN0Vmlld0Jhc2U8Rml4ZWRTaXplTGlzdDxUPj4ge1xuICAgIHB1YmxpYyBzaXplOiBudW1iZXI7XG4gICAgY29uc3RydWN0b3IoZGF0YTogRGF0YTxGaXhlZFNpemVMaXN0PFQ+Pikge1xuICAgICAgICBzdXBlcihkYXRhKTtcbiAgICAgICAgdGhpcy5zaXplID0gZGF0YS50eXBlLmxpc3RTaXplO1xuICAgICAgICB0aGlzLnZhbHVlcyA9IGNyZWF0ZVZlY3RvcihkYXRhLnZhbHVlcyk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBnZXRMaXN0KHZhbHVlczogVmVjdG9yPFQ+LCBpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IHNpemUgPSB0aGlzLnNpemU7XG4gICAgICAgIHJldHVybiB2YWx1ZXMuc2xpY2UoaW5kZXggKj0gc2l6ZSwgaW5kZXggKyBzaXplKSBhcyBWZWN0b3I8VD47XG4gICAgfVxuICAgIHByb3RlY3RlZCBzZXRMaXN0KHZhbHVlczogVmVjdG9yPFQ+LCBpbmRleDogbnVtYmVyLCB2YWx1ZTogVmVjdG9yPFQ+KTogdm9pZCB7XG4gICAgICAgIGxldCBzaXplID0gdGhpcy5zaXplO1xuICAgICAgICBmb3IgKGxldCBpZHggPSAtMSwgb2Zmc2V0ID0gaW5kZXggKiBzaXplOyArK2lkeCA8IHNpemU7KSB7XG4gICAgICAgICAgICB2YWx1ZXMuc2V0KG9mZnNldCArIGlkeCwgdmFsdWUuZ2V0KCsraWR4KSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBCaW5hcnlWaWV3IGV4dGVuZHMgVmFyaWFibGVMaXN0Vmlld0Jhc2U8QmluYXJ5PiB7XG4gICAgcHJvdGVjdGVkIGdldExpc3QodmFsdWVzOiBVaW50OEFycmF5LCBpbmRleDogbnVtYmVyLCB2YWx1ZU9mZnNldHM6IEludDMyQXJyYXkpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlcy5zdWJhcnJheSh2YWx1ZU9mZnNldHNbaW5kZXhdLCB2YWx1ZU9mZnNldHNbaW5kZXggKyAxXSk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBzZXRMaXN0KHZhbHVlczogVWludDhBcnJheSwgaW5kZXg6IG51bWJlciwgdmFsdWU6IFVpbnQ4QXJyYXksIHZhbHVlT2Zmc2V0czogSW50MzJBcnJheSk6IHZvaWQge1xuICAgICAgICBjb25zdCBvZmZzZXQgPSB2YWx1ZU9mZnNldHNbaW5kZXhdO1xuICAgICAgICB2YWx1ZXMuc2V0KHZhbHVlLnN1YmFycmF5KDAsIHZhbHVlT2Zmc2V0c1tpbmRleCArIDFdIC0gb2Zmc2V0KSwgb2Zmc2V0KTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBVdGY4VmlldyBleHRlbmRzIFZhcmlhYmxlTGlzdFZpZXdCYXNlPFV0Zjg+IHtcbiAgICBwcm90ZWN0ZWQgZ2V0TGlzdCh2YWx1ZXM6IFVpbnQ4QXJyYXksIGluZGV4OiBudW1iZXIsIHZhbHVlT2Zmc2V0czogSW50MzJBcnJheSkge1xuICAgICAgICByZXR1cm4gZGVjb2RlVXRmOCh2YWx1ZXMuc3ViYXJyYXkodmFsdWVPZmZzZXRzW2luZGV4XSwgdmFsdWVPZmZzZXRzW2luZGV4ICsgMV0pKTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIHNldExpc3QodmFsdWVzOiBVaW50OEFycmF5LCBpbmRleDogbnVtYmVyLCB2YWx1ZTogc3RyaW5nLCB2YWx1ZU9mZnNldHM6IEludDMyQXJyYXkpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gdmFsdWVPZmZzZXRzW2luZGV4XTtcbiAgICAgICAgdmFsdWVzLnNldChlbmNvZGVVdGY4KHZhbHVlKS5zdWJhcnJheSgwLCB2YWx1ZU9mZnNldHNbaW5kZXggKyAxXSAtIG9mZnNldCksIG9mZnNldCk7XG4gICAgfVxufVxuIl19
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc