blob: 504739556085f6dcf71889c24bd3c96a54fea886 [file] [log] [blame]
dart_library.library('dart/_internal', null, /* Imports */[
'dart/_runtime',
'dart/core',
'dart/collection'
], /* Lazy imports */[
'dart/math',
'dart/_interceptors',
'dart/_js_primitives'
], function(exports, dart, core, collection, math, _interceptors, _js_primitives) {
'use strict';
let dartx = dart.dartx;
class EfficientLength extends core.Object {}
const ListIterable$ = dart.generic(function(E) {
class ListIterable extends collection.IterableBase$(E) {
ListIterable() {
super.IterableBase();
}
get iterator() {
return new (ListIterator$(E))(this);
}
forEach(action) {
dart.as(action, dart.functionType(dart.void, [E]));
let length = this.length;
for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull(i) + 1) {
action(this.elementAt(i));
if (length != this.length) {
dart.throw(new core.ConcurrentModificationError(this));
}
}
}
get isEmpty() {
return this.length == 0;
}
get first() {
if (this.length == 0) dart.throw(IterableElementError.noElement());
return this.elementAt(0);
}
get last() {
if (this.length == 0) dart.throw(IterableElementError.noElement());
return this.elementAt(dart.notNull(this.length) - 1);
}
get single() {
if (this.length == 0) dart.throw(IterableElementError.noElement());
if (dart.notNull(this.length) > 1) dart.throw(IterableElementError.tooMany());
return this.elementAt(0);
}
contains(element) {
let length = this.length;
for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull(i) + 1) {
if (dart.equals(this.elementAt(i), element)) return true;
if (length != this.length) {
dart.throw(new core.ConcurrentModificationError(this));
}
}
return false;
}
every(test) {
dart.as(test, dart.functionType(core.bool, [E]));
let length = this.length;
for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull(i) + 1) {
if (!dart.notNull(test(this.elementAt(i)))) return false;
if (length != this.length) {
dart.throw(new core.ConcurrentModificationError(this));
}
}
return true;
}
any(test) {
dart.as(test, dart.functionType(core.bool, [E]));
let length = this.length;
for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull(i) + 1) {
if (dart.notNull(test(this.elementAt(i)))) return true;
if (length != this.length) {
dart.throw(new core.ConcurrentModificationError(this));
}
}
return false;
}
firstWhere(test, opts) {
dart.as(test, dart.functionType(core.bool, [E]));
let orElse = opts && 'orElse' in opts ? opts.orElse : null;
dart.as(orElse, dart.functionType(E, []));
let length = this.length;
for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull(i) + 1) {
let element = this.elementAt(i);
if (dart.notNull(test(element))) return element;
if (length != this.length) {
dart.throw(new core.ConcurrentModificationError(this));
}
}
if (orElse != null) return orElse();
dart.throw(IterableElementError.noElement());
}
lastWhere(test, opts) {
dart.as(test, dart.functionType(core.bool, [E]));
let orElse = opts && 'orElse' in opts ? opts.orElse : null;
dart.as(orElse, dart.functionType(E, []));
let length = this.length;
for (let i = dart.notNull(length) - 1; dart.notNull(i) >= 0; i = dart.notNull(i) - 1) {
let element = this.elementAt(i);
if (dart.notNull(test(element))) return element;
if (length != this.length) {
dart.throw(new core.ConcurrentModificationError(this));
}
}
if (orElse != null) return orElse();
dart.throw(IterableElementError.noElement());
}
singleWhere(test) {
dart.as(test, dart.functionType(core.bool, [E]));
let length = this.length;
let match = null;
let matchFound = false;
for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull(i) + 1) {
let element = this.elementAt(i);
if (dart.notNull(test(element))) {
if (dart.notNull(matchFound)) {
dart.throw(IterableElementError.tooMany());
}
matchFound = true;
match = element;
}
if (length != this.length) {
dart.throw(new core.ConcurrentModificationError(this));
}
}
if (dart.notNull(matchFound)) return match;
dart.throw(IterableElementError.noElement());
}
join(separator) {
if (separator === void 0) separator = "";
let length = this.length;
if (!dart.notNull(separator[dartx.isEmpty])) {
if (length == 0) return "";
let first = `${this.elementAt(0)}`;
if (length != this.length) {
dart.throw(new core.ConcurrentModificationError(this));
}
let buffer = new core.StringBuffer(first);
for (let i = 1; dart.notNull(i) < dart.notNull(length); i = dart.notNull(i) + 1) {
buffer.write(separator);
buffer.write(this.elementAt(i));
if (length != this.length) {
dart.throw(new core.ConcurrentModificationError(this));
}
}
return dart.toString(buffer);
} else {
let buffer = new core.StringBuffer();
for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull(i) + 1) {
buffer.write(this.elementAt(i));
if (length != this.length) {
dart.throw(new core.ConcurrentModificationError(this));
}
}
return dart.toString(buffer);
}
}
where(test) {
dart.as(test, dart.functionType(core.bool, [E]));
return super.where(test);
}
map(f) {
dart.as(f, dart.functionType(dart.dynamic, [E]));
return new (MappedListIterable$(E, dart.dynamic))(this, f);
}
reduce(combine) {
dart.as(combine, dart.functionType(E, [dart.dynamic, E]));
let length = this.length;
if (length == 0) dart.throw(IterableElementError.noElement());
let value = this.elementAt(0);
for (let i = 1; dart.notNull(i) < dart.notNull(length); i = dart.notNull(i) + 1) {
value = dart.dcall(combine, value, this.elementAt(i));
if (length != this.length) {
dart.throw(new core.ConcurrentModificationError(this));
}
}
return value;
}
fold(initialValue, combine) {
dart.as(combine, dart.functionType(dart.dynamic, [dart.dynamic, E]));
let value = initialValue;
let length = this.length;
for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull(i) + 1) {
value = combine(value, this.elementAt(i));
if (length != this.length) {
dart.throw(new core.ConcurrentModificationError(this));
}
}
return value;
}
skip(count) {
return new (SubListIterable$(E))(this, count, null);
}
skipWhile(test) {
dart.as(test, dart.functionType(core.bool, [E]));
return super.skipWhile(test);
}
take(count) {
return new (SubListIterable$(E))(this, 0, count);
}
takeWhile(test) {
dart.as(test, dart.functionType(core.bool, [E]));
return super.takeWhile(test);
}
toList(opts) {
let growable = opts && 'growable' in opts ? opts.growable : true;
let result = null;
if (dart.notNull(growable)) {
result = core.List$(E).new();
result[dartx.length] = this.length;
} else {
result = core.List$(E).new(this.length);
}
for (let i = 0; dart.notNull(i) < dart.notNull(this.length); i = dart.notNull(i) + 1) {
result[dartx.set](i, this.elementAt(i));
}
return result;
}
toSet() {
let result = core.Set$(E).new();
for (let i = 0; dart.notNull(i) < dart.notNull(this.length); i = dart.notNull(i) + 1) {
result.add(this.elementAt(i));
}
return result;
}
}
ListIterable[dart.implements] = () => [EfficientLength];
dart.setSignature(ListIterable, {
constructors: () => ({ListIterable: [ListIterable$(E), []]}),
methods: () => ({
forEach: [dart.void, [dart.functionType(dart.void, [E])]],
every: [core.bool, [dart.functionType(core.bool, [E])]],
any: [core.bool, [dart.functionType(core.bool, [E])]],
firstWhere: [E, [dart.functionType(core.bool, [E])], {orElse: dart.functionType(E, [])}],
lastWhere: [E, [dart.functionType(core.bool, [E])], {orElse: dart.functionType(E, [])}],
singleWhere: [E, [dart.functionType(core.bool, [E])]],
where: [core.Iterable$(E), [dart.functionType(core.bool, [E])]],
map: [core.Iterable, [dart.functionType(dart.dynamic, [E])]],
reduce: [E, [dart.functionType(E, [dart.dynamic, E])]],
fold: [dart.dynamic, [dart.dynamic, dart.functionType(dart.dynamic, [dart.dynamic, E])]],
skip: [core.Iterable$(E), [core.int]],
skipWhile: [core.Iterable$(E), [dart.functionType(core.bool, [E])]],
take: [core.Iterable$(E), [core.int]],
takeWhile: [core.Iterable$(E), [dart.functionType(core.bool, [E])]],
toList: [core.List$(E), [], {growable: core.bool}],
toSet: [core.Set$(E), []]
})
});
dart.defineExtensionMembers(ListIterable, [
'forEach',
'contains',
'every',
'any',
'firstWhere',
'lastWhere',
'singleWhere',
'join',
'where',
'map',
'reduce',
'fold',
'skip',
'skipWhile',
'take',
'takeWhile',
'toList',
'toSet',
'iterator',
'isEmpty',
'first',
'last',
'single'
]);
return ListIterable;
});
const ListIterable = ListIterable$();
const _iterable = dart.JsSymbol('_iterable');
const _start = dart.JsSymbol('_start');
const _endOrLength = dart.JsSymbol('_endOrLength');
const _endIndex = dart.JsSymbol('_endIndex');
const _startIndex = dart.JsSymbol('_startIndex');
const SubListIterable$ = dart.generic(function(E) {
class SubListIterable extends ListIterable$(E) {
SubListIterable(iterable, start, endOrLength) {
this[_iterable] = iterable;
this[_start] = start;
this[_endOrLength] = endOrLength;
super.ListIterable();
core.RangeError.checkNotNegative(this[_start], "start");
if (this[_endOrLength] != null) {
core.RangeError.checkNotNegative(this[_endOrLength], "end");
if (dart.notNull(this[_start]) > dart.notNull(this[_endOrLength])) {
dart.throw(new core.RangeError.range(this[_start], 0, this[_endOrLength], "start"));
}
}
}
get [_endIndex]() {
let length = this[_iterable][dartx.length];
if (this[_endOrLength] == null || dart.notNull(this[_endOrLength]) > dart.notNull(length)) return length;
return this[_endOrLength];
}
get [_startIndex]() {
let length = this[_iterable][dartx.length];
if (dart.notNull(this[_start]) > dart.notNull(length)) return length;
return this[_start];
}
get length() {
let length = this[_iterable][dartx.length];
if (dart.notNull(this[_start]) >= dart.notNull(length)) return 0;
if (this[_endOrLength] == null || dart.notNull(this[_endOrLength]) >= dart.notNull(length)) {
return dart.notNull(length) - dart.notNull(this[_start]);
}
return dart.notNull(this[_endOrLength]) - dart.notNull(this[_start]);
}
elementAt(index) {
let realIndex = dart.notNull(this[_startIndex]) + dart.notNull(index);
if (dart.notNull(index) < 0 || dart.notNull(realIndex) >= dart.notNull(this[_endIndex])) {
dart.throw(core.RangeError.index(index, this, "index"));
}
return this[_iterable][dartx.elementAt](realIndex);
}
skip(count) {
core.RangeError.checkNotNegative(count, "count");
let newStart = dart.notNull(this[_start]) + dart.notNull(count);
if (this[_endOrLength] != null && dart.notNull(newStart) >= dart.notNull(this[_endOrLength])) {
return new (EmptyIterable$(E))();
}
return new (SubListIterable$(E))(this[_iterable], newStart, this[_endOrLength]);
}
take(count) {
core.RangeError.checkNotNegative(count, "count");
if (this[_endOrLength] == null) {
return new (SubListIterable$(E))(this[_iterable], this[_start], dart.notNull(this[_start]) + dart.notNull(count));
} else {
let newEnd = dart.notNull(this[_start]) + dart.notNull(count);
if (dart.notNull(this[_endOrLength]) < dart.notNull(newEnd)) return this;
return new (SubListIterable$(E))(this[_iterable], this[_start], newEnd);
}
}
toList(opts) {
let growable = opts && 'growable' in opts ? opts.growable : true;
let start = this[_start];
let end = this[_iterable][dartx.length];
if (this[_endOrLength] != null && dart.notNull(this[_endOrLength]) < dart.notNull(end)) end = this[_endOrLength];
let length = dart.notNull(end) - dart.notNull(start);
if (dart.notNull(length) < 0) length = 0;
let result = dart.notNull(growable) ? (() => {
let _ = core.List$(E).new();
_[dartx.length] = length;
return _;
})() : core.List$(E).new(length);
for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull(i) + 1) {
result[dartx.set](i, this[_iterable][dartx.elementAt](dart.notNull(start) + dart.notNull(i)));
if (dart.notNull(this[_iterable][dartx.length]) < dart.notNull(end)) dart.throw(new core.ConcurrentModificationError(this));
}
return dart.as(result, core.List$(E));
}
}
dart.setSignature(SubListIterable, {
constructors: () => ({SubListIterable: [SubListIterable$(E), [core.Iterable$(E), core.int, core.int]]}),
methods: () => ({
elementAt: [E, [core.int]],
skip: [core.Iterable$(E), [core.int]],
take: [core.Iterable$(E), [core.int]],
toList: [core.List$(E), [], {growable: core.bool}]
})
});
dart.defineExtensionMembers(SubListIterable, [
'elementAt',
'skip',
'take',
'toList',
'length'
]);
return SubListIterable;
});
const SubListIterable = SubListIterable$();
const _length = dart.JsSymbol('_length');
const _index = dart.JsSymbol('_index');
const _current = dart.JsSymbol('_current');
const ListIterator$ = dart.generic(function(E) {
class ListIterator extends core.Object {
ListIterator(iterable) {
this[_iterable] = iterable;
this[_length] = iterable[dartx.length];
this[_index] = 0;
this[_current] = null;
}
get current() {
return this[_current];
}
moveNext() {
let length = this[_iterable][dartx.length];
if (this[_length] != length) {
dart.throw(new core.ConcurrentModificationError(this[_iterable]));
}
if (dart.notNull(this[_index]) >= dart.notNull(length)) {
this[_current] = null;
return false;
}
this[_current] = this[_iterable][dartx.elementAt](this[_index]);
this[_index] = dart.notNull(this[_index]) + 1;
return true;
}
}
ListIterator[dart.implements] = () => [core.Iterator$(E)];
dart.setSignature(ListIterator, {
constructors: () => ({ListIterator: [ListIterator$(E), [core.Iterable$(E)]]}),
methods: () => ({moveNext: [core.bool, []]})
});
return ListIterator;
});
const ListIterator = ListIterator$();
const _Transformation$ = dart.generic(function(S, T) {
const _Transformation = dart.typedef('_Transformation', () => dart.functionType(T, [S]));
return _Transformation;
});
const _Transformation = _Transformation$();
const _f = dart.JsSymbol('_f');
const MappedIterable$ = dart.generic(function(S, T) {
class MappedIterable extends collection.IterableBase$(T) {
static new(iterable, func) {
if (dart.is(iterable, EfficientLength)) {
return new (EfficientLengthMappedIterable$(S, T))(iterable, func);
}
return new (MappedIterable$(S, T))._(dart.as(iterable, core.Iterable$(S)), func);
}
_(iterable, f) {
this[_iterable] = iterable;
this[_f] = f;
super.IterableBase();
}
get iterator() {
return new (MappedIterator$(S, T))(this[_iterable][dartx.iterator], this[_f]);
}
get length() {
return this[_iterable][dartx.length];
}
get isEmpty() {
return this[_iterable][dartx.isEmpty];
}
get first() {
return this[_f](this[_iterable][dartx.first]);
}
get last() {
return this[_f](this[_iterable][dartx.last]);
}
get single() {
return this[_f](this[_iterable][dartx.single]);
}
elementAt(index) {
return this[_f](this[_iterable][dartx.elementAt](index));
}
}
dart.defineNamedConstructor(MappedIterable, '_');
dart.setSignature(MappedIterable, {
constructors: () => ({
new: [MappedIterable$(S, T), [core.Iterable, dart.functionType(T, [S])]],
_: [MappedIterable$(S, T), [core.Iterable$(S), dart.functionType(T, [S])]]
}),
methods: () => ({elementAt: [T, [core.int]]})
});
dart.defineExtensionMembers(MappedIterable, [
'elementAt',
'iterator',
'length',
'isEmpty',
'first',
'last',
'single'
]);
return MappedIterable;
});
const MappedIterable = MappedIterable$();
const EfficientLengthMappedIterable$ = dart.generic(function(S, T) {
class EfficientLengthMappedIterable extends MappedIterable$(S, T) {
EfficientLengthMappedIterable(iterable, func) {
super._(dart.as(iterable, core.Iterable$(S)), func);
}
}
EfficientLengthMappedIterable[dart.implements] = () => [EfficientLength];
dart.setSignature(EfficientLengthMappedIterable, {
constructors: () => ({EfficientLengthMappedIterable: [EfficientLengthMappedIterable$(S, T), [core.Iterable, dart.functionType(T, [S])]]})
});
return EfficientLengthMappedIterable;
});
const EfficientLengthMappedIterable = EfficientLengthMappedIterable$();
const _iterator = dart.JsSymbol('_iterator');
const MappedIterator$ = dart.generic(function(S, T) {
class MappedIterator extends core.Iterator$(T) {
MappedIterator(iterator, f) {
this[_iterator] = iterator;
this[_f] = f;
this[_current] = null;
}
moveNext() {
if (dart.notNull(this[_iterator].moveNext())) {
this[_current] = this[_f](this[_iterator].current);
return true;
}
this[_current] = null;
return false;
}
get current() {
return this[_current];
}
}
dart.setSignature(MappedIterator, {
constructors: () => ({MappedIterator: [MappedIterator$(S, T), [core.Iterator$(S), dart.functionType(T, [S])]]}),
methods: () => ({moveNext: [core.bool, []]})
});
return MappedIterator;
});
const MappedIterator = MappedIterator$();
const _source = dart.JsSymbol('_source');
const MappedListIterable$ = dart.generic(function(S, T) {
class MappedListIterable extends ListIterable$(T) {
MappedListIterable(source, f) {
this[_source] = source;
this[_f] = f;
super.ListIterable();
}
get length() {
return this[_source][dartx.length];
}
elementAt(index) {
return this[_f](this[_source][dartx.elementAt](index));
}
}
MappedListIterable[dart.implements] = () => [EfficientLength];
dart.setSignature(MappedListIterable, {
constructors: () => ({MappedListIterable: [MappedListIterable$(S, T), [core.Iterable$(S), dart.functionType(T, [S])]]}),
methods: () => ({elementAt: [T, [core.int]]})
});
dart.defineExtensionMembers(MappedListIterable, ['elementAt', 'length']);
return MappedListIterable;
});
const MappedListIterable = MappedListIterable$();
const _ElementPredicate$ = dart.generic(function(E) {
const _ElementPredicate = dart.typedef('_ElementPredicate', () => dart.functionType(core.bool, [E]));
return _ElementPredicate;
});
const _ElementPredicate = _ElementPredicate$();
const WhereIterable$ = dart.generic(function(E) {
class WhereIterable extends collection.IterableBase$(E) {
WhereIterable(iterable, f) {
this[_iterable] = iterable;
this[_f] = f;
super.IterableBase();
}
get iterator() {
return new (WhereIterator$(E))(this[_iterable][dartx.iterator], this[_f]);
}
}
dart.setSignature(WhereIterable, {
constructors: () => ({WhereIterable: [WhereIterable$(E), [core.Iterable$(E), dart.functionType(core.bool, [E])]]})
});
dart.defineExtensionMembers(WhereIterable, ['iterator']);
return WhereIterable;
});
const WhereIterable = WhereIterable$();
const WhereIterator$ = dart.generic(function(E) {
class WhereIterator extends core.Iterator$(E) {
WhereIterator(iterator, f) {
this[_iterator] = iterator;
this[_f] = f;
}
moveNext() {
while (dart.notNull(this[_iterator].moveNext())) {
if (dart.notNull(this[_f](this[_iterator].current))) {
return true;
}
}
return false;
}
get current() {
return this[_iterator].current;
}
}
dart.setSignature(WhereIterator, {
constructors: () => ({WhereIterator: [WhereIterator$(E), [core.Iterator$(E), dart.functionType(core.bool, [E])]]}),
methods: () => ({moveNext: [core.bool, []]})
});
return WhereIterator;
});
const WhereIterator = WhereIterator$();
const _ExpandFunction$ = dart.generic(function(S, T) {
const _ExpandFunction = dart.typedef('_ExpandFunction', () => dart.functionType(core.Iterable$(T), [S]));
return _ExpandFunction;
});
const _ExpandFunction = _ExpandFunction$();
const ExpandIterable$ = dart.generic(function(S, T) {
class ExpandIterable extends collection.IterableBase$(T) {
ExpandIterable(iterable, f) {
this[_iterable] = iterable;
this[_f] = f;
super.IterableBase();
}
get iterator() {
return new (ExpandIterator$(S, T))(this[_iterable][dartx.iterator], dart.as(this[_f], __CastType0));
}
}
dart.setSignature(ExpandIterable, {
constructors: () => ({ExpandIterable: [ExpandIterable$(S, T), [core.Iterable$(S), dart.functionType(core.Iterable$(T), [S])]]})
});
dart.defineExtensionMembers(ExpandIterable, ['iterator']);
return ExpandIterable;
});
const ExpandIterable = ExpandIterable$();
const _currentExpansion = dart.JsSymbol('_currentExpansion');
const _nextExpansion = dart.JsSymbol('_nextExpansion');
const ExpandIterator$ = dart.generic(function(S, T) {
class ExpandIterator extends core.Object {
ExpandIterator(iterator, f) {
this[_iterator] = iterator;
this[_f] = f;
this[_currentExpansion] = dart.const(new (EmptyIterator$(T))());
this[_current] = null;
}
[_nextExpansion]() {}
get current() {
return this[_current];
}
moveNext() {
if (this[_currentExpansion] == null) return false;
while (!dart.notNull(this[_currentExpansion].moveNext())) {
this[_current] = null;
if (dart.notNull(this[_iterator].moveNext())) {
this[_currentExpansion] = null;
this[_currentExpansion] = dart.as(dart.dcall(this[_f], this[_iterator].current)[dartx.iterator], core.Iterator$(T));
} else {
return false;
}
}
this[_current] = this[_currentExpansion].current;
return true;
}
}
ExpandIterator[dart.implements] = () => [core.Iterator$(T)];
dart.setSignature(ExpandIterator, {
constructors: () => ({ExpandIterator: [ExpandIterator$(S, T), [core.Iterator$(S), dart.functionType(core.Iterable$(T), [S])]]}),
methods: () => ({
[_nextExpansion]: [dart.void, []],
moveNext: [core.bool, []]
})
});
return ExpandIterator;
});
const ExpandIterator = ExpandIterator$();
const _takeCount = dart.JsSymbol('_takeCount');
const TakeIterable$ = dart.generic(function(E) {
class TakeIterable extends collection.IterableBase$(E) {
static new(iterable, takeCount) {
if (!(typeof takeCount == 'number') || dart.notNull(takeCount) < 0) {
dart.throw(new core.ArgumentError(takeCount));
}
if (dart.is(iterable, EfficientLength)) {
return new (EfficientLengthTakeIterable$(E))(iterable, takeCount);
}
return new (TakeIterable$(E))._(iterable, takeCount);
}
_(iterable, takeCount) {
this[_iterable] = iterable;
this[_takeCount] = takeCount;
super.IterableBase();
}
get iterator() {
return new (TakeIterator$(E))(this[_iterable][dartx.iterator], this[_takeCount]);
}
}
dart.defineNamedConstructor(TakeIterable, '_');
dart.setSignature(TakeIterable, {
constructors: () => ({
new: [TakeIterable$(E), [core.Iterable$(E), core.int]],
_: [TakeIterable$(E), [core.Iterable$(E), core.int]]
})
});
dart.defineExtensionMembers(TakeIterable, ['iterator']);
return TakeIterable;
});
const TakeIterable = TakeIterable$();
const EfficientLengthTakeIterable$ = dart.generic(function(E) {
class EfficientLengthTakeIterable extends TakeIterable$(E) {
EfficientLengthTakeIterable(iterable, takeCount) {
super._(iterable, takeCount);
}
get length() {
let iterableLength = this[_iterable][dartx.length];
if (dart.notNull(iterableLength) > dart.notNull(this[_takeCount])) return this[_takeCount];
return iterableLength;
}
}
EfficientLengthTakeIterable[dart.implements] = () => [EfficientLength];
dart.setSignature(EfficientLengthTakeIterable, {
constructors: () => ({EfficientLengthTakeIterable: [EfficientLengthTakeIterable$(E), [core.Iterable$(E), core.int]]})
});
dart.defineExtensionMembers(EfficientLengthTakeIterable, ['length']);
return EfficientLengthTakeIterable;
});
const EfficientLengthTakeIterable = EfficientLengthTakeIterable$();
const _remaining = dart.JsSymbol('_remaining');
const TakeIterator$ = dart.generic(function(E) {
class TakeIterator extends core.Iterator$(E) {
TakeIterator(iterator, remaining) {
this[_iterator] = iterator;
this[_remaining] = remaining;
dart.assert(typeof this[_remaining] == 'number' && dart.notNull(this[_remaining]) >= 0);
}
moveNext() {
this[_remaining] = dart.notNull(this[_remaining]) - 1;
if (dart.notNull(this[_remaining]) >= 0) {
return this[_iterator].moveNext();
}
this[_remaining] = -1;
return false;
}
get current() {
if (dart.notNull(this[_remaining]) < 0) return null;
return this[_iterator].current;
}
}
dart.setSignature(TakeIterator, {
constructors: () => ({TakeIterator: [TakeIterator$(E), [core.Iterator$(E), core.int]]}),
methods: () => ({moveNext: [core.bool, []]})
});
return TakeIterator;
});
const TakeIterator = TakeIterator$();
const TakeWhileIterable$ = dart.generic(function(E) {
class TakeWhileIterable extends collection.IterableBase$(E) {
TakeWhileIterable(iterable, f) {
this[_iterable] = iterable;
this[_f] = f;
super.IterableBase();
}
get iterator() {
return new (TakeWhileIterator$(E))(this[_iterable][dartx.iterator], this[_f]);
}
}
dart.setSignature(TakeWhileIterable, {
constructors: () => ({TakeWhileIterable: [TakeWhileIterable$(E), [core.Iterable$(E), dart.functionType(core.bool, [E])]]})
});
dart.defineExtensionMembers(TakeWhileIterable, ['iterator']);
return TakeWhileIterable;
});
const TakeWhileIterable = TakeWhileIterable$();
const _isFinished = dart.JsSymbol('_isFinished');
const TakeWhileIterator$ = dart.generic(function(E) {
class TakeWhileIterator extends core.Iterator$(E) {
TakeWhileIterator(iterator, f) {
this[_iterator] = iterator;
this[_f] = f;
this[_isFinished] = false;
}
moveNext() {
if (dart.notNull(this[_isFinished])) return false;
if (!dart.notNull(this[_iterator].moveNext()) || !dart.notNull(this[_f](this[_iterator].current))) {
this[_isFinished] = true;
return false;
}
return true;
}
get current() {
if (dart.notNull(this[_isFinished])) return null;
return this[_iterator].current;
}
}
dart.setSignature(TakeWhileIterator, {
constructors: () => ({TakeWhileIterator: [TakeWhileIterator$(E), [core.Iterator$(E), dart.functionType(core.bool, [E])]]}),
methods: () => ({moveNext: [core.bool, []]})
});
return TakeWhileIterator;
});
const TakeWhileIterator = TakeWhileIterator$();
const _skipCount = dart.JsSymbol('_skipCount');
const SkipIterable$ = dart.generic(function(E) {
class SkipIterable extends collection.IterableBase$(E) {
static new(iterable, count) {
if (dart.is(iterable, EfficientLength)) {
return new (EfficientLengthSkipIterable$(E))(iterable, count);
}
return new (SkipIterable$(E))._(iterable, count);
}
_(iterable, skipCount) {
this[_iterable] = iterable;
this[_skipCount] = skipCount;
super.IterableBase();
if (!(typeof this[_skipCount] == 'number')) {
dart.throw(new core.ArgumentError.value(this[_skipCount], "count is not an integer"));
}
core.RangeError.checkNotNegative(this[_skipCount], "count");
}
skip(count) {
if (!(typeof this[_skipCount] == 'number')) {
dart.throw(new core.ArgumentError.value(this[_skipCount], "count is not an integer"));
}
core.RangeError.checkNotNegative(this[_skipCount], "count");
return new (SkipIterable$(E))._(this[_iterable], dart.notNull(this[_skipCount]) + dart.notNull(count));
}
get iterator() {
return new (SkipIterator$(E))(this[_iterable][dartx.iterator], this[_skipCount]);
}
}
dart.defineNamedConstructor(SkipIterable, '_');
dart.setSignature(SkipIterable, {
constructors: () => ({
new: [SkipIterable$(E), [core.Iterable$(E), core.int]],
_: [SkipIterable$(E), [core.Iterable$(E), core.int]]
}),
methods: () => ({skip: [core.Iterable$(E), [core.int]]})
});
dart.defineExtensionMembers(SkipIterable, ['skip', 'iterator']);
return SkipIterable;
});
const SkipIterable = SkipIterable$();
const EfficientLengthSkipIterable$ = dart.generic(function(E) {
class EfficientLengthSkipIterable extends SkipIterable$(E) {
EfficientLengthSkipIterable(iterable, skipCount) {
super._(iterable, skipCount);
}
get length() {
let length = dart.notNull(this[_iterable][dartx.length]) - dart.notNull(this[_skipCount]);
if (dart.notNull(length) >= 0) return length;
return 0;
}
}
EfficientLengthSkipIterable[dart.implements] = () => [EfficientLength];
dart.setSignature(EfficientLengthSkipIterable, {
constructors: () => ({EfficientLengthSkipIterable: [EfficientLengthSkipIterable$(E), [core.Iterable$(E), core.int]]})
});
dart.defineExtensionMembers(EfficientLengthSkipIterable, ['length']);
return EfficientLengthSkipIterable;
});
const EfficientLengthSkipIterable = EfficientLengthSkipIterable$();
const SkipIterator$ = dart.generic(function(E) {
class SkipIterator extends core.Iterator$(E) {
SkipIterator(iterator, skipCount) {
this[_iterator] = iterator;
this[_skipCount] = skipCount;
dart.assert(typeof this[_skipCount] == 'number' && dart.notNull(this[_skipCount]) >= 0);
}
moveNext() {
for (let i = 0; dart.notNull(i) < dart.notNull(this[_skipCount]); i = dart.notNull(i) + 1)
this[_iterator].moveNext();
this[_skipCount] = 0;
return this[_iterator].moveNext();
}
get current() {
return this[_iterator].current;
}
}
dart.setSignature(SkipIterator, {
constructors: () => ({SkipIterator: [SkipIterator$(E), [core.Iterator$(E), core.int]]}),
methods: () => ({moveNext: [core.bool, []]})
});
return SkipIterator;
});
const SkipIterator = SkipIterator$();
const SkipWhileIterable$ = dart.generic(function(E) {
class SkipWhileIterable extends collection.IterableBase$(E) {
SkipWhileIterable(iterable, f) {
this[_iterable] = iterable;
this[_f] = f;
super.IterableBase();
}
get iterator() {
return new (SkipWhileIterator$(E))(this[_iterable][dartx.iterator], this[_f]);
}
}
dart.setSignature(SkipWhileIterable, {
constructors: () => ({SkipWhileIterable: [SkipWhileIterable$(E), [core.Iterable$(E), dart.functionType(core.bool, [E])]]})
});
dart.defineExtensionMembers(SkipWhileIterable, ['iterator']);
return SkipWhileIterable;
});
const SkipWhileIterable = SkipWhileIterable$();
const _hasSkipped = dart.JsSymbol('_hasSkipped');
const SkipWhileIterator$ = dart.generic(function(E) {
class SkipWhileIterator extends core.Iterator$(E) {
SkipWhileIterator(iterator, f) {
this[_iterator] = iterator;
this[_f] = f;
this[_hasSkipped] = false;
}
moveNext() {
if (!dart.notNull(this[_hasSkipped])) {
this[_hasSkipped] = true;
while (dart.notNull(this[_iterator].moveNext())) {
if (!dart.notNull(this[_f](this[_iterator].current))) return true;
}
}
return this[_iterator].moveNext();
}
get current() {
return this[_iterator].current;
}
}
dart.setSignature(SkipWhileIterator, {
constructors: () => ({SkipWhileIterator: [SkipWhileIterator$(E), [core.Iterator$(E), dart.functionType(core.bool, [E])]]}),
methods: () => ({moveNext: [core.bool, []]})
});
return SkipWhileIterator;
});
const SkipWhileIterator = SkipWhileIterator$();
const EmptyIterable$ = dart.generic(function(E) {
class EmptyIterable extends collection.IterableBase$(E) {
EmptyIterable() {
super.IterableBase();
}
get iterator() {
return dart.const(new (EmptyIterator$(E))());
}
forEach(action) {
dart.as(action, dart.functionType(dart.void, [E]));
}
get isEmpty() {
return true;
}
get length() {
return 0;
}
get first() {
dart.throw(IterableElementError.noElement());
}
get last() {
dart.throw(IterableElementError.noElement());
}
get single() {
dart.throw(IterableElementError.noElement());
}
elementAt(index) {
dart.throw(new core.RangeError.range(index, 0, 0, "index"));
}
contains(element) {
return false;
}
every(test) {
dart.as(test, dart.functionType(core.bool, [E]));
return true;
}
any(test) {
dart.as(test, dart.functionType(core.bool, [E]));
return false;
}
firstWhere(test, opts) {
dart.as(test, dart.functionType(core.bool, [E]));
let orElse = opts && 'orElse' in opts ? opts.orElse : null;
dart.as(orElse, dart.functionType(E, []));
if (orElse != null) return orElse();
dart.throw(IterableElementError.noElement());
}
lastWhere(test, opts) {
dart.as(test, dart.functionType(core.bool, [E]));
let orElse = opts && 'orElse' in opts ? opts.orElse : null;
dart.as(orElse, dart.functionType(E, []));
if (orElse != null) return orElse();
dart.throw(IterableElementError.noElement());
}
singleWhere(test, opts) {
dart.as(test, dart.functionType(core.bool, [E]));
let orElse = opts && 'orElse' in opts ? opts.orElse : null;
dart.as(orElse, dart.functionType(E, []));
if (orElse != null) return orElse();
dart.throw(IterableElementError.noElement());
}
join(separator) {
if (separator === void 0) separator = "";
return "";
}
where(test) {
dart.as(test, dart.functionType(core.bool, [E]));
return this;
}
map(f) {
dart.as(f, dart.functionType(dart.dynamic, [E]));
return dart.const(new (EmptyIterable$())());
}
reduce(combine) {
dart.as(combine, dart.functionType(E, [E, E]));
dart.throw(IterableElementError.noElement());
}
fold(initialValue, combine) {
dart.as(combine, dart.functionType(dart.dynamic, [dart.dynamic, E]));
return initialValue;
}
skip(count) {
core.RangeError.checkNotNegative(count, "count");
return this;
}
skipWhile(test) {
dart.as(test, dart.functionType(core.bool, [E]));
return this;
}
take(count) {
core.RangeError.checkNotNegative(count, "count");
return this;
}
takeWhile(test) {
dart.as(test, dart.functionType(core.bool, [E]));
return this;
}
toList(opts) {
let growable = opts && 'growable' in opts ? opts.growable : true;
return dart.notNull(growable) ? dart.list([], E) : core.List$(E).new(0);
}
toSet() {
return core.Set$(E).new();
}
}
EmptyIterable[dart.implements] = () => [EfficientLength];
dart.setSignature(EmptyIterable, {
constructors: () => ({EmptyIterable: [EmptyIterable$(E), []]}),
methods: () => ({
forEach: [dart.void, [dart.functionType(dart.void, [E])]],
elementAt: [E, [core.int]],
every: [core.bool, [dart.functionType(core.bool, [E])]],
any: [core.bool, [dart.functionType(core.bool, [E])]],
firstWhere: [E, [dart.functionType(core.bool, [E])], {orElse: dart.functionType(E, [])}],
lastWhere: [E, [dart.functionType(core.bool, [E])], {orElse: dart.functionType(E, [])}],
singleWhere: [E, [dart.functionType(core.bool, [E])], {orElse: dart.functionType(E, [])}],
where: [core.Iterable$(E), [dart.functionType(core.bool, [E])]],
map: [core.Iterable, [dart.functionType(dart.dynamic, [E])]],
reduce: [E, [dart.functionType(E, [E, E])]],
fold: [dart.dynamic, [dart.dynamic, dart.functionType(dart.dynamic, [dart.dynamic, E])]],
skip: [core.Iterable$(E), [core.int]],
skipWhile: [core.Iterable$(E), [dart.functionType(core.bool, [E])]],
take: [core.Iterable$(E), [core.int]],
takeWhile: [core.Iterable$(E), [dart.functionType(core.bool, [E])]],
toList: [core.List$(E), [], {growable: core.bool}],
toSet: [core.Set$(E), []]
})
});
dart.defineExtensionMembers(EmptyIterable, [
'forEach',
'elementAt',
'contains',
'every',
'any',
'firstWhere',
'lastWhere',
'singleWhere',
'join',
'where',
'map',
'reduce',
'fold',
'skip',
'skipWhile',
'take',
'takeWhile',
'toList',
'toSet',
'iterator',
'isEmpty',
'length',
'first',
'last',
'single'
]);
return EmptyIterable;
});
const EmptyIterable = EmptyIterable$();
const EmptyIterator$ = dart.generic(function(E) {
class EmptyIterator extends core.Object {
EmptyIterator() {
}
moveNext() {
return false;
}
get current() {
return null;
}
}
EmptyIterator[dart.implements] = () => [core.Iterator$(E)];
dart.setSignature(EmptyIterator, {
constructors: () => ({EmptyIterator: [EmptyIterator$(E), []]}),
methods: () => ({moveNext: [core.bool, []]})
});
return EmptyIterator;
});
const EmptyIterator = EmptyIterator$();
const BidirectionalIterator$ = dart.generic(function(T) {
class BidirectionalIterator extends core.Object {}
BidirectionalIterator[dart.implements] = () => [core.Iterator$(T)];
return BidirectionalIterator;
});
const BidirectionalIterator = BidirectionalIterator$();
const IterableMixinWorkaround$ = dart.generic(function(T) {
class IterableMixinWorkaround extends core.Object {
static contains(iterable, element) {
for (let e of iterable) {
if (dart.equals(e, element)) return true;
}
return false;
}
static forEach(iterable, f) {
dart.as(f, dart.functionType(dart.void, [dart.dynamic]));
for (let e of iterable) {
f(e);
}
}
static any(iterable, f) {
dart.as(f, dart.functionType(core.bool, [dart.dynamic]));
for (let e of iterable) {
if (dart.notNull(f(e))) return true;
}
return false;
}
static every(iterable, f) {
dart.as(f, dart.functionType(core.bool, [dart.dynamic]));
for (let e of iterable) {
if (!dart.notNull(f(e))) return false;
}
return true;
}
static reduce(iterable, combine) {
dart.as(combine, dart.functionType(dart.dynamic, [dart.dynamic, dart.dynamic]));
let iterator = iterable[dartx.iterator];
if (!dart.notNull(iterator.moveNext())) dart.throw(IterableElementError.noElement());
let value = iterator.current;
while (dart.notNull(iterator.moveNext())) {
value = combine(value, iterator.current);
}
return value;
}
static fold(iterable, initialValue, combine) {
dart.as(combine, dart.functionType(dart.dynamic, [dart.dynamic, dart.dynamic]));
for (let element of iterable) {
initialValue = combine(initialValue, element);
}
return initialValue;
}
static removeWhereList(list, test) {
dart.as(test, dart.functionType(core.bool, [dart.dynamic]));
let retained = dart.list([], dart.dynamic);
let length = list[dartx.length];
for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull(i) + 1) {
let element = list[dartx.get](i);
if (!dart.notNull(test(element))) {
retained[dartx.add](element);
}
if (length != list[dartx.length]) {
dart.throw(new core.ConcurrentModificationError(list));
}
}
if (retained[dartx.length] == length) return;
list[dartx.length] = retained[dartx.length];
for (let i = 0; dart.notNull(i) < dart.notNull(retained[dartx.length]); i = dart.notNull(i) + 1) {
list[dartx.set](i, retained[dartx.get](i));
}
}
static isEmpty(iterable) {
return !dart.notNull(iterable[dartx.iterator].moveNext());
}
static first(iterable) {
let it = iterable[dartx.iterator];
if (!dart.notNull(it.moveNext())) {
dart.throw(IterableElementError.noElement());
}
return it.current;
}
static last(iterable) {
let it = iterable[dartx.iterator];
if (!dart.notNull(it.moveNext())) {
dart.throw(IterableElementError.noElement());
}
let result = null;
do {
result = it.current;
} while (dart.notNull(it.moveNext()));
return result;
}
static single(iterable) {
let it = iterable[dartx.iterator];
if (!dart.notNull(it.moveNext())) dart.throw(IterableElementError.noElement());
let result = it.current;
if (dart.notNull(it.moveNext())) dart.throw(IterableElementError.tooMany());
return result;
}
static firstWhere(iterable, test, orElse) {
dart.as(test, dart.functionType(core.bool, [dart.dynamic]));
dart.as(orElse, dart.functionType(dart.dynamic, []));
for (let element of iterable) {
if (dart.notNull(test(element))) return element;
}
if (orElse != null) return orElse();
dart.throw(IterableElementError.noElement());
}
static lastWhere(iterable, test, orElse) {
dart.as(test, dart.functionType(core.bool, [dart.dynamic]));
dart.as(orElse, dart.functionType(dart.dynamic, []));
let result = null;
let foundMatching = false;
for (let element of iterable) {
if (dart.notNull(test(element))) {
result = element;
foundMatching = true;
}
}
if (dart.notNull(foundMatching)) return result;
if (orElse != null) return orElse();
dart.throw(IterableElementError.noElement());
}
static lastWhereList(list, test, orElse) {
dart.as(test, dart.functionType(core.bool, [dart.dynamic]));
dart.as(orElse, dart.functionType(dart.dynamic, []));
for (let i = dart.notNull(list[dartx.length]) - 1; dart.notNull(i) >= 0; i = dart.notNull(i) - 1) {
let element = list[dartx.get](i);
if (dart.notNull(test(element))) return element;
}
if (orElse != null) return orElse();
dart.throw(IterableElementError.noElement());
}
static singleWhere(iterable, test) {
dart.as(test, dart.functionType(core.bool, [dart.dynamic]));
let result = null;
let foundMatching = false;
for (let element of iterable) {
if (dart.notNull(test(element))) {
if (dart.notNull(foundMatching)) {
dart.throw(IterableElementError.tooMany());
}
result = element;
foundMatching = true;
}
}
if (dart.notNull(foundMatching)) return result;
dart.throw(IterableElementError.noElement());
}
static elementAt(iterable, index) {
if (!(typeof index == 'number')) dart.throw(new core.ArgumentError.notNull("index"));
core.RangeError.checkNotNegative(index, "index");
let elementIndex = 0;
for (let element of iterable) {
if (index == elementIndex) return element;
elementIndex = dart.notNull(elementIndex) + 1;
}
dart.throw(core.RangeError.index(index, iterable, "index", null, elementIndex));
}
static join(iterable, separator) {
if (separator === void 0) separator = null;
let buffer = new core.StringBuffer();
buffer.writeAll(iterable, separator);
return dart.toString(buffer);
}
static joinList(list, separator) {
if (separator === void 0) separator = null;
if (dart.notNull(list[dartx.isEmpty])) return "";
if (list[dartx.length] == 1) return `${list[dartx.get](0)}`;
let buffer = new core.StringBuffer();
if (dart.notNull(separator[dartx.isEmpty])) {
for (let i = 0; dart.notNull(i) < dart.notNull(list[dartx.length]); i = dart.notNull(i) + 1) {
buffer.write(list[dartx.get](i));
}
} else {
buffer.write(list[dartx.get](0));
for (let i = 1; dart.notNull(i) < dart.notNull(list[dartx.length]); i = dart.notNull(i) + 1) {
buffer.write(separator);
buffer.write(list[dartx.get](i));
}
}
return dart.toString(buffer);
}
where(iterable, f) {
dart.as(iterable, core.Iterable$(T));
dart.as(f, dart.functionType(core.bool, [T]));
return new (WhereIterable$(T))(iterable, f);
}
static map(iterable, f) {
dart.as(f, dart.functionType(dart.dynamic, [dart.dynamic]));
return MappedIterable.new(iterable, f);
}
static mapList(list, f) {
dart.as(f, dart.functionType(dart.dynamic, [dart.dynamic]));
return new MappedListIterable(list, f);
}
static expand(iterable, f) {
dart.as(f, dart.functionType(core.Iterable, [dart.dynamic]));
return new ExpandIterable(iterable, f);
}
takeList(list, n) {
return new (SubListIterable$(T))(dart.as(list, core.Iterable$(T)), 0, n);
}
takeWhile(iterable, test) {
dart.as(test, dart.functionType(core.bool, [dart.dynamic]));
return new (TakeWhileIterable$(T))(dart.as(iterable, core.Iterable$(T)), dart.as(test, __CastType2));
}
skipList(list, n) {
return new (SubListIterable$(T))(dart.as(list, core.Iterable$(T)), n, null);
}
skipWhile(iterable, test) {
dart.as(test, dart.functionType(core.bool, [dart.dynamic]));
return new (SkipWhileIterable$(T))(dart.as(iterable, core.Iterable$(T)), dart.as(test, dart.functionType(core.bool, [T])));
}
reversedList(list) {
return new (ReversedListIterable$(T))(dart.as(list, core.Iterable$(T)));
}
static sortList(list, compare) {
dart.as(compare, dart.functionType(core.int, [dart.dynamic, dart.dynamic]));
if (compare == null) compare = core.Comparable.compare;
Sort.sort(list, compare);
}
static shuffleList(list, random) {
if (random == null) random = math.Random.new();
let length = list[dartx.length];
while (dart.notNull(length) > 1) {
let pos = random.nextInt(length);
length = dart.notNull(length) - 1;
let tmp = list[dartx.get](length);
list[dartx.set](length, list[dartx.get](pos));
list[dartx.set](pos, tmp);
}
}
static indexOfList(list, element, start) {
return Lists.indexOf(list, element, start, list[dartx.length]);
}
static lastIndexOfList(list, element, start) {
if (start == null) start = dart.notNull(list[dartx.length]) - 1;
return Lists.lastIndexOf(list, element, start);
}
static _rangeCheck(list, start, end) {
core.RangeError.checkValidRange(start, end, list[dartx.length]);
}
getRangeList(list, start, end) {
IterableMixinWorkaround$()._rangeCheck(list, start, end);
return new (SubListIterable$(T))(dart.as(list, core.Iterable$(T)), start, end);
}
static setRangeList(list, start, end, from, skipCount) {
IterableMixinWorkaround$()._rangeCheck(list, start, end);
let length = dart.notNull(end) - dart.notNull(start);
if (length == 0) return;
if (dart.notNull(skipCount) < 0) dart.throw(new core.ArgumentError(skipCount));
let otherList = null;
let otherStart = null;
if (dart.is(from, core.List)) {
otherList = from;
otherStart = skipCount;
} else {
otherList = from[dartx.skip](skipCount)[dartx.toList]({growable: false});
otherStart = 0;
}
if (dart.notNull(otherStart) + dart.notNull(length) > dart.notNull(otherList[dartx.length])) {
dart.throw(IterableElementError.tooFew());
}
Lists.copy(otherList, otherStart, list, start, length);
}
static replaceRangeList(list, start, end, iterable) {
IterableMixinWorkaround$()._rangeCheck(list, start, end);
if (!dart.is(iterable, EfficientLength)) {
iterable = iterable[dartx.toList]();
}
let removeLength = dart.notNull(end) - dart.notNull(start);
let insertLength = iterable[dartx.length];
if (dart.notNull(removeLength) >= dart.notNull(insertLength)) {
let delta = dart.notNull(removeLength) - dart.notNull(insertLength);
let insertEnd = dart.notNull(start) + dart.notNull(insertLength);
let newEnd = dart.notNull(list[dartx.length]) - dart.notNull(delta);
list[dartx.setRange](start, insertEnd, iterable);
if (delta != 0) {
list[dartx.setRange](insertEnd, newEnd, list, end);
list[dartx.length] = newEnd;
}
} else {
let delta = dart.notNull(insertLength) - dart.notNull(removeLength);
let newLength = dart.notNull(list[dartx.length]) + dart.notNull(delta);
let insertEnd = dart.notNull(start) + dart.notNull(insertLength);
list[dartx.length] = newLength;
list[dartx.setRange](insertEnd, newLength, list, end);
list[dartx.setRange](start, insertEnd, iterable);
}
}
static fillRangeList(list, start, end, fillValue) {
IterableMixinWorkaround$()._rangeCheck(list, start, end);
for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
list[dartx.set](i, fillValue);
}
}
static insertAllList(list, index, iterable) {
core.RangeError.checkValueInInterval(index, 0, list[dartx.length], "index");
if (!dart.is(iterable, EfficientLength)) {
iterable = iterable[dartx.toList]({growable: false});
}
let insertionLength = iterable[dartx.length];
list[dartx.length] = dart.notNull(list[dartx.length]) + dart.notNull(insertionLength);
list[dartx.setRange](dart.notNull(index) + dart.notNull(insertionLength), list[dartx.length], list, index);
for (let element of iterable) {
list[dartx.set]((() => {
let x = index;
index = dart.notNull(x) + 1;
return x;
})(), element);
}
}
static setAllList(list, index, iterable) {
core.RangeError.checkValueInInterval(index, 0, list[dartx.length], "index");
for (let element of iterable) {
list[dartx.set]((() => {
let x = index;
index = dart.notNull(x) + 1;
return x;
})(), element);
}
}
asMapList(l) {
return new (ListMapView$(T))(dart.as(l, core.List$(T)));
}
static setContainsAll(set, other) {
for (let element of other) {
if (!dart.notNull(set.contains(element))) return false;
}
return true;
}
static setIntersection(set, other, result) {
let smaller = null;
let larger = null;
if (dart.notNull(set.length) < dart.notNull(other.length)) {
smaller = set;
larger = other;
} else {
smaller = other;
larger = set;
}
for (let element of smaller) {
if (dart.notNull(larger.contains(element))) {
result.add(element);
}
}
return result;
}
static setUnion(set, other, result) {
result.addAll(set);
result.addAll(other);
return result;
}
static setDifference(set, other, result) {
for (let element of set) {
if (!dart.notNull(other.contains(element))) {
result.add(element);
}
}
return result;
}
}
dart.setSignature(IterableMixinWorkaround, {
methods: () => ({
where: [core.Iterable$(T), [core.Iterable$(T), dart.functionType(core.bool, [T])]],
takeList: [core.Iterable$(T), [core.List, core.int]],
takeWhile: [core.Iterable$(T), [core.Iterable, dart.functionType(core.bool, [dart.dynamic])]],
skipList: [core.Iterable$(T), [core.List, core.int]],
skipWhile: [core.Iterable$(T), [core.Iterable, dart.functionType(core.bool, [dart.dynamic])]],
reversedList: [core.Iterable$(T), [core.List]],
getRangeList: [core.Iterable$(T), [core.List, core.int, core.int]],
asMapList: [core.Map$(core.int, T), [core.List]]
}),
statics: () => ({
contains: [core.bool, [core.Iterable, dart.dynamic]],
forEach: [dart.void, [core.Iterable, dart.functionType(dart.void, [dart.dynamic])]],
any: [core.bool, [core.Iterable, dart.functionType(core.bool, [dart.dynamic])]],
every: [core.bool, [core.Iterable, dart.functionType(core.bool, [dart.dynamic])]],
reduce: [dart.dynamic, [core.Iterable, dart.functionType(dart.dynamic, [dart.dynamic, dart.dynamic])]],
fold: [dart.dynamic, [core.Iterable, dart.dynamic, dart.functionType(dart.dynamic, [dart.dynamic, dart.dynamic])]],
removeWhereList: [dart.void, [core.List, dart.functionType(core.bool, [dart.dynamic])]],
isEmpty: [core.bool, [core.Iterable]],
first: [dart.dynamic, [core.Iterable]],
last: [dart.dynamic, [core.Iterable]],
single: [dart.dynamic, [core.Iterable]],
firstWhere: [dart.dynamic, [core.Iterable, dart.functionType(core.bool, [dart.dynamic]), dart.functionType(dart.dynamic, [])]],
lastWhere: [dart.dynamic, [core.Iterable, dart.functionType(core.bool, [dart.dynamic]), dart.functionType(dart.dynamic, [])]],
lastWhereList: [dart.dynamic, [core.List, dart.functionType(core.bool, [dart.dynamic]), dart.functionType(dart.dynamic, [])]],
singleWhere: [dart.dynamic, [core.Iterable, dart.functionType(core.bool, [dart.dynamic])]],
elementAt: [dart.dynamic, [core.Iterable, core.int]],
join: [core.String, [core.Iterable], [core.String]],
joinList: [core.String, [core.List], [core.String]],
map: [core.Iterable, [core.Iterable, dart.functionType(dart.dynamic, [dart.dynamic])]],
mapList: [core.Iterable, [core.List, dart.functionType(dart.dynamic, [dart.dynamic])]],
expand: [core.Iterable, [core.Iterable, dart.functionType(core.Iterable, [dart.dynamic])]],
sortList: [dart.void, [core.List, dart.functionType(core.int, [dart.dynamic, dart.dynamic])]],
shuffleList: [dart.void, [core.List, math.Random]],
indexOfList: [core.int, [core.List, dart.dynamic, core.int]],
lastIndexOfList: [core.int, [core.List, dart.dynamic, core.int]],
_rangeCheck: [dart.void, [core.List, core.int, core.int]],
setRangeList: [dart.void, [core.List, core.int, core.int, core.Iterable, core.int]],
replaceRangeList: [dart.void, [core.List, core.int, core.int, core.Iterable]],
fillRangeList: [dart.void, [core.List, core.int, core.int, dart.dynamic]],
insertAllList: [dart.void, [core.List, core.int, core.Iterable]],
setAllList: [dart.void, [core.List, core.int, core.Iterable]],
setContainsAll: [core.bool, [core.Set, core.Iterable]],
setIntersection: [core.Set, [core.Set, core.Set, core.Set]],
setUnion: [core.Set, [core.Set, core.Set, core.Set]],
setDifference: [core.Set, [core.Set, core.Set, core.Set]]
}),
names: ['contains', 'forEach', 'any', 'every', 'reduce', 'fold', 'removeWhereList', 'isEmpty', 'first', 'last', 'single', 'firstWhere', 'lastWhere', 'lastWhereList', 'singleWhere', 'elementAt', 'join', 'joinList', 'map', 'mapList', 'expand', 'sortList', 'shuffleList', 'indexOfList', 'lastIndexOfList', '_rangeCheck', 'setRangeList', 'replaceRangeList', 'fillRangeList', 'insertAllList', 'setAllList', 'setContainsAll', 'setIntersection', 'setUnion', 'setDifference']
});
return IterableMixinWorkaround;
});
const IterableMixinWorkaround = IterableMixinWorkaround$();
class IterableElementError extends core.Object {
static noElement() {
return new core.StateError("No element");
}
static tooMany() {
return new core.StateError("Too many elements");
}
static tooFew() {
return new core.StateError("Too few elements");
}
}
dart.setSignature(IterableElementError, {
statics: () => ({
noElement: [core.StateError, []],
tooMany: [core.StateError, []],
tooFew: [core.StateError, []]
}),
names: ['noElement', 'tooMany', 'tooFew']
});
const __CastType0$ = dart.generic(function(S, T) {
const __CastType0 = dart.typedef('__CastType0', () => dart.functionType(core.Iterable$(T), [S]));
return __CastType0;
});
const __CastType0 = __CastType0$();
const __CastType2$ = dart.generic(function(T) {
const __CastType2 = dart.typedef('__CastType2', () => dart.functionType(core.bool, [T]));
return __CastType2;
});
const __CastType2 = __CastType2$();
const FixedLengthListMixin$ = dart.generic(function(E) {
class FixedLengthListMixin extends core.Object {
set length(newLength) {
dart.throw(new core.UnsupportedError("Cannot change the length of a fixed-length list"));
}
add(value) {
dart.as(value, E);
dart.throw(new core.UnsupportedError("Cannot add to a fixed-length list"));
}
insert(index, value) {
dart.as(value, E);
dart.throw(new core.UnsupportedError("Cannot add to a fixed-length list"));
}
insertAll(at, iterable) {
dart.as(iterable, core.Iterable$(E));
dart.throw(new core.UnsupportedError("Cannot add to a fixed-length list"));
}
addAll(iterable) {
dart.as(iterable, core.Iterable$(E));
dart.throw(new core.UnsupportedError("Cannot add to a fixed-length list"));
}
remove(element) {
dart.throw(new core.UnsupportedError("Cannot remove from a fixed-length list"));
}
removeWhere(test) {
dart.as(test, dart.functionType(core.bool, [E]));
dart.throw(new core.UnsupportedError("Cannot remove from a fixed-length list"));
}
retainWhere(test) {
dart.as(test, dart.functionType(core.bool, [E]));
dart.throw(new core.UnsupportedError("Cannot remove from a fixed-length list"));
}
clear() {
dart.throw(new core.UnsupportedError("Cannot clear a fixed-length list"));
}
removeAt(index) {
dart.throw(new core.UnsupportedError("Cannot remove from a fixed-length list"));
}
removeLast() {
dart.throw(new core.UnsupportedError("Cannot remove from a fixed-length list"));
}
removeRange(start, end) {
dart.throw(new core.UnsupportedError("Cannot remove from a fixed-length list"));
}
replaceRange(start, end, iterable) {
dart.as(iterable, core.Iterable$(E));
dart.throw(new core.UnsupportedError("Cannot remove from a fixed-length list"));
}
}
dart.setSignature(FixedLengthListMixin, {
methods: () => ({
add: [dart.void, [E]],
insert: [dart.void, [core.int, E]],
insertAll: [dart.void, [core.int, core.Iterable$(E)]],
addAll: [dart.void, [core.Iterable$(E)]],
remove: [core.bool, [core.Object]],
removeWhere: [dart.void, [dart.functionType(core.bool, [E])]],
retainWhere: [dart.void, [dart.functionType(core.bool, [E])]],
clear: [dart.void, []],
removeAt: [E, [core.int]],
removeLast: [E, []],
removeRange: [dart.void, [core.int, core.int]],
replaceRange: [dart.void, [core.int, core.int, core.Iterable$(E)]]
})
});
return FixedLengthListMixin;
});
const FixedLengthListMixin = FixedLengthListMixin$();
const UnmodifiableListMixin$ = dart.generic(function(E) {
class UnmodifiableListMixin extends core.Object {
set(index, value) {
dart.as(value, E);
dart.throw(new core.UnsupportedError("Cannot modify an unmodifiable list"));
return value;
}
set length(newLength) {
dart.throw(new core.UnsupportedError("Cannot change the length of an unmodifiable list"));
}
setAll(at, iterable) {
dart.as(iterable, core.Iterable$(E));
dart.throw(new core.UnsupportedError("Cannot modify an unmodifiable list"));
}
add(value) {
dart.as(value, E);
dart.throw(new core.UnsupportedError("Cannot add to an unmodifiable list"));
}
insert(index, value) {
dart.as(value, E);
dart.throw(new core.UnsupportedError("Cannot add to an unmodifiable list"));
}
insertAll(at, iterable) {
dart.as(iterable, core.Iterable$(E));
dart.throw(new core.UnsupportedError("Cannot add to an unmodifiable list"));
}
addAll(iterable) {
dart.as(iterable, core.Iterable$(E));
dart.throw(new core.UnsupportedError("Cannot add to an unmodifiable list"));
}
remove(element) {
dart.throw(new core.UnsupportedError("Cannot remove from an unmodifiable list"));
}
removeWhere(test) {
dart.as(test, dart.functionType(core.bool, [E]));
dart.throw(new core.UnsupportedError("Cannot remove from an unmodifiable list"));
}
retainWhere(test) {
dart.as(test, dart.functionType(core.bool, [E]));
dart.throw(new core.UnsupportedError("Cannot remove from an unmodifiable list"));
}
sort(compare) {
if (compare === void 0) compare = null;
dart.as(compare, core.Comparator$(E));
dart.throw(new core.UnsupportedError("Cannot modify an unmodifiable list"));
}
shuffle(random) {
if (random === void 0) random = null;
dart.throw(new core.UnsupportedError("Cannot modify an unmodifiable list"));
}
clear() {
dart.throw(new core.UnsupportedError("Cannot clear an unmodifiable list"));
}
removeAt(index) {
dart.throw(new core.UnsupportedError("Cannot remove from an unmodifiable list"));
}
removeLast() {
dart.throw(new core.UnsupportedError("Cannot remove from an unmodifiable list"));
}
setRange(start, end, iterable, skipCount) {
dart.as(iterable, core.Iterable$(E));
if (skipCount === void 0) skipCount = 0;
dart.throw(new core.UnsupportedError("Cannot modify an unmodifiable list"));
}
removeRange(start, end) {
dart.throw(new core.UnsupportedError("Cannot remove from an unmodifiable list"));
}
replaceRange(start, end, iterable) {
dart.as(iterable, core.Iterable$(E));
dart.throw(new core.UnsupportedError("Cannot remove from an unmodifiable list"));
}
fillRange(start, end, fillValue) {
if (fillValue === void 0) fillValue = null;
dart.as(fillValue, E);
dart.throw(new core.UnsupportedError("Cannot modify an unmodifiable list"));
}
}
UnmodifiableListMixin[dart.implements] = () => [core.List$(E)];
dart.setSignature(UnmodifiableListMixin, {
methods: () => ({
set: [dart.void, [core.int, E]],
setAll: [dart.void, [core.int, core.Iterable$(E)]],
add: [dart.void, [E]],
insert: [E, [core.int, E]],
insertAll: [dart.void, [core.int, core.Iterable$(E)]],
addAll: [dart.void, [core.Iterable$(E)]],
remove: [core.bool, [core.Object]],
removeWhere: [dart.void, [dart.functionType(core.bool, [E])]],
retainWhere: [dart.void, [dart.functionType(core.bool, [E])]],
sort: [dart.void, [], [core.Comparator$(E)]],
shuffle: [dart.void, [], [math.Random]],
clear: [dart.void, []],
removeAt: [E, [core.int]],
removeLast: [E, []],
setRange: [dart.void, [core.int, core.int, core.Iterable$(E)], [core.int]],
removeRange: [dart.void, [core.int, core.int]],
replaceRange: [dart.void, [core.int, core.int, core.Iterable$(E)]],
fillRange: [dart.void, [core.int, core.int], [E]]
})
});
dart.defineExtensionMembers(UnmodifiableListMixin, [
'set',
'setAll',
'add',
'insert',
'insertAll',
'addAll',
'remove',
'removeWhere',
'retainWhere',
'sort',
'shuffle',
'clear',
'removeAt',
'removeLast',
'setRange',
'removeRange',
'replaceRange',
'fillRange',
'length'
]);
return UnmodifiableListMixin;
});
const UnmodifiableListMixin = UnmodifiableListMixin$();
const FixedLengthListBase$ = dart.generic(function(E) {
class FixedLengthListBase extends dart.mixin(collection.ListBase$(E), FixedLengthListMixin$(E)) {
FixedLengthListBase() {
super.ListBase(...arguments);
}
}
return FixedLengthListBase;
});
const FixedLengthListBase = FixedLengthListBase$();
const UnmodifiableListBase$ = dart.generic(function(E) {
class UnmodifiableListBase extends dart.mixin(collection.ListBase$(E), UnmodifiableListMixin$(E)) {
UnmodifiableListBase() {
super.ListBase(...arguments);
}
}
return UnmodifiableListBase;
});
const UnmodifiableListBase = UnmodifiableListBase$();
const _backedList = dart.JsSymbol('_backedList');
class _ListIndicesIterable extends ListIterable$(core.int) {
_ListIndicesIterable(backedList) {
this[_backedList] = backedList;
super.ListIterable();
}
get length() {
return this[_backedList][dartx.length];
}
elementAt(index) {
core.RangeError.checkValidIndex(index, this);
return index;
}
}
dart.setSignature(_ListIndicesIterable, {
constructors: () => ({_ListIndicesIterable: [_ListIndicesIterable, [core.List]]}),
methods: () => ({elementAt: [core.int, [core.int]]})
});
dart.defineExtensionMembers(_ListIndicesIterable, ['elementAt', 'length']);
const _values = dart.JsSymbol('_values');
const ListMapView$ = dart.generic(function(E) {
class ListMapView extends core.Object {
ListMapView(values) {
this[_values] = values;
}
get(key) {
return dart.notNull(this.containsKey(key)) ? this[_values][dartx.get](dart.as(key, core.int)) : null;
}
get length() {
return this[_values][dartx.length];
}
get values() {
return new (SubListIterable$(E))(this[_values], 0, null);
}
get keys() {
return new _ListIndicesIterable(this[_values]);
}
get isEmpty() {
return this[_values][dartx.isEmpty];
}
get isNotEmpty() {
return this[_values][dartx.isNotEmpty];
}
containsValue(value) {
return this[_values][dartx.contains](value);
}
containsKey(key) {
return typeof key == 'number' && dart.notNull(key) >= 0 && dart.notNull(key) < dart.notNull(this.length);
}
forEach(f) {
dart.as(f, dart.functionType(dart.void, [core.int, E]));
let length = this[_values][dartx.length];
for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull(i) + 1) {
f(i, this[_values][dartx.get](i));
if (length != this[_values][dartx.length]) {
dart.throw(new core.ConcurrentModificationError(this[_values]));
}
}
}
set(key, value) {
dart.as(value, E);
dart.throw(new core.UnsupportedError("Cannot modify an unmodifiable map"));
return value;
}
putIfAbsent(key, ifAbsent) {
dart.as(ifAbsent, dart.functionType(E, []));
dart.throw(new core.UnsupportedError("Cannot modify an unmodifiable map"));
}
remove(key) {
dart.throw(new core.UnsupportedError("Cannot modify an unmodifiable map"));
}
clear() {
dart.throw(new core.UnsupportedError("Cannot modify an unmodifiable map"));
}
addAll(other) {
dart.as(other, core.Map$(core.int, E));
dart.throw(new core.UnsupportedError("Cannot modify an unmodifiable map"));
}
toString() {
return collection.Maps.mapToString(this);
}
}
ListMapView[dart.implements] = () => [core.Map$(core.int, E)];
dart.setSignature(ListMapView, {
constructors: () => ({ListMapView: [ListMapView$(E), [core.List$(E)]]}),
methods: () => ({
get: [E, [core.Object]],
containsValue: [core.bool, [core.Object]],
containsKey: [core.bool, [core.Object]],
forEach: [dart.void, [dart.functionType(dart.void, [core.int, E])]],
set: [dart.void, [core.int, E]],
putIfAbsent: [E, [core.int, dart.functionType(E, [])]],
remove: [E, [core.Object]],
clear: [dart.void, []],
addAll: [dart.void, [core.Map$(core.int, E)]]
})
});
return ListMapView;
});
const ListMapView = ListMapView$();
const ReversedListIterable$ = dart.generic(function(E) {
class ReversedListIterable extends ListIterable$(E) {
ReversedListIterable(source) {
this[_source] = source;
super.ListIterable();
}
get length() {
return this[_source][dartx.length];
}
elementAt(index) {
return this[_source][dartx.elementAt](dart.notNull(this[_source][dartx.length]) - 1 - dart.notNull(index));
}
}
dart.setSignature(ReversedListIterable, {
constructors: () => ({ReversedListIterable: [ReversedListIterable$(E), [core.Iterable$(E)]]}),
methods: () => ({elementAt: [E, [core.int]]})
});
dart.defineExtensionMembers(ReversedListIterable, ['elementAt', 'length']);
return ReversedListIterable;
});
const ReversedListIterable = ReversedListIterable$();
class UnmodifiableListError extends core.Object {
static add() {
return new core.UnsupportedError("Cannot add to unmodifiable List");
}
static change() {
return new core.UnsupportedError("Cannot change the content of an unmodifiable List");
}
static [dartx.length]() {
return new core.UnsupportedError("Cannot change length of unmodifiable List");
}
static remove() {
return new core.UnsupportedError("Cannot remove from unmodifiable List");
}
}
dart.setSignature(UnmodifiableListError, {
statics: () => ({
add: [core.UnsupportedError, []],
change: [core.UnsupportedError, []],
[dartx.length]: [core.UnsupportedError, []],
remove: [core.UnsupportedError, []]
}),
names: ['add', 'change', dartx.length, 'remove']
});
class NonGrowableListError extends core.Object {
static add() {
return new core.UnsupportedError("Cannot add to non-growable List");
}
static [dartx.length]() {
return new core.UnsupportedError("Cannot change length of non-growable List");
}
static remove() {
return new core.UnsupportedError("Cannot remove from non-growable List");
}
}
dart.setSignature(NonGrowableListError, {
statics: () => ({
add: [core.UnsupportedError, []],
[dartx.length]: [core.UnsupportedError, []],
remove: [core.UnsupportedError, []]
}),
names: ['add', dartx.length, 'remove']
});
function makeListFixedLength(growableList) {
_interceptors.JSArray.markFixedList(growableList);
return growableList;
}
dart.fn(makeListFixedLength, core.List, [core.List]);
class Lists extends core.Object {
static copy(src, srcStart, dst, dstStart, count) {
if (dart.notNull(srcStart) < dart.notNull(dstStart)) {
for (let i = dart.notNull(srcStart) + dart.notNull(count) - 1, j = dart.notNull(dstStart) + dart.notNull(count) - 1; dart.notNull(i) >= dart.notNull(srcStart); i = dart.notNull(i) - 1, j = dart.notNull(j) - 1) {
dst[dartx.set](j, src[dartx.get](i));
}
} else {
for (let i = srcStart, j = dstStart; dart.notNull(i) < dart.notNull(srcStart) + dart.notNull(count); i = dart.notNull(i) + 1, j = dart.notNull(j) + 1) {
dst[dartx.set](j, src[dartx.get](i));
}
}
}
static areEqual(a, b) {
if (dart.notNull(core.identical(a, b))) return true;
if (!dart.is(b, core.List)) return false;
let length = a[dartx.length];
if (!dart.equals(length, dart.dload(b, 'length'))) return false;
for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull(i) + 1) {
if (!dart.notNull(core.identical(a[dartx.get](i), dart.dindex(b, i)))) return false;
}
return true;
}
static indexOf(a, element, startIndex, endIndex) {
if (dart.notNull(startIndex) >= dart.notNull(a[dartx.length])) {
return -1;
}
if (dart.notNull(startIndex) < 0) {
startIndex = 0;
}
for (let i = startIndex; dart.notNull(i) < dart.notNull(endIndex); i = dart.notNull(i) + 1) {
if (dart.equals(a[dartx.get](i), element)) {
return i;
}
}
return -1;
}
static lastIndexOf(a, element, startIndex) {
if (dart.notNull(startIndex) < 0) {
return -1;
}
if (dart.notNull(startIndex) >= dart.notNull(a[dartx.length])) {
startIndex = dart.notNull(a[dartx.length]) - 1;
}
for (let i = startIndex; dart.notNull(i) >= 0; i = dart.notNull(i) - 1) {
if (dart.equals(a[dartx.get](i), element)) {
return i;
}
}
return -1;
}
static indicesCheck(a, start, end) {
core.RangeError.checkValidRange(start, end, a[dartx.length]);
}
static rangeCheck(a, start, length) {
core.RangeError.checkNotNegative(length);
core.RangeError.checkNotNegative(start);
if (dart.notNull(start) + dart.notNull(length) > dart.notNull(a[dartx.length])) {
let message = `${start} + ${length} must be in the range [0..${a[dartx.length]}]`;
dart.throw(new core.RangeError.range(length, 0, dart.notNull(a[dartx.length]) - dart.notNull(start), "length", message));
}
}
}
dart.setSignature(Lists, {
statics: () => ({
copy: [dart.void, [core.List, core.int, core.List, core.int, core.int]],
areEqual: [core.bool, [core.List, dart.dynamic]],
indexOf: [core.int, [core.List, core.Object, core.int, core.int]],
lastIndexOf: [core.int, [core.List, core.Object, core.int]],
indicesCheck: [dart.void, [core.List, core.int, core.int]],
rangeCheck: [dart.void, [core.List, core.int, core.int]]
}),
names: ['copy', 'areEqual', 'indexOf', 'lastIndexOf', 'indicesCheck', 'rangeCheck']
});
exports.printToZone = null;
function printToConsole(line) {
_js_primitives.printString(`${line}`);
}
dart.fn(printToConsole, dart.void, [core.String]);
class Sort extends core.Object {
static sort(a, compare) {
Sort._doSort(a, 0, dart.notNull(a[dartx.length]) - 1, compare);
}
static sortRange(a, from, to, compare) {
if (dart.notNull(from) < 0 || dart.notNull(to) > dart.notNull(a[dartx.length]) || dart.notNull(to) < dart.notNull(from)) {
dart.throw("OutOfRange");
}
Sort._doSort(a, from, dart.notNull(to) - 1, compare);
}
static _doSort(a, left, right, compare) {
if (dart.notNull(right) - dart.notNull(left) <= dart.notNull(Sort._INSERTION_SORT_THRESHOLD)) {
Sort._insertionSort(a, left, right, compare);
} else {
Sort._dualPivotQuicksort(a, left, right, compare);
}
}
static _insertionSort(a, left, right, compare) {
for (let i = dart.notNull(left) + 1; dart.notNull(i) <= dart.notNull(right); i = dart.notNull(i) + 1) {
let el = a[dartx.get](i);
let j = i;
while (dart.notNull(j) > dart.notNull(left) && dart.notNull(dart.dcall(compare, a[dartx.get](dart.notNull(j) - 1), el)) > 0) {
a[dartx.set](j, a[dartx.get](dart.notNull(j) - 1));
j = dart.notNull(j) - 1;
}
a[dartx.set](j, el);
}
}
static _dualPivotQuicksort(a, left, right, compare) {
dart.assert(dart.notNull(right) - dart.notNull(left) > dart.notNull(Sort._INSERTION_SORT_THRESHOLD));
let sixth = ((dart.notNull(right) - dart.notNull(left) + 1) / 6)[dartx.truncate]();
let index1 = dart.notNull(left) + dart.notNull(sixth);
let index5 = dart.notNull(right) - dart.notNull(sixth);
let index3 = ((dart.notNull(left) + dart.notNull(right)) / 2)[dartx.truncate]();
let index2 = dart.notNull(index3) - dart.notNull(sixth);
let index4 = dart.notNull(index3) + dart.notNull(sixth);
let el1 = a[dartx.get](index1);
let el2 = a[dartx.get](index2);
let el3 = a[dartx.get](index3);
let el4 = a[dartx.get](index4);
let el5 = a[dartx.get](index5);
if (dart.notNull(dart.dcall(compare, el1, el2)) > 0) {
let t = el1;
el1 = el2;
el2 = t;
}
if (dart.notNull(dart.dcall(compare, el4, el5)) > 0) {
let t = el4;
el4 = el5;
el5 = t;
}
if (dart.notNull(dart.dcall(compare, el1, el3)) > 0) {
let t = el1;
el1 = el3;
el3 = t;
}
if (dart.notNull(dart.dcall(compare, el2, el3)) > 0) {
let t = el2;
el2 = el3;
el3 = t;
}
if (dart.notNull(dart.dcall(compare, el1, el4)) > 0) {
let t = el1;
el1 = el4;
el4 = t;
}
if (dart.notNull(dart.dcall(compare, el3, el4)) > 0) {
let t = el3;
el3 = el4;
el4 = t;
}
if (dart.notNull(dart.dcall(compare, el2, el5)) > 0) {
let t = el2;
el2 = el5;
el5 = t;
}
if (dart.notNull(dart.dcall(compare, el2, el3)) > 0) {
let t = el2;
el2 = el3;
el3 = t;
}
if (dart.notNull(dart.dcall(compare, el4, el5)) > 0) {
let t = el4;
el4 = el5;
el5 = t;
}
let pivot1 = el2;
let pivot2 = el4;
a[dartx.set](index1, el1);
a[dartx.set](index3, el3);
a[dartx.set](index5, el5);
a[dartx.set](index2, a[dartx.get](left));
a[dartx.set](index4, a[dartx.get](right));
let less = dart.notNull(left) + 1;
let great = dart.notNull(right) - 1;
let pivots_are_equal = dart.dcall(compare, pivot1, pivot2) == 0;
if (dart.notNull(pivots_are_equal)) {
let pivot = pivot1;
for (let k = less; dart.notNull(k) <= dart.notNull(great); k = dart.notNull(k) + 1) {
let ak = a[dartx.get](k);
let comp = dart.dcall(compare, ak, pivot);
if (comp == 0) continue;
if (dart.notNull(comp) < 0) {
if (k != less) {
a[dartx.set](k, a[dartx.get](less));
a[dartx.set](less, ak);
}
less = dart.notNull(less) + 1;
} else {
while (true) {
comp = dart.dcall(compare, a[dartx.get](great), pivot);
if (dart.notNull(comp) > 0) {
great = dart.notNull(great) - 1;
continue;
} else if (dart.notNull(comp) < 0) {
a[dartx.set](k, a[dartx.get](less));
a[dartx.set]((() => {
let x = less;
less = dart.notNull(x) + 1;
return x;
})(), a[dartx.get](great));
a[dartx.set]((() => {
let x = great;
great = dart.notNull(x) - 1;
return x;
})(), ak);
break;
} else {
a[dartx.set](k, a[dartx.get](great));
a[dartx.set]((() => {
let x = great;
great = dart.notNull(x) - 1;
return x;
})(), ak);
break;
}
}
}
}
} else {
for (let k = less; dart.notNull(k) <= dart.notNull(great); k = dart.notNull(k) + 1) {
let ak = a[dartx.get](k);
let comp_pivot1 = dart.dcall(compare, ak, pivot1);
if (dart.notNull(comp_pivot1) < 0) {
if (k != less) {
a[dartx.set](k, a[dartx.get](less));
a[dartx.set](less, ak);
}
less = dart.notNull(less) + 1;
} else {
let comp_pivot2 = dart.dcall(compare, ak, pivot2);
if (dart.notNull(comp_pivot2) > 0) {
while (true) {
let comp = dart.dcall(compare, a[dartx.get](great), pivot2);
if (dart.notNull(comp) > 0) {
great = dart.notNull(great) - 1;
if (dart.notNull(great) < dart.notNull(k)) break;
continue;
} else {
comp = dart.dcall(compare, a[dartx.get](great), pivot1);
if (dart.notNull(comp) < 0) {
a[dartx.set](k, a[dartx.get](less));
a[dartx.set]((() => {
let x = less;
less = dart.notNull(x) + 1;
return x;
})(), a[dartx.get](great));
a[dartx.set]((() => {
let x = great;
great = dart.notNull(x) - 1;
return x;
})(), ak);
} else {
a[dartx.set](k, a[dartx.get](great));
a[dartx.set]((() => {
let x = great;
great = dart.notNull(x) - 1;
return x;
})(), ak);
}
break;
}
}
}
}
}
}
a[dartx.set](left, a[dartx.get](dart.notNull(less) - 1));
a[dartx.set](dart.notNull(less) - 1, pivot1);
a[dartx.set](right, a[dartx.get](dart.notNull(great) + 1));
a[dartx.set](dart.notNull(great) + 1, pivot2);
Sort._doSort(a, left, dart.notNull(less) - 2, compare);
Sort._doSort(a, dart.notNull(great) + 2, right, compare);
if (dart.notNull(pivots_are_equal)) {
return;
}
if (dart.notNull(less) < dart.notNull(index1) && dart.notNull(great) > dart.notNull(index5)) {
while (dart.dcall(compare, a[dartx.get](less), pivot1) == 0) {
less = dart.notNull(less) + 1;
}
while (dart.dcall(compare, a[dartx.get](great), pivot2) == 0) {
great = dart.notNull(great) - 1;
}
for (let k = less; dart.notNull(k) <= dart.notNull(great); k = dart.notNull(k) + 1) {
let ak = a[dartx.get](k);
let comp_pivot1 = dart.dcall(compare, ak, pivot1);
if (comp_pivot1 == 0) {
if (k != less) {
a[dartx.set](k, a[dartx.get](less));
a[dartx.set](less, ak);
}
less = dart.notNull(less) + 1;
} else {
let comp_pivot2 = dart.dcall(compare, ak, pivot2);
if (comp_pivot2 == 0) {
while (true) {
let comp = dart.dcall(compare, a[dartx.get](great), pivot2);
if (comp == 0) {
great = dart.notNull(great) - 1;
if (dart.notNull(great) < dart.notNull(k)) break;
continue;
} else {
comp = dart.dcall(compare, a[dartx.get](great), pivot1);
if (dart.notNull(comp) < 0) {
a[dartx.set](k, a[dartx.get](less));
a[dartx.set]((() => {
let x = less;
less = dart.notNull(x) + 1;
return x;
})(), a[dartx.get](great));
a[dartx.set]((() => {
let x = great;
great = dart.notNull(x) - 1;
return x;
})(), ak);
} else {
a[dartx.set](k, a[dartx.get](great));
a[dartx.set]((() => {
let x = great;
great = dart.notNull(x) - 1;
return x;
})(), ak);
}
break;
}
}
}
}
}
Sort._doSort(a, less, great, compare);
} else {
Sort._doSort(a, less, great, compare);
}
}
}
dart.setSignature(Sort, {
statics: () => ({
sort: [dart.void, [core.List, dart.functionType(core.int, [dart.dynamic, dart.dynamic])]],
sortRange: [dart.void, [core.List, core.int, core.int, dart.functionType(core.int, [dart.dynamic, dart.dynamic])]],
_doSort: [dart.void, [core.List, core.int, core.int, dart.functionType(core.int, [dart.dynamic, dart.dynamic])]],
_insertionSort: [dart.void, [core.List, core.int, core.int, dart.functionType(core.int, [dart.dynamic, dart.dynamic])]],
_dualPivotQuicksort: [dart.void, [core.List, core.int, core.int, dart.functionType(core.int, [dart.dynamic, dart.dynamic])]]
}),
names: ['sort', 'sortRange', '_doSort', '_insertionSort', '_dualPivotQuicksort']
});
Sort._INSERTION_SORT_THRESHOLD = 32;
const _name = dart.JsSymbol('_name');
class Symbol extends core.Object {
Symbol(name) {
this[_name] = name;
}
unvalidated(name) {
this[_name] = name;
}
validated(name) {
this[_name] = Symbol.validatePublicSymbol(name);
}
['=='](other) {
return dart.is(other, Symbol) && this[_name] == other[_name];
}
get hashCode() {
let arbitraryPrime = 664597;
return 536870911 & dart.notNull(arbitraryPrime) * dart.notNull(dart.hashCode(this[_name]));
}
toString() {
return `Symbol("${this[_name]}")`;
}
static getName(symbol) {
return symbol[_name];
}
static validatePublicSymbol(name) {
if (dart.notNull(name[dartx.isEmpty]) || dart.notNull(Symbol.publicSymbolPattern.hasMatch(name))) return name;
if (dart.notNull(name[dartx.startsWith]('_'))) {
dart.throw(new core.ArgumentError(`"${name}" is a private identifier`));
}
dart.throw(new core.ArgumentError(`"${name}" is not a valid (qualified) symbol name`));
}
static isValidSymbol(name) {
return dart.notNull(name[dartx.isEmpty]) || dart.notNull(Symbol.symbolPattern.hasMatch(name));
}
}
Symbol[dart.implements] = () => [core.Symbol];
dart.defineNamedConstructor(Symbol, 'unvalidated');
dart.defineNamedConstructor(Symbol, 'validated');
dart.setSignature(Symbol, {
constructors: () => ({
Symbol: [Symbol, [core.String]],
unvalidated: [Symbol, [core.String]],
validated: [Symbol, [core.String]]
}),
methods: () => ({'==': [core.bool, [core.Object]]}),
statics: () => ({
getName: [core.String, [Symbol]],
validatePublicSymbol: [core.String, [core.String]],
isValidSymbol: [core.bool, [core.String]]
}),
names: ['getName', 'validatePublicSymbol', 'isValidSymbol']
});
Symbol.reservedWordRE = '(?:assert|break|c(?:a(?:se|tch)|lass|on(?:st|tinue))|d(?:efault|o)|' + 'e(?:lse|num|xtends)|f(?:alse|inal(?:ly)?|or)|i[fns]|n(?:ew|ull)|' + 'ret(?:hrow|urn)|s(?:uper|witch)|t(?:h(?:is|row)|r(?:ue|y))|' + 'v(?:ar|oid)|w(?:hile|ith))';
Symbol.publicIdentifierRE = '(?!' + `${Symbol.reservedWordRE}` + '\\b(?!\\$))[a-zA-Z$][\\w$]*';
Symbol.identifierRE = '(?!' + `${Symbol.reservedWordRE}` + '\\b(?!\\$))[a-zA-Z$_][\\w$]*';
Symbol.operatorRE = '(?:[\\-+*/%&|^]|\\[\\]=?|==|~/?|<[<=]?|>[>=]?|unary-)';
const POWERS_OF_TEN = dart.const([1.0, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, 10000000.0, 100000000.0, 1000000000.0, 10000000000.0, 100000000000.0, 1000000000000.0, 10000000000000.0, 100000000000000.0, 1000000000000000.0, 10000000000000000.0, 100000000000000000.0, 1000000000000000000.0, 10000000000000000000.0, 100000000000000000000.0, 1e+21, 1e+22]);
dart.defineLazyProperties(Symbol, {
get publicSymbolPattern() {
return core.RegExp.new(`^(?:${Symbol.operatorRE}\$|${Symbol.publicIdentifierRE}(?:=?\$|[.](?!\$)))+?\$`);
},
get symbolPattern() {
return core.RegExp.new(`^(?:${Symbol.operatorRE}\$|${Symbol.identifierRE}(?:=?\$|[.](?!\$)))+?\$`);
}
});
// Exports:
exports.EfficientLength = EfficientLength;
exports.ListIterable$ = ListIterable$;
exports.ListIterable = ListIterable;
exports.SubListIterable$ = SubListIterable$;
exports.SubListIterable = SubListIterable;
exports.ListIterator$ = ListIterator$;
exports.ListIterator = ListIterator;
exports.MappedIterable$ = MappedIterable$;
exports.MappedIterable = MappedIterable;
exports.EfficientLengthMappedIterable$ = EfficientLengthMappedIterable$;
exports.EfficientLengthMappedIterable = EfficientLengthMappedIterable;
exports.MappedIterator$ = MappedIterator$;
exports.MappedIterator = MappedIterator;
exports.MappedListIterable$ = MappedListIterable$;
exports.MappedListIterable = MappedListIterable;
exports.WhereIterable$ = WhereIterable$;
exports.WhereIterable = WhereIterable;
exports.WhereIterator$ = WhereIterator$;
exports.WhereIterator = WhereIterator;
exports.ExpandIterable$ = ExpandIterable$;
exports.ExpandIterable = ExpandIterable;
exports.ExpandIterator$ = ExpandIterator$;
exports.ExpandIterator = ExpandIterator;
exports.TakeIterable$ = TakeIterable$;
exports.TakeIterable = TakeIterable;
exports.EfficientLengthTakeIterable$ = EfficientLengthTakeIterable$;
exports.EfficientLengthTakeIterable = EfficientLengthTakeIterable;
exports.TakeIterator$ = TakeIterator$;
exports.TakeIterator = TakeIterator;
exports.TakeWhileIterable$ = TakeWhileIterable$;
exports.TakeWhileIterable = TakeWhileIterable;
exports.TakeWhileIterator$ = TakeWhileIterator$;
exports.TakeWhileIterator = TakeWhileIterator;
exports.SkipIterable$ = SkipIterable$;
exports.SkipIterable = SkipIterable;
exports.EfficientLengthSkipIterable$ = EfficientLengthSkipIterable$;
exports.EfficientLengthSkipIterable = EfficientLengthSkipIterable;
exports.SkipIterator$ = SkipIterator$;
exports.SkipIterator = SkipIterator;
exports.SkipWhileIterable$ = SkipWhileIterable$;
exports.SkipWhileIterable = SkipWhileIterable;
exports.SkipWhileIterator$ = SkipWhileIterator$;
exports.SkipWhileIterator = SkipWhileIterator;
exports.EmptyIterable$ = EmptyIterable$;
exports.EmptyIterable = EmptyIterable;
exports.EmptyIterator$ = EmptyIterator$;
exports.EmptyIterator = EmptyIterator;
exports.BidirectionalIterator$ = BidirectionalIterator$;
exports.BidirectionalIterator = BidirectionalIterator;
exports.IterableMixinWorkaround$ = IterableMixinWorkaround$;
exports.IterableMixinWorkaround = IterableMixinWorkaround;
exports.IterableElementError = IterableElementError;
exports.FixedLengthListMixin$ = FixedLengthListMixin$;
exports.FixedLengthListMixin = FixedLengthListMixin;
exports.UnmodifiableListMixin$ = UnmodifiableListMixin$;
exports.UnmodifiableListMixin = UnmodifiableListMixin;
exports.FixedLengthListBase$ = FixedLengthListBase$;
exports.FixedLengthListBase = FixedLengthListBase;
exports.UnmodifiableListBase$ = UnmodifiableListBase$;
exports.UnmodifiableListBase = UnmodifiableListBase;
exports.ListMapView$ = ListMapView$;
exports.ListMapView = ListMapView;
exports.ReversedListIterable$ = ReversedListIterable$;
exports.ReversedListIterable = ReversedListIterable;
exports.UnmodifiableListError = UnmodifiableListError;
exports.NonGrowableListError = NonGrowableListError;
exports.makeListFixedLength = makeListFixedLength;
exports.Lists = Lists;
exports.printToConsole = printToConsole;
exports.Sort = Sort;
exports.Symbol = Symbol;
exports.POWERS_OF_TEN = POWERS_OF_TEN;
});